点睛图 > GDUL > 无SYSTEM表空间恢复

无SYSTEM表空间恢复

具体步骤如下:

1. 设置字符集等参数(gdul.ini)

db_charset ZHS16GBK
db_ncharset AL16UTF16
db_timezone +08:00

说明:可以查询其它相似库来获取参数值:
select name, value$
from sys.props$
where name in ('NLS_CHARACTERSET',
'NLS_NCHAR_CHARACTERSET',
'DBTIMEZONE');

2. 扫描表所在表空间

GDUL> scan tablespace 7 parallel 10

3. 采样已扫描的表空间

GDUL>sample segment all
$cd sample
说明:该操作执行采样,并在sample目录下生成segment列定义及采样数据。
注意:
采样的列类型可能不准确,如果有测试库可以获取表结构,可以替换掉sample/seg_.dict中内的采样列定义,再执行unload
从其它库获取表定义语句:
SQL>select '<row>'
|| '<COL#>'         || col#         || '</COL#>'
|| '<SEGCOL#>'      || segcol#      || '</SEGCOL#>'
|| '<INTCOL#>'      || intcol#      || '</INTCOL#>'
|| '<TYPE#>'        || type#        || '</TYPE#>'
|| '<NAME>'         || name         || '</NAME>'
|| '<LENGTH>'       || length       || '</LENGTH>'
|| '<SEGCOLLENGTH>' || segcollength || '</SEGCOLLENGTH>'
|| '<PRECISION#>'   || precision#   || '</PRECISION#>'
|| '<SCALE>'        || scale        || '</SCALE>'
|| '<CHARSETID>'    || charsetid    || '</CHARSETID>'
|| '<CHARSETFORM>'  || charsetform  || '</CHARSETFORM>'
|| '</row>'
from sys.col$
where obj# = (select object_id from dba_objects where owner = '<OWNER>' and object_name = '<TABLE_NAME>')
order by col#;

4. unload采样出的数据段


GDUL>unload segment all | <data_object_id>
说明:用指定的data_object_id unload表数据, 指定all会恢复所有segment