目录
一、前要
二、模拟环境准备:
三、名词定义
3.1 达梦数据库逻辑架构
3.2 达梦数据库物理存储架构
3.3 表空间和数据文件
3.4 重做日志(redo)
3.5 控制文件(dm.ctl)
3.6 参数文件(dm.ini)
3.7 dminit工具
3.8 dmmdf工具
3.9 PERMANENT_MAGIC 和 DB_MAGIC数据库魔数
四、故障库文件备份及参数查看
4.1 故障库数据文件查看
4.2 查看故障库初始化信息
4.3 查看dm.ini中实例名
五、恢复过程
5.1 按照故障库初始化信息,重新创建数据库
5.2 修改新库文件名
5.3 修改故障库控制文件
5.3.1 转换控制文件格式
5.3.2 修改控制文件内容
5.3.3 转回控制文件格式
5.4 查看故障库db_magic(红色字体)
5.5修改故障库参数文件
5.5.1 DM数据库控制文件的位置是在dm.ini 文件中指定:
5.5.2 修改dm.ini中控制文件位置
5.6 修改故障库文件名
5.7 启动数据库
六、验证数据库
6.1使用DM管理工具登录数据库
6.2验证数据库实例和DB_MAGIC
6.3使用DM管理工具开启归档
七、如何进入安全模式(救援模式)
7.1 windows进入安全模式
7.2 linux进入救援模式
7.3麒麟系统进入救援模式
八、总结
8.1 迁移的总体步骤
8.2 数据库备份的重要性
一、前要
本文讲解的是达梦数据库在无备份,未开启归档模式情况的恢复方式。例如在生产环境中的操作系统崩溃,导致系统无法正常启动,数据库无法启动和登录,但磁盘未损坏,能在安全模式下拷贝出达梦数据库相关文件,包含数据文件、控制文件和参数文件等.在生产环境中很少遇到此种极端情况,但达梦数据库依然可以通过整体迁移数据文件、重建控制文件和更改DB_MAGIC等方式进行恢复。
二、模拟环境准备:
| 环境准备 | 操作系统 | 达梦数据库版本 | 实例安装路径 | 说明 |
| 1损坏的数据库 | Windows | DM Database Server 64 V8 | D:DM8dmdbmsdataDAMENG | 除了此路径下的相关文件,其他均丢失 |
| 2新环境 | Linux Red hat 6 | DM Database Server 64 V8 | /dm8/data/DAMENG | 初始化新库,无损 |
可以看到,在没有归档,且没有备份的情况下,若要保证数据库能够正常恢复,操作系统的不同并不影响恢复,但恢复的前提要保证初始化新库的数据库版本、实例名、数据库名、各种参数必须和故障库设置完全一样。
三、名词定义
3.1 达梦数据库逻辑架构
进行数据库的恢复,首先要了解dm数据库的逻辑架构和物理架构。DM 数据库为数据库中的所有对象分配逻辑空间,并存放在数据文件中。在 DM 数据库内部,所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对象都存放在这些表空间中。同时,表空间被进一步划分为段、簇和页(也称块)。通过这种细分,可以使得 DM 数据库能够更加高效地控制磁盘空间的利用率。如下图显示了这些数据结构之间的关系。
可以看出,在 DM8 中存储的层次结构如下:
1. 数据库由一个或多个表空间组成;
2. 每个表空间由一个或多个数据文件组成;
3. 每个数据文件由一个或多个簇组成;
4. 段是簇的上级逻辑单元,一个段可以跨多个数据文件;
5. 簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;
6. 页是数据库中最小的分配单元,也是数据库中使用的最小的 IO 单元。
3.2 达梦数据库物理存储架构
DM 数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据。典型的物理存储结构包括:用于进行功能设置的配置文件;用于记录文件分布的控制文件;用于保存用户实际数据的数据文件、重做日志文件、归档日志文件、备份文件;用来进行问题跟踪的跟踪日志文件等,如图所示。
3.3 表空间和数据文件
在 DM 数据库中,表空间由一个或者多个数据文件组成。DM 数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。在创建 DM 数据库时,会自动创建 5 个表空间:SYSTEM 表空间、ROLL 表空间、MAIN表空间、TEMP 表空间和 HMAIN 表空间。
1. SYSTEM 表空间存放了有关 DM 数据库的字典信息,用户不能在 SYSTEM 表空间创建表和索引。
2. ROLL 表空间完全由 DM 数据库自动维护,用户无需干预。该表空间用来存放事务运行过程中执行 DML 操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视图。
3. MAIN 表空间在初始化库的时候,就会自动创建一个大小为 128M 的数据文件MAIN.DBF。在创建用户时,如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间。
4. TEMP 表空间完全由 DM 数据库自动维护。当用户的 SQL 语句需要磁盘空间来完成某个操作时,DM 数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP表空间。
5. HMAIN 表空间属于 HTS 表空间,完全由 DM 数据库自动维护,用户无需干涉。当用户在创建 HUGE 表时,未指定 HTS 表空间的情况下,充当默认 HTS 表空间。
每一个用户都有一个默认的表空间。对于 SYS、SYSSSO、SYSAUDITOR 系统用户,默认的用户表空间是 SYSTEM,SYSDBA 的默认表空间为 MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间。
3.4 重做日志(redo)
REDO 日志,记录了所有物理页的修改,基本信息包括操作类型、表空间号、文件号、页号、页内偏移、实际数据等。
数据库中INSERT、DELETe、UPDATE 等DML操作以及CREATE TABLE等DDL操作最终都会转化为对某些数据文件、某些数据页的修改。
DM8默认的两个联机重做日志:DAMENG01.log,DAMENG02.log
3.5 控制文件(dm.ctl)
每个 DM 数据库都有一个名为 dm.ctl 的控制文件。控制文件是一个二进制文件,它记录了数据库必要的初始信息,其中主要包含以下内容:
(1)数据库名称;
(2)数据库服务器模式;
(3)OGUID 唯一标识;
(4)数据库服务器版本;
(5)数据文件版本;
(6)数据库的启动次数;
(7)数据库最近一次启动时间;
(8)表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的表空间,数组的方式保存起来;
(9)控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,保证控制文件合法性,防止文件损坏及手工修改;
3.6 参数文件(dm.ini)
每创建一个 DM 数据库,就会自动生成 dm.ini 文件。dm.ini 是 DM 数据库启动所必须的配置文件,通过配置该文件可以设置 DM 数据库服务器的各种功能和性能选项。
3.7 dminit工具
dminit 是 DM 数据库初始化工具。在安装 DM 的过程中,用户可以选择是否创建初始数据库。如果当时没有创建,那么在安装完成之后,可以利用创建数据库工具 dminit 来创建。
系统管理员可以利用 dminit 工具提供的各种参数,设置数据库存放路径、段页大小、是否对大小写敏感、以及是否使用 UNICODE 等,创建出满足用户需要的数据库。该工具位于安装目录的/bin 目录下。
3.8 dmmdf工具
达梦数据库的dmmdf 工具可以对DM相关的文件的属性进行修改。 从dmmdf的帮助可以看出,支持的修改的文件类型有:dbf、rlog、original bak、bakset meta、bakset bkp、bakset,根据文件的不同,可修改的属性也有所不同,最主要的就是修改db_magic。如图所示。
3.9 PERMANENT_MAGIC 和 DB_MAGIC数据库魔数
创建数据库时生成 PERMANENT_MAGIC 和 DB_MAGIC 值,其中 PERMANENT_MAGIC 一经生成永远不会改变(DDL_CLONE 还原库的 PMNT_MAGIC 除外)。DB_MAGIC 称为数据库魔数,同样可以用来表示某一个数据库,但 DB_MAGIC是可以变化的,每经过一次还原、恢复操作后,DB_MAGIC 就会产生变化,用来区分备份源库和还原目标库。
四、故障库文件备份及参数查看
4.1 故障库数据文件查看
将故障库存放位置,即D:DM8dmdbmsdataDAMENG文件夹进行备份,并传输至准备好的新环境中,故障库的数据文件内容如图所示。
4.2 查看故障库初始化信息
在达梦数据库进行首次初始化后,会在实例文件夹下生产初始化日志,如:dminitXXXXX.log
查看历史信息内容,如图所示:
可以看到数据库初始化信息如下:
版本:V8
db path:存放位置为:D:DM8dmdbmsdataDAMENG
db name:数据库名:DAMENG
AUTO_OVERWRITE:是否覆盖所有同名文件(0) 0:不覆盖
Page size:页大小:8K
Extent size:簇大小:16K
TIME_ZONE、 设置时区(+08:00)
Charset::字符集:GB18030(0)
大小写敏感:敏感(1)
其他信息均为默认
4.3 查看dm.ini中实例名
[root@localhost ~]# su - dmdba
[dmdba@localhost ~]$ cd /dm8/data/DAMENG_old
[dmdba@localhost DAMENG1]$ more dm.ini
[root@localhost ~]# su - dmdba
[dmdba@localhost ~]$ cd /dm8/data/DAMENG_old
[dmdba@localhost DAMENG1]$ more dm.ini
如图所示
五、恢复过程
5.1 按照故障库初始化信息,重新创建数据库
[dmdba@localhost ~]$ cd /dm8/bin
[dmdba@localhost bin]$ ./dminit help
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-03-26
格式: ./dminit KEYWORD=value
例程: ./dminit PATH=/public/dmdb/dmData PAGE_SIZE=16
关键字 说明(默认值)
--------------------------------------------------------------------------------
INI_FILE 初始化文件dm.ini存放的路径
PATH 初始数据库存放的路径
CTL_PATH 控制文件路径
LOG_PATH 日志文件路径
EXTENT_SIZE 数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页
PAGE_SIZE 数据页大小(8),可选值:4, 8, 16, 32,单位:K
LOG_SIZE 日志文件大小(256),单位为:M,范围为:64M ~ 2G
CASE_SENSITIVE 大小敏感(Y),可选值:Y/N,1/0
CHARSET/UNICODE_FLAG 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
SEC_PRIV_MODE 权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[eval]
LENGTH_IN_CHAR VARCHAR类型长度是否以字符为单位(N),可选值:Y/N,1/0
SYSDBA_PWD 设置SYSDBA密码(SYSDBA)
SYSAUDITOR_PWD 设置SYSAUDITOR密码(SYSAUDITOR)
DB_NAME 数据库名(DAMENG)
INSTANCE_NAME 实例名(DMSERVER)
PORT_NUM 监听端口号(5236)
BUFFER 系统缓存大小(100),单位M
TIME_ZONE 设置时区(+08:00)
PAGE_CHECK 页检查模式(0),可选值:0/1/2
EXTERNAL_CIPHER_NAME 设置默认加密算法
EXTERNAL_HASH_NAME 设置默认HASH算法
EXTERNAL_CRYPTO_NAME 设置根密钥加密引擎
RLOG_ENC_FLAG 设置日志文件是否加密(N),可选值:Y/N,1/0
USBKEY_PIN 设置USBKEY PIN
PAGE_ENC_SLICE_SIZE 设置页加密分片大小,可选值:0、512、4096,单位:Byte
ENCRYPT_NAME 设置全库加密算法
BLANK_PAD_MODE 设置空格填充模式(0),可选值:0/1
SYSTEM_MIRROR_PATH SYSTEM数据文件镜像路径
MAIN_MIRROR_PATH MAIN数据文件镜像
ROLL_MIRROR_PATH 回滚文件镜像路径
MAL_FLAG 初始化时设置dm.ini中的MAL_INI(0)
ARCH_FLAG 初始化时设置dm.ini中的ARCH_INI(0)
MPP_FLAG Mpp系统内的库初始化时设置dm.ini中的mpp_ini(0)
ConTROL 初始化配置文件(配置文件格式见系统管理员手册)
AUTO_OVERWRITE 是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖
USE_NEW_HASH 是否使用改进的字符类型HASH算法(1)
ELOG_PATH 指定初始化过程中生成的日志文件所在路径
AP_PORT_NUM ECS模式下AP协同工作的监听端口
DFS_FLAG 初始化时设置dm.ini中的DFS_INI(0)
DFS_PATH 启用dfs时指定数据文件的缺省路径
DFS_HOST 指定连接分布式系统DFS的服务地址(localhost)
DFS_PORT 指定连接分布式系统DFS的服务端口号(3332)
DFS_COPY_NUM 指定分布式系统的副本数(3)
DFS_DB_NAME 指定分布式系统的中数据库名(默认与DB_NAME一致)
SHARE_FLAG 指定分布式系统中该数据库的共享属性(0)
REGION_MODE 指定分布式系统中该数据库的系统表空间数据文件的区块策略(0) 0:微区策略 1:宏区策略
HUGE_WITH_DELTA 是否仅支持创建事务型HUGE表(1) 1:是 0:否
RLOG_GEN_FOR_HUGE 是否生成HUGE表REDO日志(0) 1:是 0:否
PSEG_MGR_FLAG 是否仅使用管理段记录事务信息(0) 1:是 0:否
HELP 打印帮助信息
[dmdba@localhost bin]$ ./dminit path=/dm8/data/ db_name=DAMENG instance_name=DCATEST1 page_size=8 extent_size=16 charset=0 case_sensitive=1
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-03-26
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm8/data/DAMENG/DAMENG01.log
log file path: /dm8/data/DAMENG/DAMENG02.log
write to dir [/dm8/data/DAMENG].
create dm database success. 2021-10-12 18:11:58
[dmdba@localhost bin]$
5.2 修改新库文件名
[dmdba@localhost data]$ cd /dm8/data/
[dmdba@localhost data]$ mv DAMENG/ DAMENG_new
[dmdba@localhost data]$
5.3 修改故障库控制文件
5.3.1 转换控制文件格式
[dmdba@localhost bin]$ cd /dm8/bin
[dmdba@localhost bin]$ ./dmctlcvt type=1 src=/dm8/data/DAMENG_old/dm.ctl dest=/dm8/dmctl.txt
DMCTLCVT V8
convert ctl to txt success!
5.3.2 修改控制文件内容
[dmdba@localhost ~]$ cd /dm8/bin
[dmdba@localhost bin]$ ./dminit help
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-03-26
格式: ./dminit KEYWORD=value
例程: ./dminit PATH=/public/dmdb/dmData PAGE_SIZE=16
关键字 说明(默认值)
--------------------------------------------------------------------------------
INI_FILE 初始化文件dm.ini存放的路径
PATH 初始数据库存放的路径
CTL_PATH 控制文件路径
LOG_PATH 日志文件路径
EXTENT_SIZE 数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页
PAGE_SIZE 数据页大小(8),可选值:4, 8, 16, 32,单位:K
LOG_SIZE 日志文件大小(256),单位为:M,范围为:64M ~ 2G
CASE_SENSITIVE 大小敏感(Y),可选值:Y/N,1/0
CHARSET/UNICODE_FLAG 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
SEC_PRIV_MODE 权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[eval]
LENGTH_IN_CHAR VARCHAR类型长度是否以字符为单位(N),可选值:Y/N,1/0
SYSDBA_PWD 设置SYSDBA密码(SYSDBA)
SYSAUDITOR_PWD 设置SYSAUDITOR密码(SYSAUDITOR)
DB_NAME 数据库名(DAMENG)
INSTANCE_NAME 实例名(DMSERVER)
PORT_NUM 监听端口号(5236)
BUFFER 系统缓存大小(100),单位M
TIME_ZONE 设置时区(+08:00)
PAGE_CHECK 页检查模式(0),可选值:0/1/2
EXTERNAL_CIPHER_NAME 设置默认加密算法
EXTERNAL_HASH_NAME 设置默认HASH算法
EXTERNAL_CRYPTO_NAME 设置根密钥加密引擎
RLOG_ENC_FLAG 设置日志文件是否加密(N),可选值:Y/N,1/0
USBKEY_PIN 设置USBKEY PIN
PAGE_ENC_SLICE_SIZE 设置页加密分片大小,可选值:0、512、4096,单位:Byte
ENCRYPT_NAME 设置全库加密算法
BLANK_PAD_MODE 设置空格填充模式(0),可选值:0/1
SYSTEM_MIRROR_PATH SYSTEM数据文件镜像路径
MAIN_MIRROR_PATH MAIN数据文件镜像
ROLL_MIRROR_PATH 回滚文件镜像路径
MAL_FLAG 初始化时设置dm.ini中的MAL_INI(0)
ARCH_FLAG 初始化时设置dm.ini中的ARCH_INI(0)
MPP_FLAG Mpp系统内的库初始化时设置dm.ini中的mpp_ini(0)
ConTROL 初始化配置文件(配置文件格式见系统管理员手册)
AUTO_OVERWRITE 是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖
USE_NEW_HASH 是否使用改进的字符类型HASH算法(1)
ELOG_PATH 指定初始化过程中生成的日志文件所在路径
AP_PORT_NUM ECS模式下AP协同工作的监听端口
DFS_FLAG 初始化时设置dm.ini中的DFS_INI(0)
DFS_PATH 启用dfs时指定数据文件的缺省路径
DFS_HOST 指定连接分布式系统DFS的服务地址(localhost)
DFS_PORT 指定连接分布式系统DFS的服务端口号(3332)
DFS_COPY_NUM 指定分布式系统的副本数(3)
DFS_DB_NAME 指定分布式系统的中数据库名(默认与DB_NAME一致)
SHARE_FLAG 指定分布式系统中该数据库的共享属性(0)
REGION_MODE 指定分布式系统中该数据库的系统表空间数据文件的区块策略(0) 0:微区策略 1:宏区策略
HUGE_WITH_DELTA 是否仅支持创建事务型HUGE表(1) 1:是 0:否
RLOG_GEN_FOR_HUGE 是否生成HUGE表REDO日志(0) 1:是 0:否
PSEG_MGR_FLAG 是否仅使用管理段记录事务信息(0) 1:是 0:否
HELP 打印帮助信息
[dmdba@localhost bin]$ ./dminit path=/dm8/data/ db_name=DAMENG instance_name=DCATEST1 page_size=8 extent_size=16 charset=0 case_sensitive=1
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-03-26
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm8/data/DAMENG/DAMENG01.log
log file path: /dm8/data/DAMENG/DAMENG02.log
write to dir [/dm8/data/DAMENG].
create dm database success. 2021-10-12 18:11:58
[dmdba@localhost bin]$
5.2 修改新库文件名
[dmdba@localhost data]$ cd /dm8/data/
[dmdba@localhost data]$ mv DAMENG/ DAMENG_new
[dmdba@localhost data]$
5.3 修改故障库控制文件
5.3.1 转换控制文件格式
[dmdba@localhost bin]$ cd /dm8/bin
[dmdba@localhost bin]$ ./dmctlcvt type=1 src=/dm8/data/DAMENG_old/dm.ctl dest=/dm8/dmctl.txt
DMCTLCVT V8
convert ctl to txt success!
5.3.2 修改控制文件内容
[dmdba@localhost data]$ cd /dm8/data/
[dmdba@localhost data]$ mv DAMENG/ DAMENG_new
[dmdba@localhost data]$
5.3.1 转换控制文件格式
[dmdba@localhost bin]$ cd /dm8/bin
[dmdba@localhost bin]$ ./dmctlcvt type=1 src=/dm8/data/DAMENG_old/dm.ctl dest=/dm8/dmctl.txt
DMCTLCVT V8
convert ctl to txt success!
5.3.2 修改控制文件内容
[dmdba@localhost bin]$ cd /dm8/bin
[dmdba@localhost bin]$ ./dmctlcvt type=1 src=/dm8/data/DAMENG_old/dm.ctl dest=/dm8/dmctl.txt
DMCTLCVT V8
convert ctl to txt success!
查看控制文件中fil_path内容:
[dmdba@localhost opt]$ more dmctl.txt|grep fil_path
修改dmctl.txt中文件存放位置,并验证查看
[dmdba@localhost opt]$ vi dmctl.txt
[dmdba@localhost opt]$ more dmctl.txt|grep fil_path
5.3.3 转回控制文件格式
修改控制文件中数据文件的对应位置,就可以重新生成控制文件。基本上涉及路径的修改,都可以采用这种重建控制文件。
[dmdba@localhost dm8]$ cd bin
[dmdba@localhost bin]$ ./dmctlcvt type=2 src=/dm8/dmctl.txt dest=/dm8/data/DAMENG_old/dm.ctl
DMCTLCVT V8
convert txt to ctl success!
[dmdba@localhost bin]$
5.4 查看故障库db_magic(红色字体)
[dmdba@localhost bin]$ ./dmmdf TYPE=1 FILE=/dm8/data/DAMENG_old/SYSTEM.DBF
dmmdf V8
**********************************************************
1 db_magic=913104458
2 next_trxid=25051
3 pemnt_magic=1354359236
**********************************************************
Please input which parameter you want to change(1-3), q to quit:
5.5修改故障库参数文件
5.5.1 DM数据库控制文件的位置是在dm.ini 文件中指定:
[dmdba@localhost DAMENG]$ more dm.ini|grep CTL
CTL_PATH = D:DM8dmdbmsdataDAMENGdm.ctl #ctl file path
CTL_BAK_PATH = D:DM8dmdbmsdataDAMENGctl_bak #dm.ctl backup path
CTL_BAK_NUM = 10 #backup number of dm.ctl, allowed to keep one more backup file besides specified number.
DSC_N_CTLS = 10000 #Number Of LBS/GBS ctls
[dmdba@localhost DAMENG]$
5.5.2 修改dm.ini中控制文件位置
[dmdba@localhost bin]$ vi /dm8/data/DAMENG_old/dm.ini
5.6 修改故障库文件名
[dmdba@localhost DAMENG_old]$ cd /dm8/data/
[dmdba@localhost data]$ ls
DAMENG_new DAMENG_old DMSERVER_bak.tar TEST1
[dmdba@localhost data]$ mv DAMENG_old/ DAMENG
[dmdba@localhost data]$
5.7 启动数据库
[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-1-190-21.03.26-137190-ENT startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-03-26
file lsn: 0
ndct db load finished
ndct fill fast pool finished
iid page's trxid[26052]
NEXT TRX ID = 26053
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 mgr pages, 0 mgr recs!
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.
六、验证数据库
6.1使用DM管理工具登录数据库
[dmdba@localhost bin]$ ./dmmdf TYPE=1 FILE=/dm8/data/DAMENG_old/SYSTEM.DBF
dmmdf V8
**********************************************************
1 db_magic=913104458
2 next_trxid=25051
3 pemnt_magic=1354359236
**********************************************************
Please input which parameter you want to change(1-3), q to quit:
5.5.1 DM数据库控制文件的位置是在dm.ini 文件中指定:
[dmdba@localhost DAMENG]$ more dm.ini|grep CTL
CTL_PATH = D:DM8dmdbmsdataDAMENGdm.ctl #ctl file path
CTL_BAK_PATH = D:DM8dmdbmsdataDAMENGctl_bak #dm.ctl backup path
CTL_BAK_NUM = 10 #backup number of dm.ctl, allowed to keep one more backup file besides specified number.
DSC_N_CTLS = 10000 #Number Of LBS/GBS ctls
[dmdba@localhost DAMENG]$
5.5.2 修改dm.ini中控制文件位置
[dmdba@localhost bin]$ vi /dm8/data/DAMENG_old/dm.ini
5.6 修改故障库文件名
[dmdba@localhost DAMENG_old]$ cd /dm8/data/
[dmdba@localhost data]$ ls
DAMENG_new DAMENG_old DMSERVER_bak.tar TEST1
[dmdba@localhost data]$ mv DAMENG_old/ DAMENG
[dmdba@localhost data]$
5.7 启动数据库
[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-1-190-21.03.26-137190-ENT startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-03-26
file lsn: 0
ndct db load finished
ndct fill fast pool finished
iid page's trxid[26052]
NEXT TRX ID = 26053
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 mgr pages, 0 mgr recs!
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.
六、验证数据库
6.1使用DM管理工具登录数据库
[dmdba@localhost DAMENG]$ more dm.ini|grep CTL
CTL_PATH = D:DM8dmdbmsdataDAMENGdm.ctl #ctl file path
CTL_BAK_PATH = D:DM8dmdbmsdataDAMENGctl_bak #dm.ctl backup path
CTL_BAK_NUM = 10 #backup number of dm.ctl, allowed to keep one more backup file besides specified number.
DSC_N_CTLS = 10000 #Number Of LBS/GBS ctls
[dmdba@localhost DAMENG]$
[dmdba@localhost bin]$ vi /dm8/data/DAMENG_old/dm.ini
5.6 修改故障库文件名
[dmdba@localhost DAMENG_old]$ cd /dm8/data/
[dmdba@localhost data]$ ls
DAMENG_new DAMENG_old DMSERVER_bak.tar TEST1
[dmdba@localhost data]$ mv DAMENG_old/ DAMENG
[dmdba@localhost data]$
5.7 启动数据库
[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-1-190-21.03.26-137190-ENT startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-03-26
file lsn: 0
ndct db load finished
ndct fill fast pool finished
iid page's trxid[26052]
NEXT TRX ID = 26053
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 mgr pages, 0 mgr recs!
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.
六、验证数据库
6.1使用DM管理工具登录数据库
[dmdba@localhost DAMENG_old]$ cd /dm8/data/
[dmdba@localhost data]$ ls
DAMENG_new DAMENG_old DMSERVER_bak.tar TEST1
[dmdba@localhost data]$ mv DAMENG_old/ DAMENG
[dmdba@localhost data]$
[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-1-190-21.03.26-137190-ENT startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-03-26
file lsn: 0
ndct db load finished
ndct fill fast pool finished
iid page's trxid[26052]
NEXT TRX ID = 26053
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 mgr pages, 0 mgr recs!
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.
六、验证数据库
6.1使用DM管理工具登录数据库
登陆时使用的sysdba用户为故障库密码
6.2验证数据库实例和DB_MAGIC
select db_magic from v$rlog;
select instance_name from v$instance;
6.3使用DM管理工具开启归档
选中数据库,右键管理服务器,选择系统管理,并修改成配置状态并转换:
选择归档配置,修改为归档模式,并添加归档日志文件:
重新选择系统管理,并修改数据库状态为打开:
6.4使用DM管理对数据库进行一次全量备份
选择备份-->库备份,右键新建备份
七、如何进入安全模式(救援模式)
7.1 windows进入安全模式
开机按F8键,在重启或者电脑开机的时候,在进入Windows系统启动画面之前按下F8键,会出现系统多操作启动菜单了,有三个版本的安全模式可以选择,视自己需要选择,回车就直接进入安全模式了。
7.2 linux进入救援模式
开机启动的时候按F2修改bios首先用CD启动:
重启后进入Menu,选择Rescue installed system,回车
启动救援模式中,会弹出多个对话框进行选择,语言默认使用en,键盘使用默认的us,挂载选项直接Continue,后面就一直OK,最后选择shell,然后就进入了救援模式
输入clear,把屏幕清空,输入ls /mnt/sysimage
看到的就是你的原来系统的文件:
7.3麒麟系统进入救援模式
1.插入系统镜像,重启服务器;
2.进入安装界面,选择“Troubleshooting”
3.选择“Rescue a Kylin system”
4.选择“Continue”,按1
5.然后输入chroot /mnt/sysimage 切换到原linux系统,切换后前缀会变为bash ,然后就可以修改root密码或配置文件了
6.此时可以进行文件的拷贝(u盘需要格式化为ext或xfs格式,否则无法挂载)
八、总结
8.1 迁移的总体步骤
达梦数据库的数据文件整体迁移过程主要分成六个步骤:
1.查询当前信息;
2.按照故障库信息重建实例服务,并重命名;
3.物理移动整个故障库数据库文件夹;
4.修改DM.INI 参数文件中有关路径的参数;
5.重建控制文件(修改数据文件路径);
6.起库验证。
8.2 数据库备份的重要性
经过上述的所有恢复过程,虽然数据库可以得到恢复,但数据库无备份、无归档是数据库运维中的大忌。数据备份是DBA的生命线,唯一一件会使DBA在梦中惊醒的事情就是:没有备份。在进行了数据备份之后,要定期检查备份成功与否,以及备份的完整性。
在DM管理工具中,已经在章节六中说明了备份的方式,同时可以利用工具进行备份的验证,选中相应备份->右键备份校验,并显示备份校验成功,如下图:
更多资讯请上达梦技术社区了解: https://eco.dameng.com



