oracle rm -fr datafile 数据文件被误删的场景恢复(没有rman备份)
环境:
Linux release 7.5
oracle19c (无pdb,从11.2.0.4升级上去的)
一:单个非系统表空间的数据文件被删除
我先备份一下,虽然是测试环境。
[oracle@19c ~]$ cat full_backup.sh
source /home/oracle/.bash_profile
dir=$(date +%Y%m%d)
mkdir -p /u01/backup/$dir
rman target / log /u01/backup/rman_fullbackup_`date +%Y%m%d`.log <<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate channel c5 type disk;
allocate channel c6 type disk;
crosscheck backup ;
delete noprompt expired backup;
backup spfile format '/u01/backup/$dir/spfile_%t_%U.ora';
backup as COMPRESSED BACKUPSET database format '/u01/backup/$dir/full_%t_%U.dbf';
backup current controlfile format '/u01/backup/$dir/cont_%t_%U.ctl';
backup as COMPRESSED BACKUPSET archivelog until time 'sysdate-1/24' format '/u01/backup/$dir/arch_%t_%U.arc';
}
EOF
find /u01/backup/ -type d -name `date +"%Y%m%d" -d "-4 day"`| xargs rm -rf
exit;

测试一下我先建一个表;
create table test(id int ,name varchar(100)) tablespace EXAMPLE;
insert into test select rownum, dbms_random.string('x',20) from dual connect by rownum <=10000;
commit;
select count(*) from test;

select name, open_mode from v$database;
col name for a55
select file#, name from v$datafile;

删除数据文件
! rm -fr /u01/app/oracle/oradata/TEST19C/datafile/o1_mf_example_hnz0crm9_.dbf
! ls -h /u01/app/oracle/oradata/TEST19C/datafile/o1_mf_example_hnz0crm9_.dbf

此时数据库尚未关闭,服务器当然是不能重启了,也就是对应句柄存在,需要linux知识了;删除后,数据文件不要执行OFFLINE语句,因为执行了句柄没有了,跟你关闭操作系统和数据库一样,都不会有了。

此时查询操作仍然可以进行,但是写入操作就会报错了。
ps -fe|grep ora_dbw



chown -R oracle:oinstall o1_mf_example_hnz0crm9_.dbf

生产是哪个如果发生了这种情况,需要立马的进行恢复,因为很多业务数据不能够进行更新会报一大堆错误提示。本次测试不需要进行recover操作。
二:多个数据文件或者系统表空间数据文件被删
select file_name from dba_data_files;

cd /u01/app/oracle/oradata/ORCL/datafile/
rm -fr *
ls -lh


同样利用句柄进行删除文件恢, 数据库已经删懵逼了,报警日志有报错,千万不能关闭数据库和操作系统。

cp 258 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_hxz2d3nx_.dbf
cp 259 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_hxz2dwqb_.dbf
cp 260 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_hxz2fcs4_.dbf
cp 261 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_hxz2fdtt_.dbf
cp 262 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_temp_hxz2gy96_.tmp

select file#, checkpoint_change# from v$datafile;
select file#, checkpoint_change# from v$datafile_header;

查看数据库数据文件以及数据文件头SCN不一致,需要进行数据库恢复:
进行在线恢复。
recover database until scn 2314719;

进行数据库重启,查看是否异常。



经过recover重启后,数据文件SCN一致,进行数据插入没有问题。
三.建议
1.其实全库数据文件删除这种情况要是可以把删除的文件恢复回来后,建议立马把数据库中的业务数据导出来,另外重新建一个数据库,导入数据。
2.rman进行全库备份或者expdp备份是DBA的一个底线,必须要有。
oracle rm -fr datafile 数据文件被误删的场景恢复(没有rman备份)的更多相关文章
- 实验Oracle数据文件被误删除的场景恢复
环境:RHEL 5.4 + Oracle 11.2.0.3 背景:数据库没有备份,数据库文件被误操作rm,此时数据库尚未关闭,也就是对应句柄存在,如何快速恢复? 1.某个普通数据文件被删除 2.所有数 ...
- 【转】Oracle 表空间与数据文件
--============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...
- Oracle 表空间与数据文件
-============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或多 ...
- ORACLE体系结构一 (物理结构)- 数据文件、日志文件、控制文件和参数文件
一.物理结构Oracle物理结构包含了数据文件.日志文件.控制文件和参数文件 1.数据文件每一个ORACLE数据库有一个或多个物理的数据文件(data file).一个数据库的数据文件包含全部数据库数 ...
- Oracle逻辑体系:数据文件黑盒的内在洞天
select username,session_num,tablespace from v$sort_usage; Block: 块的组成 Header:包含数据块的概要信息:块地址,块属于哪个段,还 ...
- 【基础】Oracle 表空间和数据文件
多个表空间的优势:1.能够将数据字典与用户数据分离出来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突2.能够将回退数据与用户数据分离出来,避免由于硬盘损坏而导致永久性的数据丢失3 ...
- Oracle与SQLSERVER修改数据文件的路径
1. SQLSERVER ALTER DATABASE CWBASEMSS modify file (name = cwbasemss_dat ,filename = 'c:\cwdata\mss\C ...
- oracle之 RAC本地数据文件迁移至ASM
系统环境:CentOS release 6.7 (Final)Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit 操作过 ...
- Oracle数据库表空间 数据文件 用户 以及表创建的SQL代码
--create the tablespace CREATE SMALLFILE TABLESPACE "TABLE_CONTAINER" --创建表空间 DATAFILE 'E: ...
随机推荐
- 网络系列之 jsonp 百度联想词
jsonp 可以跨域,ajax 不可以,ajax 会受到浏览器的同源策略影响,何为同源策略? 同源策略就是,如果 A 网站 想拿 B网站里的资源, 那么 有三个条件, 你得满足才能拿. 第一个:域名相 ...
- java运算符与程序逻辑控制
一.运算符 java中的运算符大致分为四种:数学运算符,关系运算符.逻辑运算符.位运算 1.数学运算符:即咱们平常说的加减乘除运算,这种运算是分先后顺序的,如果想要优先进行运算,建议加上小括号,使其运 ...
- Java蓝桥杯——排列组合
排列组合介绍 排列,就是指从给定n个数的元素中取出指定m个数的元素,进行排序. 组合,则是指从给定n个数的元素中仅仅取出指定m个数的元素,不考虑排序. 全排列(permutation) 以数字为例,全 ...
- .NET使用AutoResetEvent实现多线程打印奇偶数
AutoResetEvent 类 (System.Threading) | Microsoft Docs 定义 命名空间: System.Threading 程序集: mscorlib.dll, Sy ...
- Springboot结合Jpa的外键使用
当我们写项目的时候,总有些奇奇怪怪的理由,非让你连表查询,其实最好的就是什么都不连,数据库完全解耦 但我们还是要学习下Jpa怎么根据外键查询 (这里说下Jpa+springboot的感觉,刚开始就感觉 ...
- 【佛山市选2013】JZOJ2020年8月7日提高组T1 回文子序列
[佛山市选2013]JZOJ2020年8月7日提高组T1 回文子序列 题目 描述 回文序列是指左右对称的序列.例如1 2 3 2 1是回文序列,但是1 2 3 2 2就不是.我们会给定一个N×M的矩阵 ...
- paddleocr安装笔记
下载解压安装 wget http://npm.taobao.org/mirrors/python/3.7.6/Python-3.7.6.tgztar xvf Python-3.7.6.tgzcd Py ...
- 老猿学5G:融合计费场景的Nchf_ConvergedCharging_Create、Update和Release融合计费消息交互过程
☞ ░ 前往老猿Python博文目录 ░ 一.Nchf_ConvergedCharging_Create交互过程 Nchf_ConvergedCharging_Create 服务为CTF向CHF请求提 ...
- 第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer
一. 概述 re模块的函数search.match.fullmatch.findall.finditer都是用于搜索文本中是否包含指定模式的串,函数的参数都是一样的,第一个参数是模式串.第二个是搜索文 ...
- Python正则表达式书写容易碰到的陷阱:\W*和\W*?匹配过程遇到的问题
老猿在分析<Python正则表达式\W+和\W*匹配过程的深入分析>中的问题时,想到一个问题,如果"re.split('(\W*)','Hello,world')"的处 ...