DM8逻辑导出导入主要指令是dexp/dimp 或者dexpdp/dimpdp 两种指令都是参数都是一样的。
唯一区别就是dexp可以支持远程导出,dexpdp只支持导出到服务器上的路径。
一、搭建测试环境
1、创建测试用户和表空间
drop tablespace BKTEST;
create tablespace bktest datafile '/dmdata/bktest01.dbf' size 128 CACHE = NORMAL;
drop tablespace BKTEST;
create user BKTEST identified by bktest123456
PROFILE "DEFAULT"
default tablespace "BKTEST"
default index tablespace "BKTEST";
grant "PUBLIC","SOI","VTI" to BKTEST;
2、创建测试schema
--默认会为每一个用户创建一个同名的schema
CREATE SCHEMA BKTEST2 AUTHORIZATION "BKTEST";
3、创建测试表
drop table BKTEST.TABLE_1
create table BKTEST.TABLE_1
(
COLUMN_1 CHAR(10) ,
COLUMN_2 CHAR(10),
COLUMN_3 CHAR(10)
)
storage(initial 1, next 1, minextents 1, fillfactor 0)
;
alter table BKTEST.TABLE_1 add constraint PK_TABLE_1 primary key("COLUMN_1");
4、插入测试数据
insert into BKTEST2.table_2 values('a','table_2','test');
insert into BKTEST2.table_2 values('b','table_2','test');
insert into BKTEST2.table_2 values('c','table_2','test');
insert into BKTEST2.table_2 values('q','table_2','test');
insert into BKTEST2.table_2 values('b','table_2','test');
insert into BKTEST2.table_2 values('c','table_2','test');
二、按照不同策略备份
1、全库导出
dexp USERID=SYSDBA/SYSDBA file=ful.bak directory=/dmbk full=Y
2、导出制定用户
dexp USERID=SYSDBA/SYSDBA file=BKTEST.bak directory=/dmbk OWNER=BKTEST
3、导出指定表
dexp USERID=SYSDBA/SYSDBA file=table.bak directory=/dmbk tables=BKTEST.table_1,BKTEST2.table_2
4、导出制定schemal
dexp USERID=SYSDBA/SYSDBA file=BKTEST2.bak directory=/dmbk SCHEMAS=BKTEST2
4、不导出指定对象
dexp USERID=SYSDBA/SYSDBA file=BKTEST_NOROW.bak directory=/dmbk OWNER=BKTEST rows=N --不导出行
dexp USERID=SYSDBA/SYSDBA file=BKTEST_NO2.bak directory=/dmbk OWNER=BKTEST EXCLUDE=SCHEMAS:BKTEST2 --不导出schema BKTEST2
5、开启导出并行
dexp USERID=SYSDBA/SYSDBA file=BKTESTP.bak directory=/dmbk OWNER=BKTEST PARALLEL=2
三、恢复对应备份集
1、恢复指定表
用全备备份恢复
dimp USERID=SYSDBA/SYSDBA file=ful.bak directory=/dmbk tables=bktest.table_1
在表已经存在的情况下进行表恢复
dimp USERID=SYSDBA/SYSDBA file=ful.bak directory=/dmbk tables=bktest2.table_2 TABLE_EXISTS_ACTION=APPEND
dimp USERID=SYSDBA/SYSDBA file=ful.bak directory=/dmbk tables=bktest.table_1 TABLE_EXISTS_ACTION=TRUNCATE
切换指定表的schema
dimp USERID=SYSDBA/SYSDBA file=ful.bak directory=/dmbk tables=bktest.table_1 REMAP_SCHEMA=bktest:bktest2
2、恢复指定 schema
drop schema "BKTEST2" cascade;
dimp USERID=SYSDBA/SYSDBA file=ful.bak directory=/dmbk SCHEMAS=BKTEST2
3、恢复指定owner
drop user "BKTEST" cascade;
重新创建用户,导入用户需要保证指定用户存在
dimp USERID=SYSDBA/SYSDBA file=ful.bak directory=/dmbk OWNER=BKTEST
4、恢复全库
dimp USERID=SYSDBA/SYSDBA file=ful.bak directory=/dmbk full=Y TABLE_EXISTS_ACTION=TRUNCATE
5、提高导入效率
相关参数
FAST_LOAD :使用直接路径加载
PARALLEL:提高并行度
TABLE_PARALLEL: 在开启直接路径加载的时候有效
BUFFER_NODE_SIZE:直接路径加载文件缓冲区大小
总结,测试过程中未发现报错,功能完整无异常,导入效率限制于测试环境没有很好的参考