1、DM数据库备份类型:
DM
数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原。物理备份还原是
对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原。例如使
用
RMAN
工具进行的备份还原。
逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。例如使用 dexp 和 dimp 进行的备份还原。
2、逻辑导入导出工具介绍:
逻辑导出(
dexp
)和逻辑导入(
dimp
)是
DM
数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原。dexp 和 dimp 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在安装目录/dmdbms/bin 中找到。
逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:
数据库级(
FULL
):导出或导入整个数据库中的所有对象。
用户级(
OWNER
):导出或导入一个或多个用户所拥有的所有对象。
模式级(
SCHEMAS
):导出或导入一个或多个模式下的所有对象。
表级(
TABLES
):导出或导入一个或多个指定的表或表分区。
3、使用dexp工具
./dexp USERID=SYSDBA/738918dhx@192.168.1.15:5236 FILE=db_data.dmp DIRECTORY=/data/dexp/ LOG=DmServiceDMSERVER.log FULL=Y
![](https://img-blog.csdnimg.cn/c86430dfd44c4f098c9ddb2e30ad376a.png)
①密码为
SYSDBA/,@.:
,端口号为
5236
的本地服务器,
USERID 可写成如下所示:
./dexp USERID=SYSDBA/"""SYSDBA/,@.:"""@LOCALHOST:5236
②设置
FILE=db_str.dmp
,导出文件名为
db_str.dmp
。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/data/dexp
🔺
如果
FILE
指定的文件包含生成路径,则忽略
DIRECTORY
中的路径;
如果
FILE
没有指定路径时,使用
DIRECTORY
中指定的路径;
如果
FILE
和
DIRECTORY
都没有指定路径,则使用系统当前路径。
③
文件也可以在生成过程中自动扩展成多个。首先,文件名需要包含通配符
%U
,用于作为自动扩充文件的文件名模板。%U 表示为 2 个字符宽度的数字,由系统自动生成,起始为 01。其次,使用 FILESIZE 参数来指定文件的大小。
设置
FILE=db_str%U.dmp
,导出文件名为
db_str%U.dmp
。同时使用
%U
对文件进行扩展,使用FIZESIZE=128m 指定文件大小。
./dexp USERID=SYSDBA/738918dhx FILE=db_str%U.dmp LOG=db_str%U.log FULL=Y DIRECTORY=/data/dexp/ FILESIZE=128m
![](https://img-blog.csdnimg.cn/e5e79a87094b4fb680cc9e3b09b4f801.png)
🔺
如果
LOG
指定的文件包含生成路径,则忽略
DIRECTORY
中的路径;
如果
LOG
没有指定路径时,使用
DIRECTORY
中指定的路径;
如果
LOG
和
DIRECTORY
都没有指定路径,则使用系统当前路径。
④四种级别的导出方式:
FULL
方式导出数据库的所有对象。
OWNER
方式导出一个或多个用户拥有的所有对象。
SCHEMAS
方式的导出一个或多个模式下的所有对象。
TABLES
方式导出和导入一个或多个指定的表或表分区。导出所有数据行、约束、索引等信息。
⑤用户名、模式名和表名书写规定
-
对于输入的用户名、模式名和表名,工具都会自动转换为大写。
-
对于小写的用户名、模式名和表名,为了不转换为大写,需要转义: 第一步,如果想输入小写的名字不被转成大写, dexp 要求将名称使用双引号扩起来。例如:名称为 tab1,要写成"tab1"。第二步,另外,操作系统要求将传入的名称使用双引号括起来作为一个整体,同时要求内层的双引号还需要被转义。所以最终写成"\"tab1\""。
-
如果含有特殊字符 ( 双引号、单引号、空格、逗号等 ) 的用户名、模式名和表名需要转义: 第一步, dexp 要求对含有特殊字符的对象名称需要使用双引号括起来,同时特殊字符需要被转义(使用双引号")。例如:表名为 tab1",需写成"tab1""";第二步,另外,操作系统要求将传入的名称使用双引号括起来作为一个整体,同时要求内层的双引号和特殊字符还需要被转义。所以最终成:"\"tab1\"\"\""。
⑥
FUZZY_MATCH
用于指定
TABLES
选项是否支持模糊匹配。可选参数,缺省为
N
。
N:
TABLES
选项不支持模糊匹配,指定的表名与数据库中的表名必须精确匹配;
Y
:
TABLES
选项支持模糊匹配,指定的表名与数据库中的表名采用
LIKE
模糊查询匹配。
导出
OTHER
模式下以
"R"
开头的表:
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=OTHER.R%
FUZZY_MATCH=Y
⑦
QUERY
用于指定过滤条件来对表数据进行导出。
导出
OTHER.READER
表中满足
"WHERE AGE=19"
条件的数据。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=OTHER.READER
QUERY="WHERE AGE=19"
⑧
PARALLEL
用于指定导出的过程中所使用的线程数目。
可选参数,缺省为单线程。如果CPU 核心数为 N 的话,那一般来说 PARALLEL 为 N 或者 N+1 最合适。
⑨TABLE_PARALLEL用于指定导出每张表所使用的线程数。
⑩
TABLE_POOL
用于设置导出过程中存储表数据的缓冲区个数。
TABLE_PARALLEL
固定的情况下,导出时间随着
TABLE_POOL
个数的增加而减少。当 TABLE_POOL 稍大于 TABLE_PARALLEL 时结果为最优。
①
EXCLUDE
用来批量设置导出时忽略的对象种类。
设置
EXCLUDE=(CONSTRAINTS)
,将当前用户下的
table1
、
table2
的对象信息导出时不导出约束。
./dexp SYSDBA/SYSDBA FILE=/mnt/data/db_str.dmp LOG=db_str.log TABLES=table1,table2 EXCLUDE=/(CONSTRAINTS/)
②
INCLUDE
用来批量设置导出时包含的对象种类。
设置
INCLUDE=(
CONSTRAINTS,INDEXES
)
,指明将当前用户下的
table1
的对象约束和索引信息导出。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1
DIRECTORY=/mnt/data/dexp INCLUDE=/(CONSTRAINTS,INDEXES/)
③
CONSTRAINTS
、
TABLESPACE
、
GRANTS
、
INDEXES
、
TRIGGERS
、
ROWS
设置
ROWS=N
不导出表中的数据。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp NOLOGFILE=Y FULL=Y DIRECTORY=/mnt/data/dexp ROWS=N
④
NOLOGFILE
用于设置是否使用日志文件。
🔺
一旦设置
NOLOGFILE=Y
不使用日志文件。此时即使存在
LOG
参数,
LOG参数也为无效。
⑤NOLOG设置屏幕上是否显示日志信息,缺省为N。
⑥LOG_WRITE用于日志信息实时写入日志文件,缺省为N。
⑦DUMMY用于设置交互信息处理。
P
:提供交互界面,默认方式。当导出文件已存在的时候,提供是否覆盖交互界面。
Y
:不提供交互界面,所有交互都按
YES
处理。
N
:不提供交互界面,所有交互都按
NO
处理。
⑧PARFILE用于将常用的参数设置保存到文件中,然后使用参数文件PARFILE进行导入、导出操作。
设置
PARFILE
=/mnt/data/dexp/para.txt
。
./dexp USERID=SYSDBA/SYSDBA PARFILE=/mnt/data/dexp/para.txt
⑨
FEEDBACK
用来指明在导出数据的过程中每间隔多少行打印一次进度信息,
当参数缺省时,默认为
0
,只打印导出表的总行数。
⑩
COMPRESS
指定是否压缩导出文件。可选参数。缺省为不压缩。
①
ENCRYPT
、
ENCRYPT_PASSWORD
、
ENCRYPT_NAME
分别为是否加密、加密密钥、加密算法。
🔺 加密算法:
DES_ECB
、
DES_CBC
、
DES_CFB
、
DES_OFB
、
DESEDE_ECB
、DESEDE_CBC 、DESEDE_CFB、DESEDE_OFB 、AES128_ECB 、AES128_CBC 、AES128_CFB 、AES128_OFB 、AES192_ECB 、AES192_CBC 、AES192_CFB 、AES192_OFB 、AES256_ECB 、AES256_CBC 、AES256_CFB 、AES256_OFB 、RC4
②FILESIZE用于指定单个导出文件大小或日志文件大小的上限。
③FILENUM用于指定一个模板导出文件的个数。范围1~99,默认99,
FILENUM
需要和
FILESIZE
搭配使用,
FILENUM*FILESIZE
要大于等于导出的文件总大
小,否则会报错空间不足。
④DROP用于设置导出后是否删除原表。
Y:
导出后删除原表,但不级联删除。
N
或缺省参数
:
导出后不删除原表。
⑤DESCRIBE用于设置导出数据文件的描述信息。
⑥LOCAL只用于MPP环境下,缺省为不使用。
⑦HELP查看帮助信息。
./dexp HELP
4、使用dimp工具
./dimp USERID=SYSDBA/SYSDBA@192.168.0.248:8888 FILE=db_str.dmp DIRECTORY=/mnt/data/dexp LOG=db_str.log FULL=Y
①USERID 用于指定数据库的连接信息,必选参数。
②FILE只当导入dexp导出的文件(可跟路径),必选参数。
🔺
如果
FILE
指定的文件包含生成路径,则忽略
DIRECTORY
中的路径;
如果
FILE
没有指定路径时,使用
DIRECTORY
中指定的路径;
如果
FILE
和
DIRECTORY
都没有指定路径,则使用系统当前路径。
③LOG用于明确指定导入的日志文件名称(可跟路径),可以包含多个文件,用逗号分隔。
🔺
如果
LOG
指定的文件包含生成路径,则忽略
DIRECTORY
中的路径;
如果
LOG
没有指定路径时,使用
DIRECTORY
中指定的路径;
如果
LOG
和
DIRECTORY
都没有指定路径,则使用
FILE
指定的路径。
④DIRECTORY用于指定导入文件及日志文件生成的路径,缺省为dimp所在路径。
没有指定路径,使用当前路径:
./dimp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y
指定FILE使用/mnt/dtat/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
⑤PARALLEL用于指定导入的过程中所使用的线程数目,缺省为单线程,如果CPU的核数为N的话,一般设置PARALLEL为N或N+1。
设置
PARALLELl=2
时则线程数为
2
。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y
DIRECTORY=/mnt/data/dimp PARALLEL=2
⑥ RABLE_PARALLEL在FAST_LOAD为Y时有效,缺省为单线程。
如果CPU的核数为N的话,一般设置PARALLEL为N或N+1。
⑦IGNORE指定忽略创建数据库对象,缺省为N。
⑧ TLBLE_EXITSTS_ACTION用于导入的表已经存在时的处理方式;
🔺
SKIP
:跳过此表。
APPEND
:直接向现有表中导入数据
TRUNCATE
:先删除现有表中的数据,再向表中导入数据
REPLACE
:先删除现有表,再导数据
⑨FAST_LOAD用于设置是否使用dmfldr进行属于导入,默认为N。
⑩FLDR_ORDER用户设置使用dmfldr时,是否严格按照导出顺序来导入数据。
①COMMIT_ROWS用于设置批量提交的行数,默认为5000行。
②EXCLUDE用来批量设置导入时忽略的对象种类
③
GRANTS
、
CONSTRAINTS
、
INDEXES
、
TRIGGERS
、
ROWS(
类别分别为
权限、
约束、索引、触发器和数据。
)
④NOLOGFILE用于设置是否使用日志文件,缺省使用。
⑤NOLOG设置屏幕上是否显示日志信息,缺省为N。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log
NOLOG=Y FULL=Y DIRECTORY=/mnt/data/dimp
⑥LOG_WRITE用于日志信息实时写入日志文件,缺省为N。
⑦DUMMY用于设置交互信息处理。
P
:提供交互界面,默认方式。当导出文件已存在的时候,提供是否覆盖交互界面。
Y
:不提供交互界面,所有交互都按
YES
处理。
N
:不提供交互界面,所有交互都按
NO
处理。
⑧
PARFILE
用于将常用的参数设置保存到文件中,然后使用参数文件
PARFILE
进行导出、
导入操作。
在
dimp
中使用
PARFILE
,设置路径
PARFILE=/mnt/data/dimp/para.txt
。
./dimp USERID=SYSDBA/SYSDBA PARFILE=/mnt/data/dimp/para.txt
⑨
FEEDBACK
用来指明在导入数据的过程中每间隔多少行打印一次进度信息,默认为0。
⑩COMPILE
如果导出时包含过程
/
函数、视图、物化视图、触发器、类和包,那么导入时会执行一
个编译语句(alter ...compile)。COMPILE 用于设置是否在导入时,对过程或函数执
行编译。
编译相当于执行重建操作,用于检查过程或函数是否还有效。编译成功,说明对象是有
效的;编译失败,说明对象不存在或发生改变,导致重建操作失败。编译失败,导入停止。
不编译就不检查有效性,直接导入。
导入的过程中含有函数 FUN_01,那么导出过程中会自动执行如下语句:
alter function "SYSDBA"."FUN_01" compile;
①INDEXFILE 用于将表的索引/约束创建信息写入指定的文件。
设置
INDEXFILE=f:\data\dimp.log
。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y
INDEXFILE=/mnt/data/dimp/dimp.log
②
INDEXFIRST
用于设置导入时是否先建索引。
创 建 索 引 的 过 程 是 先 遍 历 数 据 再 创 建 索 引 树 。 数 据 量 比 较 大 时 , 应 该 选 择
INDEXFIRST=Y
,先创建索引再导入数据,这样就避免创建索引之前遍历大量数据而耗费时
间;数据量小时,可任意选择。
③REMP_SCHEMA将源模式中的数据导入到目标模式中。
./dimp SYSDBA/SYSDBA FILE=/mnt/data/dexp/imp_exp.dmp DIRECTORY=/mnt/data/dimp
FULL=Y REMAP_SCHEMA=SYSDBA:PERSON
④
ENCRYPT_PASSWORD
、
ENCRYPT_NAME(解密密钥、算法名)
./dimp SYSDBA/SYSDBA FILE=/mnt/data/dexp/dk15.dmp LOG=db_str19.log
FULL=Y DIRECTORY=/mnt/data/dimp ENCRYPT_PASSWORD=abcdefg ENCRYPT_NAME=DES_CBC
⑤
SHOW/DESCRIBE
SHOW/DESCRIBE
用于设置是否打印
dexp
导出的数据文件的内容列表。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp SHOW=Y
⑥LOCAL 只用在MPP环境中,默认不使用。
⑦
TASK_THEAD_NUMBER
用于设置
dmfldr
处理用户数据的线程数目。可选参数,缺省
值为 CPU 个数。但当 CPU 个数大于 8 时,默认值都被置为 8。
⑧
BUFFER_NODE_SIZE
用于设置
dmfldr
指定读取文件缓冲区页大小。可选参数,默认
为 10。值越大,缓冲区的页数越多,每次可以读取的数据就越多,每次发送到服务器的数据也就越多,效率越高。但其大小受dmfldr客户端内存大小限制。取值(1-2048M)
⑨
TASK_SEND_NODE_NUMBER
用于设置
dmfldr
发送节点个数。
取值范围:
16-65535
。在系统内存够的情况下可以适当
的设大数值以提升效率。缺省情况下,由程序自动计算。
⑩
LOB_NOT_FAST_LOAD
用于设置当表中含有大字段时不使用
dmfldr
,而使用普通的
INSERT 进行插入,根据 COMMIT_ROWS 参数决定提交的行数。因为当表中有大字段的时候,dmfldr 是一行一行提交表数据。
①
PPIMARY_CONFLICT
用于设置主键冲突的处理方式。可选参数,不设置此参数时主键
冲突报错,设置时不报错,可指定对主键冲突的数据进行不同的处理。
IGNORE
:不覆盖主键冲突行数据。
OVERWRITE
:覆盖主键冲突行数据,删除原表有冲突的行。
OVERWRITE2
:覆盖主键冲突行数据,更新原表有冲突的行。
②
TABLE_FIRST
用于控制是否强制先导入表对象。
N
:正常导入。顺序为:
1.
没有依赖的对象(除了表之外的数据库对象);
2.
有依赖的class;3.表;4.依赖对象。
Y
:强制先导入表。顺序为:
1.
表;
2.
没有依赖的对象(除了表之外的数据库对象);3.有依赖的 class;4.依赖对象。
③
SHOW_SERVER_INFO
用于控制是否显示服务器信息,缺省N。
④
HELP
即可查看帮助信息。
./dimp HELP