达梦数据库逻辑备份(dexp/dimp)

 逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。

逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:

      数据库级(FULL):导出或导入整个数据库中的所有对象。

      用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。

      模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。

      表级(TABLES):导出或导入一个或多个指定的表或表分区。

查看逻辑备份、还原的相关参数:

[dmdba@localhost bak]$ dexp help
dexp V8
version: 03134283904-20220630-163817-20005
格式: ./dexp  KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)

例程: ./dexp  SYSDBA/SYSDBA GRANTS=Y TABLES=(SYSDBA.TAB1,SYSDBA.TAB2,SYSDBA.TAB3)

USERID 必须是命令行中的第一个参数

关键字              说明(默认值)
--------------------------------------------------------------------------------
USERID              用户名/口令 格式:{[/] | /}[@][

dexp 工具名称有两种写法 dexp 和 dexpdp。两者语法完全相同。唯一的区别在于,dexp 导出的文件必须存放在客户端,dexpdp 导出的文件必须存放在服务器端。

[dmdba@localhost bak]$ dimp help
dimp V8
version: 03134283904-20220630-163817-20005
格式: ./dimp KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)

例程: ./dimp SYSDBA/SYSDBA IGNORE=Y ROWS=Y FULL=Y

USERID 必须是命令行中的第一个参数

关键字                 说明(默认值)
--------------------------------------------------------------------------------
USERID                 用户名/口令 格式:{[/] | /}[@][

案列:

1、

dexp SYSDBA/SYSDBA file=full.dmp log=full.log full=Y

全库导出。这里文件、日志路径没有书写,所以命令在哪个目录下执行,导出的文件就存放在哪个目录下。如果写绝对路径,要注意目标目录的权限是否满足。也可通过参数DIRECTORY指定目录。

dexp SYSDBA/SYSDBA file=full1.dmp log=full1.log full=Y COMPRESS=Y

全库压缩备份,测试库几乎没数据,但看的出还是有些效果的。

[dmdba@localhost bak]$ ll -thr
total 208K
-rw-r--r-- 1 dmdba dinstall 130K Aug 29 02:07 full.dmp
-rw-r--r-- 1 dmdba dinstall  15K Aug 29 02:07 full.log
-rw-r--r-- 1 dmdba dinstall  43K Aug 29 02:09 full1.dmp
-rw-r--r-- 1 dmdba dinstall  15K Aug 29 02:09 full1.log

dexp SYSDBA/SYSDBA file=full2.dmp log=full2.log full=Y COMPRESS=Y PARALLEL=4

全库压缩多线程备份,这几个参数都可以在一起使用。还可以跟一些加密的参数,这里不在演示。

2、

dexp SYSDBA/SYSDBA owner=test1 file=test01.dmp log=test01.log full=Y
dexp V8
[警告]暂时不支持多种导出模式……
[警告]导出失败

在导出一个用户时则不能导出全库,四种级别独立互斥,不能同时存在,这里取消full=Y即可。如过要导出多个用户,owner后面用逗号隔开。

dexp SYSDBA/SYSDBA owner=test1,test2,test3 file=test.dmp log=testlog

3、

dexp SYSDBA/SYSDBA file=cust.dmp log=cust.log tables=sales.customer_address query="where addressid=12"

根据条件导出一张表

4、

dexp SYSDBA/SYSDBA file=sales.dmp log=sales.log schemas=sales exclude=tables:customer

导出一个SCHEMAS下所有的对象,但排除一张customer表。从HELP上可以明白还可以排除索引、约束之列。但是要注意表级和模式级。

5、

dimp userid=SYSDBA/SYSDBA remap_schema=SALES:SALES1 file=sales.dmp log=sales1.log parallel=4

导入时切换SCHEMA,目标SCHEMA无需提前创建,执行导入命令后自动创建。(这里测试了remap_tablespace,语句可以执行,但没有实际效果)

6、

dimp SYSDBA/SYSDBA file=sales.dmp log=sales_dimp.log schemas=sales table_exists_action=replace commit_rows=6

在导入时,如果表存在做何操作。从HELP里看有4中选项:[SKIP | APPEND | TRUNCATE | REPLACE],根据需求酌情选择。批量提交的行数为6行。

其余很多参数不再一一测试,例如FILESIZE、FILENUM、IGNORE应该都是比较常用的参数。

社区地址:https://eco.dameng.com

         

你可能感兴趣的:(达梦,数据库)