问题描述
开发同事让在一个服务器上查找下先前库的备份文件是否存在,如果存在进行下恢复。翻了服务器发现备份文件存在,多愁了一眼竟翻到了该备份文件于2024.6.17日恢复过的日志,赶紧和开发沟通说2024.6.17号已经恢复过了为啥还要恢复,开发这才说出关键:前几天清理磁盘,不小心将log文件删除了现在库不能启动,咨询了另一个DBA说是得重新恢复。可见沟通很关键啊,沟通后可不敢直接开干,多问问多翻翻多核实。
分析过程
查看服务器上备份文件
说明:db_20240617_TOPICIS_5238.dmp是由其他服务器上备份后上传到该服务器上并进行恢复的,db_20240617_TOPICIS_5238_imp.log是恢复日志。
dmdba@db191 dmbak\]$ ls -lhtr *TOPICIS* -rw------- 1 dmdba dinstall 91G 6月 17 23:06 db_20240617_TOPICIS_5238.dmp -rw------- 1 dmdba dinstall 1.8M 6月 17 23:06 db_20240617_TOPICIS_5238_exp.log -rw-r--r-- 1 dmdba dinstall 3.1M 6月 18 04:37 db_20240617_TOPICIS_5238_imp.log 启动实例 查看配置文件 --查找配置文件 \[root@db191 dmbak\]# find / -name dm.ini /opt/dmdb/topicis/topicis/dm.ini /opt/dmdb/dzzzk/dzzzk/dm.ini /opt/dmdb/DMSERVER/DAMENG/dm.ini /opt/dmdb/xzspkp5555/xzspkp/dm.ini --查看配置文件内容 \[root@db191 dmbak\]# cat /opt/dmdb/topicis/topicis/dm.ini \| grep PORT PORT_NUM = 5238 #Port number on which the database server will listen ELOG_REPORT_LINK_SQL = 0 #Whether to write the SQLs that sent to remote database by DBLINKs into error log file DFS_HUGE_SUPPORT = 1 #Whether support huge table operation in DDFS EXTERNAL_JFUN_PORT = 6363 #DmAgent port for external java fun. EXTERNAL_AP_PORT = 4236 #DmAp port for external fun. DCRS_PORT_NUM = 6236 #Port number on which the database dcrs will listen AP_PORT_NUM = 0 #Port number on which the database ap will listen DW_PORT = 0 #Instance tcp port for watch2 HA_INST_CHECK_PORT = 65534 #HA instance check port 查看实例服务 db_20240617_TOPICIS_5238.dmp对应的是DmServiceTOPICIS.service \[root@db191 dmbak\]# systemctl list-units D\* UNIT LOAD ACTIVE SUB DESCRIPTION DmAPService.service loaded active running DM Assistant Plug-In Service(DmAPService). DmServiceDMSERVER.service loaded active running DM Instance Service ● DmServicedzzzk.service loaded failed failed DM Instance Service ● DmServiceTOPICIS.service loaded failed failed DM Instance Service DmServicexzspkp.service loaded active running DM Instance Service 启动实例 \[root@db191 dmbak\]# systemctl start DmServiceTOPICIS Job for DmServiceTOPICIS.service failed because the control process exited with error code. See "systemctl status DmServiceTOPICIS.service" and "journalctl-xe" for details. 启动失败 查看启动失败日志 日志位置:安装目录/log下 cd /opt/dmdbms/log tail -300f dm_TOPICIS_202410.log 输出如下: 2024-10-16 13:43:30.587 \[INFO\] database P0000001716 T0 000000000000001716 DM Database Server 64 V8 03134284044-20230703-194450-20040 startup... 2024-10-16 13:43:31.840 \[INFO\] database P0000001716 T0000000000000001716 fil_sys_init 2024-10-16 13:43:31.990 \[INFO\] database P0000001716 T0000000000000001716 Database mode = 0, oguid = 0 2024-10-16 13:43:31.991 \[FATAL\] database P0000001716 T0000000000000001716 /opt/dmdb/topicis/topicis/topicis01.log not exist,can not startup 2024-10-17 09:07:28.861 \[INFO\] database P0000020309 T0000000000000020309 INI parameter DPC_2PC changed, the original value 1, new value 0 2024-10-17 09:07:28.866 \[INFO\] database P0000020309 T0000000000000020309 version info: develop 2024-10-17 09:07:28.868 \[INFO\] database P0000020309 T0000000000000020309 os_sema2_create_low, create and inc sema success, key:125441262, sem_id:2, sem_value:1! 2024-10-17 09:07:28.874 \[INFO\] database P0000020309 T0000000000000020309 ini_set_secini, ini parameter PWD_POLICY changed, the original value 2, new value0 2024-10-17 09:07:29.650 \[INFO\] database P0000020309 T0000000000000020309 DM Database Server 64 V8 03134284044-20230703-194450-20040 startup... 2024-10-17 09:07:29.924 \[INFO\] database P0000020309 T0000000000000020309 fil_sys_init 2024-10-17 09:07:30.075 \[INFO\] database P0000020309 T0000000000000020309 Database mode = 0, oguid = 0 2024-10-17 09:07:30.075 \[FATAL\] database P0000020309 T0000000000000020309 /opt/dmdb/topicis/topicis/topicis01.log not exist,can not startup 解决办法 查看初始化参数 着重关注的参数有: page size:单位字节 而初始化参数界面单位是K,注意转换 extent size:单位页 case sensitive:取值:Y、y、1 表示敏感;N、n、0 表示不敏感。默认值为 Y charset:0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR。默认为 0 length in char:VARCHAR 类型对象的长度是否以字符为单位。取值为 1 或者 Y 表示是,取值为 0 或 N 表示否。默认值为 0 cd /opt/dmdb/topicis/topicis ls -l dminit\* 输出如下: \[dmdba@db191 topicis\]$ ls -l dminit\* -rw-r--r-- 1 dmdba dinstall 1009 6月 17 22:09 dminit20240617220946.log \[dmdba@db191 topicis\]$ more dminit20240617220946.log start init database: V8, 2024-06-17 22:09:46 init params: db path: /opt/dmdb/topicis/topicis db name: topicis auto overwrite: 0 page size: 8192 extent size: 16 char_fix_storage: 0 sql_log_forbid: 0 secur_flag: 2 time zone: +08:00 string case sensitive: 1 charset: 1 length in char: 0 page check mode: 0 page check algorithm id: 0 priv flag: 0 env label: 0 rlog enc flag: 0 use new hash: 1 blank pad mode: 0 sec priv mode: 0 huge with delta: 1 rlog gen for huge: 1 pseg_mgr_flag: 0 log file path: /opt/dmdb/topicis/topicis/topicis01.log log file path: /opt/dmdb/topicis/topicis/topicis02.log create ini file /opt/dmdb/topicis/topicis/dm.ini success. create rlog file /opt/dmdb/topicis/topicis/topicis01.log success. create rlog file /opt/dmdb/topicis/topicis/topicis02.log success. SYSTEM file : /opt/dmdb/topicis/topicis/SYSTEM.DBF MAIN file : /opt/dmdb/topicis/topicis/MAIN.DBF ROLL file : /opt/dmdb/topicis/topicis/ROLL.DBF create dm database success. 2024-06-17 22:09:50 移除系统服务(重要) systemctl disable DmServiceTOPICIS cd /opt/dmdbms/bin ls -l DmServiceTOPICIS mv DmServiceTOPICIS DmServiceTOPICIS_bak_`date +%F` ,不然后面初始化实例提示如下报错: 更改故障实例的端口(重要) 将/opt/dmdb/topicis/topicis/dm.ini中的PORT_NUM更改为未占用的端口,本文档更改为9999,不然后面初始化实例提示如下报错: 创建新的数据目录并赋予权限 mkdir -p /opt/dmdb/topicis/topicisnew chown -R dmdba:dinstall /opt/dmdb/topicis/topicisnew 初始化新实例 采用的是图形化,避免参数错。 运行Xmanager Power Suite 7下tools文件夹下的Xmanager - Passive工具 su - dmdba export DISPLAY=192.168.19.74:0.0 cd /opt/dmdbms/tool ./dbca.sh 执行以下脚本 su - root mv /opt/dmdbms/bin/DmServicetopicis.service /usr/lib/systemd/system/DmServicetopicis.service systemctl enable DmServicetopicis.service systemctl start DmServicetopicis.service 创建业务用户 create user topicis identified by "123456789" limit failed_login_attemps unlimited, password_lock_time unlimited, password_grace_time unlimited; grant "DBA" to topicis; 逻辑恢复 su - dmdba nohup /opt/dmdbms/bin/dimp USERID=topicis/123456789:5238 FILE=db_20240617_TOPICIS_5238.dmp DIRECTORY=/opt/dmbak LOG=db_20241017_TOPICIS_5238_imp.log LOG_WRITE=Y PARALLEL=28 \& 参考链接:达梦DM8之使用dmmdf恢复误删除的undo/redo文件_file dm.key not found, use default license!-CSDN博客 