本文主要围绕控制文件进行介绍,具体介绍内容如下所示:
控制文件是数据库中的核心文件,是一个二进制的小文件,主要记录如下内容:
一旦对控制文件的内容进行修改之后,需要即时通过备份的方式来保护控制文件。在达梦 8 数据库中有主要有两个备份策略:
达梦 8 数据库中提供了dmctlcvt 工具可以将控制文件的内容转储出来。
DMCTLCVT V8
version: 03134284172-20240321-222308-20093
格式: ./dmctlcvt KEYWORD=value
注意: 控制文件名称必须指定为dm.ctl、dmmpp.ctl、dss.ctl
关键字 说明
--------------------------------------------------------------------------------
TYPE 1 转换控制文件为文本文件(源文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
2 转换文本文件为控制文件(目标文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
SRC 源文件路径
DEST 目标文件路径
DCR_INI dmdcr.ini文件路径
HELP 打印帮助信息
示例:
./dmctlcvt TYPE=1 SRC=/opt/dmdbms/data/dameng/dm.ctl DEST=/opt/dmdbms/data/dameng/dmctl.txt
./dmctlcvt TYPE=2 SRC=/opt/dmdbms/data/dameng/dmctl.txt DEST=/opt/dmdbms/data/dameng/dm.ctl
将控制文件转储成文本:
[dmdba@dba DAMENG]$ dmctlcvt TYPE=1 SRC=/dm8/data/DAMENG/dm.ctl DEST=/home/dmdba/dmctl.txt
DMCTLCVT V8
查看控制文件的文本文件:
[dmdba@dba ~]$ more /home/dmdba/dmctl.txt
这里面内容较多,只截取了一部分:
通过查看参数的方式来查看控制文件的备份:
SQL> show parameter ctl_bak
行号 PARA_NAME PARA_VALUE
---------- ------------ ------------------------
1 CTL_BAK_PATH /dm8/data/DAMENG/ctl_bak
2 CTL_BAK_NUM 10
通过以上信息可以知道,控制文件的备份会存放到/dm8/data/DAMENG/ctl_bak目录下,且保留最近的10个备份。
从物理目录下查看:
[dmdba@dba DAMENG]$ cd /dm8/data/DAMENG/ctl_bak/
[dmdba@dba ctl_bak]$ ll
总用量 88
-rw-r--r-- 1 dmdba dinstall 6656 6月 26 15:12 dm_20240626151231_176873.ctl
-rw-r--r-- 1 dmdba dinstall 6656 6月 26 16:42 dm_20240626164251_272823.ctl
-rw-r--r-- 1 dmdba dinstall 7168 6月 26 16:42 dm_20240626164251_276004.ctl
-rw-r--r-- 1 dmdba dinstall 7168 6月 26 16:42 dm_20240626164251_278852.ctl
-rw-r--r-- 1 dmdba dinstall 7168 6月 26 16:42 dm_20240626164251_280779.ctl
-rw-r--r-- 1 dmdba dinstall 7168 6月 26 16:42 dm_20240626164251_285660.ctl
-rw-r--r-- 1 dmdba dinstall 7168 6月 28 10:05 dm_20240628100543_571181.ctl
-rw-r--r-- 1 dmdba dinstall 7680 6月 28 10:05 dm_20240628100543_573226.ctl
-rw-r--r-- 1 dmdba dinstall 7680 6月 28 10:05 dm_20240628100543_578331.ctl
-rw-r--r-- 1 dmdba dinstall 7680 6月 28 10:05 dm_20240628100543_580101.ctl
-rw-r--r-- 1 dmdba dinstall 7680 6月 28 10:05 dm_20240628100543_589343.ctl
通过以上可以看出,实际上要比10个要多,也就是有11个。
模拟修改控制文件:创建表空间
SQL> create tablespace tbs datafile '/dm8/data/DAMENG/tbs.dbf' size 50;
操作已执行
已用时间: 30.580(毫秒). 执行号:2602.
查看备份
通过以上可以看出来在修改了控制文件之后,会自动备份。
[dmdba@dba DAMENG]$ pwd
/dm8/data/DAMENG
[dmdba@dba DAMENG]$ ll dm.ctl
-rw-r--r-- 1 dmdba dinstall 8704 6月 28 13:57 dm.ctl
[dmdba@dba DAMENG]$ rm -f dm.ctl
[dmdba@dba DAMENG]$ ll dm.ctl
ls: 无法访问 'dm.ctl': 没有那个文件或目录
[dmdba@dba DAMENG]$ DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
[dmdba@dba DAMENG]$ DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ FAILED ]
查看日志:
[dmdba@dba log]$ tail -100f /dm8/log/dm_DMSERVER_202406.log
将备份拷贝回来
[dmdba@dba ctl_bak]$ cp dm_20240628135728_858373.ctl ../dm.ctl
[dmdba@dba ctl_bak]$ ll /dm8/data/DAMENG/dm.ctl
-rw-r--r-- 1 dmdba dinstall 8704 6月 28 14:57 /dm8/data/DAMENG/dm.ctl
重启服务并查看数据库的状态为open:
[dmdba@dba ctl_bak]$ DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
[dmdba@dba ctl_bak]$ disql sysdba/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 18.858(ms)
disql V8
SQL> select status$ from v$instance;
行号 STATUS$
---------- -------
1 OPEN
已用时间: 1.231(毫秒). 执行号:501.
需求场景:将tbs.dbf文件移动到/homd/dmdba/dbf目录下。
SQL> select file_name from dba_data_files where file_name like '%tbs.dbf%';
行号 FILE_NAME
---------- ------------------------
1 /dm8/data/DAMENG/tbs.dbf
SQL> shutdown immediate;
操作已执行
已用时间: 0.312(毫秒). 执行号:0.
[dmdba@dba DAMENG]$ dmctlcvt TYPE=1 SRC=/dm8/data/DAMENG/dm.ctl DEST=/home/dmdba/dmctlnew.txt
DMCTLCVT V8
convert ctl to txt success!
[dmdba@dba DAMENG]$ cd
[dmdba@dba ~]$ mkdir dbf
### 3.5.4 修改tbs.dbf文件的路径
[dmdba@dba ~]$ cat dmctlnew.txt | grep tbs.dbf
fil_path=/home/dmdba/dbf/tbs.dbf
备份原控制文件
[dmdba@dba DAMENG]$ cp dm.ctl dm.ctl.bak
[dmdba@dba DAMENG]$ dmctlcvt TYPE=2 SRC=/home/dmdba/dmctlnew.txt DEST=/dm8/data/DAMENG/dm.ctl
DMCTLCVT V8
convert txt to ctl success!
[dmdba@dba DAMENG]$ mv tbs.dbf /home/dmdba/dbf/
[dmdba@dba DAMENG]$ DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
SQL> select file_name from dba_data_files where file_name like '%tbs.dbf%';
行号 FILE_NAME
---------- -----------------------
1 /home/dmdba/dbf/tbs.dbf
注:虽然可以通过修改控制文件的方式,迁移数据文件,但是不推荐这样操作。
更多内容请参考:
https://eco.dameng.com/document/dm/zh-cn/start/
至此结束!
文章
阅读量
获赞