目录
EXCLUDE=\(TRIGGERS\) 排除triggers重新导入
逻辑导出(dexp)和逻辑导入(dimp)是DM数据库自带的两个命令行工具。只要安装了DM数据库,可在安装目录的bin目录找到。
逻辑导出和导入数据库对象分为四种级别:
数据库级(FULL):导出或导入整个数据库中的所有对象
用户级:导出或导入一个或多个用户所拥有的所有对象
模式级:导出或导入一个或多个模式下的所有对象
表级:导出或导入一个或多个指定的表或表分区。
四种级别独立互斥,不能同时存在。
一般情况下,OWNER 与 SCHEMAS 导入导出是相同的。 但是用户可以包含多个模式,在这种情况下 SCHEMAS 的导入导出是 OWNER 导入导出的一个子集
dexp
dexp 工具名称有两种写法 dexp 和 dexpdp。两者语法完全相同。唯一的区别在于, dexp 导出的文件必须存放在客户端,dexpdp 导出的文件必须存放在服务器端。两者语法相同。
dexp PARAMETER=value { PARAMETER= value }
或
dexpdp PARAMETER= value { PARAMETER= value }
help可查看参数,(不同版本可能参数存在差异,建议使用前使用help查看)
参数
USERID 数据库的连接信息 必选
FILE 明确指定导出文件名称,可选。如果缺省该参数,则导出文件名为dexp.dmp
DIRECTORY 导出文件所在目录。 可选
--如果 FILE 指定的文件包含生成路径,则忽略 DIRECTORY 中的路径;
--如果 FILE 没有指定路径时,使用 DIRECTORY 中指定的路径;
--如果 FILE 和 DIRECTORY 都没有指定路径,则使用系统当前路径
--如果都没有指定路径,程序将根据当前的运行环 境来设置相应的导出路径,一般为当前路径
FULL 导出整个数据库(N)
OWNER 用户名列表,导出一个或多个用户所拥有的所有对象
SCHEMAS 模式列表,导出一个或多个模式下的所有对象
TABLES 表名列表,导出一个或多个指定的表或表分区
--可选 四者中选其一。缺省为 SCHEMAS
FUZZY_MATCH TABLES 选项是否支持模糊匹配(N) 可选
QUERY 用于指定对导出表的数据进行过滤的条件。 可选
PARALLEL 用于指定导出的过程中所使用的线程数目 可选
TABLE_PARALLEL 用于指定导出每张表所使用的线程数,在 MPP 模式下会转换成单线程可选
TABLE_POOL 用于设置导出过程中存储表的缓冲区个数 可选
EXCLUDE
1. 导出内容中忽略指定的对象。对象有 CONSTRAINTS、INDEXES、ROWS、TRIGGERS 和 GRANTS。比如:EXCLUDE= (CONSTRAINTS,INDEXES)
2. 忽略指定的表,使用 TABLES:INFO 格式,如果使用
表级导出方式导出,则使用 TABLES:INFO 格式的EXCLUDE 无效。例如:EXCLUDE= TABLES:table1,table2
3. 忽略指定的模式,使用 SCHEMAS:INFO 格式,如果使用表级,模式级导出方式导出,则使用 SCHEMAS:INFO格式的 EXCLUDE 无效。例如:EXCLUDE=SCHEMAS:SCH1,SCH2
INCLUDE 导出内容中包含指定的对象可选,例如:INCLUDE=(CONSTRAINTS,INDEXES) 或者 INCLUDE=TABLES:table1,table2
CONSTRAINTS 导出约束 (Y)可选。
此处单独设置与 和EXCLUDE/INCLUDE中批量设置功能一样。设置一个即可
TABLESPACE 导出的对象定义是否包含表空间(N)
GRANTS 导出权限 (Y)
INDEXES 导出索引 (Y)
TRIGGERS 导出触发器(Y)
ROWS 导出数据行 (Y)
LOG 明确指定日志文件名称可选,如果缺省该参数,则导出文件名为dexp.log
NOLOGFILE 不使用日志文件(N) 可选
NOLOG 屏幕上不显示日志信息(N) 可选
LOG_WRITE 日志信息实时写入文件 (N) 可选
DUMMY 交互信息处理: 打印(P), 所有交互都按 YES 处理
(Y),NO(N)。默认为 NO,不打印交互信息。可选
PARFILE 参数文件名,如果 dexp 的参数很多,可以存成参数文件 可选
FEEDBACK 每 x 行显示进度 (0) 可选
COMPRESS 是否压缩导出数据文件(N) 可选
ENCRYPT 导出数据是否加密 (N) 可选。
--如果设置 ENCRYPT=Y,那么默认 COMPRESS=Y,先 压缩后加密。
ENCRYPT_PASSWORD 导出数据的加密密钥 和 ENCRYPT 同时使用
ENCRYPT_NAME 导出数据的加密算法 可选。和 ENCRYPT 、ENCRYPT_PASSWORD同时使用。缺省为 RC4
FILESIZE 用于指定单个导出文件大小的上限。可以按字节[B]、 K[B]、M[B]、G[B]的方式指定大小 可选。
--使用 FILESIZE 参数时,FILE(或 LOG)必须使用%U 对名称进行自动扩展,否则报错。
FILENUM 多文件导出时,一个模板可以生成文件数,范围为[1,99],默认 99 可选
DROP 导出后删除原表,但不级联删除 (N) 可选
DESCRIBE 导出数据文件的描述信息,记录在数据文件中 可选
HELP 显示帮助信息 可选
dimp
dimp导出的文件必须存放在客户端,dimpdp导出的文件必须存放在服务器端,两者语法相同。
dimp PARAMETER=value { PARAMETER=value }
或
dimpdp PARAMETER=value { PARAMETER=value }
参数:
USERID 数据库的连接信息 必选
FILE 输入文件,即 dexp 导出的文件 必选
DIRECTORY 导入文件所在目录 可选
FULL 导入整个数据库 (N)
OWNER 导入指定的用户名下的模式
SCHEMAS 导入的模式列表
TABLES 表名列表,指定导入的 tables 名称。不支持对外部表进行导入
--可选,四者中选其一。缺省为 SCHEMAS
PARALLEL 用于指定导入的过程中所使用的线程数目 可选
TABLE_PARALLEL 用于指定导入的过程中每个表所使用的子线程数目 可选。在 FAST_LOAD 为 Y时有效
IGNORE 忽略创建错误 (N)。如果表已经存在则向表中插入数据,否则报错表已经存在。可选
TABLE_EXISTS_ACTION 需要的导入表在目标库中存在时采取的操作[SKIP| APPEND | TRUNCATE | REPLACE] 可选。
-- SKIP:跳过此表。
--APPEND:直接向现有表中导入数据
--TRUNCATE:先删除现有表中的数据,再向表中导入数据
--REPLACE:先删除现有表,再导数据
FAST_LOAD 是否使用 dmfldr 进行数据导入(N) 可选
FLDR_ORDER 使用 dmfldr 是否需要严格按顺序来导数据(Y) 可选
COMMIT_ROWS 批量提交的行数(5000) 可选
EXCLUDE 忽略指定的对象(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS)。格式
EXCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS)可选。例如EXCLUDE=( CONSTRAINT)
GRANTS 导入权限 (Y) 可选
CONSTRAINTS 导入约束 (Y) 可选
INDEXES 导入索引 (Y) 可选
TRIGGERS 导入触发器(Y) 可选
ROWS 导入数据行 (Y) 可选
LOG 日志文件 可选
NOLOGFILE 不使用日志文件(N) 可选
NOLOG 屏幕上不显示日志信息(N) 可选
DUMMY 交互信息处理: 打印(P)。取值 Y/N。
Y:打印所有交互信息。N:不打印交互信息。可选
LOG_WRITE 日志信息实时写入文件(N) 可选
PARFILE 参数文件名,如果 dimp 的参数很多,可以存成参数文件,可选
FEEDBACK 显示每 x 行 (0) 的进度 可选
COMPILE 编译过程,程序包和函数 (Y) 可选
INDEXFILE 将表的索引/约束信息写入指定的文件 可选
INDEXFIRST 导入时先建索引(N) 可选
REMAP_SCHEMA SOURCE_SCHEMA:TARGET_SCHEMA 将SOURCE_SCHEMA 中的数据导入到TARGET_SCHEMA 中可选
ENCRYPT_PASSWORD 数据的加密密钥可选。和 dexp 中的ENCRYPT_PASSWORD 设置的密钥一样
ENCRYPT_NAME 数据的加密算法的名称可选。和 dexp 中的ENCRYPT_NAME 设置的加密算法一样
SHOW/ DESCRIBE 只列出文件内容 (N) 可选
TASK_THREAD_NUMBER设置 dmfldr 处理用户数据的线程数目 可选
BUFFER_NODE_SIZE 设置 dmfldr 读入文件缓冲区大小 可选
TASK_SEND_NODE_NUMBER 用于设置 dmfldr 发送节点个数[16,65535] 可选
LOB_NOT_FAST_LOAD 如果一个表含有大字段,那么不使用 dmfldr,因为 dmfldr 是一行一行提交的可选
PRIMARY_CONFLICT 主键冲突的处理方式[IGNORE | OVERWRITE | OVERWRITE2],默认报错 可选
TABLE_FIRST 是否强制先导入表 (默认 N),Y 表示先导入表,N正常导入 。可选
SHOW_SERVER_INFO 是否显示服务器信息(默认 N),Y 表示显示导出文件对应服务器信息,实际不导入,N 表示不显示导出文件对应服务器信息,正常导入。可选
HELP 显示帮助信息 可选
全库导出:
指定导出文件名,日志文件名
cd /home/dmdba/dmdbms/bin
./dexp SYSDBA/SYSDBA@192.168.89.130:5238 FULL=y FILE=/dmdata/dexpdpdir/dexp_full_%U.dmp LOG=/dmdata/dexpdpdir/dexp_full.log
导入指定的schema
因目标库未创建相同表空间,使用了默认的main表空间
$ cd /home/dmdba/dmdbms/bin/
--导入schema:TEST & SCHEMA1,指定dmp文件目录及文件名
$ ./dimp SYSDBA/SYSDBA@192.168.89.130:5236 FILE=dexp_full_01.dmp DIRECTORY=/dmdata/dimpdpdir SCHEMAS=TEST,SCHEMA1 LOG=/dmdata/dimpdpdir/dimp_test_schema1.log
数据检查:
导入指定schema为另一个schema
创建一个表空间
创建一个用户,并指定默认表空间为创建的ts_test1表空间
导入schema1数据至test1,表使用了默认表空间ts_test1
./dimp SYSDBA/SYSDBA@192.168.89.130:5236 FILE=dexp_full_01.dmp DIRECTORY=/dmdata/dimpdpdir SCHEMAS=SCHEMA1 REMAP_SCHEMA=SCHEMA1:TEST1 LOG=/dmdata/dimpdpdir/dimp_schema1.log
导出指定用户在导入端导入
导出前在导出端test用户新增一个schema并创建一张表,插入几笔数据
CREATE SCHEMA TEST_01 AUTHORIZATION TEST;
CREATE TABLE TEST_01.TAB_TEST_INCR
(
C1 INT NOT NULL IDENTITY(1,2),
C2 VARCHAR(60) NOT NULL,
C3 TIMESTAMP(6) DEFAULT SYSDATE(),
CONSTRAINT PK_TAB_TEST_INCR CLUSTER PRIMARY KEY(C1)
)
STORAGE(INITIAL 5, NEXT 2, MINEXTENTS 5, FILLFACTOR 80,
ON TS_SCHEMA1, CLUSTERBTR) ;
--在导入端创建一个表空间
CREATE TABLESPACE TS_SCHEMA1 DATAFILE '/dmdata/TEST/ts_schema1_01.dbf' SIZE 128 AUTOEXTEND OFF;
导出指定用户test下的schema
./dexp SYSDBA/SYSDBA@192.168.89.130:5238 OWNER=TEST FILE=dexp_owner_test_%U.dmp DIRECTORY=/dmdata/dexpdpdir LOG=/dmdata/dexpdpdir/dexp_owner_test.log
在导入端创建test用户
SQL> CREATE USER TEST IDENTIFIED BY "test01234" DEFAULT TABLESPACE ts_test1;
导入指定用户test下的schema
./dimp SYSDBA/SYSDBA@192.168.89.130:5236 file=/dmdata/dimpdpdir/dexp_owner_test_01.dmp LOG=/dmdata/dimpdpdir/dimp_owner_test.log
导入指定的表
--创建一个表空间
CREATE TABLESPACE TS_SCHEMA1_IDX DATAFILE '/dmdata/TEST/ts_schema1_idx_01.dbf' SIZE 128 AUTOEXTEND OFF;
--导入完成后查看索引并没有使用在导入端已存在的同名表空间TS_SCHEMA1_IDX,使用了默认的main表空间
$ ./dimp SYSDBA/SYSDBA@192.168.89.130:5236 file=/dmdata/dimpdpdir/dexp_tb_test127_01.dmp LOG=/dmdata/dimpdpdir/dimp_tb_test127.log
导出库的schema1,重新导入
删除导出库的schema1,重新导入成功
./dimp SYSDBA/SYSDBA@192.168.89.130:5238 FILE=dexp_full_01.dmp DIRECTORY=/dmdata/dimpdpdir SCHEMAS=SCHEMA1 LOG=/dmdata/dimpdpdir/dimp_schema1.log
使用query导入
清空导入表
SQL> truncate table schema1.tab_test161;
导出端数据共18行
./dexp SYSDBA/SYSDBA@192.168.89.130:5238 TABLES=schema1.tab_test161 FILE=dexp_tab_test161_%U.dmp DIRECTORY=/dmdata/dexpdpdir query="WHERE C1>=15" LOG=/dmdata/dexpdpdir/dexp_tab_test161.log
./dimp SYSDBA/SYSDBA@192.168.89.130:5236 FILE=dexp_tab_test161_01.dmp DIRECTORY=/dmdata/dimpdpdir TABLES=schema1.tab_test161 TABLE_EXISTS_ACTION=APPEND LOG=/dmdata/dimpdpdir/dimp_tab_test161.log
EXCLUDE=\(TRIGGERS\) 排除triggers重新导入
./dimp SYSDBA/SYSDBA@192.168.89.130:5236 FILE=dexp_tab_test161_01.dmp DIRECTORY=/dmdata/dimpdpdir TABLES=schema1.tab_test161 TABLE_EXISTS_ACTION=APPEND EXCLUDE=\(TRIGGERS\) LOG=/dmdata/dimpdpdir/dimp_tab_test161.log