下面看看导出整个TEST用户和导出TEST数据库:
C:\dmdbms\bin>expdb userid=test/testtest file=e:\dmdbms\backup\full.dmp log=e:\dmdbms\backup\full.log full=y
login success
即将导出指定的表通过常规路径 ...
. . 正在导出表 "test"."test"."t_num" 0 行
. . 正在导出表 "test"."test"."T_PART_COL" 0 行
. . 正在导出表 "test"."test"."T_PART_RANGE" 0 行
. . 正在导出表 "test"."test"."T_PART_HASH" 0 行
. . 正在导出表 "test"."test"."T_RECORD" 1000000 行被导出
. . 正在导出表 "test"."test"."t" 4 行被导出
4 procedures output...
****************** total ***********************
1 databases output...
2 schemas output...
6 tables output...
22 indexes output...
0 triggers output...
0 views output...
4 stored procedures output...
1 sequences output...
0 roles output...
0 dblinks output...
2 synonyms output...
********************* end **********************
成功终止导出, 没有出现警告。
C:\dmdbms\bin>expdb userid=test/testtest file=e:\dmdbms\backup\test.dmp log=e:\dmdbms\backup\test.log owner=test
login success
即将导出指定的表通过常规路径 ...
. . 正在导出表 "test"."test"."t_num" 0 行
. . 正在导出表 "test"."test"."T_PART_COL" 0 行
. . 正在导出表 "test"."test"."T_PART_RANGE" 0 行
. . 正在导出表 "test"."test"."T_PART_HASH" 0 行
. . 正在导出表 "test"."test"."T_RECORD" 1000000 行被导出
. . 正在导出表 "test"."test"."t" 4 行被导出
4 procedures output...
****************** total ***********************
0 databases output...
1 schemas output...
6 tables output...
22 indexes output...
0 triggers output...
0 views output...
4 stored procedures output...
1 sequences output...
0 roles output...
0 dblinks output...
2 synonyms output...
********************* end **********************
成功终止导出, 没有出现警告。
login success
即将导出指定的表通过常规路径 ...
. . 正在导出表 "test"."test"."t_num" 0 行
. . 正在导出表 "test"."test"."T_PART_COL" 0 行
. . 正在导出表 "test"."test"."T_PART_RANGE" 0 行
. . 正在导出表 "test"."test"."T_PART_HASH" 0 行
. . 正在导出表 "test"."test"."T_RECORD" 1000000 行被导出
. . 正在导出表 "test"."test"."t" 4 行被导出
4 procedures output...
****************** total ***********************
1 databases output...
2 schemas output...
6 tables output...
22 indexes output...
0 triggers output...
0 views output...
4 stored procedures output...
1 sequences output...
0 roles output...
0 dblinks output...
2 synonyms output...
********************* end **********************
成功终止导出, 没有出现警告。
C:\dmdbms\bin>expdb userid=test/testtest file=e:\dmdbms\backup\test.dmp log=e:\dmdbms\backup\test.log owner=test
login success
即将导出指定的表通过常规路径 ...
. . 正在导出表 "test"."test"."t_num" 0 行
. . 正在导出表 "test"."test"."T_PART_COL" 0 行
. . 正在导出表 "test"."test"."T_PART_RANGE" 0 行
. . 正在导出表 "test"."test"."T_PART_HASH" 0 行
. . 正在导出表 "test"."test"."T_RECORD" 1000000 行被导出
. . 正在导出表 "test"."test"."t" 4 行被导出
4 procedures output...
****************** total ***********************
0 databases output...
1 schemas output...
6 tables output...
22 indexes output...
0 triggers output...
0 views output...
4 stored procedures output...
1 sequences output...
0 roles output...
0 dblinks output...
2 synonyms output...
********************* end **********************
成功终止导出, 没有出现警告。
除了上面介绍的这几个例子,expdb还支持绝大部分exp的参数。可能是与达梦数据库的内存管理机制有关,expdb不支持buffer和recordlength等与客户端分配内存有关的参数。
下面再看看导入工具,和expdb一样,impdb也支持两种模式,一种是Oracle的imp兼容模式,另一种是与老版本兼容的模式,推荐使用功能更强的第一种模式。
C:\dmdbms\bin>impdb userid=test/testtest file=e:\dmdbms\backup\test.dmp log=e:\dmdbms\backup\t.log tables=t ignore=y
impdb version: 0X1000101
login success
表 t 已经存在
. . 正在导入表 test.test.t
4行被导入
Error Code -2352: 无效的同义词名 'S_T'
CREATE SYNONYM "S_T" FOR "test"."T"
Error Code -2352: 无效的同义词名 'S_TEST'
CREATE SYNONYM "S_TEST" FOR "test"."F_TAX"
****************** total ***********************
0 databases input...
1 schemas input...
0 tables input...
0 indexes input...
0 triggers input...
0 views input...
0 stored procedures input...
0 sequences input...
0 roles input...
0 dblinks input...
0 synonyms input...
********************* end **********************
成功终止导入, 但出现警告
impdb version: 0X1000101
login success
表 t 已经存在
. . 正在导入表 test.test.t
4行被导入
Error Code -2352: 无效的同义词名 'S_T'
CREATE SYNONYM "S_T" FOR "test"."T"
Error Code -2352: 无效的同义词名 'S_TEST'
CREATE SYNONYM "S_TEST" FOR "test"."F_TAX"
****************** total ***********************
0 databases input...
1 schemas input...
0 tables input...
0 indexes input...
0 triggers input...
0 views input...
0 stored procedures input...
0 sequences input...
0 roles input...
0 dblinks input...
0 synonyms input...
********************* end **********************
成功终止导入, 但出现警告
可以看到,虽然和Oracle的imp命令兼容,但是处理方式还是有所区别的。再导入的时候选择的是全用户导出的dmp文件,不过导入的时候明确指定了导入表T,impdb在导入过程中,确实过滤了表,只导入T表的数据,但是用户中的其他对象,比如同义词被再次导入。这一点应该算是个小bug吧。