达梦备份之逻辑导出导入
一、 概念
逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实 现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,(联机方式是指数据库服务器正常运行过程中进行的备份和还原)。dexp 和 dimp 是 DM 数据库自带 的工具,只要安装了 DM 数据库,就可以在安装目录/dmdbms/bin 中找到。
逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四 种级别独立互斥,不能同时存在。
四种级别所提供的功能:
数据库级(FULL):导出或导入整个数据库中的所有对象。
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
表级(TABLES):导出或导入一个或多个指定的表或表分区。
dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备 份。
本地:./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp DIRECTORY=/mnt/dexp/data LOG=db_str.log FULL=Y
远程:./dexp USERID=SYSDBA/SYSDBA@192.168.0.248:8888 FILE=db_str.dmp DIRECTORY=/mnt/dexp/data LOG=db_str.log FULL=Y
---------------------------dexp------------------------------------
dexp 工具名称有两种写法 dexp 和 dexpdp。两者语法完全相同。唯一的区别在于, dexp 导出的文件必须存放在客户端,dexpdp 导出的文件必须存放在服务器端。
二、 参数
1、PARFILE
dexp PARFILE=dexp.par
参数文件名,如果 dexp 的参数很多,可以存成参数 文件
例如:
dexp USERID=SYSDBA/SYSDBA@192.168.1.102:5236 PARFILE=dexp.par
[dmdba@localhost ~]$ cat dexp.par
DIRECTORY=/home/dmdba/dump
file=dmoa.dmp
log=dmoa.log
full=y
2、help
[dmdba@zb020-146-10 ~]$ dexp help
dexp V8
格式: ./dexp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例如: ./dexp SYSDBA/SYSDBA GRANTS=Y TABLES=(SYSDBA.TAB1,SYSDBA.TAB2,SYSDBA.TAB3)
USERID 必须是命令行中的第一个参数
关键字 说明(默认值)
USERID 用户名/口令:USER/PWD
FILE 导出文件 (dexp.dmp)
DIRECTORY 导出文件所在目录
FULL 整库导出 (N)
OWNER 以用户方式导出 格式 (user1,user2,...)
SCHEMAS 以模式方式导出 格式 (schema1,schema2,...)
TABLES 以表方式导出 格式 (table1,table2,...)
FUZZY_MATCH TABLES选项是否支持模糊匹配 (N)
QUERY 用于导出表的子集的select 子句
PARALLEL 用于指定导出的过程中所使用的线程数目
TABLE_PARALLEL 用于指定导出的过程中表内的并发线程数目,MPP模式下会转换成单线程
TABLE_POOL 用于指定表的缓冲区个数
EXCLUDE 忽略指定的对象
格式 EXCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS) or
EXCLUDE=TABLES:table1,table2 or
EXCLUDE=SCHEMAS:sch1,sch2
INCLUDE 包含指定的对象
格式 INCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS) or
INCLUDE=TABLES:table1,table2
CONSTRAINTS 导出约束 (Y)
TABLESPACE 导出对象带有表空间 (N)
GRANTS 导出权限 (Y)
INDEXES 导出索引 (Y)
TRIGGERS 导出触发器 (Y)
ROWS 导出数据行 (Y)
LOG 屏幕输出的日志文件
NOLOGFILE 不使用日志文件(N)
NOLOG 屏幕上不显示日志信息(N)
LOG_WRITE 日志信息实时写入文件: 是(Y),否(N)
DUMMY 交互信息处理: 打印(P), 所有交互都按YES处理(Y),NO(N)
PARFILE 参数文件名
FEEDBACK 每 x 行显示进度 (0)
COMPRESS 导出数据是否压缩 (N)
ENCRYPT 导出数据是否加密 (N)
ENCRYPT_PASSWORD 导出数据的加密密钥
ENCRYPT_NAME 加密算法的名称
FILESIZE 每个转储文件的最大大小
FILENUM 一个模板可以生成的文件数
DROP 导出后删除原表,但不级联删除 (N)
DESCRIBE 导出数据文件的描述信息,记录在数据文件中
LOCAL MPP模式下登录使用MPP_LOCAL方式(N)
HELP 打印帮助信息
3、针对说明
• FUZZY_MATCH TABLES 选项是否支持模糊匹配(N)
例:
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=OTHER.R% FUZZY_MATCH=Y
• QUERY 用于导出表的子集的select 子句
例:导出 OTHER.READER 表中满足"WHERE AGE=19"条件的数据。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=OTHER.READER QUERY="WHERE AGE=19"
• TABLE_PARALLEL 用于指定导出的过程中表内的并发线程数目
TABLE_PARALLEL 用于指定导出每张表所使用的线程数。可选参数,缺省为单线程。 如果 CPU 核数为 N 的话,那一般来说 TABLE_PARALLEL 为 N 或者 N+1 最合适。在 MPP 模 式下会转换成单线程。
列如:
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp TABLE_PARALLEL=3
• TABLE_POOL 用于指定表的缓冲区个数
TABLE_POOL 用于设置导出过程中存储表数据的缓冲区个数。可选参数。 语法如下: TABLE_POOL= :存储表数据的缓冲区个数。缺省值为 1。整数类型,取值范围:1-20。
提示:TABLE_PARALLEL 固定的情况下,导出时间随着 TABLE_POOL 个数的增 加而减少。当 TABLE_POOL 稍大于 TABLE_PARALLEL 时结果为最优。
• TABLESPACE 导出对象带有表空间 (N)
Tablespace=n
[dmdba@localhost dump]$ strings 1.dmp |more
AES256_ECB
1-2-18-21.11.11-150669-10013-ENT Pack16
DM_TEST
DM_TESTo
CREATE TABLE "DM_TEST"
"NAME" VARCHAR(128),
"ID" INT,
"SCHID" INT,
"TYPE$" VARCHAR(10),
"SUBTYPE$" VARCHAR(10),
"PID" INT,
"VERSION" INT,
"CRTDATE" DATETIME(6),
"INFO1" INT,
"INFO2" INT,
"INFO3" BIGINT,
"INFO4" BIGINT,
"INFO5" VARBINARY(128),
"INFO6" VARBINARY(2048),
"INFO7" BIGINT,
"INFO8" VARBINARY(1024),
"VALID" CHAR(1)) STORAGE(CLUSTERBTR) ;
Tablespace=y
[dmdba@localhost dump]$ strings 2.dmp |more
AES256_ECB
1-2-18-21.11.11-150669-10013-ENT Pack16
DM_TEST
DM_TEST
CREATE TABLE "DM_TEST"
"NAME" VARCHAR(128),
"ID" INT,
"SCHID" INT,
"TYPE$" VARCHAR(10),
"SUBTYPE$" VARCHAR(10),
"PID" INT,
"VERSION" INT,
"CRTDATE" DATETIME(6),
"INFO1" INT,
"INFO2" INT,
"INFO3" BIGINT,
"INFO4" BIGINT,
"INFO5" VARBINARY(128),
"INFO6" VARBINARY(2048),
"INFO7" BIGINT,
"INFO8" VARBINARY(1024),
"VALID" CHAR(1)) STORAGE(ON "TS_DMOA_DATA", CLUSTERBTR) ;
• rows
例如,设置 ROWS=N 不导出表中的数据。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp NOLOGFILE=Y FULL=Y DIRECTORY=/mnt/data/dexp ROWS=N
• LOG_WRITE 日志信息实时写入文件: 是(Y),否(N)
LOG_WRITE 用于日志信息实时写入日志文件。可选参数。
语法如下: LOG_WRITE=Y/N
Y:一边将日志内容打印到屏幕上,一边将日志内容写入日志文件。
N 或缺省参数:日志内容先在屏幕上全部打印完毕再写入日志文件。
• FEEDBACK
FEEDBACK 用来指明在导出数据的过程中每间隔多少行打印一次进度信息。可选参数。 当参数缺省时,默认为 0,只打印导出表的总行数。
例如,将整个数据库导出到文件 dexp.dmp 中,并且在导出的过程中每隔 100 行打印 一次进度信息。
[dmdba@localhost dump]$ dexp USERID=SYSDBA/SYSDBA@192.168.1.102:5236 file=1.dmp log=1.log tables=dmoa.dm_test feedback=100000^C
[dmdba@localhost dump]$
[dmdba@localhost dump]$ more 1.log
dexp V8---- [2022-07-12 15:50:56]export table:DM_TEST -----
the privilege of the object at the export mode...
export-table[DM_TEST]'s data rows [100000]
export-table[DM_TEST]'s data rows [200000]
export-table[DM_TEST]'s data rows [300000]
export-table[DM_TEST]'s data rows [400000]
export-table[DM_TEST]'s data rows [500000]
export-table[DM_TEST]'s data rows [600000]
• DESCRIBE 导出数据文件的描述信息,记录在数据文件中
在使用 dexpdp 和 dimpdp 时,DIRECTORY 参数支持使用在服务器端通过 CREATE DIRECTORY 定义的目录名。 例如,先在服务器端创建名为GYFDIR的目录,再使用该目录进行导出。
--先连接上远程的数据库服务器 192.168.1.60:5236 disql.exe SYSDBA/SYSDBA@192.168.1.60:5236
--在远程服务器上创建目录 CREATE OR REPLACE DIRECTORY "GYFDIR" AS 'E:\test\path';
--使用 dexpdp 导出文件 dexpdp.exe USERID=SYSDBA/SYSDBA@192.168.1.60:5236 FILE=dexpDP.dmp LOG=dexpDP.log FULL=Y DIRECTORY=GYFDIR
一般情况下,OWNER 与 SCHEMAS 导入导出是相同的。
但是用户可以包含多个模式,在这种情况下 SCHEMAS 的导入导出是 OWNER 导入导出的一个子集。
---------------------------dimp------------------------------------
dimp 逻辑导入工具利用 dexp 工具生成的备份文件对本地或远程的数据库进行联机逻 辑还原。dimp 导入是 dexp 导出的相反过程。还原的方式可以灵活选择,如是否忽略对象 存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日 志等。 dimp 工具名称有两种写法 dimp 和 dimpdp。两者语法完全相同。唯一的区别在于, dimp 导入的文件必须存放在客户端,dimpdp 导入的文件必须存放在服务器端。
关键字 说明(默认值)
USERID 用户名/口令 格式:{<username>[/<password>] | /}[@<connect_identifier>][<option>] [<o
<connect_identifier> : [<svc_name> | host[:port] | <unixsocket_file>]
<option> : #{<exetend_option>=<value>[,<extend_option>=<value>]...}
--此行外层{}是为了封装参数之用,书写时需要保留
<os_auth> : AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
FILE 导入文件名称 (dexp.dmp)
DIRECTORY 导入文件所在目录
FULL 整库导入 (N)
OWNER 以用户方式导入 格式 (user1,user2,...)
SCHEMAS 以模式方式导入 格式 (schema1,schema2,...)
TABLES 以表名方式导入 格式(table1,table2,...)
PARALLEL 用于指定导入的过程中所使用的线程数目
TABLE_PARALLEL 用于指定导入的过程中每个表所使用的子线程数目,在FAST_LOAD为Y时有效
IGNORE 忽略创建错误 (N)
TABLE_EXISTS_ACTION 需要的导入表在目标库中存在时采取的操作[SKIP | APPEND | TRUNCATE | REPLACE]
FAST_LOAD 是否使用dmfldr来导数据(N)
FLDR_ORDER 使用dmfldr是否需要严格按顺序来导数据(Y)
COMMIT_ROWS 批量提交的行数(5000)
EXCLUDE 忽略指定的对象 格式
格式 EXCLUDE=(CONSTRAINTS,INDEXES,ROWS,TRIGGERS,GRANTS)
GRANTS 导入权限 (Y)
CONSTRAINTS 导入约束 (Y)
INDEXES 导入索引 (Y)
TRIGGERS 导入触发器 (Y)
ROWS 导入数据行 (Y)
LOG 指定日志文件
NOLOGFILE 不使用日志文件(N)
NOLOG 屏幕上不显示日志信息(N)
LOG_WRITE 日志信息实时写入文件(N): 是(Y),否(N)
DUMMY 交互信息处理(P): 打印(P), 所有交互都按YES处理(Y),NO(N)
PARFILE 参数文件名
FEEDBACK 每 x 行显示进度 (0)
COMPILE 编译过程, 程序包和函数... (Y)
INDEXFILE 将表的索引/约束信息写入指定的文件
INDEXFIRST 导入时先建索引(N)
REMAP_SCHEMA 格式(SOURCE_SCHEMA:TARGET_SCHEMA)
将SOURCE_SCHEMA中的数据导入到TARGET_SCHEMA中
ENCRYPT_PASSWORD 数据的加密密钥
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 打印帮助信息
TABLE_EXISTS_ACTION
用于要导入的表已经存在时的处理方式。默认为直接报错。
语法如下: TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE]
SKIP:跳过此表。
APPEND:直接向现有表中导入数据。
TRUNCATE:先删除现有表中的数据,再向表中导入数据。
REPLACE:先删除现有表,再导数据。
REMAP_SCHEMA
将源模式中的数据导入到目标模式中。可选参数。
例如,将 SYSDBA 模式中的数据导入到 PRERSON 模式中。
./dimp SYSDBA/SYSDBA FILE=/mnt/data/dexp/imp_exp.dmp DIRECTORY=/mnt/data/dimp FULL=Y REMAP_SCHEMA=SYSDBA:PERSON
无 REMAP_TABLESPACE
SHOW/DESCRIBE
SHOW/DESCRIBE 用于设置是否打印 dexp 导出的数据文件的内容列表。可选参数。
例如,想查看/mnt/data/dexp/中 db_str.dmp 文件的内容列表。
三、 举例
--------------------------------导出文件列表信息--------------------------------
共包含 1 个文件,文件如下: ./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp SHOW=Y
导出文件为 FULL 方式导出,共包含以下 7 个模式 模式 PERSON 含有 4 个表,分别为: ADDRESS ADDRESS_TYPE PERSON PERSON_TYPE
模式 PRODUCTION 含有 7 个表,分别为: PRODUCT_CATEGORY PRODUCT_SUBCATEGORY PRODUCT LOCATION PRODUCT_INVENTORY PRODUCT_ REVIEW PRODUCT_VENDOR
模式 PURCHASING 含有 5 个表,分别为: VENDOR VENDOR_ADDRESS VENDOR_PERSON PURCHASEORDER_HEADER PURCHASEORDER_DETAIL
模式 RESOURCES 含有 4 个表,分别为: DEPARTMENT EMPLOYEE EMPLOYEE_ADDRESS EMPLOYEE_DEPARTMENT
模式 SALES 含有 5 个表,分别为: CUSTOMER CUSTOMER_ADDRESS SALESPERSON SALESORDER_HEADER SALESORDER_DETAIL
模式 SYSDBA 含有 1 个表,分别为: TAB1 模式 OTHER 含有 10 个表,分别为: DEPARTMENT EMPSALARY ACCOUNT ACTIONS READER READERAUDIT DEPTT
更多资讯请上达梦技术社区了解:https://eco.dameng.com