文章目录
- 一.dexp 逻辑导出
- 二.dimp 逻辑导入
DM 数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原。其中逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原,使用 dexp 和 dimp 进行的备份还原。
逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原。
逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:
数据库级(FULL):导出或导入整个数据库中的所有对象。
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
表级(TABLES):导出或导入一个或多个指定的表或表分区。
一.dexp 逻辑导出
dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等),在备份前还可以选择生成日志文件,记录备份的过程以供查看。
dexp 工具名称有两种写法 dexp 和 dexpdp。两者语法完全相同。唯一的区别在于,dexp 导出的文件必须存放在客户端,dexpdp 导出的文件必须存放在服务器端。
1.dexp 工具
(1)语法格式
dexp PARAMETER=<value> { PARAMETER=<value> }
或
dexpdp PARAMETER=<value> { PARAMETER=<value> }
PARAMETER:dexp 参数。多个参数之间排列顺序无影响,参数之间使用空格间隔。
(2)参数
2.dexp 参数详解
(1)USERID
USERID 用于指定数据库的连接信息。必选参数。
{{<username>[/<password>]} | /}[@<connect_identifier>][<option>] [<os_auth>]
<connect_identifier> ::=<svc_name> | {<host>[:<port>]} | <unixsocket_file>
<option>::= #{ <exetend_option>=<value>{,<extend_option>=<value>} } --此行外层{}是为了封装参数之用,书写时需要保留
<os_auth>::= AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
PWD 密码中带有特殊字符(/,@.:等),需要外加三层双引号("""""")进行转义。
(2)FILE
FILE 用于明确指定导出的文件(可以包含路径),可以包含多个文件,用逗号分隔。
FILE=<文件>
FILE 指定的文件也可以包含路径。
如果 FILE 指定的文件包含生成路径,则忽略 DIRECTORY 中的路径;
如果 FILE 没有指定路径时,使用 DIRECTORY 中指定的路径;
如果 FILE 和 DIRECTORY 都没有指定路径,则使用系统当前路径。
(3)LOG
LOG 用于明确指定导出的日志文件名称(可以包含路径),可以包含多个文件,用逗号分隔。
LOG=<文件名>
用法与FILE相同。
(4)DIRECTORY
DIRECTORY 用于指定导出文件及日志文件生成的路径。
DIRECTORY=<path>
FILE 和 LOG 中指定的路径,优先级高于 DIRECTORY 中指定的路径。
当 FILE 和 LOG 不指定路径时,才使用 DIRECTORY 指定的路径。
如果都没有指定路径,则使用系统当前路径。
(5)导出方式
FULL 方式导出数据库的所有对象:FULL=Y
OWNER 方式导出一个或多个用户拥有的所有对象:OWNER=<用户名>{,<用户名>}
SCHEMAS 方式的导出一个或多个模式下的所有对象:SCHEMAS=<模式名>{,<模式名>}
TABLES 方式导出和导入一个或多个指定的表或表分区:TABLES=<表名>{,<表名>}
对于小写的用户名、模式名和表名,为了不转换为大写,需要转义。
第一步,如果想输入小写的名字不被转成大写,dexp 要求将名称使用双引号扩起来。例如:名称为 tab1,要写成"tab1"。第二步,另外,操作系统要求将传入的名称使用双引号括起来作为一个整体,同时要求内层的双引号还需要被转义。所以最终写成"\"tab1\""。
如果含有特殊字符(双引号、单引号、空格、逗号等)的用户名、模式名和表名需要转义。
第一步, dexp 要求对含有特殊字符的对象名称需要使用双引号括起来,同时特殊字符需要被转义(使用双引号")。例如:表名为 tab1",需写成"tab1""";第二步,另外,操作系统要求将传入的名称使用双引号括起来作为一个整体,同时要求内层的双引号和特殊字符还需要被转义。所以最终写成:"\"tab1\"\"\""。
3.测试
(1)导出整个数据库
将用户名和密码均为 SYSDBA,IP 地址为 192.168.235.158,端口号为 5236 的数据库采用FULL方式完全导出。导出文件名为db_str.dmp,导出的日志文件名为 db_str.log,导出文件的路径为/dexp。
./dexp USERID=SYSDBA/SYSDBA@192.168.235.158:5236 FILE=db_str.dmp DIRECTORY=/dexp LOG=db_str.log FULL=Y
(2)导出一个或多个用户所拥有的所有对象
将用户名和密码均为 SYSDBA,IP 地址为 192.168.235.158,端口号为 5236 的数据库采用OWNER方式导出一个或多个用户拥有的所有对象。导出文件名为db_str.dmp,导出的日志文件名为 db_str.log,导出文件的路径为/dexp,导出用户名为SYSDBA。
./dexp USERID=SYSDBA/SYSDBA@192.168.235.158:5236 FILE=db_str.dmp DIRECTORY=/dexp LOG=db_str.log OWNER=SYSDBA
(3)导出一个或多个模式下的所有对象
将用户名和密码均为 SYSDBA,IP 地址为 192.168.235.158,端口号为 5236 的数据库采用SCHEMAS方式导出一个或多个模式下的所有对象。导出文件名为db_str.dmp,导出的日志文件名为 db_str.log,导出文件的路径为/dexp,导出模式名为SYSDBA。
./dexp USERID=SYSDBA/SYSDBA@192.168.235.158:5236 FILE=db_str.dmp DIRECTORY=/dexp LOG=db_str.log SCHEMAS=SYSDBA
(4)导出一个或多个指定的表或表分区
将用户名和密码均为 SYSDBA,IP 地址为 192.168.235.158,端口号为 5236 的数据库采用TABLES 方式导出和导入一个或多个指定的表或表分区。导出文件名为db_str.dmp,导出的日志文件名为 db_str.log,导出文件的路径为/dexp,导出表名为T1。
./dexp USERID=SYSDBA/SYSDBA@192.168.235.158:5236 FILE=db_str.dmp DIRECTORY=/dexp LOG=db_str.log TABLES=T1
二.dimp 逻辑导入
1.dimp 工具
(1)语法格式
dimp PARAMETER=value { PARAMETER=value }
或
dimpdp PARAMETER=value { PARAMETER=value }
PARAMETER:dexp 参数。多个参数之间排列顺序无影响,参数之间使用空格间隔。
(2)参数
dimp参数与dexp参数对应
2.测试
导出库:环境为 linux,服务器为 192.168.235.158,用户名和密码均为 SYSDBA。导出的库即为上面所导出的。
导入库:环境为 linux,服务器为 192.168.235.158,用户名和密码均为 SYSDBA。准备一个空数据库作为导入库,端口号为 5234。
(1)导入整个数据库
./dimp USERID=SYSDBA/SYSDBA@192.168.235.158:5234 FILE=/dexp/db_str.dmp LOG=dimp02.log DIRECTORY=/dimp FULL=Y
(2)导入一个或多个用户所拥有的所有对象
./dimp USERID=SYSDBA/SYSDBA@192.168.235.158:5234 FILE=/dexp/db_str.dmp LOG=dimp02.log DIRECTORY=/dimp OWNER=SYSDBA
(3)导入一个或多个模式下的所有对象
./dimp USERID=SYSDBA/SYSDBA@192.168.235.158:5234 FILE=/dexp/db_str.dmp LOG=dimp02.log DIRECTORY=/dimp SCHEMAS=SYSDBA
(4)导入一个或多个指定的表或表分区
./dimp USERID=SYSDBA/SYSDBA@192.168.235.158:5234 FILE=/dexp/db_str.dmp LOG=dimp02.log DIRECTORY=/dimp TABLES=T1
(5)将源模式中的数据导入到目标模式中
语法:
<SOURCE_SCHEMA>:<TARGET_SCHEMA>
<SOURCE_SCHEMA>:源模式。如果指定的源模式不存在,则导入到对象原来所在的模式。
<TARGET_SCHEMA>:目标模式。如果目标模式不存在,先创建目标模式,再继续导入。
将 SYSDBA 模式中的数据导入到 B 模式中。
./dimp USERID=SYSDBA/SYSDBA@192.168.235.158:5236 FILE=/dexp/db_str.dmp DIRECTORY=/dimp FULL=Y REMAP_SCHEMA=SYSDBA:B
3.查看LOG日志
cat db_str.log(导出的日志文件)
cat dimp02.log(导入的日志文件)