dexp&dimp使用介绍
库的备份还原包括两种类型:物理备份还原和逻辑备份还原。本文介绍逻辑备份还原。
逻辑备份还原
对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。例如使用 dexp和 dimp 进行的备份还原。逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原。dexp 和 dimp 是 DM 数据库自带的工具,只要安装了DM 数据库,就可以在安装目录/dmdbms/bin 中找到。逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:
-
数据库级(FULL):导出或导入整个数据库中的所有对象。
-
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
-
模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
-
表级(TABLES):导出或导入一个或多个指定的表或表分区。
一、dexp逻辑导出介绍
dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。dexp 工具名称有两种写法 dexp 和 dexpdp。两者语法完全相同。唯一的区别在于,dexp 导出的文件必须存放在客户端,dexpdp 导出的文件必须存放在服务器端。
1.1使用dexp工具
dexp 工具需要从命令行启动。在 cmd 命令行工具中找到 dexp 所在安装目录/dmdbms/bin,输入 dexp 和参数后回车。
语法如下:
dexp PARAMETER=<value> { PARAMETER=<value> }
或
dexpdp PARAMETER=<value> { PARAMETER=<value> }
PARAMETER:dexp 参数。参数 USERID 必须置于首位,此外的多个参数之间排列顺序无影响,参数之间使用空格间隔。
value:参数取值。
dexp一部分参数:
参数 | 含义 | 备注 |
---|---|---|
USERID | 数据库的连接信息 | 必选 |
FILE | 明确指定导出文件名称 | 可选 |
DIRECTORY | 导出文件所在目录 | 可选 |
FULL | 导出整个数据库(N) | 可选参数,四者中选其一。如果设置为Y,则导出整个数据库。默认为N,且如果未明确选择FULL、OWNER、SCHEMAS或TABLES中的任何一个,则默认为SCHEMAS。 |
OWNER | 用户名列表 | 可选 |
SCHEMAS | 模式列表 | 可选 |
TABLES | 表名列表 | 可选 |
FUZZY_MATCH | TABLES 选项是否支持模糊匹配(N) | 可选 |
QUERY | 用于指定对导出表的数据进行过滤的条件 | 可选 |
PARALLEL | 用于指定导出的过程中所使用的线程数目 | 可选 |
TABLE_PARALLEL | 用于指定导出每张表所使用的线程数 | 可选 |
TABLE_POOL | 用于设置导出过程中存储表的缓冲区个数 | 可选 |
1.2示例
例 将用户名和密码均为 SYSDBA,IP 地址为 192.168.0.248,端口号为 8888 的数据库采用 FULL 方式完全导出。/user/data 为数字证书路径。导出文件名为 db_str.dmp,导出的日志文件名为 db_str.log,导出文件的路径为/mnt/dexp/data。
./dexp USERID=SYSDBA/SYSDBA@192.168.0.248:8888#/user/data FILE=db_str.dmp DIRECTORY=/mnt/dexp/data LOG=db_str.log FULL=Y
1.3特殊参数介绍
1.3.1 USERID
USERID 用于指定数据库的连接信息。若配置文件 dm_svc.conf 中配置了导入导出默认连接串,或者使用 CONFIG_FILE 参数指定了局部配置文件,并且局部配置文件中配置了导入导出默认连接串,则可以不指定USERID 参数;否则必须指定 USERID 参数。
语法如下:
{{<username>[/<password>]} | /}[@<connect_identifier>][<option>] [<os_auth>]
<connect_identifier> ::=<svc_name> | {<host>[:<port>]} | <unixsocket_file>
<option>::= #{ <extend_option>=<value>{,<extend_option>=<value>} } //此行外层{}是为了
封装参数之用,书写时需要保留
<os_auth>::= AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
{{<username>[/<password>]} | /}:<username>[/<password>]
为用户名和密码。普通登录方式时用户名必写,密码缺省为 SYSDBA。/表示采用操作系统身份验证方式登录或利用 wallet 文件登录。采用操作系统身份验证方式登录时无需指定用户名和密码,即使指定也会被忽略。利用 wallet 文 件 登 录 时 , dm_svc.conf 文 件 中 的 配 置 项WALLET_LOCATION 必须非空,客户端会通过用户输入的服务名以及 WALLET_LOCATION配置项指定的 wallet 文件路径自动获取 wallet 文件中服务名所对应的用户名和密码,因此用户无需输入用户名和密码,若用户输入了用户名和密码,则优先使用用户输入的用户名和密码登录数据库,<svc_name>:服务名。服务名在 dm_svc.conf 中配置。
<host>[:<port>]
:服务器 IP 地址和端口号。缺省情况下默认为本地服务器和端口号LOCALHOST:5236。当服务器为本机时,SERVER:PORT 可直接写作 LOCALHOST。
当连接其他服务器时,SERVER:PORT 需写上 IP 地址和 PORTNUM,例如:192.168.0.248:8888。<unixsocket_file> :专门 用于在 LINUX 系 统中 ,当 服务器 与客户端 之间 使用UNIXSOCKET(UNIX DOMAIN SOCKET - IPC)协议通信时,指定客户端连接的 socket 文件路径。
例如:
./dexp SYSDBA/SYSDBA@/home/test/foo.sock#{inet_type=UNIXSOCKET}
file=/home/dexp/dexp_test.dmp log=/home/log/
<option>
:为扩展选项,用法为<extend_option>=<value>
。所有 value 值不能包含空格,不能包含特殊的符号,如引号等。书写扩展选项时需要用引号#"{ }"进行封装。
例如:#"{INET_TYPE=tcp,mpp_type=local}"
。
SSLPATH@SSLPWD
:通信加密的 SSL 数字证书路径和密码,缺省为不使用加密。数字证书路径由用户自己创建,将相应的证书需放入该文件夹中。其中服务器证书必须与dmserver 目录同级,客户端目录可以任意设置。
AS <SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO>
:操作系统身份验证。用户可以通过将操作系统用户加入到操作系统的dmdba|dmsso|dmauditor用户组来使用操作系统用户登录数据库,分别对应数据库的 SYSDBA|SYSSSO|SYSAUDITOR 用户。还可以通过将操作系统用户加入到操作系统的 dmusers 用户组来使用操作系统用户登录数据库,对应数据库的同名用户。AUTO 表示按顺序自动匹配数据库用户类型。操作系统身份验证无需输入用户名和密码,若输入用户名和密码将会被忽略。
注意
<password>
比较特殊,因为<password>
中会用到各种特殊字符。特殊字符在操作系统中需要被特殊处理。不同操作系统,书写方式不同。
特殊字符的书写规范
1. 不同的操作系统
1) WINDOWS 系统
-
关键字符,dexp 和 dimp 要求对连接串的特殊字符需要使用双引号括起来"aaaa/aaaa",操作系统的要求需要再在最外加双引号和转义"““aaaa/aaaa””"。
例如:用户名为 user01,密码为 aaaa/aaaa,那么连接串要写成:dexp user01/“”“aaaa/aaaa”“”
-
空格,需要使用双引号括起来作为一个整体(这是操作系统的要求)。
例如:用户名为 user01,密码为 aaaa aaaa ,那么连接串要写成:dexp user01/“aaaa aaaa”
-
双引号,dexp 和 dimp 要求对双引号需要使用双引号括起来,同时双引号需要转义"aaaa"“aaaa”;操作系统要求再对双引号转义和最外层加双引号"““aaaa””““aaaa””"。
例如:用户名为 user01,密码为 aaaa"aaaa ,那么连接串要写成:dexpuser01/“”“aaaa”“”“aaaa”“”。
2) LINUX 系统
LINUX 环境下,密码中的特殊字符处理过程既要考虑操作系统的要求,又要考虑 dexp和 dimp 的要求。
首先,操作系统的要求。bash 的引号设计为:
-
在单引号中,所有的特殊字符都失去其特殊含义;
-
在双引号中,特殊字符包括:美元符($)、反引号(`)、转义符(\)、感叹号(!)。如果密码中没有单引号的,应该都只有外面加单引号就可以解决了;
-
如果密码只有单引号,那么可以将单引号用双引号括起来;
-
如果既有单引号又有美元符($)、反引号(`)、转义符(\)、感叹号(!)四个特殊字符,那么在特殊字符之前全部加\转义就好了。
例如: ‘aaaa\aaaa’ 传给 dexp 和 dimp 为 aaaa\aaaa。“aaaa’aaaa” 传给 dexp 和 dimp 为 aaaa’aaaa。"aaa’\ a a a a " 传给 d e x p 和 d i m p 为 a a a ′ aaaa" 传给 dexp 和 dimp 为 aaa' aaaa"传给dexp和dimp为aaa′aaaa。
其次,在操作系统要求的基础上,增加 dexp 和 dimp 对关键字和双引号的要求。
-
关键字符,dexp 和 dimp 要求对连接串的特殊字符需要使用双引号括起来。
例如:密码为 aaaa\aaaa,使用双引号括起来"aaaa\aaaa",因为此密码中不含有单引号,根据操作系统的要求直接在最外面加单引号。例如:用户名为 user01,密码为 aaaa/aaaa,那么连接串要写成:./dexp user01/‘“aaaa/aaaa”’。
-
双引号,dexp 和 dimp 要求对双引号需要使用双引号括起来,同时双引号需要转义。
例如:密码为 aaa"\aaaa,那么根据 dexp 和 dimp 的要求加双引号同时转义为"aaa"“\aaaa”,因为没有单引号,根据操作系统的要求直接加单引号。
例如:用户名为 user01,密码为 aaa"\aaaa,那么连接串要写成:./dexp user01/‘“aaa”“\aaaa”’。
-
单引号,根据操作系统的要求,只能将单引号放入双引号中。
例如:用户名为 user01,密码为 aaaa’aaaa,那么连接串要写成:./dexp user01/“aaaa’aaaa”。
-
单引号+操作系统下的特殊字符,根据操作系统的要求,因为单引号只能放在双引号内,同时双引号中还有一些特殊字符不能被识别需要加反斜杠转义。
例如: 用户名为 user01,密码为 aaa’ a a a a ,使用双引号括起来,同时对 aaaa,使用双引号括起来,同时对 aaaa,使用双引号括起来,同时对加反斜杠转义。那么连接串要写成:./dexp
user01/“aaa’$aaaa”。
-
单引号+双引号,根据操作系统的要求,单引号需要放在双引号中,在双引号中表示双引号则使用反斜杠转义双引号。
例如: 用户名为 user01,密码为 aaa"'aaaa,根据 dexp和 dimp 的要求,双引号作为特殊字符,需要使用双引号再括起来,同时使用双引号对双引号转义"aaa"“'aaaa”;同时考虑操作系统的要求,因为含有单引号,只能将整个密码放入双引 号 中 , 同 时 对 双 引 号 使 用 反 斜 杠 转 义 , 那 么 连 接 串 要 写 成 : ./dexp user01/““aaa””'aaaa""。
2.如何转义双引号
-
dexp 和 dimp 要求使用双引号对双引号内的双引号转义。
-
WINDOWS 命令行,使用双引号或者反斜杠对双引号内的双引号转义。
-
LINUX 命令行,使用反斜杠对双引号内的双引号转义。
1.3.2 FILE
FILE 用于明确指定导出的文件(可以包含路径),可以包含多个文件,用逗号分隔。可选参数,如果不选用 FILE 参数(来明确指定导出文件名称),那么默认导出文件名称为 dexp.dmp。
语法如下:FILE=<文件>
例 1 设置 FILE=db_str.dmp,导出文件名为 db_str.dmp。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp
例 2 FILE 指定的文件也可以包含路径,设置 FILE=/mnt/db_str.dmp。
./dexp USERID=SYSDBA/SYSDBA FILE=/mnt/db_str.dmp LOG=db_str.log FULL=Y
说明:
-
如果 FILE 指定的文件包含生成路径,则忽略 DIRECTORY 中的路径;
-
如果 FILE 没有指定路径时,使用 DIRECTORY 中指定的路径;
-
如果 FILE 和 DIRECTORY 都没有指定路径,则使用系统当前路径。
文件也可以在生成过程中自动扩展成多个。首先,文件名需要包含通配符%U,用于作为自动扩充文件的文件名模板。%U 表示为 2 个字符宽度的数字,由系统自动生成,起始为 01。其次,使用 FILESIZE 参数来指定文件的大小。
例 3 设置 FILE=db_str%U.dmp,导出文件名为 db_str%U.dmp。同时使用%U 对文件进行扩展,使用 FIZESIZE=128m 指定文件大小。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str%U.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp FILESIZE=128m
1.3.3 LOG
LOG 用于明确指定导出过程产生的日志文件名称(可以包含路径),可以包含多个文件,用逗号分隔。可选参数。如果不选用 LOG 参数(来明确指定日志文件名称),那么默认导出日志文件名称为 dexp.log。
语法如下:LOG=<文件名>
例 1 指定日志文件名为 db_str.log。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp
文件也可以在生成过程中自动扩展成多个。首先,文件名需要包含通配符%U,用于作为自动扩充文件的文件名模板。%U 表示为 2 个字符宽度的数字,由系统自动生成,起始为 01。其次,使用 FILESIZE 参数来指定文件的大小。
例 2 指定日志文件名为 db_str%U.log。同时使用%U 对文件进行扩展,使用FIZESIZE=128m 指定文件大小。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str%U.dmp LOG=db_str%U.log FULL=Y DIRECTORY=/mnt/data/dexp FILESIZE=128m
说明:
-
如果 LOG 指定的文件包含生成路径,则忽略 DIRECTORY 中的路径;
-
如果 LOG 没有指定路径时,使用 DIRECTORY 中指定的路径;
-
如果 LOG 和 DIRECTORY 都没有指定路径,则使用系统当前路径。
导出日志记录了导出的整个过程信息和导出对象的统计信息,供用户查看。
LOG日志格式介绍如下:
1.如果导出级别为TABLES,那么日志信息包含一张或多张表的索引、权限、数据行数。
2.如果导出级别为SCHEMAS,那么日志信息只包含一个或多个模式中的对象统计信息,每个模式下的内容具体有:
-
导出SEQUENCE、VIEW、COMMENT、PROCEDURE、SYNONYM、DBLINK、TRIGGER、PACKAGE、OBJECT、CLASS_BODY和DOMAIN等对象的个数和名称,以及对象的权限。
-
依次导出表的索引、权限、数据行数。
-
如果导出级别为OWNER,那么日志内容包含一个或多个用户所拥有的所有模式中的对象统计信息,每个模式下的内容和导出级别为SCHEMAS时一样。
-
如果导出级别为FULL,那么日志内容除了包含所有模式中的对象信息,还包括系统包和系统视图。和 LOG 有关的参数还有NOLOGFILE、NOLOG 和 LOG_WRITE。NOLOGFILE=Y 用于设置不使用日志文件。NOLOG=Y 用于设置不在屏幕上显示日志信息。LOG_WRITE=Y 用于设置日志的实时打印(到日志文件)功能。
1.3.4 DIRECTORY
DIRECTORY 用于指定导出文件及日志文件生成的路径。
使用 dexp 工具时,DIRECTORY 为可选参数,缺省导出到 dexp 所在路径。
使用 dexpdp 工具时,DIRECTORY 为必选参数,并且指定的路径必须是通过 CREATE DIRECTORY 定义的目录名。
语法如下:DIRECTORY=<path>
<path>
:导出文件和日志文件生成的路径。如果 FILE 和 LOG 参数指定的文件包含生成路径,则 FILE 和 LOG 参数中指定的路径将替代 DIRECTORY 所指定的路径;如果 FILE 和 LOG 参数指定的文件未包含路径信息,则文件将被生成到 DIRECTORY 指定的目录下;如果都没有指定路径,程序将根据当前的运行环境来设置相应的导出路径,一般为当前路径。
例 1 没有指定路径,使用当前路径。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y
例 2 指定路径/mnt/data/dexp。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp
说明
-
FILE 和 LOG 中指定的路径,优先级高于 DIRECTORY 中指定的路径。
-
当 FILE 和 LOG 不指定路径时,才使用 DIRECTORY 指定的路径。
-
如果都没有指定路径,则使用系统当前路径。
例3 使用dexpdp工具,先在服务器端创建名为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
1.3.5 四种级别的导出方式
针对数据库对象,有 FULL、OWNER、SCHEMAS、TABLES 四种导出方式可供选择。一次导出只能指定一种方式。可选参数,缺省为 SCHEMAS。需要注意的是,无论哪种级别的导出方式,当涉及索引导出时,位图连接索引和虚索引不会被导出。
1.3.5.1 FULL
FULL 方式导出数据库的所有对象。
语法如下:FULL=Y
例 设置 FULL=Y,导出数据库的所有对象,导出数据库文件和日志文件放在路径/mnt/data/dexp 下。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp
1.3.5.2 OWNER
OWNER 方式导出一个或多个用户拥有的所有对象。
语法如下:OWNER=<用户名>{,<用户名>}
例 设置 OWNER=USER01,导出用户 USER01 所拥有的对象全部导出。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dexp
1.3.5.3 SCHEMAS
SCHEMAS 方式的导出一个或多个模式下的所有对象。
语法如下:SCHEMAS=<模式名>{,<模式名>}
例 设置 SCHEMAS=USER01,导出模式 USER01 模式下的所有对象。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dexp
一般情况下,OWNER与 SCHEMAS 导入导出是相同的。 但是用户可以包含多个模式,在这种情况下 SCHEMAS 的导入导出是OWNER 导入导出的一个子集。
1.3.5.4 TABLES
TABLES 方式导出和导入一个或多个指定的表或表分区。导出所有数据行、约束、索引等信息。
语法如下:TABLES=[模式名.]表名[:表分区名] [, ...]
例 设置 TABLES=table1,table2,导出 table1,table2 两张表的所有数据和信息。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp
和 TABLES 导出有关的参数还有 QUERY、EXCLUDE 和 INCLUDE,都是用来设置过滤条件的。
1.3.5.5 OWNER、SCHEMAS、TABLES 的书写规定
对于输入的用户名、模式名和表名,工具都会自动转换为大写。例如:输入的命令TABLES=t1,那么实际处理的表是 T1。
对于小写的用户名、模式名和表名,为了不转换为大写,需要转义。如果用户名、模式名和表名中含有特殊字符(双引号、单引号、空格、逗号等),则也需要进行转义。
二、dimp逻辑导入介绍
dimp 逻辑导入工具利用 dexp 工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp 导入是 dexp 导出的相反过程。还原的方式可以灵活选择,如是否忽略对象存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日志等。dimp 工具名称有两种写法 dimp 和 dimpdp。两者语法完全相同。唯一的区别在于,dimp 导入的文件必须存放在客户端,dimpdp 导入的文件必须存放在服务器端。
2.1 使用dimp工具
dimp 工具需要从命令行启动。在 cmd 命令行工具中找到 dimp 所在安装目录/dmdbms/bin,输入 dimp 和参数后回车。
语法如下:
dimp PARAMETER=value { PARAMETER=value }
或
dimpdp PARAMETER=value { PARAMETER=value }
**PARAMETER:**dimp 参数。其中 USERID 必须为第一个参数,其余参数之间排列顺序无影响,参数之间使用空格间隔。
**value:**参数取值。
dimp一部分参数:
参数 | 含义 | 备注 |
---|---|---|
USERID | 数据库的连接信息 | 必选 |
FILE | 输入文件,即dexp导出的文件 | 可选 |
DIRECTORY | 导入文件所在目录 | 可选 |
FULL | 导入整个数据库 | 可选,四者中选其一(FULL、OWNER、SCHEMAS、TABLES)。缺省为导入的文件导 |
OWNER | 导入指定的用户名下的模式 | 可选 |
SCHEMAS | 导入的模式列表 | 可选 |
TABLES | 表名列表,指定导入的 tables 名称。不支持对外部 | 可选 |
PARALLEL | 表进行导入用于指定导入的过程中所使用的线程数目 | 可选 |
TABLE_PARALLEL | 用于指定导入的过程中每个表所使用的子线程数目 | 可选 |
IGNORE | 忽略创建错误(N),如果表已经存在则向表中插入数 | 可选 |
2.2 示例
例 将逻辑备份采用 FULL 方式完全导入到用户名和密码为 SYSDBA,IP 地址为192.168.0.248,端口号为 8888 的数据库。导入文件名为 db_str.dmp,导入的日志文件名为 db_str.log,路径为/mnt/data/dexp。
./dimp USERID=SYSDBA/SYSDBA@192.168.0.248:8888 FILE=db_str.dmp DIRECTORY=/mnt/data/dexp LOG=db_str.log FULL=Y
2.3 特殊参数介绍
2.3.1 USERID
USERID 用于指定数据库的连接信息。若配置文件 dm_svc.conf 中配置了导入导出默认连接串,或者使用 CONFIG_FILE 参数指定了局部配置文件,并且局部配置文件中配置了导入导出默认连接串,则可以不指定USERID 参数;否则必须指定 USERID 参数。用法请参考 dexp 中 USERID。
2.3.2 FILE
FILE 用于指定导入文件(可以包含路径)。导入文件是之前使用 dexp 导出的文件。可选参数,缺省则使用 dexp.dmp 作为导入文件 。
语法如下:FILE=<文件>
例 之前导出的文件路径为:FILE=/mnt/data/dexp/db_str.dmp,那么导入文件可以写成如下所示:
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log DIRECTORY=/mnt/data/dimp
若 FILE 没有指定文件路径,则可在 DIRECTORY 中指定。
说明:
-
如果 FILE 指定的文件包含生成路径,则忽略 DIRECTORY 中的路径;
-
如果 FILE 没有指定路径时,使用 DIRECTORY 中指定的路径;
-
如果 FILE 和 DIRECTORY 都没有指定路径,则使用系统当前路径。
2.3.3 LOG
LOG 用于明确指定导入过程产生的日志文件名称(可以包含路径),可以包含多个文件,用逗号分隔。可选参数。如果不选用 LOG 参数(来明确指定日志文件名称),那么默认的导入日志文件名称为 dimp.log。
语法如下:LOG=<文件名>
例 指定日志文件名为 db_str.log。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dimp
说明:
-
如果 LOG 指定的文件包含生成路径,则忽略 DIRECTORY 中的路径;
-
如果 LOG 没有指定路径时,使用 DIRECTORY 中指定的路径;
-
如果 LOG 和 DIRECTORY 都没有指定路径,则使用 FILE 指定的路径。
导入日志记录了导入的整个过程信息和导入对象的统计信息,供用户查看。和 LOG 有关的参数还有 NOLOGFILE、NOLOG 和LOG_WRITE。NOLOGFILE=Y 用于设置不使用日志文件。NOLOG=Y 用于设置不在屏幕上显示日志信息。LOG_WRITE=Y 用于设置日志的实时打印(到日志文件)功能。
2.3.4 DIRECTORY
DIRECTORY 用于指定导入文件及日志文件生成的路径。
使用 dimp 工具时,DIRECTORY 为可选参数,缺省导出到 dimp 所在路径。
使用 dimpdp 工具时,DIRECTORY 为必选参数,并且指定的路径必须是通过 CREATE DIRECTORY 定义的目录名。
语法如下:DIRECTORY=<path>
**path:**导入文件路径和日志文件生成的路径。
如果 FILE 和 LOG 参数指定的文件包含生成路径,则 FILE 和 LOG 参数中指定的路径将替代 DIRECTORY 所指定的路径;如果 FILE 和 LOG 参数指定的文件未包含路径信息,则导入文件路径和日志生成的文件路径都是 DIRECTORY 指定的路径;如果都没有指定路径,程序将根据当前的运行环境来设置相应的导出路径,一般为当前路径。
例 1 没有指定路径,使用当前路径。
./dimp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y
例 2 指定 FILE 使用/mnt/data/dexp 路径,LOG 使用/mnt/data/dimp 路径。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp db_str.dmp LOG=db_str.log FULL=Y
DIRECTORY=/mnt/data/dimp
说明:
-
FILE 和 LOG 中指定的路径,优先级高于 DIRECTORY 中指定的路径;
-
当 FILE 和 LOG 不指定路径时,才使用 DIRECTORY 指定的路径;
-
如果都没有指定路径,则使用系统当前路径。
2.4 四种级别的导入方式
针对数据库对象,有 FULL、OWNER、SCHEMAS、TABLES 四种导入方式可供选择。一次导入只能指定一种方式。可选参数,缺省为导入的文件导出时所用的方式。
导入方式可以和导出方式不一致。
例如:当导出方式不为 FULL 时,导入时也可以指定为 FULL 方式,此时 的FULL会将导出文件包含的全部内容导入到指定的实例中。
2.4.1 FULL
FULL 方式导入整个数据库。
语法如下:FULL=Y
例 设置 FULL=Y,导入整个数据库,导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dimp
2.4.2 OWNER
OWNER 方式导入一个或多个用户拥有的所有对象。
语法如下:OWNER=<用户名>{,<用户名>}
例 设置 OWNER=USER01,导入用户 USER01 所拥有的对象全部导出。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dimp
2.4.3 SCHEMAS
SCHEMAS 方式的导入一个或多个模式下的所有对象。
语法如下:SCHEMAS=<模式名>{,<模式名>}
例 设置 SCHEMAS=USER01,导入模式 USER01 模式下的所有对象。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log
SCHEMAS=USER01 DIRECTORY=/mnt/data/dimp
说明:
-
一般情况下,OWNER与 SCHEMAS 导入导出是相同的。
-
但是用户可以包含多个模式,在这种情况下 SCHEMAS 的导入导出是
-
OWNER 导入导出的一个子集。
2.4.4 TABLES
TABLES 方式导入一个或多个指定的表或表分区。导入所有数据行、约束、索引等信息。
语法如下:TABLES=[模式名.]表名[:表分区名] [, ...]
例 设置 TABLES=table1,table2,导入 table1,table2 两张表的所有数据和信息。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在/mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dimp
和 TABLES 导入有关的参数还有 EXCLUDE,用来指定导入时过滤掉某类对象。
三、dexp和dimp应用实例
3.1 一个完整示例
3.1.1 环境准备
导出库:环境为 linux,服务器为 192.168.0.248,用户名和密码均为 SYSDBA。导出的是 DM 数据库系统安装时自带的名为 BOOKSHOP 的示例库,端口号 5236。导入库:环境为 linux,服务器为 192.168.0.248,用户名和密码均为 SYSDBA。准备一个空数据库作为导入库,端口号为 8888。
3.1.2 dexp导出
导出数据库的所有对象(FULL=Y),导出文件为 dexp01.dmp,导出日志为 dexp01.log,
导出文件和日志文件都存放在/emc_2/data/dexp 目录中。
./dexp SYSDBA/SYSDBA@192.168.0.248:5236 FILE=dexp01.dmp LOG=dexp01.log DIRECTORY=/emc_2/data/dexp FULL=Y
3.1.3 dimp导入
导入 SYSDBA、OTHER、PERSON 模式中的数据(SCHEMAS=SYSDBA,OTHER,PERSON),导入文件就是上一步导出的文件dexp01.dmp ,导入日志 dimp02.log 放 入/emc_2/data/dimp 目录中。
./dimp SYSDBA/SYSDBA@192.168.0.248:8888 FILE=/emc_2/data/dexp/dexp01.dmp LOG=dimp02.log DIRECTORY=/emc_2/data/dimp SCHEMAS=SYSDBA,OTHER,PERSON
3.1.4 查看LOG日志
如果想了解详细的导出、导入内容统计信息,请查看 LOG 日志 dexp01.log 和dimp02.log。
3.2使用关联参数示例*
使用加密相关参数 ENCRYPT、ENCRYPT_PASSWORD、ENCRYPT_NAME 进行导出导入。
3.2.1 环境准备
导出库:环境为 linux,服务器为 192.168.0.248,用户名和密码均为 SYSDBA。导出库是 DM 数据库系统安装时自带的名为 BOOKSHOP 的示例库,端口号 5236。
导入库:环境为 linux,服务器为 192.168.0.248,用户名和密码均为 SYSDBA。准备一个空数据库作为导入库,端口号为 8889。
3.2.2 dexp 导出
导出数据库的所有对象(FULL=Y),导出文件为dexp03.dmp,导出日志为dexp03.log,导出文件和日志文件都存放在/emc_2/data/dexp 目录中。使用加密参数 ENCRYPT、ENCRYPT_PASSWORD、ENCRYPT_NAME,对到出库进行加密。
./dexp SYSDBA/SYSDBA@192.168.0.248:5236 FILE=dexp03.dmp LOG=dexp03.log DIRECTORY=/emc_2/data/dexp FULL=Y ENCRYPT=Y ENCRYPT_PASSWORD=damengren ENCRYPT_NAME=DES_CBC
3.2.3 dimp导入
导入整个数据库(FULL=Y),导入文件就是上一步导出的文件 dexp03.dmp,导入日志dimp04.log 放入/emc_2/data/dimp 目录中。
在导入的过程中,要提供 ENCRYPT_PASSWORD、ENCRYPT_NAME 两个参数,这两个参数值必须和导出时一样。
./dimp SYSDBA/SYSDBA@192.168.0.248:8889 FILE=/emc_2/data/dexp/dexp03.dmp LOG=dimp04.log DIRECTORY=/emc_2/data/dimp FULL=Y ENCRYPT_PASSWORD=damengren ENCRYPT_NAME=DES_CBC
3.3.4 查看LOG日志
如果想了解详细的导出、导入内容统计信息,请查看 LOG 日志 dexp03.log 和dimp04.log。
四、升级降级
从 V8.1.2.69 版本开始,对创建用户口令新增了<加盐选项>。<加盐选项>包含 SALT 和NO SALT,缺省为 NO SALT。 V8.1.2.69 之前的版本都是缺省(NO SALT)的情况。因此,当遇到下面情景:先导出 V8.1.2.69 之后的口令加盐的库,再导入到 V8.1.2.69之前的口令未加盐的库,将不能成功。解决办法:在导出之前,DBA 先检查待导出库用户口令是否使用了加盐 SALT。 如果是,那么 DBA 需要先使用 ALTER 语句将用户口令调整为 NO SALT,再做导出导入。前后版本的口令都是 NO SALT,操作成功。
总结
了解更详细信息点击:dexp和dimp产品手册
达梦社区地址:https://eco.dameng.com