GDUL入门指南

GDUL是老耿开发的一款类dul工具,当数据库由于某种原因无法打开时,可以利用GDUL把表数据直接读取出来。导出表之前需要先配置数据文件列表、ASM磁盘列表等,然后才能导出表数据。

1. 配置GDUL

GDUL支持各Linux/Unix平台和Windows平台,以下步骤适用于数据库可以MOUNT的情况

1) Unix/Linux平台配置

解压缩gdul<版本号>.tar.gz文件,bin_file中包含各Unix、Linux平台gdul可执行文件,osetup为初始配置程序。

文件清单:

文件名说明
gdulgdul可执行文件,使用时请 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.exegdul可执行文件。

注意: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="&quot;"/>
  <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, 327688192
file_raw_offset数据文件裸设备偏移量0 或正整数0
reverse_byte字节序反转标记0=小端序, 1=大端序0
export_format导出文件格式dmp=ORACLE DMP格式, ldr=SQL*Loader格式dmp
ldr_enclose_charSQL*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.