失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 达梦数据库工具使用

达梦数据库工具使用

时间:2019-09-05 04:19:51

相关推荐

达梦数据库工具使用

达梦7数据库工具的使用

目录

达梦7数据库工具的使用

1. 逻辑备份

2. 逻辑还原

3. 物理备份还原

4. 控制文件修改

5. isql工具使用

6. 初始化库工具使用

7. DEM部署

8. 数据检查工具使用

9. 数据库安全功能

1. 逻辑备份

单表多表备份按用户备份备份时是否备份约束、索引、触发器备份一张表或多张表中部分数据备份结构表间并行、表内并行,备份压缩忽略指定对象、包含指定对象其他相关参数

逻辑导出( dexp)和逻辑导入( dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原。

dexp dimp 工具需要从命令行启动。在 cmd 命令行工具中找到 dexp 所在安装目录/dmdbms/bin下

1.1dexp逻辑导出

用户名和密码均为 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.1.1dexp参数

1.1.2特殊参数

(USERID) 连接服务器。 必选参数

PWD 密码中带有特殊字符 ( /,@.:等), 需要外加三层双引号( """ """)进行转义。

./dexp USERID=SYSDBA/"""SYSDBA/,@.:"""@LOCALHOST:PORT

(FILE) 用于明确指定导出的文件(可以包含路径),可以包含多个文件,用逗号分隔。

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp

(LOG) 用于明确指定导出的日志文件名称(可以包含路径),可以包含多个文件,用逗号分隔。

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y

DIRECTORY=/mnt/data/dexp

(DIRECTORY) 用于指定导出文件及日志文件生成的路径。

没有指定路径,使用当前路径

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y

DIRECTORY=/mnt/data/dexp

四种级别导出

全库导出,full =y

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y

DIRECTORY=/mnt/data/dexp

对象导出,OWNER=<用户名>{,<用户名>}

./dexp SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dexp

模式导出,SCHEMAS=<模式名>{,<模式名>}

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dexp

表级导出,TABLES=<表名>{,<表名>}

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp

转义成小写

对于小写的用户名、模式名和表名, 为了不转换为大写,需要转义

例: 表名为小写 tabname, 语句中应该写为"\"tabname\""

./dexp SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log

TABLES="\"tabname\""

如果含有特殊字符(双引号、单引号、空格、逗号等)的用户名、模式名和表名需要转义

例如,表名为小写 tabname", 语句中应该写为"\"tabname\"\"\""。

./dexp SYSDBA/SYSDBA@192.168.0.248:8888 FILE=db_str.dmp LOG=db_str.log TABLES="\"tabname\"\"\""

1.1.3普通参数

QUERY

用于指定过滤条件来对表数据进行导出。

./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 最合适。

设置PARALLEL=2时线程数为2

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp PARALLEL=2

TABLE_PARALLEL

用于指定导出每张表所使用的线程数。

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp TABLE_PARALLEL=3

EXCLUDE

用来批量设置导出时忽略的对象种类。

./dexp SYSDBA/SYSDBA FILE=/mnt/data/db_str.dmp LOG=db_str.log

TABLES=table1,table2 EXCLUDE=/(CONSTRAINTS/)

INCLUDE

用来批量设置导出时包含的对象种类。

./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

指定某类对象是否被导出。类别分别为约束、表空间、权限、索引、触发器和数据。

CONSTRAINTS=N: 设置不导出约束。 可选参数。 缺省该参数为 Y, 导出约束。

TABLESPACE=N: 设置导出的对象定义中不包含表空间。 可选参数。 缺省该参数为 N,不包含表空间。

GRANTS=Y: 设置导出权限。 可选参数。 缺省该参数为 N, 不导出权限。

INDEXES=N: 设置不导出索引。 可选参数。 缺省该参数为 Y, 导出索引。

TRIGGERS=N: 设置不导出触发器。 可选参数。 缺省该参数为 Y, 导出触发器。

ROWS=N: 设置不导出数据。 可选参数。 缺省该参数为 Y, 导出数据。

PARFILE

用于将常用的参数设置保存到文件中

设置 PARFILE=/mnt/data/dexp/para.txt。

./dexp USERID=SYSDBA/SYSDBA PARFILE=/mnt/data/dexp/para.txt

2. 逻辑还原

还原整个备份文件还原备份文件中部分表其他相关参数

2.1dimp逻辑导入

将逻辑备份导入到用户名和密码为 SYSDBA, IP 地址为 192.168.0.248,端口号为 8888 的数据库采用 FULL 方式完全导出。导入文件名为 db_str.dmp, 导入的日志文件名为 db_str.log,路径为/mnt/data/dexp。

./dimp SYSDBA/SYSDBA@192.168.0.248:8888 FILE=db_str.dmp

DIRECTORY=/mnt/data/dexp LOG=db_str.log FULL=Y

1.1.1dimp参数

1.1.2特殊参数

(USERID) 连接服务器。 必选参数

PWD 密码中带有特殊字符 ( /,@.:等), 需要外加三层双引号( """ """)进行转义。

./dimp USERID=SYSDBA/"""SYSDBA/,@.:"""@LOCALHOST:PORT

(FILE) 用于明确指定导入的文件(可以包含路径),可以包含多个文件,用逗号分隔。

./dimp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log DIRECTORY=/mnt/data/dexp

(LOG) 用于明确指定导入的日志文件名称(可以包含路径),可以包含多个文件,用逗号分隔。

./dimp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y

DIRECTORY=/mnt/data/dexp

(DIRECTORY) 用于指定导入文件及日志文件生成的路径。

没有指定路径,使用当前路径

./dimp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y

./dimp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y

DIRECTORY=/mnt/data/dexp

四种级别导入

全库导入,full =y

./dimp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y

DIRECTORY=/mnt/data/dexp

对象导入,OWNER=<用户名>{,<用户名>}

./dimp SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dexp

模式导入,SCHEMAS=<模式名>{,<模式名>}

./dimp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dexp

表级导入,TABLES=<表名>{,<表名>}

./dimp SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp

1.1.3普通参数

PARALLEL

用于指定导出的过程中所使用的线程数目。

如果CPU 核心数为 N 的话,那一般来说 PARALLEL 为 N 或者 N+1 最合适。

设置PARALLEL=2时线程数为2

PARALLEL=2

TABLE_PARALLEL

用于指定导出每张表所使用的线程数。

TABLE_PARALLEL=3

IGNORE

指定是否忽略创建表错误。

IGNORE=Y

TABLE_EXISTS_ACTION

用于要导入的表已经存在时的处理方式。

PRAIMARY_CONFLICT=[SKIP | APPEND | TRUNCATE | REPLACE]

SKIP:跳过此表。

APPEND:直接向现有表中导入数据

TRUNCATE:先删除现有表中的数据,再向表中导入数据

REPLACE:先删除现有表,再导数据

FAST_LOAD

用于设置是否使用 dmfldr 进行数据导入

FAST_LOAD=Y/N

FAST_LOAD=Y 时才可以设置TABLE_PARALLEL参数,否则TABLE_PARALLEL参数无效。

FLDR_ORDER

用于设置使用dmfldr时, 是否严格按导出顺序来导入数据。

FAST_ORDER=Y/N

COMPILE

如果导出时包含过程/函数, 那么导入时会执行一个编译语句( alter ...compile)。COMPILE 用于设置是否在导入时,对过程或函数执行编译。

编译相当于执行重建操作,用于检查过程或函数是否还有效。编译成功, 说明对象是有效的;编译失败,说明对象不存在或发生改变,导致重建操作失败。 编译失败,导入停止。不编译就不检查有效性,直接导入。

COMPILE=N/Y

INDEXFILE

用于将表的索引/约束创建信息写入指定的文件。

INDEXFILE= /data/dimp/dimp.log

INDEXFIRST

INDEXFIRST 用于设置导入时是否先建索引。

INDEXFIRST=Y/N

创建索引的过程是先遍历数据再创建索引树。数据量比较大时,应该选择INDEXFIRST=Y,先创建索引再导入数据,这样就避免创建索引之前遍历大量数据而耗费时间;数据量小时,可任意选择。

BUFFER_NODE_SIZE

BUFFER_NODE_SIZE 用于设置 dmfldr 指定读取文件缓冲区页大小。可选参数, 默认为 10。

BUFFER_NODE_SIZE=<size_num>

值越大, 缓冲区的页数越多,每次可以读取的数据就越多,每次发送到服务器的数据也就越多,效率越高。但其大小受dmfldr客户端内存大小限制。

3. 物理备份还原

DM7、DM6下联机完整备份、增量备份DM7、DM6数据库定时备份作业的配置使用新备份还原RMAN工具使用DM7、DM6备份还原DM7、DM6增量还原DM7、DM6还原备份加归档RMAN工具使用

OPEN 状态支持备份、还原和恢复的操作;

MOUNT 状态支持归档备份、表空间级还原;

SUPEND 状态均不支持。

3.1归档

DM7 的联机库备份和表空间备份要求必须配置并开启本地归档,即在 dm.ini 中将

ARCH_INI 置为 1, 在 dmarch.ini 中配置本地归档

归档命令

alter database archivelog current;

alter system archive log current;

alter system switch logfile;

开关归档命令

ALTER DATABASE ARCHIVELOG | NOARCHIVELOG;

配置归档

联机配置归档

1)修改数据库为 MOUNT 状态。

SQL>ALTER DATABASE MOUNT;

2)配置本地归档。

SQL>ALTER DATABASE ADD ARCHIVELOG 'DEST = /home/dm_arch/arch, TYPE = local,

FILE_SIZE = 1024, SPACE_LIMIT = 2048';

3)开启归档模式。

SQL>ALTER DATABASE ARCHIVELOG;

4)修改数据库为 OPEN 状态。

SQL>ALTER DATABASE OPEN;

手动配置归档

1)手动编辑 dmarch.ini 文件,之后保存在 dm.ini 所在的目录。 dmarch.ini 文

件内容如下:

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = d:\dm_arch\arch

ARCH_FILE_SIZE = 1024

ARCH_SPACE_LIMIT = 2048

2)编辑 dm.ini 文件,设置参数 ARCH_INI=1,保存。

3)启动服务器,服务器已运行于归档模式

配置远程归档

1. ARCH_TYPE 设置为 REMOTE,表示是远程归档

2. ARCH_DEST 设置为远程数据库实例名,表示 REDO 日志发送到这个节点

3. ARCH_INCOMING_PATH 设置为本地存储路径,用于保存 ARCH_DEST 实例发送的REDO 日志

RAC0 实例的 dmarch.ini 配置:

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dmdata/dameng/arch_rac0

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

[ARCH_REMOTE1]

ARCH_TYPE = REMOTE

ARCH_DEST = RAC1

ARCH_INCOMING_PATH = /dmdata/dameng/arch_rac1

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

RAC1 实例的 dmarch.ini 配置:

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dmdata/dameng/arch_rac1

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

[ARCH_REMOTE1]

ARCH_TYPE = REMOTE

ARCH_DEST = RAC0

ARCH_INCOMING_PATH = /dmdata/dameng/arch_rac0

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

3.2联机备份还原

3.2.1联机备份

数据库备份

语法:

BACKUP DATABASE

[[[FULL] [DDL_CLONE]] | INCREMENT [CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'} |[BASE ON <BACKUPSET '<基备份目录>']][TO <备份名>]BACKUPSET ['<备份集路径>']

[DEVICE TYPE <介质类型> [PARMS '<介质参数>']]

[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]

[IDENTIFIED BY <密码>[WITH ENCRYPTION<TYPE>][ENCRYPT WITH <加密算法>]]

[COMPRESSED [LEVEL <压缩级别>]] [WITHOUT LOG]

[TRACE FILE '< TRACE 文件名>'] [TRACE LEVEL < TRACE 日志级别>]

[TASK THREAD <线程数>][PARALLEL [<并行数>]];

全库备份

SQL>BACKUP DATABASE BACKUPSET 'db_bak_01';

设置联机数据库备份集路径

SQL>BACKUP DATABASE BACKUPSET '/db_bak_3_01';

设置备份名

SQL>BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET ' /db_bak_3_02';

增量备份指定基备份目录

SQL>BACKUP TABLESPACE MAIN BACKUPSET 'ts_full_bak_01';

SQL>BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_increment_bak_01';

SQL>BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET'ts_full_bak_01' BACKUPSET 'ts_increment_bak_02';

指定介质类型

SQL>BACKUP DATABASE BACKUPSET '/db_bak_3_03' DEVICE TYPE TAPE;

添加备份描述

SQL>BACKUP DATABASE BACKUPSET ' /db_bak_3_04' BACKUPINFO '完全备份';

限制备份片大小

SQL> BACKUP DATABASE BACKUPSET '/db_bak_3_05' MAXPIECESIZE 300;

备份压缩

SQL>BACKUP DATABASE BACKUPSET '/db_bak_3_06'COMPRESSED LEVEL 5;

并行备份

SQL>BACKUP DATABASE BACKUPSET '/db_bak_3_07'PARALLEL 8;

表空间备份

语法:

BACKUP TABLESPACE <表空间名> ----à

完全备份

SQL>BACKUP TABLESPACE MAIN FULL BACKUPSET ' /ts_full_bak_01';

增量备份

SQL>BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/ 'BACKUPSET '/ts_increment_bak_02';

表备份

备份表

SQL>BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';

归档备份

语法:

BACKUP<ARCHIVE LOG |ARCHIVELOG> [ALL | [FROM LSN <lsn>]| [UNTIL LSN <lsn>]|[LSN BETWEEN <lsn> AND <lsn>] | [FROM TIME '<time>']|[UNTIL TIME '<time>']|[TIME BETWEEN'<time>'> AND '<time>']] [<notBackedUpSpec>]

[DELETE INPUT]

首先,确定 LSN 范围。

SQL>select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;

查询结果为:

ARCH_LSN CLSN PATH

38758 40301 d:\arch\ARCHIVE_LOCAL1_0727105417748.log

40302 40303 d:\arch\ARCHIVE_LOCAL1_0727111411079.log

40304 40305 d:\arch\ARCHIVE_LOCAL1_0727111513679.log

50412 50413 d:\arch\ARCHIVE_LOCAL1_0727171801098.log

50414 50478 d:\arch\ARCHIVE_LOCAL1_0727171849712.log

通过查询结果选出备份的起始 LSN 和截至 LSN。比如 50414 50478

其次,备份归档。

SQL>BACKUP ARCHIVELOGLSN BETWEEN 50414 AND 50478 BACKUPSET' /arch_bak_time_14-78';

完全备份归档

SQL>BACKUP ARCHIVE LOG ALL BACKUPSET '/dbbak/arch_bak_01';

高级备份

加密备份

下面以数据库完全备份为例,创建加密密码为“cdb546” ,加密算法为“rc4”的复杂类型数据库加密备份

SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_encrypt_01' IDENTIFIED BY "cdb546" WITH ENCRYPTION 2 ENCRYPT WITH RC4;

设置跟踪日志文件

SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_trace' TRACE LEVEL 2;

3.2.2还原

DM7 仅支持表空间和表的联机还原,数据库和归档日志的还原必须通过脱机工具DMRMAN 执行。

表空间还原

表空间的还原、恢复操作是一次性完成,因此还原后不需要执行恢复操作。 使用表空间

完全备份还原表空间的完整步骤如下:

1) 配置归档,具体步骤见 3.1.2 归档配置 。

2) 保证数据库处于 OPEN 或 MOUNT 状态。

3) 备份表空间。

SQL>BACKUP TABLESPACE MAIN BACKUPSET '/home/dm_bak/ts_full_bak_01';

4) 校验表空间备份。此步骤为可选,如果确定备份文件合法可不进行备份校验。

SQL>SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/ts_full_bak_01');

5) 修改表空间为脱机。

SQL>ALTER TABLESPACE MAIN OFFLINE;

6) 还原表空间。

SQL>RESTORE TABLESPACE MAIN FROM BACKUPSET '/home/dm_bak/ts_full_bak_01';

6.2)增量还原表空间

SQL>RESTORE TABLESPACE MAIN FROM BACKUPSET'/home/dm_bak3/ts_incre_bak_02_02'WITH BACKUPDIR '/home/dm_bak2','/home/dm_bak';

7) 修改表空间为联机。

SQL>ALTER TABLESPACE MAIN ONLINE;

表还原

SQL>RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01';

执行表结构还原。 表备份和表中都包含索引,如果直接执行表数据还原会报错:还

原表中存在二级索引或冗余约束。

SQL>RESTORE TABLE TAB_FOR_RES_02 STRUCT FROM BACKUPSET

'/home/dm_bak/tab_bak_for_res_02';

执行表数据还原。

SQL>RESTORE TABLE TAB_FOR_RES_02 FROM BACKUPSET

'/home/dm_bak/tab_bak_for_res_02';

指定还原时不重建索引

SQL>RESTORE TABLE TAB_FOR_RESWITHOUT INDEX FROM BACKUPSET

'/home/dm_bak/tab_bak_for_res_01';

指定还原时不重建约束

SQL>RESTORE TABLETAB_FOR_CONS_01 WITHOUT CONSTRAINT FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_01';

3.2.3管理备份

备份管理相关系统过程与函数总结如下:

SF_BAKSET_BACKUP_DIR_ADD: --添加备份目录。

SF_BAKSET_BACKUP_DIR_REMOVE: --指定删除内存中的备份目录。

SF_BAKSET_BACKUP_DIR_REMOVE_ALL: --删除内存中全部的备份目录。

SF_BAKSET_CHECK: --对备份集进行校验。

SF_BAKSET_REMOVE: --删除指定设备类型和指定备份集目录的备份集。

SF_BAKSET_REMOVE_BATCH: --批量删除满足指定条件的所有备份集。

SP_DB_BAKSET_REMOVE_BATCH: --批量删除指定时间之前的数据库备份集。

SP_TS_BAKSET_REMOVE_BATCH: --批量删除指定表空间对象及指定时间之前的表空间备份集。

SP_TAB_BAKSET_REMOVE_BATCH: --批量删除指定表对象及指定时间之前的表备份集。

SP_ARCH_BAKSET_REMOVE_BATCH: --批量删除指定条件的归档备份集。

备份管理相关动态视图总结如下:

V$BACKUPSET: --显示备份集基本信息。

V$BACKUPSET_DBINFO: --显示备份集的数据库相关信息。

V$BACKUPSET_DBF: --显示备份集中数据文件的相关信息。

V$BACKUPSET_ARCH: --显示备份集的归档信息。

V$BACKUPSET_BKP: --显示备份集的备份片信息。

V$BACKUPSET_SEARCH_DIRS: --显示备份集搜索目录。

V$BACKUPSET_TABLE: --显示表备份集中备份表信息。

V$BACKUPSET_SUBS: --显示并行备份中生成的子备份集信息。

备份目录管理

SF_BAKSET_BACKUP_DIR_ADD 函数 --添加备份目录。

CALL SF_BAKSET_BACKUP_DIR_ADD(device_type varchar,backup_dir varchar(256));

device_type: 待删除的备份目录对应存储介质类型。DISK 或者 TAPE。

backup_dir:待添加的备份目录。

SF_BAKSET_BACKUP_DIR_REMOVE 函数 --删除备份目录。

CALL SF_BAKSET_BACKUP_DIR_REMOVE (device_type varchar,backup_dir varchar(256))

backup_dir: 待删除的备份目录。

SF_BAKSET_BACKUP_DIR_REMOVE_ALL 函数 --清理全部备份目录,默认备份目录除外。

CALL SF_BAKSET_BACKUP_DIR_REMOVE_ALL ()

备份集校验与删除

SF_BAKSET_CHECK 函数 --对备份集进行校验。

CALL SF_BAKSET_CHECK(‘DISK’,‘BAKSET_PATH’);

bakset_path:待校验的备份集目录。

SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_check';

SQL> SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/db_bak_for_check');

SF_BAKSET_REMOVE 函数 --删除指定设备类型和指定备份集目录的备份集。

CALL SF_BAKSET_REMOVE (device_type varchar,backsetpath varchar(256),option integer);

backsetpath:待删除的备份集目录

Option:删除备份集选项, 0 默认删除, 1 级联删除。

SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove';

SQL>BACKUP DATABASE INCREMENT BACKUPSET '/db_bak_for_remove_incr';

SQL> SELECT SF_BAKSET_REMOVE('DISK','/home/dm_bak/db_bak_for_remove');

SF_BAKSET_REMOVE_BATCH 函数 --批量删除满足指定条件的所有备份集。

CALL SF_BAKSET_REMOVE_BATCH (device_type varchar,end_time datetime,range int,obj_name varchar(257))

call SF_BAKSET_REMOVE_BATCH ('DISK', now(), NULL, NULL);

end_time:删除备份集生成的结束时间

range:指定删除备份的级别。1代表库级, 2代表表空间级, 3代表表级, 4代表归档备份。

obj_name: 待删除备份集中备份对象的名称,仅表空间级和表级有效

SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove';

SQL>BACKUP TABLESPACEMAIN FULL BACKUPSET '/home/dm_bak/ts_bak_for_remove';

SQL>SELECT SF_BAKSET_REMOVE_BATCH ('DISK', now(), NULL, NULL);

SP_DB_BAKSET_REMOVE_BATCH 过程 --批量删除指定时间之前的数据库备份集 。

CALL SP_DB_BAKSET_REMOVE_BATCH (device_type varchar,end_time datetime)

end_time:删除备份集生成的结束时间

SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_batch_del';

SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

SQL>CALL SP_DB_BAKSET_REMOVE_BATCH('DISK', NOW());

SP_TS_BAKSET_REMOVE_BATCH 过程 --批量删除指定表空间对象及指定时间之前的表空间备份集。

CALL SP_DB_BAKSET_REMOVE_BATCH (device_type varchar,end_time datetime);

end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集

SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_batch_del';

SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

SQL>CALL SP_DB_BAKSET_REMOVE_BATCH('DISK', NOW());

SP_TS_BAKSET_REMOVE_BATCH 过程 --批量删除指定表空间对象及指定时间之前的表空间备份集。

CALL SP_TS_BAKSET_REMOVE_BATCH (device_type varchar,end_time datetime,ts_name varchar(128))

end_time:删除备份集生成的结束时间

ts_name:表空间名

SQL>BACKUP TABLESPACE MAIN BACKUPSET '/home/dm_bak/ts_bak_for_batch_del';

SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

SQL>CALL SP_TS_BAKSET_REMOVE_BATCH('DISK',NOW(),'MAIN');

SP_TAB_BAKSET_REMOVE_BATCH 过程 --批量删除指定表对象及指定时间之前的表备份集。

CALL SP_TAB_BAKSET_REMOVE_BATCH (device_type varchar,end_time datetime,sch_name varchar(128),tab_name varchar(128))

end_time:删除备份集生成的结束时间

sch_name:表所属的模式名

tab_name:表名

SQL>CREATE TABLE TAB_FOR_BATCH_DEL(C1 INT);

SQL>BACKUP TABLE TAB_FOR_BATCH_DEL BACKUPSET'/home/dm_bak/tab_bak_for_batch_del';

SQL> SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

SQL> CALL SP_TAB_BAKSET_REMOVE_BATCH('DISK',NOW(),'SYSDBA','TAB_FOR_BATCH_DEL');

SP_ARCH_BAKSET_REMOVE_BATCH 过程 --批量删除指定时间之前的归档备份集。

CALL SP_ARCH_BAKSET_REMOVE_BATCH (device_type varchar,end_time datetime)

end_time:删除备份集生成的结束时间

SQL>BACKUP ARCHIVELOG BACKUPSET '/home/dm_bak/arch_bak_for_batch_del';

SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

SQL>CALL SP_ARCH_BAKSET_REMOVE_BATCH('DISK', NOW());

备份信息查看

DM7 提供了一系列动态视图供用户查看备份集相关信息,在查看之前应先使用SF_BAKSET_BACKUP_DIR_ADD 添加备份集目录,否则只显示默认备份路径下的备份集信息,使用方法如下例所示:

SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/home/dm_bak');

V$BACKUPSET --显示备份信息

查看备份集的介质类型、备份路径、备份类型等基本信息

SQL>SELECT DEVICE_TYPE,BACKUP_PATH, TYPE, RANGE# FROM V$BACKUPSET;

V$BACKUPSET_DBINFO --显示备份集的数据库相关信息

下面以创建表备份为例,查看备份集的页大小、簇大小、大小写是否敏感、 UNICODE_FLAG 等数据库信息

SQL>SELECT BACKUP_PATH, PAGE_SIZE, EXTENT_SIZE, CASE_SENSITIVE FROM;

V$BACKUPSET_DBF 显示备份集中数据文件的相关信息,表备份时无效。

查看备份集中的数据文件信息

SQL>SELECT FILE_SEQ, TS_ID, FILE_ID, TS_NAME, FILE_NAME FROM V$BACKUPSET_DBFWHERE BACKUPPATH ='/home/dm_bak/ts_bak_for_dbf';

显示备份集中数据文件的相关信息,表备份时无效。

V$BACKUPSET_ARCH 显示备份集中归档文件的信息,且仅归档备份才会有数据。

以数据库备份为例查询备份集日志信息。

SQL>SELECT BACKUPPATH, FILE_SEQ, BEGIN_LSN, END_LSN FROM V$BACKUPSET_ARCHWHERE BACKUPPATH='/home/dm_bak/db_bak_for_arch';

V$BACKUPSET_BKP 显示备份集的备份片信息。

V$BACKUPSET_SEARCH_DIRS --显示备份集搜索目录。

V$BACKUPSET_TABLE --显示表备份集中备份表信息,仅表备份有效

SELECT BACKUPNAME, TABLENAME FROM V$BACKUPSET_TABLE WHERE BACKUPPATH='/home/dm_bak/tab_bak_for_info';

3.3脱机DMRMAN备份还原

使用rman注意事项

1) 保证数据库处于脱机状态。

2) 打开dmap

3) 使用dmdba用户

4) 进入dmrman ./dmrman

5)备份集权限,属组

6) ./dmramn use_ap=2 不使用dmap(较慢)

输入以下用于执行的 DMRMAN 命令:

RMAN>HELP

DMRMAN 参数

3.3.1使用 CONFIGURE 命令

使用 CONFIGURE 命令进行 DMRMAN 的默认参数配置,配置默认的存储介质类型、备份

集搜集目录、归档日志搜集目录、跟踪日志文件

可显示 DMRMAN 配置项的当前值。

RMAN>CONFIGURE;

THE DMRMAN DEFAULT SETTING:

DEFAULT DEVICE:

MEDIA : DISK

DEFAULT TRACE :

FILE :

LEVEL : 1

DEFAULT BACKUP DIRECTORY:

TOTAL COUNT :0

DEFAULT ARCHIVE DIRECTORY:

TOTAL COUNT :0

使用 CONFIGURE...CLEAR 命令可恢复任意一个配置项到默认值。 示例如下:

RMAN>CONFIGURE DEFAULT DEVICE CLEAR;

使用 CONFIGURE...CLEAR 命令清除所有的默认配置。 示例如下:

RMAN>CONFIGURE CLEAR;

3.3.2备份

数据库备份

执行数据库备份要求数据库处于脱机状态。与联机备份数据库不同的是,脱机备份不需要配置归档。

全备:

RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL BACKUPSET '/home/dm_bak/db_full_bak_01';

增量:

RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';

语法如下:

BACKUP DATABASE '<INI 文 件 路 径 >' [[[FULL][DDL_CLONE]] |INCREMENT

[CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]|[BASE ONBACKUPSET '<基备份集目录>']][TO <备份名>] [BACKUPSET '<备份集目录>'][DEVICE TYPE <介质类型>[PARMS '<介质参数>'][BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>][IDENTIFIED BY <加密密码>[WITH ENCRYPTION<TYPE>][ENCRYPT WITH <加密算法>]][COMPRESSED [LEVEL <压缩级别>]][WITHOUT LOG][TASK THREAD <线程数>][PARALLEL [<并行数>]];

备份归档

在 DMRMAN 工具中使用 BACKUP 命令你可以备份库的归档。使用 DMRMAN 备份数据库需要设置归档,否则会报错。

RMAN>BACKUP ARCHIVE LOG ALL DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dm_bak/arch_all_bak_01';

创建设置条件的归档备份

RMAN>BACKUP ARCHIVE LOG LSN BETWEEN 50000 AND 120000DATABASE

'/opt/dmdbms/data/DAMENG/dm.ini'BACKUPSET '/home/dm_bak/db_increment_bak_02';

命令中的 LSN BETEEWN start AND end 参数表示执行的备份为执行备份的区间, 或者设置 FROM LSN(TIME)以及 UNTIL LSN(TIME)。

3.3.3管理备份

查看备份集

语法如下:

SHOW BACKUPSET '< 备 份 集 目 录 >' [<device_type_stmt>][RECURSIVE]

[<database_bakdir_lst_stmt>] [<info_type_stmt>] [<to_file_stmt>];

|SHOW BACKUPSETS [<device_type_stmt>] <database_bakdir_lst_stmt>

[<info_type_stmt>] [<use_db_magic_stmt>] [<to_file_stmt>];

<database_bakdir_lst_stmt>::= DATABASE '<INI_PATH>' |

WITH BACKUPDIR '<备份集搜索目录>'{,'<备份集搜索目录>'} |

DATABASE '<INI_PATH>' WITH BACKUPDIR '<备份集搜索目录>'{, '<备份集搜索目录>'}

<device_type_stmt>::= DEVICE TYPE DISK|TAPE [PARMS '<介质参数>']

<info_type_stmt>::= INFO DB[,META][,FILE] [,TABLE]

<use_db_magic_stmt>::= USE DB_MAGIC <db_magic>

<to_file_stmt>::= TO '<输出文件路径>' [FORMAT TXT | FORMAT XML]

查看指定的备份集信息

RMAN> show backupset'/home/dm_bak/DB_DAMENG_FULL_022';

批量显示备份集信息

RMAN>SHOW BACKUPSETS WITH BACKUPDIR '/home/dm_bak1','/home/dm_bak2';

查看指定数据库所有备份集的信息

获取 DB_MAGIC 信息。

RMAN>SHOW BACKUPSET'/home/dm_bak/db_bak_for_show_db_magic_01';

通过查看备份集信息可知,数据库/opt/dmdbms/data/DAMENG 的 DB_MAGIC 值为1447060265。

RMAN>SHOW BACKUPSETS WITH BACKUPDIR '/home/dm_bak' USE DB_MAGIC 1447060265;

备份集校验

CHECK BACKUPSET '<备份集目录>'

[DEVICE TYPE<介质类型> [PARMS '<介质参数>']][DATABASE '<INI_PATH>']

RMAN>CHECK BACKUPSET '/home/dm_bak/db_bak_for_check_01';

备份集删除

RMAN>REMOVE BACKUPSET '/home/dm_bak/db_bak_for_remove_01';

RMAN>REMOVE BACKUPSET 'db_bak_for_remove_01' DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';

批量删除所有备份集

RMAN>REMOVE BACKUPSETS WITH BACKUPDIR '/home/dm_bak';

批量删除指定时间之前的备份集

RMAN>REMOVE BACKUPSETS WITH BACKUPDIR '/home/dm_bak' UNTIL TIME'-11-100:00:00';

备份集导入

RMAN>LOAD BACKUPSETS FROM DEVICE TYPE DISK TO BACKUPDIR '/mnt/dm7src/bak_dir';

DUMP备份集映射文件导出

备份集映射文件导出,是备份管理的主要功能,是将备份集中各数据文件的原始路径或者调整后的路径生成到一个本地文件中,可通过关键字 MAPPED FILE 应用于表空间和库的还原操作中。

DMRMAN 中使用 DUMP 命令导出映射文件。 不支持导出到 DMASM 文件系统中

导出备份集中数据文件的原始路径。

RMAN>DUMP BACKUPSET'/mnt/dm7src/db_bak'DEVICE TYPE DISK MAPPED FILE '/mnt/dm7src/db_bak_mapped.txt';

导出指定 INI_PATH 调整后的路径

指定 INI_PATH,导出调整后的数据文件路径到映射文件。

RMAN>DUMP BACKUPSET'/mnt/dm7src/db_bak'DEVICE TYPE DISKDATABASE

'/opt/dmdbms/data/DAMENG/dm.ini'MAPPED FILE '/mnt/dm7src/db_bak_mapped.txt';

3.3.4还原和恢复

数据库还原和恢复

数据库还原

语法:

RESTORE DATABASE <restore_type> FROM BACKUPSET '<备份集目录>'

[DEVICE TYPE DISK|TAPE[PARMS '<介质参数>']]

[IDENTIFIED BY <密码> [ENCRYPT WITH <加密算法>]]

[WITH BACKUPDIR '<基备份集搜索目录>'{,'<基备份集搜索目录>'}]

[MAPPED FILE '<映射文件>'][TASK THREAD <任务线程数>] [NOT PARALLEL]

[RENAME TO '<数据库名>'];

<restore_type>::=<type1>|<type2>

<type1>::='<INI文件路径>'[REUSE DMINI][OVERWRITE]

<type2>::= TO '<system_dbf 所在路径>' [OVERWRITE]

<restore_type>:

 <type1>

1>指定 dm.ini 还原,要求 dm.ini 中 CTL_PATH 必须配置正确,且内容有效;若配

置 CTL_PATH 文件故障,且想利用 dm.ini 优化配置,则可选择 type2 还原后,用指定

dm.ini 覆盖还原后 dm.ini,并修改 CTL_PATH 为当前控制文件路径即可;

2>除 dm.ini 文件外,其他文件均可不存在; 但 dm.ini 参数配置必须正确,且配置

的 dm.ctl 文件必须是有效的控制文件;

3>数据库配置文件中除已经存在的 dm.ini 外, 先删除控制文件中的数据文件,然后

根据 overwrite 选项,若指定 overwrite,其他文件(这些文件不在控制文件中,所以

未删除) 均采用删除重建的处理,避免存在非法的文件,否则如果这些文件已经存在,则报

错;

4>若指定 REUSE DMINI,则会将备份集中备份的 dm.ini 中除路径相关的 INI 参数

外,均拷贝到当前 dm.ini 上

 联机日志

上述<type1>和<type2>中的还原后的联机日志文件至少会有两个,因为源库中的日

志文件可能大于等于两个,如果小于两个(被误删的情况)的则补齐为两个。 已经存在的联

机日志配置,使用原路径,若文件大小非法,则使用缺省大小 256M 重建;缺少的使用缺省

命名和缺省大小 256M 重建。 联机日志文件的命名规则:

1>单机: db_name+(file_id+1).log,其中 fil_id + 1,占 2 个位置,如: db_name=DAMENG,

则相应的名称为 DAMENG01.log, DAMENG02.log;

2>RAC: rac+(ep_no + 1)_+(file_id+1).log,其中 ep_no + 1 和 file_id+1 均占 2 个位置,

如 0 号节点日志名称为 rac01_01.log, rac01_02.log

还原数据库

RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_restore';

数据库恢复

RECOVER DATABASE '<INI 文件路径>' [<with_archdir_lst_stmt>]

[USE DB_MAGIC <db_magic>] [UNTIL TIME '<时间串>'] [UNTIL LSN <LSN>];

RECOVER DATABASE '<INI 文 件 路 径 >' FROM BACKUPSET '< 备 份 集 目 录 >'[DEVICE TYPEDISK|TAPE[PARMS '<介质参数>']] [IDENTIFIED BY <密码> [ENCRYPT WITH <加密算法>]];

RECOVER DATABASE '<INI 文件路径>' UPDATE DB_MAGIC;

<with_archdir_lst_stmt> ::=WITH ARCHIVEDIR '<归档日志目录>'{,'<归档日志目录>'}

更新 DB_MAGIC 恢复 --在不需要重做归档日志恢复数据的情况下,可以直接更新 DB_MAGIC

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;

从备份集恢复

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_recover_backupset';

从归档恢复 --从归档恢复是利用重做本地归档日志来恢复数据的过程

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch' USE DB_MAGIC 1447060265;

表空间还原

RMAN>restore database'/home/DMDBMS/rac/dm01.ini' tablespace main from backupset '/home/DMDBMS/bak/rman_dm01_01' with archivedir'/home/DMDBMS/rac/arch_dest1';

RMAN>recover database'/home/DMDBMS/rac/dm01.ini' tablespace main

归档还原

使用 RESTORE 命令完成脱机还原归档操作,在还原语句中指定归档备份集。备份集可以是脱机归档备份集, 也可以是联机归档备份集

还原归档。启动 DMRMAN, 设置 OVERWRITE 为 2,如果归档文件已存在,会报错。

RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini'OVERWRITE 2;

或者

RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO ARCHIVEDIR'/opt/dmdbms/data/DAMENG_FOR_RESTORE/arch_dest'OVERWRITE 2;

高级还原和恢复

指定映射文件还原

还原后的数据文件默认地生成到还原目标库的路径下,如果用户想生成数据文件到特定的路径,就需要指定映射文件参数来实现。

脱机备份还原为例说明使用映射文件还原的具体步骤。

1) 启动 RMAN,脱机备份数据库。

RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'

BACKUPSET'/home/dm_bak/db_bak_for_map_01';

2) 生成映射文件 map_file_01.txt 至/home/dm_mapfile 目录。 此处指定生成映射文件中的数据文件路径与数据库/opt/dmdbms/data/DAMENG_FOR_RESTORE 中的数据文件一致。若不指定,与备份集中的源数据库的数据文件路径一致。

RMAN> DUMP BACKUPSET'/home/dm_bak/db_bak_for_map_01' DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' MAPPED FILE'/home/dm_mapfile/map_file_01.txt';

生成的映射文件内容如下:

如果需要恢复数据文件或镜像文件到指定路径,可手动编辑映射文件中表空间对应的 data_path 属性。例如,要还原 MAIN 表空间中的数据文件 MAIN.DBF 到/home/dm_dbf 路径下,修改组 DAMENG_MAIN_FIL_0 的内容如下:

3) 指定映射文件还原。 还原前可选择对备份文件进行校验。

RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_bak_for_map_01' MAPPED FILE'/home/dm_mapfile/map_file_01.txt';

恢复数据库到指定时间点/LSN

恢复数据库到指定时间点/LSN 是从归档恢复的一种方式,也称为不完全恢复。从归档

恢复允许恢复到指定的时间点及指定的 LSN 值。

RAC 环境下的数据库恢复

RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM

BACKUPSET '/home/dm_bak/db_full_bak_for_rac';

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH

ARCHIVEDIR'/home/dm_arch1','/home/dm_arch2'USE DB_MAGIC 1447060265;

多次故障恢复后使用不同数据库归档恢复(见dm7备份与还原文档)

3.3.5归档修复

使用 REPAIR 命令完成指定数据库的归档修复, 归档修复会将目标库 dmarch.ini 中

配置的所有本地归档日志目录执行修复。

REPAIR<ARCHIVE LOG | ARCHIVELOG> DATABASE <'INI 文件路径'>;

1) 单机环境时,确保目标库已经停止工作后,执行归档修复。

RMAN>REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/data/dm.ini';

2) RAC 环境时,需要每个节点停止工作后,且每个节点独立执行修复操作。对于两节点 RAC01、 RAC02 执行修复如下。

RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/rac/dm01.ini';

RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/rac/dm02.ini';

3.3.6查看操作日志

默认情况下,这些文件都位于 DM 数据库的 log 目录中。 文件名中的“ XXX”为生成文件的年月,每个月生成一个日志文件,在该月中日志内容都是不断增加的。

操作日志类型包括:

l 全局日志文件 dm_DMSERVER_xxx.log

DM7 数据库服务器的运行日志,服务器运行过程中的日志信息都包含在这个日志中,备份还原过程中备份还原操作的阶段性信息会记录在这个日志文件中,包括日志生成时间、日志级别、日志生成进程名称和进程 ID、日志生成线程和内容等。

l 备份还原日志文件 dm_BAKRES__xxx.log

DM7 备份还原在执行备份与还原时生成的日志包括主进程(联机时为 dmserver 工作线程,脱机时为 dmrman) 发送,以及 AP 进程处理过程信息。 每条信息,包括生成时间、信息级别、生成日志的进程名称和进程 ID,对于 AP 进程还会生成对应主进程的 ID。另外,为了保证日志内容的完整性,还会记录由全局日志生成接口生成的日志记录,这部分日志格式参照全局日志文件说明。

l SBT 接口跟踪文件 dm_SBTTRACE_xxx.log

SBT 接口跟踪文件, SBT 接口跟踪文件可配置,SBT 接口在打开 TRACE 跟踪( TRACE LEVEL >1)的情况下生成执行日志,默认文件名为 dm_SBTTRACE_xxx.log

3.4备份还原实战v1.0(dm6)

3.4.1联机 SQL备份片备份

备份数据库

全备:

BACKUP DATABASE FULL TO full_bak BAKFILE 'C:\database_full.bak';

表空间备份:

BACKUP TABLESPACE t1 FULL TO TS_BAK BAKFILE 'C:\tablespace_bak.bak' ;

BACKUP DATABASE [FULL |INCREMENT WITH BACKUPDIR ‘<备份目录>’{,‘<备份目录>’}] TO <备份名> [BAKFILE ‘<备份路径>’] [BACKUPINFO ‘<备份描述>’] [MAXSIZE <限制大小>] [IDENTIFIED BY <密钥>[WITH ENCRYPTION<TYPE>][ENCRYPT WITH <加密算法>]][COMPRESSED [LEVEL <压缩级别>]][WITHOUT LOG][PARALLEL ‘<并行映射文件路径>’];

还原数据库

还原表空间

ALTER TABLESPACE t1 OFFLINE;

RESTORE TABLESPACE t1 FROM 'C:\tablespace_bak.bak' IDENTIFIED BY ABCDEF;

ALTER TABLESPACE t1 ONLINE;

3.4.2脱机工具进行备份还原

备份数据库

对名为 test 数据库执行一个完全备份:

DMBACKUP TYPE=FULL INI_PATH=c:\dmdata\dameng\dm.ini NAME=test

确认 DM 数据库服务器已停止后, 在 Windows“命令提示符”窗口中输入带参数的

DMBACKUP 命令启动该工具, 参数说明见下表。

表 4.1 DMBACKUP 工具参数说明

还原数据库

dmmdf

要利用归档还原,需要利用备份文件还原一个目标库,修改目标库

db_magic 和源库中归档文件的 db_magic 一致。然后就可以执行还原操作了。

dmmdf 工具的用法如下:

dmmdf 工具的使用, 举例说明:

dmmdf.exe TYPE=1 FILE=d:\data\DAMENG\SYSTEM.dbf

dmmdf.exe TYPE=2 FILE=d:\data\DAMENG\DAMENG01.log

dmmdf.exe TYPE=3 FILE=d:\data\DAMENG\bak\dmdb.bak

dmmdf.exe TYPE=4 FILE=d:\data\DAMENG\bak\bset\nbak.meta

dmmdf.exe TYPE=5 FILE=d:\data\DAMENG\bak\bset\nbak.bak

dmmdf.exe TYPE=6 FILE=d:\data\DAMENG\bak\bset

dmmdf.exe TYPE=7 FILE=d:\data\DAMENG\arch DB_MAGIC_SRC=4734373

DB_MAGIC_DST=4734366

使用说明:

dmmdf 工具可以修改 TYPE 中指定的文件中的信息,例如 db_magic。

使用备份文件还原

例如,利用备份文件 c:\dmdata\backup\test.bak 还原数据库

DMRESTORE INI_PATH=c:\dmdata\dameng\dm.ini FILE=c:\dmdata\backup\test.bak

使用归档日志还原

DMRESTORE INI_PATH=c:\dmdata\dameng\dm.ini FILE=c:\dmdata\backup\test.bak ARCHIVE_DIR = c:\dmdata\dameng\arch

还原到指定时间点或 LSN

还原数据库 test 到指定时间 -9-25 15:20:20

DMRESTORE INI_PATH=c:\dmdata\dameng\dm.ini FILE=c:\dmdata\backup\test.bak

TIME="-9-25 15:20:20" ARCHIVE_DIR = c:\dmdata\dameng\arch

还原数据库 test 到指定 LSN: 20000。

DMRESTORE INI_PATH=c:\dmdata\dameng\dm.ini FILE=c:\dmdata\backup\test.bak

END_LSN=20000 ARCHIVE_DIR = c:\dmdata\dameng\arch

4. 控制文件修改

DM7中控制文件修改工具,实现数据文件路径的修改

修改控制文件:

数据文件和redo log存在的绝对路径记录在数据库的控制文件dm.ctl中。当数据库的数据文件目录和重做日志 有改动时,需要修改控制文件中的有关数据文件的绝对路径,数据库才能正常启动。

(安全版不支持此工具改控制文件)

使用流程

由于dm.ctl文件是一个二进制文件,修改dm.ctl文件需要使用工具dmctlcvt修改,具体修改流程如下:

以Linux操作系统为例:

1 停止数据库服务

Dmserverd stop

2 Copy数据文件到指定目录

将数据文件copy到指定的新位置

3 修改dm.ini文件

将文件中如图中几个的路径修改为数据文件的新路径。

注:若为单机环境,Dm.ini文件一般存在于dmdbms/data/DAMENG目录下;若为HA环境,dm.ini存在于dmdbms/bin目录下。

4 备份dm.ctl文件

Copy dm.ctl dm.ctl.bak

5 修改dm.ctl文件

Dmctlcvt工具用法如下:

EG:新的数据文件路径为/opt/data

(1)将/opt/dmdbms/data/DAMENG/dm.ctl文件转换为txt文件

./dmctlcvt TYPE=1 SRC=/opt/dmdbms/data/dameng/dm.ctl DEST=/opt/dmdbms/data/dameng/dmctl.txt

(2)修改txt文件中路径

将文件中的/opt/dmdbms/data/DAMENG/更换为新路径

(3)将修改后的txt文件修改回ctl文件

./dmctlcvt TYPE=2 SRC=/opt/dmdbms/data/dameng/dmctl.txt DEST=/opt/dmdbms/data/dameng/dm.ctl

6 修改dmarch.ini文件(若开了归档请修改此文件,未开归档请忽略)

若归档文件路径和数据文件路径一致,请修改ARCH_DEST

7 启动数据库服务

Dmserverd start

5. isql工具使用

Linux下执行脚本方式,注意DM6与DM7的区别disql设置输出格式

DIsql 是 DM 数据库的一个命令行客户端工具,用来与 DM 数据库服务器进行交互。

DIsql 识别用户输入,将用户输入的 SQL 语句打包发送给 DM 数据库服务器执行,并

接收服务器的执行结果,并按用户的要求将执行结果展示给用户。

5.1启动sql

DIsql [ [<option>] [<logon> | /NOLOG] [<start>] ]

<option>::=HELP|-H|-S

<logon>::=<username>[/<password>][*<MPP_TYPE>][@<server>][:<port>][?{UDP|TCP}][#<sslpath>@ssl_pwd]

<start>::=<`运行脚本>|<start 运行脚本>|<直接执行语句>

<`运行脚本>::=`<file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]

<start 运行脚本>::=START <file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]<直接执行语句>::= -E “<SQL 语句>{;<SQL 语句>}”

5.2切换登录

用户进入 DIsql 界面后,如果想切换到其他 DM 数据库实例。有两种实现方式:一是

使用 LOGIN 命令;二是使用 CONN 命令。登录到远程数据库,必须在服务名处使用 IP 地

址或网络服务名。

windows 执行./disql

login登入,logout登出

Linux

登入CONN[ECT] <username>[/<password>][*<MPP_TYPE>] [@<server>]

CONN[ECT] <username>

登出DISCONN

5.3Disql环境变量设置

5.3.1 DIsql 中的系统环境变量

5.3.2 SET 命令设置环境变量

AUTO[COMMIT]

设置当前 session 是否对修改的数据进行自动提交。

语法如下:

SET AUTO[COMMIT] <ON|OFF>

ON: 表示打开自动提交,所有执行的 SQL 语句的事务将自动进行提交。

OFF: 表示关闭自动提交,所有执行的 SQL 语句的事务将由用户显式提交,为默认设置。

DEFINE

是否使用 DEFINE 定义本地变量。

语法如下:

SET DEFINE<c(默认的变量前缀是&)|ON(默认值) |OFF>

c: 表示打开 DEFINE 功能,同时定义前缀变量符号, c 为定义的前缀符号。

ON: 表示打开 DEFINE 功能,使用默认前缀符号&。

OFF: 表示不使用 DEFINE 功能。

HEA[DING]

是否显示列标题。

语法如下:

SET HEA[DING] <ON(默认值) |OFF>

当 SET HEADING OFF 时,在每页的上面不显示列标题,而是以空白行代替。

LINESHOW

LINESHOW 设置是否显示行号。

语法如下:

SET LINESHOW<ON(默认值) |OFF >;

默认为每行输出打印行号。

PAGES[IZE]

设置一页有多少行数。

语法如下:

SET PAGES[IZE] <14(默认值) |n>

如果设为 0,则所有的输出内容为一页并且不显示列标题。默认值为 14。

CHAR_CODE

设置 SQL 语句的编码方式。

语法如下:

SET CHAR_CODE <GBK | UTF8 | DEFAULT(默认值,操作系统的编码方式)>

AUTOTRACE

设置执行计划和统计信息的跟踪。

语法如下:

SET AUTOTRACE <OFF(默认值) | NL | INDEX | ON|TRACE>

当 SET AUTOTRACE OFF 时, 停止 AUTOTRACE 功能,常规执行语句。

当 SET AUTOTRACE NL 时,开启 AUTOTRACE 功能,不执行语句,如果执行计划中

有嵌套循环操作,那么打印 NL 操作符的内容。

当 SET AUTOTRACE INDEX(或者 ON)时,开启 AUTOTRACE 功能,不执行语句,如

果有表扫描,那么打印执行计划中表扫描的方式、表名和索引。

当 SET AUTOTRACE TRACE 时,开启 AUTOTRACE 功能,执行语句,打印执行计划。

此功能与服务器 EXPLAIN 语句的区别在于, EXPLAIN 只生成执行计划,并不会真正执行SQL 语句,因此产生的执行计划有可能不准。而 TRACE 获得的执行计划,是服务器实际执行的计划。

DESCRIBE

设置 DESCRIBE 对象结构信息的显示方式。

语法如下:

SET DESCRIBE [DEPTH <1(默认值) | n | ALL>] [LINE[NUM] <ON | OFF(默认值)>]

[INDENT <ON | OFF(默认值)>]

DEPTH: 结构信息显示至第 N 层,默认只显示第 1 层。范围是 1-40。当设置为 ALL

时, DEPTH 为 40。

LINENUM:是否显示对象行号,成员显示父亲的行号。

INDENT:当对象的类型是复合类型时,是否通过缩进的方式显示成员信息。

LOBCOMPLETE

设置 LOBCOMPLETE,是否从服务器中全部取出大字段数据。

语法如下:

SET LOBCOMPLETE <OFF(默认值) | ON>

对于大字段数据,是否从服务器全部取出,防止死锁的发生;与显示长度不同,即便是

全部取出,也可以只显示一部分。

5.3.3 SHOW 命令查看环境变量

示例如下,显示 HEADING 和 TIMING 两个变量:

SQL> SHOW HEADING TIMING

HEADING ON.

TIMING ON

5.4 Disql常用命令

5.4.1help

DIsql 帮助命令, 可以帮助用户查看其他命令的具体用法

SQL> HELP DEFINE

DEFINE

------

设置变量值,或者显示已定义的变量信息。

DEF[INE] [variable] | [variable = text]

5.4.2 输出文件 SPOOL

将屏幕显示的内容输出到指定文件。

SPOOL {<file> | OFF }

<file>:: = <file_path> [CRE[ATE]|REP[LACE]|APP[END]]

<file_path>: 指定文件的绝对路径

CRE[ATE]: 创建指定的文件,若指定的文件已存在,则报错,默认方式

REP[LACE]: 创建指定的文件,若指定的文件已存在,则替换它

APP[END]]: 将输出内容追加到指定文件的末尾

OFF: 关闭 SPOOL 输出

5.4.3 切换到操作系统命令 HOST

使用 HOST 命令可以不用退出 DIsql 就能执行操作系统命令。

如果单独执行 host,则能够直接从 DIsql 界面切换到操作系统,之后可使用 EXIT 回到 DIsql 界面。

HOST[<command>]

<command>: 操作系统命令。

示例如下:

SQL>HOST DIR

5.4.4 获取对象结构信息 DESCRIBE

获取表或视图、存储过程、函数、包、记录、类的结构描述。

语法如下:

DESC[RIBE] <table>|<view>|<proc>|<fun>|<pkg>|<record>|<class> ;

各对象获取的内容略有不同:

l 表或视图获取的内容包括列名,列数据类型,列是否可以取空值。

l 函数、过程、类获取的内容包括两类: 1)存储函数/过程名,类型(函数或过

程),函数返回值类型; 2)参数名,参数数据类型、参数输入输出属性、参数缺

省值。

l 包获取的内容分为两类: 1)包内存储函数/过程名,类型(函数或过程),函数

返回值类型; 2)包内参数名,参数数据类型、参数输入输出属性、参数缺省值。

l 记录获取的内容为:参数名,参数数据类型,参数是否可以取空值。

5.4.5 定义本地变量 DEFINE 和 COLUMN

定义本地变量的命令有两个:一是 DEFINE;二是 COLUMN。

5.4.5.1 DEFINE

用来定义一个本地变量的替代变量,然后对该变量赋一个 CHAR 类型的值;或者输出变

量的值和类型。

语法如下:

DEF[INE] [<VARIABLE=text>|< VARIABLE >]

DEF[INE] VARIABLE = text: 申明一个变量,如果该变量存在,则重新赋值,否

则新生成一个变量,并进行赋值。

DEF[INE]: 输出 DIsql 中所有的变量的值和类型。

使用“DEFINE 变量名”可以检查变量是否已经定义。

DEFINE 定义的变量会保存在环境 DIsql 环境中,可以在 SQL 语句中使用。默认的变

量前缀是&。示例如下:

SQL>DEF VAR=666;

SQL>select * from dual where id=&VAR;

如果 var 没有定义,会提示输入变量的值;没有定义的 var 不会保存在 DIsql 环境中。

SQL>DEFINE C3="'OG'" --定义变量 C3 为'OG'--一种使用 DEFINE 字符串变量的方式

SQL>DEFINE C4=OG --定义变量 C4 为 OG --另外一种使用 DEFINE 字符串变量的方式

5.4.5.2 COLUMN

定义一个本地列或表达式。

语法如下:

COL[UMN] [<column | expr> [<option>]]

<option> ::= NEW_VALUE variable

COL[UMN]:列举出所有的 COLUMN 变量信息。

COL[UMN] column | expr:列举出某个 column 或 expr,如果存在,则输出信息,否则报错。

COL[UMN] column | expr option: option 目前仅支持 NEW_VALUE,表示该column|expr 的值,同时作为变量存在。但如果该变量未赋值,通过 DEFINE 查询时,不会显示该变量

示例如下:

SQL> COLUMN CVAR NEW_VALUE DVAR

SQL> SELECT CUSTOMERID CVAR FROM SALES.CUSTOMER;

行号 CVAR

---------- -----------

1 1

2 2

3 3

4 4

5 5

6 6

6 rows got

已用时间: 1.105(毫秒). 执行号:1053.

SQL> DEFINE DVAR

DEFINE DVAR = "6" (INT)

5.4.6 查看执行计划 EXPLAIN

用 EXPLAIN 命令来查看查询语句的执行计划。

语法如下:

EXPLAIN <sql_clause>

示例如下:

SQL>EXPLAIN select count(*) from sysobjects;

5.4.7 设置异常处理方式 WHENEVER

用 WHENEVER 命令可以设置异常处理方式,继续执行或退出 DIsql。

语法如下:

WHENEVER SQLERROR

CONTINUE [ COMMIT | ROLLBACK | NONE ] |

EXIT [ SUCCESS | FAILURE | WARNING | n | <variable> | : <bindvariable> ]

[ COMMIT | ROLLBACK ]

n 和<variable>的返回值受限于操作系统,在不同平台下,会有所不同,例如:

UNIX 系统只用一个字节来存 code,所以返回值的范围只在 0-255 之间。

示例如下:

SQL>whenever sqlerror exit 1

SQL>select c1 from dual;

第 1 行附近出现错误[-2111]:无效的列名[C1].

--windows 系统下,输入 echo %ERRORLEVEL%,查看返回值为: 1

--linux 系统下,输入 echo $?,查看返回值为: 1

5.4.8 查看下一个结果集 MORE

当结果集过多,屏幕只能显示一个时,用户可以使用 MORE 命令切换到下一个结果集。

MORE

例如,当执行如下语句时,用户想查看更多的结果集,可以使用 MORE 命令。

5.4.9 显示 SQL 语句或块信息 LIST

显示最近执行的 SQL 语句或者 PL/SQL 块信息。不显示 DIsql 命令。

LIST 或者 ;

5.4.10 插入大对象数据

当插入语句中包含大对象数据文件时, 使用@。

<插入语句>,其中大数据的插入值格式为:@'path'

示例如下:

例如, 在 test 表中插入大对象 e:\DSC_1663.jpg。

create table test(a int,b image);

@insert into test values(1,@'e:\DSC_1663.jpg');

5.5如何在 DIsql 中使用脚本

使用 START 命令运行脚本

使用 EDIT 命令编辑脚本

SQL>EDIT D:\test.sql 或 SQL>edit

如何在脚本中使用变量

脚本带参数值,参数名必须是数字。

在脚本中通过&n 来引用参数, n 为 1 表示为第一个参数, 2 表示第二个参数,依次类推。

如脚本 D:\test.sql:

select * from dual where id = &1;

select * from dual where id = &2;

select * from dual where id = &3;

DIsql 要求传入的参数值个数要与脚本中的变量个数一一对应。如果传入参数值个数不匹

配,如 n 为 3,但执行时只带了 2 个参数, DIsql 就会在屏幕上提示输入参数。

示例,输入三个参数值 11、 12、 13:

SQL>`D:\test.sql 11 12 13

脚本中定义参数值

使用 DEFINE 命令定义变量值,格式: DEFINE 标识符 = 值。

如脚本 D:\test.sql:

define n=1

define s=DIsql

select &n from dual;

select '&s' from dual;

如果变量没有定义,那么在通过&引用时, DIsql 会提示输入。

使用 PROMPT 命令传递信息

PROMPT <输出内容>

6. 初始化库工具使用

DM6、DM7初始化数据库工具的使用

例程: ./dminit PATH=/public/dmdb/dmData PAGE_SIZE=32

(详细参数说明可以查看dminit使用手册。)

初始化高级场景

单机

DM 支持初始化数据库到一个普通机器上或是一个共享存储上。本节以 DMASM 文件系统

为例,初始化单机数据库。

RAC

7. DEM部署

DM7/DM8 部署DEM

概述

DEM全称为Dameng Enterprise Manager。DEM提供了数据库对象管理和数据库监控的功能,并且通过远程主机部署代理,能够实现对远程主机状态和远程主机上达梦数据库实例状态的监控。 DEM的监控不只局限于单个数据库实例,它能够对数据库集群(MPP、DSC、数据守护)进行监控和管理。

dem在dm安装包中 不同版本不通用

DEM 部署需要准备:

• DEM WAR 包 和 dem_init.sql

• Tomcat(需下载)

• 达梦数据库

其中 DEM WAR 包在达梦安装目录下/web/dem.war

DEM部署说明

1.配置数据库

创建一个数据库作为DEM后台数据库, 数据库dm.ini参数配置进行优化, 推荐配置:

MEMORY_POOL = 200

BUFFER = 1000

KEEP = 64

MAX_BUFFER = 2000

SORT_BUF_SIZE = 50

在该数据库中执行以下SQL脚本dem_init.sql;

2.配置tomcat

创建tomcat文件夹,上传解压在里面

安装完成后就可以使用shell脚本启动。

修改tomcat配置

(1) 在 /tomcat/conf/server.xml 中<Connector port="8080" protocol="HTTP/1.1"... 追加属性字段 maxPostSize="-1"

[root@meng1 apache-tomcat-7.0.104]# cd conf/

[root@meng1 conf]# vi server.xml

(2) 修改 jvm 启动参数

查看本地Java版本

[root@meng1 java-1.7.0-openjdk-1.7.0.99.x86_64]# find / -name java

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.99.x86_64

Linux:

Windows:

bin/catalina.bat -> set java_opts= -server -Xms40m -Xmx1024m

-XX:MaxPermSize=512m -Djava.library.path=c:\dmdbms\bin;

(3) 把 dem.war 放到 tomcat 的 webapps 目录下

[root@meng1 bin]# cp /home/dmdba/dm/dmdbms/web/dem.war /tomcat/apache-tomcat-7.0.104/webapps/

(4) 启动 tomcat (必须先启动 tomcat,才会解压缩 war 包,当然也可以直接在 dem.war 中配置,则不需要启动 tomcat)

(5)修改 dem 连接后台数据库配置文件 db.xml

配置 dem 后台数据库的连接信息: ip、 port、用户名、密码、连接池大小,SSL 登录信息

等 , 在 文 件 WEB-INF/db.xml ( dem.war 中 , 解 压 后 再 tomcat 的webapps/dem/war/WEB-INI/db.xml 下)配置;

如果需要 SSL 安全方式连接后台数据库,要求配置 SSLDir,和 SSLPassword:

默认在 WEB-INF/sslDir 目录存有密钥对, WEB-INF/db.xml 配置客户端连接使用的密钥文件(SSLDir)为 WEB-INF/sslDir/client_ssl/SYSDBA,密码(SSLPassword)为空,对应 WEB-INF/db.xml配置的登录用户 SYSDBA,

此时,只需拷贝 WEB-INF/sslDir/server_ssl 到后台数据库执行码目录。

(6) 启动/重启 tomcat

(7). 登陆验证

假 设 部 署 DEM 的 机 器 IP 为 192.168.0.104 , 则 DEM 访 问 地址:http://192.168.6.7:8080/dem/

默认用户名和密码:admin/888888

3.部署dmagent

在监控的节点部署并启用dmagent。 DM的安装目录已经包含了dmagent,但agent 的安装必须以root用户来执行,所以我们需要先复制出来。

center.url=http://192.168.0.104:8080/dem #DEM访问地址

center.agent_servlet=dem/dma_agent #一般无需调整

[root@meng1 dmagent]# cd /home/dmdba/dm/dmdbms/tool/dmagent

[root@meng1 dmagent]# vi config.properties

安装启动dmagent 需要使用root安装

在网页dem上加上agent端

4.问题

(1)如未找到/dem/,需要检查数据库。

8. 数据检查工具使用

数据检查工具dmdbchk使用

dmdbchk 是 DM 提供的用于检查数据库完整性、正确性的命令行工具。

检验的内容具体包括三方面:

1. 数据文件合法性检验。

2. 索引正确性校验。

3. 对象 ID 合法性校验

dmdbchk参数

dmdbchk 使用简单灵活。 用户可使用“dmdbchk HELP”快速查看参数用法。

./dmdbchk HELP

格式: ./dmdbchk ini_file_path

例程: ./dmdbchk path=/opt/dmdbms/bin/dm.ini

关键字说明(默认)

-----------------------------------------------------------------------------

PATH dm.ini 绝对路径或者当前目录的 dm.ini

DCR_INI dmdcr.ini 的路径

HELP 打印帮助信息

START_INDEXID 最小检查索引号

END_INDEXID 最大检查索引号

dmdbchk 报告解读

dmdbchk 校验的过程对用户不可见,校验的结果以报告的形式呈现给用户。

dmdbchk 报告内容分为七部分: 一 dmdbchk 版本信息; 二开始标志; 三数据文件校验结果; 四索引校验结果; 五对象 ID 校验结果; 六结束标志; 七错误总数。

应用实例

例如, 初始化一个数据库,并创建 DM 的示例库 BOOKSHOP, 正常关闭后,使用 dmdbchk工具对该库的数据文件进行校验。

./dmdbchk PATH=/home/test/dmdbms/dm.ini START_INDEXID=33554433END_INDEXID=33555531

校验后的报告,存在 dmdbchk 工具所在的目录里,名称为 dbchk_err.txt。报告内

容如下:

9. 数据库安全功能

数据库通信加密功能配置,SSL证书数据库审计功能数据库资源限制配置

11.1数据库通信加密功能配置,ssl证书

DM 提供以下三种通信方式:

不加密 SSL 加密 SSL 认证

选择是否使用通信加密以 DM 数据库服务器端的设置为准,即通过设置服务器配置文件dm.ini 中的 ENABLE_ENCRYPT 和 COMM_ENCRYPT_NAME 参数来指定,客户端以服务器采用的通信方式与其进行通信。

ENABLE_ENCRYPT 取值 0、 1 和 2 分别代表不加密、 SSL加密、 SSL 认证, 默认值为 1。

COMM_ENCRYPT_NAME 参数用来指定消息通信的加密算法名,如果为空则不进行通信加密;如果给的加密算法名错误,则使用加密算法 DES_CFB。

DM 支持的加密算法名可以通过查询动态视图 V$CIPHERS 获取。

系统管理员可通过查询 V$PARAMETER 动态视图查询 ENABLE_ENCRYPT 和COMM_ENCRYPT_NAME 的当前值。

SELECT * FROM V$PARAMETER WHERE NAME=’ENABLE_ENCRYPT‘ OR

NAME=’COMM_ENCRYPT_NAME‘;

也可以通过使用客户端工具 Console 或调用系统过程 SP_SET_PARA_VALUE 重新设置 ENABLE_ENCRYPT 或 COMM_ENCRYPT_NAME 的值。 不过由于这两个参数都为静态 INI参数, 修改后需要重启 DM 数据库服务器才能生效。

当选择 SSL 加密时,需要在 DM 数据库服务器所在目录下的 server_ssl 子目录中存放 CA 的证书、服务器的证书和服务器的密钥,同时在客户端所在目录下的 client_ssl

子目录中存放 CA 的证书、客户端的证书和客户端的密钥,这样服务器和客户端的通信即是建立在加密的 SSL 连接之上的。此时如果没有配置好 SSL 环境,则通讯仍旧不加密。

当选择 SSL 认证时,不进行通信加密,只是检查客户端和服务器的证书是否匹配。此时如果服务器 SSL 环境没有配置则服务器无法正常启动,如果客户端 SSL 环境没有配置则无法连接服务器。

11.2数据库审计功能

审计机制是 DM 数据库管理系统安全管理的重要组成部分之一。 DM 数据库除了提供数据安全保护措施外,还提供对日常事件的事后审计监督。 DM 具有一个灵活的审计子系统,可以通过它来记录系统级事件、个别用户的行为以及对数据库对象的访问。通过考察、跟踪审计信息,数据库审计员可以查看用户访问的形式以及曾试图对该系统进行的操作,从而采取积极、有效的应对措施。

1.2.1审计开关

审计开关由 DM 的 INI 参数 ENABLE_AUDIT 控制,有三种取值:

0:关闭审计 1:打开普通审计 2:打开普通审计和实时审计

在普通版本中, ENABLE_AUDIT 的缺省值为 0;在安全版本中, ENABLE_AUDIT 的缺省值为 2。

系统管理员可通过查询 V$PARAMETER 动态视图查询ENABLE_AUDIT 的当前值。

SELECT * FROM V$PARAMETER WHERE NAME= 'ENABLE_AUDIT';

也可以通过使用客户端工具 Console 或调用系统过程 SP_SET_PARA_VALUE 重新设置 ENABLE_AUDIT 的值, ENABLE_AUDIT 为动态 INI 参数。

1.2.2审计的设置与取消

数据库审计员指定被审计对象的活动称为审计设置,只有具有 AUDIT DATABASE 权限

的审计员才能进行审计设置。

1.语句级审计

语句级审计的动作是全局的,不对应具体的数据库对象。

设置语句级审计的系统过程:

参数说明:

例 1,审计表的创建、修改和删除。

SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');

例 2,对 SYSDBA 创建用户成功进行审计。

SP_AUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');

例 3,对用户 USER2 进行的表的修改和删除进行审计,不管失败和成功。

SP_AUDIT_STMT('UPDATE TABLE', 'USER2', 'ALL');

SP_AUDIT_STMT('DELETE TABLE', 'USER2', 'ALL');

取消语句级审计的系统过程:

参数说明:

例 1,取消对表的创建、修改和删除的审计。

SP_NOAUDIT_STMT('TABLE', 'NULL', 'ALL');

例 2,取消对 SYSDBA 创建用户成功进行审计。

SP_NOAUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');

例 3,取消对用户 USER2 进行的表的修改和删除的审计。

SP_NOAUDIT_STMT('UPDATE TABLE', 'USER2', 'ALL');

SP_NOAUDIT_STMT('DELETE TABLE', 'USER2', 'ALL');

2.对象级审计

对象级审计发生在具体的对象上,需要指定模式名以及对象名。

参数说明:

例 1,对 SYSDBA 对表 PERSON.ADDRESS 进行的添加和修改的成功操作进行审计。

SP_AUDIT_OBJECT('INSERT', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');

SP_AUDIT_OBJECT('UPDATE', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');

例 2, 对 SYSDBA 对表 PERSON.ADDRESS 的 ADDRESS1 列进行的修改成功的操作进

行审计。

SP_AUDIT_OBJECT('UPDATE','SYSDBA','PERSON','ADDRESS','ADDRESS1','SUCCESSFUL');

取消对象级审计的系统过程:

参数说明:

例 1,取消对 SYSDBA 对表 PERSON.ADDRESS 进行的添加和修改的成功操作的审计。

SP_NOAUDIT_OBJECT('INSERT', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');

SP_NOAUDIT_OBJECT('UPDATE', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');

例 2,取消对 SYSDBA 对表 PERSON.ADDRESS 的 ADDRESS1 列进行的修改成功操作的审计。

SP_NOAUDIT_OBJECT('UPDATE','SYSDBA','PERSON','ADDRESS','ADDRESS1','SUCCESSFUL

');

3.语句序列审计

DM 还提供了语句序列审计功能,作为语句级审计和对象级审计的补充。语句序列审计

需要审计员预先建立一个审计规则,包含 N 条 SQL 语句( SQL1,SQL2……),如果某个会话依次执行了这些 SQL 语句,就会触发审计

建立语句序列审计规则的过程:

参数说明:

例如,建立一个语句序列审计规则 AUDIT_SQL1。

SP_AUDIT_SQLSEQ_START('AUDIT_SQL1');

SP_AUDIT_SQLSEQ_ADD(' AUDIT_SQL1', 'SELECT NAME FROM TEST1;');

SP_AUDIT_SQLSEQ_ADD(' AUDIT_SQL1', 'SELECT ID ROM TEST2;');

SP_AUDIT_SQLSEQ_ADD(' AUDIT_SQL1', 'SELECT * FROM TEST3;');

SP_AUDIT_SQLSEQ_END(' AUDIT_SQL1');

系统过程删除指定的语句序列审计规则

参数说明:

例如, 删除语句序列审计规则 AUDIT_SQL1。

SP_AUDIT_SQLSEQ_DEL(' AUDIT_SQL1');

随着系统的运行,审计记录将会不断增加,审计文件需要更多的磁盘空间。在极限情况

下,审计记录可能会因为磁盘空间不足而无法写入审计文件,最终导致系统无法正常运行。

对这种情况的处理有两种策略,通过设置 DM 的 INI 参数 AUDIT_FILE_FULL_MODE 进行配置。当将 AUDIT_FILE_FULL_MODE 置为 1 时,将删除最老的审计文件,直至有足够的空间创建新审计文件;当将 AUDIT_FILE_FULL_MODE 置为 2 时,将不再写审计记录,默认值为 1。 AUDIT_FILE_FULL_MODE 为静态参数,可通过系统过程SP_SET_PARA_VALUE 进行修改,但是修改需要重新启动 DM 数据库服务器才能生效。

DM 审计信息存储在审计文件中。审计文件存放在数据库的 SYSTEM_PATH 指定的路径,即数据库所在路径。审计文件命名格式为“AUDIT_GUID_创建时间.log”,其中“GUID”为DM 给定的一个唯一值。

审计文件的大小可以通过 DM 的 INI 参数 AUDIT_MAX_FILE_SIZE 指定。 当单个审

计文件超过指定大小时,系统会自动切换审计文件,自动创建新的审计文件,审计记录将写入新的审计文件中。 AUDIT_MAX_FILE_SIZE 为动态系统级参数,缺省值为 100M, DBA用户可通过系统过程 SP_SET_PARA_VALUE 对其进行动态修改,有效值范围为 1~4096M。

1.2.3审计信息查阅

当使用 DM 提供的审计机制进行了审计设置后,这些审计设置信息都记录在数据字典表

SYSAUDITOR.SYSAUDIT 中

审计用户可以通过动态视图 SYSAUDITOR.V$AUDITRECORDS 查询系统默认路径下的审计文件的审计记录

1.2.4审计告警工具 dmamon

dmamon_ctl FILE=c:\dmamon.ini

当需要创建 dmamon.ini 时,可以不指定 FILE 参数,则 dmamon_ctl 工具会一步

步引导用户配置 dm.ini 所在目录、发送和接收邮件的电子邮箱等信息,创建一个新的

dmamon.ini 文件。 配置项如下表所示

配置好 dmamon.ini 后,就可以使用 dmamon 工具进行实时审计告警了。 启动

dmamon 工具的命令格式为:

dmamon USERID=value1 FILE=value2

例如:

dmamon USERID=SYSAUDITOR/SYSAUDITOR FILE=c:\dmamon.ini

如果觉得《达梦数据库工具使用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。