点睛图 > 文档 > GDUL入门指南

GDUL入门指南

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

1. 配置GDUL

PeOny支持各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
$./osetup
说明:该程序创建conf, dict, dump, log目录,并生成配置文件、数据文件、ASM磁盘列表文件。

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.exe

gdul可执行文件。

注意

1. gdul只支持64位操作系统。

2. Windows下无法执行osetup脚本,需要手工创建目录和conf/下的配置文件。

配置步骤:

1.手工创建目录和配置文件

说明:
在gdul可执行文件目录下,创建conf, dict, log, dump, sample子目录,并且在conf子目录下创建gdul.ini, datafile.ini, asmdisk.ini。

1)创建gdul.ini

注意:需要更改db_compat_version为当前数据库版本,注意12c及以上版本需要指定详细版本号,如12.1.0.1,请参见sqlplus -v输出。

<!--DB compatiable version, 9, 10, 11, 12-->
<db_compat_version>11.1.0.1</db_compat_version>

<!--default block size, 4096, 8192, 16384, 32768-->
<db_block_size>8192</db_block_size>

<!--default datafile raw offset, 0, 4096-->
<file_raw_offset>0</file_raw_offset>

<!--extract DB files on different endian platform-->
<reverse_byte>false</reverse_byte>

<block_checksum>true</block_checksum>

<!--export to SQLLDR, EXP, EXPDP-->
<export_format>EXPDP</export_format>

<!--text format splite char-->
<ldr_enclose_char>|</ldr_enclose_char>

<!--unload block trace-->
<trace_block>false</trace_block>

2)创建datafile.ini

SQL语句:
set linesize 200
select ' <row> '       ||
        '<file#>'      ||file#      ||'</file#> '      ||
        '<ts#>'        ||ts#        ||'</ts#> '        ||
        '<rfile#>'     ||rfile#     ||'</rfile#> '     ||
        '<blocks>'     ||blocks     ||'</blocks> '     ||
        '<block_size>' ||block_size ||'</block_size> ' ||
        '<name>'       ||name       ||'</name> '       ||
        '<raw_offset>' ||0          ||'</raw_offset> ' ||
        '</row>'
  from v$datafile;

文件最终格式如下:
<datafile>
<row> <file#>1</file#> <ts#>0</ts#> <rfile#>1</rfile#> <blocks>256000</blocks> <block_size>8192</block_size> <name>/datafiles/a110a64f/data/system01.dbf</name> <raw_offset>0</raw_offset> </row>
<row> <file#>2</file#> <ts#>1</ts#> <rfile#>2</rfile#> <blocks>211744</blocks> <block_size>8192</block_size> <name>/datafiles/a110a64f/data/sysaux01.dbf</name> <raw_offset>0</raw_offset> </row>
</datafile>

3)创建asmdisk.ini

SQL语句:
set linesize 200
select ' <row> '       ||
       '<disk_number>' ||disk_number ||'</disk_number> ' ||
       '<path>'        ||path        ||'</path> '        ||
          '<raw_offset>'  ||0           ||'</raw_offset> '  ||
       '</row>'
  from v$asm_disk;

 

文件最终格式:
<asmdisk>
asm disk列表, 非asm环境为空行。
</asmdisk>

2. 启动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) 配置文件说明

osetup会生成conf/gdul.ini配置文件,参数说明如下:

参数

描述

取值范围

默认值

db_compat_version

数据库版本

sqlplus -v输出

11.1.0.0

db_block_size

默认数据块大小

4096
8192
16384
32768

8192

file_raw_offset

默认文件头偏移量,仅适用于AIX

0或4096

0

reverse_byte

读取不同CPU平台的数据文件

false, true

false

export_format

导出数据格式

SQLLDR
EXP
EXPDP
DB

EXPDP

ldr_enclose_char

文本方式导出时,字段分隔符

ascii字符

|

trace_block

导出时跟踪块

false, true

false

2. 导出表数据

1)获取数据字典

$./gdul
GDUL> bootstrap
Bootstrap finish.
2)导出单张表
GDUL> unload table andy.t_blob
2019-01-20 11:57:02...unloading table T_BLOB 2 rows unloaded.
3)导出用户下所有表
GDUL> unload user andy parallel 3
Unloading ANDY's tables, total cnt: 8
[00] 2019-01-20 11:57:00 unloading table t_lower...
[02] 2019-01-20 11:57:00 unloading table T_TEST2...
[01] 2019-01-20 11:57:00 unloading table T_TEST1...
[02] 2019-01-20 11:57:00 table T_TEST2 unloaded 0 rows.
[02] 2019-01-20 11:57:00 unloading table T_PART1...
[00] 2019-01-20 11:57:00 table t_lower unloaded 1 rows.
[00] 2019-01-20 11:57:00 unloading table T_VARCHAR...
[01] 2019-01-20 11:57:00 table T_TEST1 unloaded 1 rows.
[01] 2019-01-20 11:57:00 unloading table T_TEST_PK...
[01] 2019-01-20 11:57:00 table T_TEST_PK unloaded 0 rows.
[01] 2019-01-20 11:57:00 unloading table T_NUM3...
[00] 2019-01-20 11:57:00 table T_VARCHAR unloaded 7 rows.
[02] 2019-01-20 11:57:00 table T_PART1 unloaded 86324 rows.
[01] 2019-01-20 11:57:00 table T_NUM3 unloaded 0 rows.
[01] 2019-01-20 11:57:00 unloading table T_TEST222...
[01] 2019-01-20 11:57:00 table T_TEST222 unloaded 0 rows.
Finished.