
一:DM数据库非图形交互式安装二:用户和模式三:物理备份四:物理还原五:配置ODBC连接DM数据库

一:DM数据库非图形交互式安装
[root@host02 ~]# groupadd dinstall[root@host02 ~]# useradd -g dinstall dmdba[root@host02 ~]# id dmdbauid=1001(dmdba) gid=1001(dinstall) groups=1001(dinstall)
[root@host02 mnt]# ./DMInstall.bin -iPlease select the installer's language (E/e:English C/c:Chinese) [E/e]:EExtract install files.........core file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 7154max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 7154virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimitedThe max number of open files is too little, suggest to set 65536 or more to number of open files.Welcome to DM DBMS InstallerWhether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:n
配置时区
Whether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:yTimeZone:[ 1]: GTM-12=West Date Line[ 2]: GTM-11=Samoa[ 3]: GTM-10=Hawaii[ 4]: GTM-09=Alaska[ 5]: GTM-08=Pacific(America and Canada)[ 6]: GTM-07=Arizona[ 7]: GTM-06=Central(America and Canada)[ 8]: GTM-05=East(America and Canada)[ 9]: GTM-04=Atlantic(America and Canada)[10]: GTM-03=Brasilia[11]: GTM-02=Middle Atlantic[12]: GTM-01=Azores[13]: GTM=Greenwich Mean Time[14]: GTM+01=Sarajevo[15]: GTM+02=Cairo[16]: GTM+03=Moscow[17]: GTM+04=AbuDhabi[18]: GTM+05=Islamabad[19]: GTM+06=Dakar[20]: GTM+07=BangKok,Hanoi[21]: GTM+08=China[22]: GTM+09=Seoul[23]: GTM+10=Guam[24]: GTM+11=Solomon[25]: GTM+12=Fiji[26]: GTM+13=Nukualofa[27]: GTM+14=KiribatiPlease Select the TimeZone [6]:21
选择安装组件
Installation Type:1 Typical2 Server3 Client4 CustomPlease Input the number of the Installation Type [1 Typical]:4
1 Server component2 Client component2.1 Manager2.2 Monitor2.3 DTS2.4 Console2.5 Analyzer2.6 DISQL3 DM Drivers4 Manual component5 DBMS Service5.1 Realtime Audit Service5.2 Job Service5.3 Instance Monitor Service5.4 Assistant Plug-In ServicePlease Input the number of the Installation Type [1 2 3 4 5]:1 2 3 4 5
安装位置
Require Space: 1034MPlease Input the install path [/opt/dmdbms]:/dm8Available Space:28GPlease Confirm the install path(/dm8)? (Y/y:Yes N/n:No) [Y/y]:yPre-Installation SummaryInstallation Location: dm8Require Space: 1034MAvailable Space: 28GVersion Information:Expire Date:Installation Type: CustomConfirm to Install? (Y/y:Yes N/n:No):y
再次检查待安装信息
Pre-Installation SummaryInstallation Location: dm8Require Space: 1034MAvailable Space: 28GVersion Information:Expire Date:Installation Type: Custom
开始安装
Confirm to Install? (Y/y:Yes N/n:No):y2022-09-23 18:45:48[INFO] Installing DM DBMS...2022-09-23 18:45:49[INFO] Installing BASE Module...2022-09-23 18:46:06[INFO] Installing SERVER Module...2022-09-23 18:46:12[INFO] Installing CLIENT Module...2022-09-23 18:46:52[INFO] Installing DRIVERS Module...2022-09-23 18:46:59[INFO] Installing MANUAL Module...2022-09-23 18:47:01[INFO] Installing SERVICE Module...2022-09-23 18:47:05[INFO] Move ant log file to log directory.2022-09-23 18:47:12[INFO] Change the power of installtion directory successfully.2022-09-23 18:47:12[INFO] Installed DM DBMS completely.End
创建默认实例
[dmdba@host02 ~]$ dminit path=/dm8/data
initdb V8db version: 0x7000bfile dm.key not found, use default license!License will expire on 2022-10-07log file path: dm8/data/DAMENG/DAMENG01.loglog file path: dm8/data/DAMENG/DAMENG02.logwrite to dir [/dm8/data/DAMENG].create dm database success. 2022-09-23 18:52:00
注册服务
su - root/dm8/script/root/dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini dm8/data/DAMENG/dm.ini
Created symlink from etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service to usr/lib/systemd/system/DmServiceDMSERVER.service.Finished to create the service (DmServiceDMSERVER)
检查服务
systemctl list-unit-files |grep -i dmserDmServiceDMSERVER.service enabledDmServiceTEST.service disabled
启动
systemctl start DmServiceDMSERVER.service
登录
[dmdba@host02 ~]$ disql sysdba/SYSDBAServer[LOCALHOST:5236]:mode is normal, state is openlogin used time : 4.991(ms)disql V8SQL> select status$ from v$instance;LINEID STATUS$---------- -------1 OPENused time: 6.897(ms). Execute id is 51400.

二:用户和模式
用户(USER):用户是用来连接数据库并进行相关操作的。
模式(SCHEMA):模式是数据库对象的集合,模式是数据库的逻辑结构。
创建用户
SQL> create user cjc identified by Dameng123;executed successfullyused time: 4.149(ms). Execute id is 51604.
查看用户
SQL> select username from dba_users;LINEID USERNAME---------- ----------1 SYSDBA2 SYS3 SYSSSO4 SYSAUDITORused time: 3.601(ms). Execute id is 51807.
查看用户和模式
SQL> select a.name as username, b.name as schenma from sysobjects a inner join sysobjects b on a.id = b.pid where b.subtype$ is null order by username desc;
自动创建了模式
LINEID USERNAME SCHENMA---------- ---------- ----------1 SYSSSO SYSSSO2 SYSDBA SYSDBA3 SYSAUDITOR SYSAUDITOR4 SYS CTISYS5 SYS SYS6 CJC CJC6 rows gotused time: 4.014(ms). Execute id is 51810.
授权
SQL> grant dba to cjc;executed successfullyused time: 2.396(ms). Execute id is 51811.
连接
SQL> conn cjc/Dameng123Server[LOCALHOST:5236]:mode is normal, state is openlogin used time : 5.452(ms)
创建测试表
SQL> create table t1(id int);executed successfullyused time: 6.019(ms). Execute id is 51900.SQL> insert into t1 values(1),(2),(3);affect rows 3used time: 0.725(ms). Execute id is 51901.SQL> commit;executed successfullyused time: 0.797(ms). Execute id is 51902.SQL> select *from t1;LINEID ID---------- -----------1 12 23 3used time: 1.238(ms). Execute id is 51903.
创建模式(必须加/才能结束)
SQL> CREATE SCHEMA chen AUTHORIZATION cjc;executed successfullyused time: 2.094(ms). Execute id is 52003.
可以看到cjc用户关联了两个模式
SQL> select a.name as username, b.name as schenma from sysobjects a inner join sysobjects b on a.id = b.pid where b.subtype$ is null order by username desc;LINEID USERNAME SCHENMA---------- ---------- ----------1 SYSSSO SYSSSO2 SYSDBA SYSDBA3 SYSAUDITOR SYSAUDITOR4 SYS CTISYS5 SYS SYS6 CJC CJC7 CJC CHEN7 rows gotused time: 2.082(ms). Execute id is 52004.
SQL> select * from chen.t1;select * from chen.t1;[-2106]:Error in line: 1Invalid table or view name [T1].used time: 0.613(ms). Execute id is 0.
切换模式
SQL> set schema CHEN;set schema CHEN;[-2510]:Error in line: 1Schema [CHEN] doesn't belong to current user.used time: 0.217(ms). Execute id is 0.
查看模式名称
SQL> select distinct object_name table_schema from all_objects where object_type='SCH';LINEID TABLE_SCHEMA---------- ------------1 CHEN2 CJC3 CTISYS4 SYS5 SYSAUDITOR6 SYSDBA7 SYSSSO7 rows gotused time: 63.195(ms). Execute id is 52101
CJC模式下存在表,CHEN模式下没有表


三:物理备份
https://eco.dameng.com/document/dm/zh-cn/ops/physical-backup.html
联机归档配置操作步骤如下所示:
[dmdba@host02 dm8]$ mkdir dm8/arch
修改数据库为 Mount 状态
alter DATABASE MOUNT
配置本地归档
ALTER DATABASE ADD ARCHIVELOG 'DEST = dm8/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048';
开启归档模式
ALTER DATABASE ARCHIVELOG;
修改数据库为 Open 状态
ALTER DATABASE OPEN;
检查,自动生成了dmarch.ini文件
[dmdba@host02 DAMENG]$ pwd/dm8/data/DAMENG[dmdba@host02 DAMENG]$ ls -l dmarch.ini-rw-r--r-- 1 dmdba dinstall 269 Sep 23 23:14 dmarch.ini
[dmdba@host02 DAMENG]$ cat dmarch.ini#DaMeng Database Archive Configuration file#this is comments[ARCHIVE_LOCAL1]ARCH_TYPE = LOCALARCH_DEST = dm8/archARCH_FILE_SIZE = 1024ARCH_SPACE_LIMIT = 2048ARCH_FLUSH_BUF_SIZE = 0
启动归档模式第二种方法(手动配置本地归档)
关闭数据库
在 dm.ini 所在目录,创建 dmarch.ini 文件。dmarch.ini 文件内容如下:
[ARCHIVE_LOCAL1]ARCH_TYPE = LOCALARCH_DEST = dm8/archARCH_FILE_SIZE = 1024ARCH_SPACE_LIMIT = 2048
编辑 dm.ini 文件,设置参数 ARCH_INI=1
启动数据库实例,数据库已运行于归档模式。
dmarch.ini 中与备份还原相关的配置参数及其介绍见下表。
配置项 配置含义[ARCH_NAME] REDO 日志归档名ARCH_TYPE REDO 日志归档类型,LOCAL 表示本地归档,REMOTE 表示远程ARCH_DEST REDO 日志归档目标,LOCAL 对应归档文件存放路径;REMOTE 对应远程目标节点实例名ARCH_FILE_SIZE 单个 REDO 日志归档文件大小,取值范围(64 MB~2048 MB),缺省 1024 MB,即 1 GBARCH_SPACE_LIMIT REDO 日志归档空间限制,当所有本地归档文件达到限制值时,系统自动删除最老的归档文件。0 表示无空间限制,取值范围(1024 MB~4294967294 MB),缺省为 0ARCH_INCOMING_PATH仅 REMOTE 归档有效,对应远程归档存放在本节点的实际路径
启动 DMAP
备份集备份还原实现策略有两种:
DMAP 辅助进程方式和无辅助进程方式。
用户可通过 DM.INI 参数 bak_use_ap 来选择(DMRMAN 使用参数 use_ap),bak_use_ap 取值 1、2。默认为 1。
DMAP 辅助进程方式
可支持第三方备份(指定 DEVICE TYPE 为 TAPE)。
DMAP 插件执行,改造了备份还原任务子系统,允许指定并行度,大幅提升了备份还原的效率,特别是加密、压缩的处理效率。
如果选择使用 DMAP 辅助进程,执行备份还原之前就必须启动 DMAP 服务。安装 DM 数据库以后,DMAP 服务会自动启动。
无辅助进程方式
不依赖 DMAP,由主进程 dmserver 自身执行备份还原,但不支持第三方备份(指定 DEVICE TYPE 为 TAPE)。
启动 DMAP,手动启动 DMAP,有两种途径
一是启动 DM 服务查看器中的 DmAPService。
二是手动启动 DMAP 执行码,DMAP 执行码位于 DM 安装目录的 bin 子目录下。
除此之外,Linux 下,还可以调用 bin 目录下的 DmAPService 脚本。
[dmdba@host02 bin]$ find dm8 -name DmAPService/dm8/bin/service_template/DmAPService[dmdba@host02 bin]$ cd dm8/bin/service_template/[dmdba@host02 service_template]$ ./DmAPService startStarting DmAPService: [ OK ][dmdba@host02 service_template]$ ./DmAPService statusDmAPService (pid 30298) is running.
物理备份还原是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原。例如使用 RMAN 工具进行的备份还原。
联机备份
介绍在数据库在使用的情况下,利用 disql 工具或图形化管理工具 SQL 编辑区实现数据文件的备份。执行以下命令:
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 [<并行数>] [READ SIZE <拆分块大小>]];
数据库备份
dmdba@host02 dm8]$ disql sysdba/SYSDBAServer[LOCALHOST:5236]:mode is normal, state is openlogin used time : 96.133(ms)disql V8SQL>
在 disql 工具或图形化管理工具 SQL 编辑区中使用 BACKUP 语句可以备份整个数据库,执行以下命令:
BACKUP DATABASE FULL BACKUPSET '/dm8/bak/db_full_bak_01';
指定备份集路径为 dm8/bak/db_bak_3_01,执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_01';
创建备份集,备份名设置为 WEEKLY_FULL_BAK,执行以下命令:
BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/dm8/bak/db_bak_3_02';
创建备份为备份集添加描述信息为 完全备份,执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_04' BACKUPINFO '完全备份';
报错:需要重启DMAP
[-7169]:Bakres failed to message communicate with DMAP.used time: 926.736(ms). Execute id is 0.
创建备份限制备份片大小为 300 MB,执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_05' MAXPIECESIZE 300;
执行备份压缩,压缩级别设置为 5,执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_06' COMPRESSED LEVEL 5;
创建并行备份,指定并行数为 8,执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_bak_3_07' PARALLEL 8;
基于 dm8/bak 全量备份的 增量备份,执行以下命令:
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dm8/bak' BACKUPSET '/dm8/bak/db_increment_bak_02';
查看备份文件
[dmdba@host02 bak]$ pwd/dm8/bak[dmdba@host02 bak]$ lsdb_bak_3_01 db_bak_3_05 db_bak_3_07 db_increment_bak_02db_bak_3_02 db_bak_3_06 db_full_bak_01[dmdba@host02 bak]$ du -sh *15Mdb_bak_3_0115Mdb_bak_3_0215Mdb_bak_3_05804Kdb_bak_3_0616Mdb_bak_3_0715Mdb_full_bak_01164Kdb_increment_bak_02[dmdba@host02 bak]$ ll -rth db_bak_3_01/total 15M-rw-r--r-- 1 dmdba dinstall 15M Sep 24 00:29 db_bak_3_01.bak-rw-r--r-- 1 dmdba dinstall 35K Sep 24 00:29 db_bak_3_01_1.bak-rw-r--r-- 1 dmdba dinstall 81K Sep 24 00:29 db_bak_3_01.meta
表空间备份
BACKUP TABLESPACE <表空间名> [FULL | INCREMENT [CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]| [BASE ON BACKUPSET '<基备份集目录>']][TO <备份名>]BACKUPSET ['<备份集路径>'][DEVICE TYPE <介质类型>[PARMS '<介质参数>']][BACKUPINFO '<备份集描述>'][MAXPIECESIZE <备份片限制大小>][IDENTIFIED BY < 加 密 密 码 >[WITH ENCRYPTION<TYPE>][ENCRYPT WITH < 加 密 算 法 >]][COMPRESSED[LEVEL <压缩级别>]][TRACE FILE '<TRACE 文件名>'][TRACE LEVEL <TRACE 日志级别>][TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]];
注意
当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。系统处于归档模式下时,才允许进行表空间备份。Mount 状态下,不允许进行表空间备份。MPP 环境不允许进行表空间备份。
完全备份单个表空间,执行以下命令:
BACKUP TABLESPACE MAIN FULL BACKUPSET '/dm8/bak/ts_full_bak_01';
增量备份指定备份目录,以备份 MAIN 表空间为例,指定 BASE_ON 参数执行增量备份,执行以下命令:
BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/dm8/bak'BACKUPSET '/dm8/bak/ts_increment_bak_02';
上面的备份语句中指定的 INCREMENT 参数表示执行的备份类型为增量备份,不可省略。
若要创建累积增量备份,还需要指定 CUMULATIVE 参数,否则缺省为差异增量备份。
若基备份不在默认备份目录,WITH BACKUPDIR 参数必须指定,用于搜索基备份集。
表备份
BACKUP TABLE <表名>[TO <备份名>]BACKUPSET ['<备份集路径>'] [DEVICE TYPE <介质类型> [PARMS '<介质参数>']][BACKUPINFO '<备份集描述>'][MAXPIECESIZE <备份片限制大小>][IDENTIFIED BY <加密密码>[WITH ENCRYPTION<TYPE>][ENCRYPT WITH <加密算法>]][COMPRESSED [LEVEL <压缩级别>]][TRACE FILE '<trace 文件名>'] [TRACE LEVEL <trace 日志级别>]
注意
表备份均为联机完全备份不需配置归档日志没有增量备份
以备份 TAB_01 为例,执行以下命令:
BACKUP TABLE CJC.T1 BACKUPSET '/dm8/bak/tab_bak_01';
脱机备份
启动 DMRMAN
DMRMAN (DM RECOVERY MANEGER) 是 DM 的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。
启动DMRMAN
进入数据库安装目录的 bin 目录下,例如 Linux 下的目录为 dm8/bin,执行以下命令:
./dmrman
退出 DMRMAN
在 DMRMAN 命令窗口中执行 exit。
备份数据库
在 DMRMAN 下执行以下命令:
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 [<并行数>][READ SIZE <拆分块大小>]];
全库备份,在 DMRMAN 下执行以下命令:
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL BACKUPSET '/dm8/bak/db_full_bak_01';
报错
[dmdba@host02 tab_bak_01]$ dmrmandmrman V8RMAN>RMAN> BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL BACKUPSET '/dm8/bak/db_full_bak_01';BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL BACKUPSET '/dm8/bak/db_full_bak_01';file dm.key not found, use default license![-137]:DM server is running or exist other process which is operating the same database
mount状态也不行
SQL> alter database mount;executed successfullyused time: 00:00:01.816. Execute id is 0.
只能全部关闭
SQL> shutdown immediate;
备份
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL BACKUPSET '/dm8/bak/rman_db_full_bak_01';
begin redo pwr log collect, last ckpt lsn: 40841 ...redo pwr log collect finishedEP[0]'s cur_lsn[40849]Processing backupset dm8/bak/rman_db_full_bak_01[Percent:0.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00][-7169]:Bakres failed to message communicate with DMAP
[dmdba@host02 service_template]$ ./DmAPService statusDmAPService (pid 30298) is running.[dmdba@host02 service_template]$ ./DmAPService restartStopping DmAPService: [ OK ]
再次备份
[dmdba@host02 service_template]$ dmrmandmrman V8RMAN> BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL BACKUPSET '/dm8/bak/rman_db_full_bak_01';BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL BACKUPSET '/dm8/bak/rman_db_full_bak_01';file dm.key not found, use default license!Database mode = 0, oguid = 0begin redo pwr log collect, last ckpt lsn: 40841 ...redo pwr log collect finishedEP[0]'s cur_lsn[40849]Processing backupset dm8/bak/rman_db_full_bak_01...... [Percent:100.00%][Speed:0.00M/s][Cost:00:00:39][Remaining:00:00:00]backup successfully!time used: 00:00:41.035
增量备份,在 DMRMAN 下执行以下命令:
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/dm8/bak' BACKUPSET '/dm8/bak/rman_db_increment_bak_02';
RMAN> BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/dm8/bak' BACKUPSET '/dm8/bak/rman_db_increment_bak_02';BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/dm8/bak' BACKUPSET '/dm8/bak/rman_db_increment_bak_02';Database mode = 0, oguid = 0begin redo pwr log collect, last ckpt lsn: 40841 ...redo pwr log collect finishedEP[0]'s cur_lsn[40849]Processing backupset dm8/bak/rman_db_increment_bak_02[Percent:0.00%][Speed:0.00M/s][Cost:00:00:01][Remaining:00:00:00][-8084]:BEGIN_LSN is less than END_LSN of base backupset
注意
增量备份指基于指定的库的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改了的数据页。脱机增量备份要求两次备份之间数据库必须有操作,否则备份会报错。WITH BACKUPDIR 参数用于搜索基备份集。INCREMENT 参数表示执行的备份为增量备份,增量备份该参数不可省略。
校验特定的备份集,在 DMRMAN 下执行以下命令:
RMAN> CHECK BACKUPSET '/dm8/bak/rman_db_full_bak_01';
CHECK BACKUPSET '/dm8/bak/rman_db_full_bak_01';check backupset successfully.time used: 22.306(ms)
备份集删除
删除特定备份集,每次只能删除一个备份集,在 DMRMAN 下执行以下命令:
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' BACKUPSET '/dm8/bak/db_bak_for_remove_01';
[dmdba@host02 bak]$ du -sh db_bak_for_remove_01/15Mdb_bak_for_remove_01/
RMAN> REMOVE BACKUPSET '/dm8/bak/db_bak_for_remove_01';REMOVE BACKUPSET '/dm8/bak/db_bak_for_remove_01';remove backupset successfully.time used: 76.486(ms)
[dmdba@host02 bak]$ du -sh db_bak_for_remove_01/du: cannot access ‘db_bak_for_remove_01/’: No such file or directory
备份集在数据库默认备份目录,默认目录在 dm.ini 参数 BAK_PATH,执行以下命令:
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' BACKUPSET'db_bak_for_remove_01';REMOVE BACKUPSET 'db_bak_for_remove_01' DATABASE '/dm8/data/DAMENG/dm.ini';
备份集为其他备份集的基备份且备份集都在数据库默认备份目录下,执行以下命令:BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' BACKUPSET'db_bak_for_remove_01';BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' INCREMENTBACKUPSET'db_bak_for_remove_01_incr';REMOVE BACKUPSET 'db_bak_for_remove_01_incr' DATABASE'/dm8/data/DAMENG/dm.ini' CASCADE;
批量删除所有备份,执行以下命令:BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' BACKUPSET'/dm8/bak/db_bak_for_remove_02';RMAN> REMOVE BACKUPSETS WITH BACKUPDIR '/dm8/bak';REMOVE BACKUPSETS WITH BACKUPDIR '/dm8/bak';remove backupsets successfully.time used: 139.513(ms)[dmdba@host02 bak]$ lslog

四:物理还原
https://eco.dameng.com/document/dm/zh-cn/ops/physical-backup-restore.html
联机还原
DM 仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN 执行。
表还原
语法如下:
RESTORE TABLE [<表名>][STRUCT][WITH INDEX | WITHOUT INDEX][WITH CONSTRAINT|WITHOUT CONSTRAINT]FROM BACKUPSET'<备份集路径>'[DEVICE TYPE <介质类型> [PARMS '<介质参数>']][IDENTIFIED BY <密码>] [ENCRYPT WITH <加密算法>][TRACE FILE '<TRACE 文件名>'] [TRACE LEVEL <TRACE 日志级别>];
注意
执行表还原,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行表还原。表还原不需要配置归档,因为表还原是联机完全备份还原,所以不需要借助本地归档日志进行恢复。
完整的表备份还原步骤如下所示:
保证数据库为 OPEN 状态。
创建待备份的表,执行以下命令:
dmdba@host02 ~]$ disql sysdba/SYSDBAServer[LOCALHOST:5236]:mode is normal, state is openlogin used time : 5.136(ms)disql V8SQL> conn cjc/Dameng123Server[LOCALHOST:5236]:mode is normal, state is openlogin used time : 6.619(ms)SQL> CREATE TABLE TAB_FOR_RES_01(C1 INT);executed successfullyused time: 340.665(ms). Execute id is 400.INSERT INTO TAB_FOR_RES_01 VALUES(1),(2),(3);COMMIT;
备份表数据,执行以下命令:
SQL> BACKUP TABLE TAB_FOR_RES_01 BACKUPSET '/dm8/bak/tab_bak_for_res_02';executed successfullyused time: 00:00:01.776. Execute id is 401.
校验备份,执行以下命令:(此步骤为可选)
SQL> SELECT SF_BAKSET_CHECK('DISK','/dm8/bak/tab_bak_for_res_02');LINEID SF_BAKSET_CHECK('DISK','/dm8/bak/tab_bak_for_res_02')---------- -----------------------------------------------------1 1
SQL> select table_name from user_tables;LINEID TABLE_NAME---------- --------------1 T12 T13 TAB_FOR_RES_01
SQL> drop table TAB_FOR_RES_01;executed successfullyused time: 962.168(ms). Execute id is 405.
还原表结构,执行以下命令:
SQL> restore table struct from backupset '/dm8/bak/tab_bak_for_res_02';executed successfullyused time: 65.048(ms). Execute id is 406.
SQL> desc tab_for_res_01;LINEID NAME TYPE$ NULLABLE---------- ---- ------- --------1 C1 INTEGER Yused time: 1.612(ms). Execute id is 407.SQL> SELECT * FROM tab_for_res_01;no rowsused time: 0.735(ms). Execute id is 420.
还原表数据,执行以下命令:
SQL> RESTORE TABLE FROM BACKUPSET '/dm8/bak/tab_bak_for_res_02';executed successfullyused time: 48.263(ms). Execute id is 409.
SQL> SELECT * FROM tab_for_res_01;LINEID C1---------- -----------1 12 23 3used time: 1.157(ms). Execute id is 422.
指定还原时不重建索引
保证数据库为 OPEN 状态。
准备数据,创建待备份的表及索引,执行以下命令:
CREATE TABLE TAB_FOR_IDX_01(C1 INT);CREATE INDEX I_TAB_FOR_IDX_01 ON TAB_FOR_IDX_01 (C1);
备份表数据,执行以下命令:
BACKUP TABLE TAB_FOR_IDX_01 BACKUPSET '/dm8/bak/tab_bak_for_res_03';
校验备份,执行以下命令:(此步骤为可选)
SELECT SF_BAKSET_CHECK('DISK','/dm8/bak/tab_bak_for_res_03');
还原表结构,执行以下命令:
RESTORE TABLE STRUCT FROM BACKUPSET '/dm8/bak/tab_bak_for_res_03';
还原表数据,但不重建索引,执行以下命令:
RESTORE TABLE WITHOUT INDEX FROM BACKUPSET '/dm8/bak/tab_bak_for_res_03';
指定还原时不重建约束
保证数据库为 OPEN 状态。
准备数据,创建待备份的表及索引,执行以下命令:
CREATE TABLE TAB_FOR_CONS_01(C1 INT);CREATE INDEX I_TAB_FOR_CONS_01 ON TAB_FOR_CONS_01 (C1 INT);
备份表数据,执行以下命令:
BACKUP TABLE TAB_FOR_CONS_01 BACKUPSET '/dm8/bak/tab_bak_for_res_01';
校验备份,执行以下命令:(此步骤为可选)
SELECT SF_BAKSET_CHECK('DISK','/dm8/bak/tab_bak_for_res_01');
还原表结构,执行以下命令:
RESTORE TABLE STRUCT FROM BACKUPSET '/dm8/bak/tab_bak_for_res_01';
还原表数据,但不还原约束,执行以下命令:
RESTORE WITHOUT CONSTRAINT FROM BACKUPSET '/dm8/bak/tab_bak_for_res_01';
脱机还原
注意
应使用与 DM 的数据库版本配套的 DMRMAN 工具进行操作。用当使用 DM7 的 DMRMAN 工具操作 DM8 数据库时,无法检测 DM8 数据库实例是否处于启动状态。
源库
源库是待备份的数据库。使用 DMRMAN 工具只可对数据库进行脱机备份,联机备份需要通过 disql 工具实现。
DMRMAN 可以针对整个数据库执行脱机完全备份和增量备份,数据库可以配置归档也可以不配置。
目标库
目标库是待还原的数据库,即是用来做还原的库,也称为目标还原库。
目标库可以是通过 dm.ini 文件指定的数据库,也可以是目标文件目录。
通过 dm.ini 指定库时,dm.ini 及其配置中的 CTL_PATH 必须有效,且库必须处于关闭状态。
指定文件目录时,指定目录作为 SYSTEM_PATH 处理,可以存在,也可以不存在,但必须有效。
数据库还原
为避免删除重要的文件,还原前务必确保数据库系统路径下未存放无关文件。执行以下命令:
RESTORE DATABASE <restore_type>[WITH CHECK]FROM BACKUPSET '<备份集目录>'[DEVICE TYPE DISK|TAPE[PARMS '<介质参数>']][IDENTIFIED BY <密码> [ENCRYPT WITH <加密算法>]][WITH BACKUPDIR '<基备份集搜索目录>'{,'<基备份集搜索目录>'}][MAPPED FILE '<映射文件>'][TASK THREAD <任务线程数>][RENAME TO '<数据库名>'];<restore_type>::=<type1>|<type2><type1>::='<INI 文件路径>'[REUSE DMINI][OVERWRITE]<type2>::= TO '<system_dbf 所在路径>' [OVERWRITE]
例:联机备份、脱机还原
将生产库数据恢复到本机另一个实例
联机备份数据库,保证数据库运行在归档模式及 Open 状态。执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_full_bak_for_restore';
准备目标库。还原目标库可以是已经存在的数据库,也可使用 dminit 工具初始化一个新库。执行以下命令:
dminit path=/dm8/data db_name=DAMENG_FOR_RESTORE
[dmdba@host02 ~]$ ls -lrth /dm8/data/total 0drwxr-xr-x 6 dmdba dinstall 309 Sep 24 00:53 DAMENGdrwxr-xr-x 5 dmdba dinstall 262 Sep 24 02:14 DAMENG_FOR_RESTORE
启动 RMAN,校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验。执行以下命令:
CHECK BACKUPSET '/dm8/bak/db_full_bak_for_restore';
还原数据库。启动 DMRMAN,执行以下命令:
RESTORE DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore';
恢复数据库。启动 DMRMAN,执行以下命令:
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore';
......Database mode = 0, oguid = 0EP[0]'s cur_lsn[42513]EP:0 total 1 pkgs applied, percent: 25%EP:0 total 2 pkgs applied, percent: 50%EP:0 total 3 pkgs applied, percent: 75%EP:0 total 4 pkgs applied, percent: 100%recover successfully!time used: 323.282(ms)
恢复 db_magic,执行以下命令:
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;
......Database mode = 0, oguid = 0EP[0]'s cur_lsn[42531]recover successfully!time used: 986.990(ms)
恢复完成后,注册服务
/dm8/scripts/root/dm_service_installer.sh -t dmserver -p CJC -dm_ini /dm8/data/DAMENG_FOR_RESTORE/dm.ini
修改dm.ini里端口,5236改成5238
su - root/dm8/script/root/dm_service_installer.sh -t dmserver -p CJC -dm_ini /dm8/data/DAMENG_FOR_RESTORE/dm.iniCreated symlink from /etc/systemd/system/multi-user.target.wants/DmServiceCJC.service to /usr/lib/systemd/system/DmServiceCJC.service.Finished to create the service (DmServiceCJC)
启动新实例
[root@host02 ~]# systemctl start DmServiceCJC.service
连接信实例
[dmdba@host02 ~]$ disql sysdba/SYSDBA@127.0.0.1:5238Server[127.0.0.1:5238]:mode is normal, state is openlogin used time : 31.879(ms)disql V8
检查数据
SQL> select * from cjc.t1;LINEID ID---------- -----------1 12 23 3used time: 00:00:01.206. Execute id is 400.
连接原实例
[dmdba@host02 ~]$ disql sysdba/SYSDBA@127.0.0.1:5236Server[127.0.0.1:5236]:mode is normal, state is openlogin used time : 6.733(ms)disql V8SQL> select *from cjc.t1;LINEID ID---------- -----------1 12 23 3used time: 00:00:01.288. Execute id is 600.
[dmdba@host02 ~]$ ps -ef|grep -i dmser|grep -v grepdmdba 31182 1 0 00:53 ? 00:01:07 /dm8/bin/dmserver /dm8/data/DAMENG/dm.ini -noconsoledmdba 34383 1 27 03:31 ? 00:01:08 /dm8/bin/dmserver /dm8/data/DAMENG_FOR_RESTORE/dm.ini -noconsole
注意
可通过调整 dm.ini 中的和检查点和 REDO 日志相关参数,降低检查点频率,增大 REDO 日志包大小来提升还原性能。
表空间还原
使用 RESTORE 命令完成表空间的脱机还原,还原的备份集可以是联机或脱机生成的库备份集,也可以是联机生成的表空间备份集。脱机表空间还原仅涉及表空间数据文件的重建与数据页的拷贝。不需要事先置目标表空间为 OFFLINE 状态。
表空间还原后,表空间状态被置为 RES_OFFLINE,并设置数据标记 FIL_TS_RECV_STATE_RESTORED,表示经过还原但数据不完整。执行以下命令:
RESTORE DATABASE <INI 路径> TABLESPACE <表空间名> [WITH CHECK][DATAFILE<<文件编号> {,<文件编号>} | '<文件路径>' {,'<文件路径>'}>]FROM BACKUPSET '<备份集路径>' [DEVICE TYPE <介质类型> [PARMS '<介质参数>']][IDENTIFIED BY <加密密码>] [ENCRYPT WITH <加密算法>][WITH BACKUPDIR '<备份目录>' {,'<备份目录>'}][MAPPED FILE '<映射文件>'][TASK THREAD <线程数>];
以联机表空间备份集为例,展示 DMRMAN 如何完成表空间的还原。
在 SQL 编辑界面创建表空间,执行以下命令:
CREATE TABLESPACE TS1 DATAFILE 'TS1.DBF' SIZE 128;
创建表,指定表的存储空间为 TS1,执行以下命令:
CREATE TABLE RCT_BFHF_BKJ (C1 INT) STORAGE(ON TS1);INSERT INTO RCT_BFHF_BKJ VALUES(1);Commit;
联机备份数据库,保证数据库运行在归档模式及 OPEN 状态。执行以下命令:
BACKUP TABLESPACE MAIN BACKUPSET '/dm8/bak/ts_full_bak_for_restore';
校验备份,校验待还原备份集的合法性(此步骤可选)。校验备份有两种方式,联机和脱机,此处使用脱机校验。执行以下命令:
CHECK BACKUPSET '/dm8/bak/ts_full_bak_for_restore';
将表空间脱机,执行以下命令:
ALTER TABLESPACE TS1 OFFLINE;
还原表空间。需要注意,表空间还原的目标库只能是备份集产生的源库,否则将报错。启动 DMRMAN,执行以下命令:
RESTORE DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/dm8/bak/db_full_bak_for_restore';
恢复表空间。启动 DMRMAN,执行以下命令:
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE TS1;
https://eco.dameng.com/document/dm/zh-cn/ops/restore-specified-time.html
恢复到指定时间点
恢复数据库到指定时间点 /LSN 是从归档恢复的一种方式,也称为不完全恢复。
从归档恢复允许恢复到指定的时间点及指定的 LSN 值。若同时指定了时间点和 LSN,则以较早的为结束点。
用户可以通过指定一个时间点/LSN,使数据库恢复到这个指定的时间点 /LSN。
例如用户在下午 5 点做了一个误操作,删除了某些重要数据,我们可以指定恢复时间点到下午 4:59 分,恢复被误删除的数据。
下面以联机数据库备份为例说明如何恢复数据库到指定的时间点 /LSN。
准备数据,执行以下命令:
CREATE TABLE TAB_FOR_RECOVER_01(C1 INT);INSERT INTO TAB_FOR_RECOVER_01 VALUES(1);COMMIT;
备份数据库,执行以下命令:
BACKUP DATABASE BACKUPSET '/dm8/bak/db_full_bak_for_time_lsn';
正确操作数据库,产生一些归档,执行以下命令:
CREATE TABLE TAB_FOR_RECOVER_02(C1 INT);INSERT INTO TAB_FOR_RECOVER_02 VALUES(1);COMMIT;
使用 SELECT SYSDATE 命令查询此时的时间为:2018-11-16 10:56:40.624931。
使用 SELECT FILE_LSN FROM V$RLOG 命令查询此时的 LSN 为:50857。
误操作数据库。此步骤误删除了表 TAB_FOR_RECOVER_01 中数据。执行以下命令:
DELETE FROM TAB_FOR_RECOVER_01;COMMIT;
操作步骤同步骤 3,此时的时间和 LSN 分别为:2018-11-16 10:57:20.977265、50861。
关闭数据库,打开 RMAN 还原数据库,执行以下语句:(步骤 4 为误操作,因此我们需要将数据库恢复到步骤 3 的状态)
RESTORE DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dm8/bak/db_full_bak_for_time_lsn';
恢复数据库到指定时间点 /LSN。
还原后数据库的数据与备份时一致,如果要恢复数据库至步骤 3 的状态可以指定 UNTIL TIME 或 UNTIL LSN 参数重做部分归档。
使用 RECOVER DATABASE...UNTIL TIME 命令恢复到指定的时间,打开 RMAN,执行以下命令:
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' WITHARCHIVEDIR'/home/dm_arch/arch' UNTIL TIME'2018-11-16 10:56:40.624931';
或者使用 RECOVER DATABASE...UNTIL LSN 命令恢复到指定的时间,执行以下命令:
RECOVER DATABASE '/dm8/data/DAMENG_FOR_RESTORE/dm.ini' WITHARCHIVEDIR'/home/dm_arch/arch' UNTIL LSN 50857;
恢复 db_magic,执行以下命令:
RECOVER DATABASE 'D:\dmdbms\data\DAMENG\dm.ini' UPDATE DB_MAGIC;

五:配置ODBC连接DM数据库
安装unixODBC.x86_64
[root@host02 ~]# yum -y install unixODBC.x86_64[root@host02 ~]# rpm -qa|grep ODBCunixODBC-2.3.1-14.el7.x86_64
检查
[root@host02 ~]# odbcinst -junixODBC 2.3.1DRIVERS............: /etc/odbcinst.iniSYSTEM DATA SOURCES: /etc/odbc.iniFILE DATA SOURCES..: /etc/ODBCDataSourcesUSER DATA SOURCES..: /root/.odbc.iniSQLULEN Size.......: 8SQLLEN Size........: 8SQLSETPOSIROW Size.: 8
配置文件1
[root@host02 ~]# vi /etc/odbcinst.ini......[DM8 ODBC DRIVER]Description = ODBC DRIVER FOR DM8Driver = /dm8/bin/libdodbc.so
配置文件2
[root@host02 ~]# vi /etc/odbc.ini[DM8]Description = DM ODBC DSNDriver = DM8 ODBC DRIVERSERVER = localhostUID = SYSDBAPWD = SYSDBATCP_PORT = 5236
通过ODBC连接DM数据库
[root@host02 ~]# isql dm8+---------------------------------------+| Connected! || || sql-statement || help [tablename] || quit || |+---------------------------------------+
查询数据
SQL> select username from dba_users;+---------------------------------------------------------------------------------------------------------------------------------+| USERNAME |+---------------------------------------------------------------------------------------------------------------------------------+| SYSDBA || SYS || A || CJC || SYSSSO || SYSAUDITOR |+---------------------------------------------------------------------------------------------------------------------------------+SQLRowCount returns 66 rows fetched





