Oracle dmp文件解析
1 协议分析的基本原则和方法
1.1 TLV方法:type、length、value类型、长度、数值
由于具体数值的不确定、长度可变,因此绝大部分协议,都会将长度放在前面,后面再跟具体的数据。oracle的dmp文件的数据解析没有type字段,数据类型是集中说明。
原则:先是长度值,然后是具体数据。
1.2 字节序问题
X86架构都是小端优先。 读到长度 10 00,其实就是 0010, 16字节长。 字、双字有此类问题,字符串无此类问题。
1.3 分析方法、工具
linux下用hexdump -C aa.dmp 可以得到二进制及其字符, windows下可以用支持二进制的编辑器,比如ultraedit。
000d9890 54 41 54 52 45 43 3b 20 42 45 47 49 4e 20 53 52 |TATREC; BEGIN SR|
000d98a0 45 43 2e 4d 49 4e 56 41 4c 20 3a 3d 20 4e 55 4c |EC.MINVAL := NUL|
000d98b0 4c 3b 20 53 52 45 43 2e 4d 41 58 56 41 4c 20 3a |L; SREC.MAXVAL :|
000d98c0 3d 20 4e 55 4c 4c 3b 20 53 52 45 43 2e 45 41 56 |= NULL; SREC.EAV|
最左边是序号,16字节一行。最右边对应的是ASCII码。
1.4 字符集、编码
可以看到在计算机里存储的都是二进制或者说十六进制,具体这个数值代表什么意思,需要由编码来确定。仅就字符集来说,有下列几种。
ASCII, 一个字节代表一个字符,共256, 可见字符也就常见的数字、字母、标点符号,0a 换行符\n, 0d 回车 \r, 20 空格,数字30-39,大写字母41-5a,小写61-7a
unicode 两字节代表一字符,原来的英文,需要高字节填0。
UTF-8: UTF-8的特点是对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。 汉字是3个字节
GBK:两字节表示1汉字,按照拼音排序编码
2 dmp文件的基本流程
非数据部分就是字符(包括汉字),以换行符隔开。所以全部解析对了,就不会出现不可见字符,blob的内容不可打印。
大的流程:建表语句create table, 插入数据 insert,后面还有主外键的添加,视图、函数等。
重点、难点就是插入数据
1) INSERT INTO "BONUS" ("ENAME", "JOB", "SAL", "COMM") VALUES (:1, :2, :3, :4)
2) 数据类型 , 先是字段数,然后是每个字段的数据类型,
000024e0 28 22 45 4e 41 4d 45 22 2c 20 22 4a 4f 42 22 2c |("ENAME", "JOB",|
000024f0 20 22 53 41 4c 22 2c 20 22 43 4f 4d 4d 22 29 20 | "SAL", "COMM") |
00002500 56 41 4c 55 45 53 20 28 3a 31 2c 20 3a 32 2c 20 |VALUES (:1, :2, |
00002510 3a 33 2c 20 3a 34 29 0a 04 00 01 00 0a 00 54 03 |:3, :4).......T.|
00002520 01 00 01 00 09 00 54 03 01 00 02 00 16 00 02 00 |......T.........|
00002530 16 00 00 00 00 00 ff ff 0a 41 4e 41 4c 53 54 41 |.........ANALSTA|
0400, 说明是四个字段,01 00 0a 00 54 03 01 00, 说明是varchar2,长度为 10(0a 00),02001600是number数值类型
主要的数据类型: 01 00 xx 00 54 03 01 00 varchar2 02 00 16 00 number
0c 00 07 00 date
71 00 20 00 blob
70 00 20 00 54 03 01 00 clob
与建表语句符合。 CREATE TABLE "BONUS" ("ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "SAL" NUMBER, "COMM" NUMBER)
后面 00000000,四个00代表类型说明完毕。再后面的ffff,说明insert 语句完毕。
3) 具体数值
先看没有blob、clob字段的。在类型说明完毕后,就是每条记录的内容。
00033830 54 20 49 4e 54 4f 20 22 53 41 4c 47 52 41 44 45 |T INTO "SALGRADE|
00033840 22 20 28 22 47 52 41 44 45 22 2c 20 22 4c 4f 53 |" ("GRADE", "LOS|
00033850 41 4c 22 2c 20 22 48 49 53 41 4c 22 29 20 56 41 |AL", "HISAL") VA|
00033860 4c 55 45 53 20 28 3a 31 2c 20 3a 32 2c 20 3a 33 |LUES (:1, :2, :3|
00033870 29 0a 03 00 02 00 16 00 02 00 16 00 02 00 16 00 |)...............|
00033880 00 00 00 00 02 00 c1 02 02 00 c2 08 02 00 c2 0d |................|
00033890 00 00 02 00 c1 03 03 00 c2 0d 02 02 00 c2 0f 00 |................|
000338a0 00 02 00 c1 04 03 00 c2 0f 02 02 00 c2 15 00 00 |................|
000338b0 02 00 c1 05 03 00 c2 15 02 02 00 c2 1f 00 00 02 |................|
000338c0 00 c1 06 03 00 c2 1f 02 03 00 c2 64 64 00 00 ff |...........dd...|
000338d0 ff 0a 41 4e 41 4c 53 54 41 54 53 20 54 52 20 22 |..ANALSTATS TR "|
00 00 00 00 后开始具体的每条记录, 0200, 2个字节, c102,就是1。 数字的简单,每个字节的结果减去1,然后每个字节按位置*100,减1的原因是防止出现00,否则会跟结束符混淆。每条记录以0000结束。 ffff则当前表的insert结束。
Oracle dmp文件解析相关推荐
- oracle导入多个dmp文件到一个用户,Oracle dmp文件导入(还原)到不同的表空间和不同的用户下...
------------------------------------- 从生产环境拷贝一个dmp备份文件,在另外一台电脑上搭建测试环境,用imp命令导入dmp文件时提示如下错误: 问题描述: IM ...
- 电脑最近蓝屏dmp文件解析是memory corruption是磁盘内存坏了吗
电脑最近突然卡死然后出现蓝屏重启,找了好多方法还是没解决,dmp文件解析如下: 这情况是磁盘内存坏了吗,大佬求解啊啊
- Oracle dmp文件导入
导入时,按照sql语句中的说明,一句一句执行 创建表空间(表空间指向硬盘上 的某一个dbf文件,要自行创建目录) create tablespace ts_dw datafile 'D:\oracle ...
- 在cmd命令下imp oracle dmp文件
一命令: imp system/hayashi@ORCL2_128 parfile=D:\nbs.par 二:文件(nbs.par) FILE= ( D:/nbs.dmp ) LOG=D:/nbs. ...
- oracle的dump头文件用ue显示,关于Oracle dmp文件导入随笔
进入博客园已经两年多了,每次想写点什么,都是给自己个各种借口,不了了之~今天就从Oracle数据库最长用的导入开始吧! 1.低版本的exp/imp可以连接到高版本(或同版本)的数据库服务器,比如:10 ...
- Oracle dmp文件导出/导入
文章目录 1.工具说明 2.对比(expdp vs exp) 3 导出(exp).导入(imp) 3.1 导出 3.2 导入dmp文件 4. 导出(expdp).导入(impdp) 4.1 导出dmp ...
- oracle dmp文件读取,从dmp文件恢复数据库
Oracle基础 数据库备份和恢复 原文:Oracle基础 数据库备份和恢复 一.为什么需要数据备份 造成数据丢失的主要原因: 1.介质故障. 2.用户的错误操作. 3.服务器的彻底崩溃. 4.计算机 ...
- 解析oracle追踪文件,解析listener跟踪文件
在上篇<监听器控制程序lsnrctl跟踪trace file>(http://space.itpub.net/17203031/viewspace-713587)中,我们探讨了如何获取到监 ...
- Oracle dmp文件转换成为excle/.xlsx/.csv/pdf/text...?
记录一下过程,之前查了都没找到详细的 1.安装Oracle 直接百度官网网址或者这里提供下载链接:https://pan.baidu.com/s/1blKY6XFhxqSdx8grEpeqMg 密码: ...
- linux读取dmp备份数据打开,Linux 中 Oracle dmp 文件导入导出(转)
远程工具连接到 Linux 进行操作,进行 Linux 上 dmp 文件的导入导出. 1.将用户 system 用户表导出到指定路径 D 盘 exp system/password@SID file= ...
最新文章
- 如何使用React提前三天计划
- BurpSuite实例教程讲解
- Docker 容器技术 — 容器网络
- 5年後、10年後の自分のイメージ
- 安卓多语言设置,深渊巨坑,适配7.0以上,并且解决因WebView产生的问题
- BZOJ 3740. 【TJOI2014】电源插排
- 4.MyBatis全局配置文件SqlMapConfig.xml
- JPA中的@MappedSuperclass
- Netbeans加入CI的代码提示
- 百度地图Label 样式 setStyle
- python-实现栈结构
- thinkphp5 open_basedir 补充
- fcm模糊聚类matlab实例_MATLAB图论实例——最短路径
- R语言及Rstudio入门小建议(一)
- 远程访问centos系统
- webrtc QOS方法一(NACK实现)
- CF - 158B - Taxi
- 企业邮箱如何设置邮件监控
- windows下延时函数
- 仇家结亲优酷土豆闪婚内幕
热门文章
- 《当我们谈论爱情时,我们谈论机器》感悟一二
- 为精简版VS2008添加DEBUG版运行时库到系统目录
- win10网络适配器出现黄色感叹号!!WiFi路由器正常却无法显示可用网络!
- js怎样判断是不是整数
- 网站常用JSON嵌套形式
- Java个人职业规划目标改进_java个人职业发展方向规划范文
- make: 对“all”无需做任何事
- 双精度,单精度和半精度
- SolidWorks DocumentManager LicenseKey
- 英特尔芯片组 年代表_英特尔:对不起,但我们的7纳米芯片将延迟到2022年,2023年