GDUL入门指南
GDUL是老耿开发的一款类dul工具,当数据库由于某种原因无法打开时,可以利用GDUL把表数据直接读取出来。导出表之前需要先配置数据文件列表、ASM磁盘列表等,然后才能导出表数据。
1. 配置GDUL
GDUL支持各Linux/Unix平台和Windows平台,以下步骤适用于数据库可以MOUNT的情况:
1) Unix/Linux平台配置
解压缩gdul<版本号>.tar.gz文件,bin_file中包含各Unix、Linux平台gdul可执行文件,osetup为初始配置程序。
文件清单:
| 文件名 | 说明 |
|---|---|
gdul | gdul可执行文件,使用时请 ln -s bin_file/gdul_<平台> gdul 建立符号链接。 |
osetup | 初始化程序,配置ASM磁盘、数据文件列表。 |
配置步骤:
1
设置正确的ORACLE_HOME, ORACLE_SID
$ export ORACLE_HOME=<CURRENT_ORACLE_HOME> $ export ORACLE_SID=<CURRENT_ORACLE_SID> $ echo $ORACLE_HOME $ echo $ORACLE_SID
2
运行osetup
该程序创建conf, dict, dump, log目录,并生成配置文件、数据文件、ASM磁盘列表文件。
$ ./osetup
3
启动gdul
$ ln -s bin_file/gdul_linux64 gdul $ ./gdul
终端输出
********************************************************************* GDUL for ORACLE DB. Version 4.6.0.5, build date: 2016.09.30. Copyright (c) 2007, 2016. Andy Geng. ALL RIGHTS RESERVED. Email: dbtool@qq.com WeChat official account: dbtool QQ group: 235019291 *********************************************************************
GDUL> bootstrap Bootstrap finish.
2) Windows平台配置
解压缩gdul<版本号>.zip文件。
文件清单:
| 文件名 | 说明 |
|---|---|
gdul.exe | gdul可执行文件。 |
注意:Windows平台没有osetup程序,需要手工创建目录和配置文件。
1
手工创建目录和配置文件
创建conf, dict, dump, log目录,并在conf目录下创建gdul.ini, datafile.ini, asmdisk.ini文件。
gdul.ini 配置文件:
conf/gdul.ini
<?xml version="1.0" encoding="UTF-8"?> <gdul> <parameter name="db_compat_version" value="11.2.0.4.0"/> <parameter name="db_block_size" value="8192"/> <parameter name="file_raw_offset" value="0"/> <parameter name="reverse_byte" value="0"/> <parameter name="export_format" value="dmp"/> <parameter name="ldr_enclose_char" value="""/> <parameter name="trace_block" value="0"/> </gdul>
datafile.ini 配置文件:
通过以下SQL查询获取数据文件列表,然后按XML格式写入datafile.ini:
SQL查询
SQL> select file#, name, blocks, block_size, status$ 2 from v$datafile;
conf/datafile.ini
<?xml version="1.0" encoding="UTF-8"?>
<datafile>
<file id="1" name="C:\ORACLE\ORADATA\PROD\SYSTEM01.DBF"
blocks="89600" block_size="8192"/>
<file id="2" name="C:\ORACLE\ORADATA\PROD\SYSAUX01.DBF"
blocks="64000" block_size="8192"/>
<file id="3" name="C:\ORACLE\ORADATA\PROD\UNDOTBS01.DBF"
blocks="32000" block_size="8192"/>
</datafile>asmdisk.ini 配置文件:
通过以下SQL查询获取ASM磁盘列表,然后按XML格式写入asmdisk.ini:
SQL查询
SQL> select group_number, disk_number, name, path, block_size, os_block_size 2 from v$asm_disk;
conf/asmdisk.ini
<?xml version="1.0" encoding="UTF-8"?>
<asmdisk>
<disk group_number="1" disk_number="0" name="DATA_0000"
path="C:\ORACLE\ASM\DATA1" block_size="4096"
os_block_size="512"/>
</asmdisk>
2
启动gdul
C:\gdul> gdul.exe
终端输出
********************************************************************* GDUL for ORACLE DB. Version 4.6.0.5, build date: 2016.09.30. Copyright (c) 2007, 2016. Andy Geng. ALL RIGHTS RESERVED. Email: dbtool@qq.com WeChat official account: dbtool QQ group: 235019291 *********************************************************************
GDUL> bootstrap Bootstrap finish.
3) 配置文件说明
conf/gdul.ini文件中各参数说明如下:
| 参数 | 描述 | 取值范围 | 默认值 |
|---|---|---|---|
db_compat_version | 数据库兼容版本号 | 有效的ORACLE版本号,如10.2.0.5.0, 11.2.0.4.0 | 无 |
db_block_size | 数据库块大小 | 有效的块大小:2048, 4096, 8192, 16384, 32768 | 8192 |
file_raw_offset | 数据文件裸设备偏移量 | 0 或正整数 | 0 |
reverse_byte | 字节序反转标记 | 0=小端序, 1=大端序 | 0 |
export_format | 导出文件格式 | dmp=ORACLE DMP格式, ldr=SQL*Loader格式 | dmp |
ldr_enclose_char | SQL*Loader字段包围符 | 单字符,如 " 或 ' | " |
trace_block | 是否跟踪块解析过程 | 0=不跟踪, 1=跟踪 | 0 |
2. 导出表数据
1
Bootstrap
加载系统表空间数据字典信息。
GDUL> bootstrap Bootstrap finish.
2
Unload table
导出指定用户的表数据。
导出单个表
GDUL> list user USER_NAME ------------------------------ SYS SYSTEM SCOTT TEST GDUL> set user scott GDUL> list table TABLE_NAME ROWS ------------------------------ ---------- DEPT 4 EMP 14 BONUS 0 SALGRADE 5 GDUL> unload table emp Export table SCOTT.EMP ... 14 rows exported. Export table SCOTT.EMP finish.
3
Unload user parallel 3
并行导出用户的所有表数据,3为并行度。
并行导出
GDUL> unload user scott parallel 3 Export table SCOTT.DEPT ... done, 4 rows. Export table SCOTT.EMP ... done, 14 rows. Export table SCOTT.BONUS ... done, 0 rows. Export table SCOTT.SALGRADE ... done, 5 rows. Unload user SCOTT finish. 4 tables, 23 rows.
