linux还原dm7,DM7 达梦数据库 误删数据文件 恢复方法
在之前的博客里我们看了DM7 表空间的管理,如下:
https://www.cndba.cn/dave/article/3570
https://www.cndba.cn/dave/article/3570
1 理论说明
1)表空间文件失效检查
LINUX 操作系统中,被进程打开的文件仍可以在 OS 系统中被删除。如果数据文件被删除,DM7 系统能够及时检测出来,并立刻停止对其继续使用并通知用户。
在 dm.ini 中参数 FIL_CHECK_INTERVAL 的值指定 DM7 系统检查数据文件是否仍存在的时间间隔。将其设为 0 表示不进行检查。
也可以通过系统过程 SP_FILE_SYS_CHECK()来手动的进行检查。
系统一旦检测出某个表空间内的数据文件被删除,则与该表空间所有的操作都将会失败,并报错该表空间内有数据文件被删除。
2)表空间失效文件恢复
LINUX 系统中被删除的文件,在操作系统没有重启的情况下,文件的句柄都没有关闭,可以在/proc/
/fd 中找到其对应的文件副本。其中
指打开该文件的进程 id。https://www.cndba.cn/dave/article/3570
利用该方法,结合 OS 命令,在DM7 中可以通过以下方法恢复被删除的数据文件:
https://www.cndba.cn/dave/article/3570
1、 调用系统过程 SP_TABLESPACE_PREPARE_RECOVER(tablespace_name)准备进行恢复;
2、 如果使用过程中 DM 报错表空间数据文件被删除,通过操作系统的 ps 命令找到当前dmserver 的 PID:ps –ef|grep dmserver;
3、 使用操作系统 ls 命令查看被删除文件对应的副本:ls /proc/
/fd -l,会发现被删除的文件后有(deleted)字样; 4、 使用操作系统的 cp 命令将文件复制到原位置cpbak_fildata_file_path_dir;
5、 复制成功后,调用系统过程 SP_TABLESPACE_RECOVER(ts_name)完成表空间失效文件的恢复。https://www.cndba.cn/dave/article/3570
https://www.cndba.cn/dave/article/3570https://www.cndba.cn/dave/article/3570
注意,要保证数据文件正确修复,需要保证在 SP_TABLESPACE_PREPARE_RECOVER后进行数据文件的复制。
2 操作示例
2.1 准备测试环境
SQL> create tablespace dave datafile '/dm/dmdbms/data/cndba/DAVE01.DBF' size 32, '/dm/dmdbms/data/cndba/DAVE02.DBF' size 32;
操作已执行
已用时间: 54.834(毫秒). 执行号:2177.
SQL> select tablespace_name, file_name, status from dba_data_files order by 1;
行号 TABLESPACE_NAME FILE_NAME STATUS
---------- --------------- ---------------------------------- ---------
1 BOOKSHOP /dm/dmdbms/data/cndba/BOOKSHOP.DBF AVAILABLE
2 DAVE /dm/dmdbms/data/cndba/DAVE02.DBF AVAILABLE
3 DAVE /dm/dmdbms/data/cndba/DAVE01.DBF AVAILABLE
4 DMHR /dm/dmdbms/data/cndba/DMHR.DBF AVAILABLE
5 MAIN /dm/dmdbms/data/cndba/MAIN.DBF AVAILABLE
6 ROLL /dm/dmdbms/data/cndba/ROLL.DBF AVAILABLE
7 SYSTEM /dm/dmdbms/data/cndba/SYSTEM.DBF AVAILABLE
8 TEMP /dm/dmdbms/data/cndba/TEMP.DBF AVAILABLE
8 rows got
已用时间: 7.133(毫秒). 执行号:2178.
SQL>
SQL> create user dave identified by "www.cndba.cn" default tablespace dave;
操作已执行
已用时间: 4.983(毫秒). 执行号:2179.
SQL> grant dba,resource to dave;
操作已执行
已用时间: 2.897(毫秒). 执行号:2180.
SQL>
SQL> conn dave/"www.cndba.cn"
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 10.927(毫秒)
SQL> create table dave as select * from dba_data_files;
操作已执行
已用时间: 21.781(毫秒). 执行号:2181.
SQL> select count(1) from dave;
行号 COUNT(1)
---------- --------------------
1 8
已用时间: 1.336(毫秒). 执行号:2182.
SQL>
2.2 OS级别删除数据文件
[dave@www.cndba.cn ~]$ cd /dm/dmdbms/data/cndba/
[dave@www.cndba.cn cndba]$ ls
bak DAVE01.DBF dmdcr_example.ini dminst.sys dmtimer_example.ini MAIN.DBF SYSTEM.DBF
BOOKSHOP.DBF DAVE02.DBF DMHR.DBF dmmal_example.ini dmwatcher_example.ini rep_conflict.log TEMP.DBF
cndba01.log dmarch_example.ini dm.ini dmmonitor_example.ini dmwatch_example.ini ROLL.DBF trace
cndba02.log dm.ctl dminit20290223224934.log dmmpp_example.ini dmwmon_example.ini sqllog_example.ini
ctl_bak dmdcr_cfg_example.ini dminit_example.ini dm_service.prikey HMAIN sqllog.ini
[dave@www.cndba.cn cndba]$ rm -rf DAVE01.DBF
[dave@www.cndba.cn cndba]$ ls
bak DAVE02.DBF DMHR.DBF dmmal_example.ini dmwatcher_example.ini rep_conflict.log TEMP.DBF
BOOKSHOP.DBF dmarch_example.ini dm.ini dmmonitor_example.ini dmwatch_example.ini ROLL.DBF trace
cndba01.log dm.ctl dminit20290223224934.log dmmpp_example.ini dmwmon_example.ini sqllog_example.ini
cndba02.log dmdcr_cfg_example.ini dminit_example.ini dm_service.prikey HMAIN sqllog.ini
ctl_bak dmdcr_example.ini dminst.sys dmtimer_example.ini MAIN.DBF SYSTEM.DBF
[dave@www.cndba.cn cndba]$
在此查询之前创建的表:
SQL> select count(1) from dave;
行号 COUNT(1)
---------- --------------------
1 8
已用时间: 0.697(毫秒). 执行号:2184.
#使用SP_FILE_SYS_CHECK()过程检查后报错:
SQL> select SP_FILE_SYS_CHECK();
select SP_FILE_SYS_CHECK();
第1 行附近出现错误[-4015]:无效的SELECT项.
已用时间: 1.131(毫秒). 执行号:0.
SQL> call SP_FILE_SYS_CHECK();
DMSQL 过程已成功完成
已用时间: 1.253(毫秒). 执行号:2185.
SQL> select count(1) from dave;
select count(1) from dave;
[-3430]:表空间[DAVE]中文件[/dm/dmdbms/data/cndba/DAVE01.DBF]已被删除.
已用时间: 1.518(毫秒). 执行号:0.
SQL>
2.3 恢复数据文件
#执行准备恢复过程:
SQL> call sp_tablespace_prepare_recover('DAVE');
DMSQL 过程已成功完成
已用时间: 0.994(毫秒). 执行号:2187.
SQL>
#查找DM 进程ID:
[dave@www.cndba.cn cndba]$ ps -ef|grep dmserver
dmdba 6857 1 0 Aug26 pts/3 00:00:14 /dm/dmdbms/bin/dmserver /dm/dmdbms/data/cndba/dm.ini -noconsole
dmdba 20041 19947 0 09:28 pts/1 00:00:00 grep dmserver
[dave@www.cndba.cn cndba]$
#查找被删除的文件:这里对应的的文件号是51
[dave@www.cndba.cn cndba]$ ls /proc/6857/fd -l
总用量 0
lr-x------ 1 dmdba dinstall 64 2月 24 2029 0 -> /dev/null
l-wx------ 1 dmdba dinstall 64 2月 24 2029 1 -> /dm/dmdbms/log/DmServicedave.log
lrwx------ 1 dmdba dinstall 64 2月 24 2029 10 -> /dm/dmdbms/data/cndba/ROLL.DBF
lrwx------ 1 dmdba dinstall 64 2月 24 2029 11 -> /dm/dmdbms/data/cndba/MAIN.DBF
lrwx------ 1 dmdba dinstall 64 2月 24 2029 46 -> /dm/dmdbms/data/cndba/BOOKSHOP.DBF
lrwx------ 1 dmdba dinstall 64 2月 24 2029 47 -> /dm/dmdbms/data/cndba/DMHR.DBF
......
lrwx------ 1 dmdba dinstall 64 2月 24 2029 51 -> /dm/dmdbms/data/cndba/DAVE01.DBF (deleted)
lrwx------ 1 dmdba dinstall 64 2月 24 2029 52 -> /dm/dmdbms/data/cndba/DAVE02.DBF
lrwx------ 1 dmdba dinstall 64 2月 24 2029 6 -> /dm/dmdbms/data/cndba/SYSTEM.DBF
lrwx------ 1 dmdba dinstall 64 2月 24 2029 7 -> /dm/dmdbms/data/cndba/TEMP.DBF
lrwx------ 1 dmdba dinstall 64 2月 24 2029 8 -> /dm/dmdbms/data/cndba/cndba01.log
lrwx------ 1 dmdba dinstall 64 2月 24 2029 9 -> /dm/dmdbms/data/cndba/cndba02.log
[dave@www.cndba.cn cndba]$
#复制文件到原来的位置:
[dave@www.cndba.cn cndba]$ cp /proc/6857/fd/51 /dm/dmdbms/data/cndba/DAVE01.DBF
[dave@www.cndba.cn cndba]$
#执行恢复过程:
SQL> call sp_tablespace_recover('DAVE');
DMSQL 过程已成功完成
已用时间: 11.210(毫秒). 执行号:2188.
#验证恢复,正常:
SQL> call SP_FILE_SYS_CHECK();
DMSQL 过程已成功完成
已用时间: 0.980(毫秒). 执行号:2189.
SQL> select count(1) from dave;
行号 COUNT(1)
---------- --------------------
1 8
已用时间: 0.813(毫秒). 执行号:2190.
SQL>
SQL> select tablespace_name, file_name, status from dba_data_files order by 1;
行号 TABLESPACE_NAME FILE_NAME STATUS
---------- --------------- ---------------------------------- ---------
1 BOOKSHOP /dm/dmdbms/data/cndba/BOOKSHOP.DBF AVAILABLE
2 DAVE /dm/dmdbms/data/cndba/DAVE02.DBF AVAILABLE
3 DAVE /dm/dmdbms/data/cndba/DAVE01.DBF AVAILABLE
4 DMHR /dm/dmdbms/data/cndba/DMHR.DBF AVAILABLE
5 MAIN /dm/dmdbms/data/cndba/MAIN.DBF AVAILABLE
6 ROLL /dm/dmdbms/data/cndba/ROLL.DBF AVAILABLE
7 SYSTEM /dm/dmdbms/data/cndba/SYSTEM.DBF AVAILABLE
8 TEMP /dm/dmdbms/data/cndba/TEMP.DBF AVAILABLE
8 rows got
版权声明:本文为博主原创文章,未经博主允许不得转载。
linux还原dm7,DM7 达梦数据库 误删数据文件 恢复方法相关推荐
- 达梦数据库DM8数据文件损坏无备份恢复
无备份数据恢复实验 实验说明 一.开启归档 二.开启记录逻辑操作功能 三.构建测试环境 四.模拟操作业务 五.破坏数据文件 六.尝试重启数据库 6.1 数据库实例无法启动. 6.2 数据库服务无法启动 ...
- 达梦数据库更换key文件的方法
key文件存放于数据库服务器数据库安装目录下的/home/dmdbms/bin目录里,将新的key文件替换掉中的旧key文件. 更新key文件 方法一 重启数据库 将数据库的服务重启后即可完成key文 ...
- 达梦数据库DM8-DM数据迁移工具介绍和简单使用
达梦数据库DM8-DM数据迁移工具介绍和简单使用 系列文章目录 本文环境 1.DM管理工具介绍 2.DM数据迁移工具简单使用 1.打开DM数据迁移工具 2.新建工程 3.新建迁移任务DM到DM 3.新 ...
- 【数据库】达梦数据库更新key文件
达梦数据库更新key文件 情景 当达梦数据库连接报错,显示网络异常连接异常/超时,可能是授权文件dm.key过期了 查看日志文件:/home/dmdba/dmdbms/log/dm_DMSERVER_ ...
- 达梦数据库导入.dmp文件标准教程
达梦数据库导入.dmp文件出现导入对象错误等问题 第1步 改口令 第2步 登录数据库入口 **注意!!!** 第3步 新建数据库 第4步 导入数据库 第5步 导入口令注意 第1步 改口令 第一步,安装 ...
- 达梦数据库迁移数据失败,错误码:6002,消息校验异常
问题描述: 在服务器上新部署了一个国产达梦数据库A,准备将另一个数据库B的数据迁移到A,利用DM自带的迁移工具迁移时报错,如下图示: 查看报错详细信息: 解决方案如下: 导致此问题的原因是,数据库设置 ...
- 达梦数据库导出数据表结构为excel或html或文本(写文档用)
达梦数据库导出数据表结构为excel或html或文本(写文档用) 项目中用的是国产达梦数据库,项目做了一期后应该是要数据库设计文档.其中就有一个需要表结构(字段,字段精度,说明...) 因为是国产数据 ...
- php删除sql server 2008,MSSQL_SQL Server2008 数据库误删除数据的恢复方法分享,SQL Server中误删除数据的恢复本 - phpStudy...
SQL Server2008 数据库误删除数据的恢复方法分享 SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可.但是,这个恢复需要有两个前提条件: 1. 至少有一个误删除之前的 ...
- Linux 7中安装达梦数据库DM7
一安装前准备工作 1.1检查Linux(Unix)系统信息 用户在安装DM前,需要检查当前操作系统的相关信息,确认DM安装程序与当前操作系统匹配,以保证DM能够正确安装和运行.用户可以使用以下命令 ...
最新文章
- MapReduce 计数器简介
- 【电子信息复试】考研复试常考问题——数据库
- 它来了,阿里架构师的“Java多线程+并发编程”知识点详解手册,限时分享
- JVM系列之:从汇编角度分析NullCheck
- loadrunner性能测试---添加windows多台压力机
- 组合数学与数论函数专题
- python弹出窗口后卡死_python的tkinter模块GUI编程为啥用了while循环之后就会使得程序出现卡死未响应崩溃?...
- 2dpsk差分相干解调matlab,基于systemview和matlab的2DPSK
- Inject Dll 过程
- python导入xlsx转为csv_Python 拆分工作表为单个工作簿
- c语言计算器程序代码有优先级,C语言计算器小程序(源代码+实习报告).doc
- 使用微博提供的API接口发送微博
- 计算机应用基础上机实验报告怎么写,excel实验报告模板
- Python项目实战化:爬取堆糖网研究所美好生活照
- iOS 动画之翻页动画实现
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- can和could的用法_can和could情态动词的用法
- 【JVM】CMS简述
- oracle的product删除不了,Linux下删除Oracle实例
- android 新浪微博签名工具,Android 集成新浪微博分享及授权 (上)
热门文章
- 如何保存PPT中的gif
- “华为30岁以下员工仅占28%”上热搜,网友:说好的35岁天花板呢?
- ES6 新增功能点整理
- C语言strcpy、strcnpy函数详解
- 【Linux】 - Linux中的文件操作
- PyTorch 1.12发布,正式支持苹果M1芯片GPU加速,修复众多Bug
- android绘制矢量图标和动画
- Tsinghua MOOC 祖玛(Zuma)
- 计算机音乐数字乐谱生僻字,生僻字钢琴简谱-数字双手-陈柯宇
- 苹果6怎么关闭运行程序_苹果推送 iOS 13.6 测试版:终于能关闭系统更新自动下载...