首页 > 数据库 >达梦数据库linux下误删数据文件恢复

达梦数据库linux下误删数据文件恢复

时间:2023-03-13 10:36:09浏览次数:49  
标签:数据文件 linux 误删 tablespace select SQL TEST RM 达梦

达梦数据库linux下误删数据文件恢复

数据找回分为两种方式,一种是利用数据迁移工具将数据迁移到新的正常的数据库实例上,一种是将删除的数据文件找回进行恢复,前提条件:数据文件是在数据库运行时删除的,有时间限制,而且不能重启服务器和数据库服务器。

一、将误删的数据库文件删除并找回

1、创建测试用的表空间、数据文件、用户、表

创建表空间

SQL> create tablespace TEST_RM datafile 'TEST_RM01.DBF' size 128 autoextend on next 128 CACHE = NORMAL;

 

创建用户

SQL>  create user TEST_RM identified by dameng123 default tablespace TEST_RM;

 

给用户赋权

SQL>  grant "PUBLIC","RESOURCE","SOI","VTI" to TEST_RM;

 

创建表,并插入数据

SQL> create table TEST_RM.T1 as select * from v$sessions;

 

查询表空间名字,路径,状态

SQL> select tablespace_name, file_name, status from dba_data_files;

 

2、删除对应的表空间的数据文件进行模拟

rm -rf  TEST_RM01.DBF

 

查询表空间和表空间状况

SQL>select tablespace_name, file_name, status from dba_data_files;

 

再查询表数据和表空间状况,你会发现数据一样能查询(是由于未做数据文件校验,如果做了数据文件校验将会查询不到数据),但是查看系统视图数据文件路径已经不存在

查询数据正常(这个时间用DTS迁移也是可以的)

SQL> select * from TEST_RM.T1;

 

查询V$DATAFILE看到移走的表空间不存在

SQL> SELECT GROUP_ID,PATH,CLIENT_PATH FROM "V$DATAFILE";

 

进行数据文件检查

SQL> call SP_FILE_SYS_CHECK();

 

再次查询数据,提示数据已经删除

SQL> select * from TEST_RM.T1;

 

3、进行恢复

先执行恢复前的准备工作

SQL> call sp_tablespace_prepare_recover('TEST_RM');

 

将数据文件复制回去

ps -ef|grep dmser*

找到数据库服务的pid 为1288

 

ls /proc/1288/fd -l|grep delete

 

会发现被删除的文件后有(deleted)字样,文件id为11

去文件夹下也可以看到删除的文件

cd /proc/1288/fd

 

把文件复制回去

cp 11 /dmdata/dmdb/TEST_RM01.DBF

SQL> call sp_tablespace_recover('TEST_RM');

 

查询数据已经恢复

SQL> SELECT GROUP_ID,PATH,CLIENT_PATH FROM "V$DATAFILE";

 

SQL>  select tablespace_name, file_name, status from dba_data_files;

 

SQL> select * from TEST_RM.T1;

 

二、通过备份+归档找回

参考文档

https://eco.dameng.com/document/dm/zh-cn/ops/physical-backup-restore.html

 

标签:数据文件,linux,误删,tablespace,select,SQL,TEST,RM,达梦
From: https://www.cnblogs.com/xuchuangye/p/17210452.html

相关文章

  • Linux查看进程的方法
    第一种:ps-auxps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪......
  • linux时间同步,ntpd、ntpdate
    linux时间同步,ntpd、ntpdate在Windwos中,系统时间的设置很简单,界面操作,通俗易懂。而且设置后,重启,关机都没关系。系统时间会自动保存在Bios的时钟里面,启动计算机的时候,系......
  • linux中mysql8重置root密码
    修改my.cnf,修改参数,使登录能够跳过密码验证servicemysqldrestart,重启mysqld服务mysql-uxxx-p,任意账号无密码可进入重置root密码为空quit;修改my.cnf,删除跳过验证......
  • Linux & 标准C语言学习 <DAY11>
    一、指针  1、什么是指针    指针是一种特殊的数据类型,使用指针可以定义指针变量,指针变量存储的是整形数据,该数据代表了内存的编号(地址),可以通过这个编号......
  • vscode 配置 linux C++ 开发环境 和 终端配置 oh-my-zsh
    1.配置linuxC++开发环境vscode安装C/C++;CodeRunner插件。#安装gdbsudoapt-getupdatesudoapt-getinstallgdb点运行按钮就可以调试和运行代码了......
  • 在 Linux 中如何查找父进程 PPID?
    导读内核创建的进程称为“父进程”。从父进程派生或产生的进程称为“子进程”。父进程可能由多个子进程组成,每个子进程都具有唯一的PID(进程ID)但共享相同的PPID。......
  • 【linux】使用 Xshell 上传本地文件到服务器
    需求:上传本地文件到服务器,常见的作法是通过ssh上传,但是我们有了Xshell后可以简化操作。 操作步骤:1.打开Xshell,连接好自己的服务器2.选择要存储的服务器......
  • Linux提权-权限升级
    Linux提权-权限升级 特权升级是一段旅程。没有灵丹妙药,很大程度上取决于目标系统的具体配置。内核版本、已安装的应用程序、支持的编程语言、其他用户的密码是影响您......
  • 总结linux安全模型
    1.总结linux安全模型①用户登录系统时必须提供用户名和密码。②使用用户和用户组来控制使用者访问文件和其他资源的权限。③系统上的每一个文件都一定属于一个用户(一般......
  • Linux驱动开发-编译的第一个字符设备驱动
    1.首先需要准备并编译linuxkernal源码编写make脚本build.sh,执行build 2.在vscod中准备kernal路径#include<linux/module.h>staticint__initaaaainit(void)......