Oracle 19C 数据库表被误删除的模拟恢复

Oracle 19C 数据库表被误删除的模拟恢复操作

1、模拟创建表用于恢复测试
sqlplus zzh/zzh
SQL> create table obj_tb tablespace users as select * from dba_objects;

Table created.

SQL> select count(*) from obj_tb;

  COUNT(*)
----------
     72373

2、记录当前状态下数据库的时间
SQL> select systimestamp from dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
13-JUN-24 11.10.10.097481 AM +08:00


3、模拟表被误操作永久删除
SQL> drop table obj_tb purge;

Table dropped.

SQL> select * from obj_tb
  2  ;
select * from obj_tb
              *
ERROR at line 1:
ORA-00942: table or view does not exist

4、基于时间点通过RMAN恢复被删除的表
[oracle@oel backup]$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on Thu Jun 13 11:11:57 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1699315892)

RMAN> recover table zzh.obj_tb until time "to_date('2024-06-13 11:10:10','yyyy-mm-dd hh24:mi:ss')" auxiliary destination '/u01/dump';

Starting recover at 2024-06-13 11:12:03
using target database control file instead of recovery catalog
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=257 device type=DISK
RMAN-05026: warning: presuming following set of tablespaces applies to specified point-in-time

List of tablespaces expected to have UNDO segments
Tablespace SYSTEM
Tablespace UNDOTBS1

Creating automatic instance, with SID='pEpF'

initialization parameters used for automatic instance:
db_name=ORCL
db_unique_name=pEpF_pitr_ORCL
compatible=19.0.0
db_block_size=8192
db_files=200
diagnostic_dest=/u01/app/oracle
_system_trig_enabled=FALSE
sga_target=6144M
processes=200
db_create_file_dest=/u01/dump
log_archive_dest_1='location=/u01/dump'
#No auxiliary parameter file used


starting up automatic instance ORCL

Oracle instance started

Total System Global Area    6442448984 bytes

Fixed Size                     8910936 bytes
Variable Size               1107296256 bytes
Database Buffers            5318377472 bytes
Redo Buffers                   7864320 bytes
Automatic instance created

contents of Memory Script:
{
# set requested point in time
set until  time "to_date('2024-06-13 11:10:10','yyyy-mm-dd hh24:mi:ss')";
# restore the controlfile
restore clone controlfile;
 
# mount the controlfile
sql clone 'alter database mount clone database';
 
# archive current online log 
sql 'alter system archive log current';
}
executing Memory Script

executing command: SET until clause

Starting restore at 2024-06-13 11:12:23
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=169 device type=DISK

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: reading from backup piece /u01/backup/ctl_spf_c-1699315892-20240613-00.BKU
channel ORA_AUX_DISK_1: piece handle=/u01/backup/ctl_spf_c-1699315892-20240613-00.BKU tag=TAG20240613T110741
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/dump/ORCL/controlfile/o1_mf_m6nrwr5f_.ctl
Finished restore at 2024-06-13 11:12:25

sql statement: alter database mount clone database

sql statement: alter system archive log current

contents of Memory Script:
{
# set requested point in time
set until  time "to_date('2024-06-13 11:10:10','yyyy-mm-dd hh24:mi:ss')";
# set destinations for recovery set and auxiliary set datafiles
set newname for clone datafile  1 to new;
set newname for clone datafile  4 to new;
set newname for clone datafile  3 to new;
set newname for clone tempfile  1 to new;
# switch all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set and the auxiliary set
restore clone datafile  1, 4, 3;
 
switch clone datafile all;
}
executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

renamed tempfile 1 to /u01/dump/ORCL/datafile/o1_mf_temp_%u_.tmp in control file

Starting restore at 2024-06-13 11:12:29
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /u01/dump/ORCL/datafile/o1_mf_system_%u_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00004 to /u01/dump/ORCL/datafile/o1_mf_undotbs1_%u_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00003 to /u01/dump/ORCL/datafile/o1_mf_sysaux_%u_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/backup/zzh_full_022t8fks_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/backup/zzh_full_022t8fks_1_1.bkp tag=TAG20240613T110604
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:45
Finished restore at 2024-06-13 11:14:15

datafile 1 switched to datafile copy
input datafile copy RECID=4 STAMP=1171538055 file name=/u01/dump/ORCL/datafile/o1_mf_system_m6nrwybv_.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=5 STAMP=1171538055 file name=/u01/dump/ORCL/datafile/o1_mf_undotbs1_m6nrwyhw_.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=6 STAMP=1171538055 file name=/u01/dump/ORCL/datafile/o1_mf_sysaux_m6nrwygk_.dbf

contents of Memory Script:
{
# set requested point in time
set until  time "to_date('2024-06-13 11:10:10','yyyy-mm-dd hh24:mi:ss')";
# online the datafiles restored or switched
sql clone "alter database datafile  1 online";
sql clone "alter database datafile  4 online";
sql clone "alter database datafile  3 online";
# recover and open database read only
recover clone database tablespace  "SYSTEM", "UNDOTBS1", "SYSAUX";
sql clone 'alter database open read only';
}
executing Memory Script

executing command: SET until clause

sql statement: alter database datafile  1 online

sql statement: alter database datafile  4 online

sql statement: alter database datafile  3 online

Starting recover at 2024-06-13 11:14:15
using channel ORA_AUX_DISK_1

starting media recovery

archived log for thread 1 with sequence 6 is already on disk as file /u01/app/archivelog/1_6_1171535158.dbf
archived log for thread 1 with sequence 7 is already on disk as file /u01/app/archivelog/1_7_1171535158.dbf
archived log file name=/u01/app/archivelog/1_6_1171535158.dbf thread=1 sequence=6
archived log file name=/u01/app/archivelog/1_7_1171535158.dbf thread=1 sequence=7
media recovery complete, elapsed time: 00:00:01
Finished recover at 2024-06-13 11:14:18

sql statement: alter database open read only

contents of Memory Script:
{
   sql clone "create spfile from memory";
   shutdown clone immediate;
   startup clone nomount;
   sql clone "alter system set  control_files = 
  ''/u01/dump/ORCL/controlfile/o1_mf_m6nrwr5f_.ctl'' comment=
 ''RMAN set'' scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
# mount database
sql clone 'alter database mount clone database';
}
executing Memory Script

sql statement: create spfile from memory

database closed
database dismounted
Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area    6442448984 bytes

Fixed Size                     8910936 bytes
Variable Size               1107296256 bytes
Database Buffers            5318377472 bytes
Redo Buffers                   7864320 bytes

sql statement: alter system set  control_files =   ''/u01/dump/ORCL/controlfile/o1_mf_m6nrwr5f_.ctl'' comment= ''RMAN set'' scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area    6442448984 bytes

Fixed Size                     8910936 bytes
Variable Size               1107296256 bytes
Database Buffers            5318377472 bytes
Redo Buffers                   7864320 bytes

sql statement: alter database mount clone database

contents of Memory Script:
{
# set requested point in time
set until  time "to_date('2024-06-13 11:10:10','yyyy-mm-dd hh24:mi:ss')";
# set destinations for recovery set and auxiliary set datafiles
set newname for datafile  7 to new;
# restore the tablespaces in the recovery set and the auxiliary set
restore clone datafile  7;
 
switch clone datafile all;
}
executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

Starting restore at 2024-06-13 11:15:32
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=129 device type=DISK

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00007 to /u01/dump/PEPF_PITR_ORCL/datafile/o1_mf_users_%u_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/backup/zzh_full_022t8fks_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/backup/zzh_full_022t8fks_1_1.bkp tag=TAG20240613T110604
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2024-06-13 11:15:33

datafile 7 switched to datafile copy
input datafile copy RECID=8 STAMP=1171538133 file name=/u01/dump/PEPF_PITR_ORCL/datafile/o1_mf_users_m6ns2npg_.dbf

contents of Memory Script:
{
# set requested point in time
set until  time "to_date('2024-06-13 11:10:10','yyyy-mm-dd hh24:mi:ss')";
# online the datafiles restored or switched
sql clone "alter database datafile  7 online";
# recover and open resetlogs
recover clone database tablespace  "USERS", "SYSTEM", "UNDOTBS1", "SYSAUX" delete archivelog;
alter clone database open resetlogs;
}
executing Memory Script

executing command: SET until clause

sql statement: alter database datafile  7 online

Starting recover at 2024-06-13 11:15:33
using channel ORA_AUX_DISK_1

starting media recovery

archived log for thread 1 with sequence 6 is already on disk as file /u01/app/archivelog/1_6_1171535158.dbf
archived log for thread 1 with sequence 7 is already on disk as file /u01/app/archivelog/1_7_1171535158.dbf
archived log file name=/u01/app/archivelog/1_6_1171535158.dbf thread=1 sequence=6
archived log file name=/u01/app/archivelog/1_7_1171535158.dbf thread=1 sequence=7
media recovery complete, elapsed time: 00:00:01
Finished recover at 2024-06-13 11:15:36

database opened

contents of Memory Script:
{
# create directory for datapump import
sql "create or replace directory TSPITR_DIROBJ_DPDIR as ''
/u01/dump''";
# create directory for datapump export
sql clone "create or replace directory TSPITR_DIROBJ_DPDIR as ''
/u01/dump''";
}
executing Memory Script

sql statement: create or replace directory TSPITR_DIROBJ_DPDIR as ''/u01/dump''

sql statement: create or replace directory TSPITR_DIROBJ_DPDIR as ''/u01/dump''

Performing export of tables...
   EXPDP> Starting "SYS"."TSPITR_EXP_pEpF_nBqn":  
   EXPDP> Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
   EXPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
   EXPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
   EXPDP> Processing object type TABLE_EXPORT/TABLE/TABLE
   EXPDP> . . exported "ZZH"."OBJ_TB"                              9.543 MB   72373 rows
   EXPDP> Master table "SYS"."TSPITR_EXP_pEpF_nBqn" successfully loaded/unloaded
   EXPDP> ******************************************************************************
   EXPDP> Dump file set for SYS.TSPITR_EXP_pEpF_nBqn is:
   EXPDP>   /u01/dump/tspitr_pEpF_92746.dmp
   EXPDP> Job "SYS"."TSPITR_EXP_pEpF_nBqn" successfully completed at Thu Jun 13 11:16:11 2024 elapsed 0 00:00:22
Export completed


contents of Memory Script:
{
# shutdown clone before import
shutdown clone abort
}
executing Memory Script

Oracle instance shut down

Performing import of tables...
   IMPDP> Master table "SYS"."TSPITR_IMP_pEpF_Blkh" successfully loaded/unloaded
   IMPDP> Starting "SYS"."TSPITR_IMP_pEpF_Blkh":  
   IMPDP> Processing object type TABLE_EXPORT/TABLE/TABLE
   IMPDP> Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
   IMPDP> . . imported "ZZH"."OBJ_TB"                              9.543 MB   72373 rows
   IMPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
   IMPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
   IMPDP> Job "SYS"."TSPITR_IMP_pEpF_Blkh" successfully completed at Thu Jun 13 11:16:44 2024 elapsed 0 00:00:25
Import completed


Removing automatic instance
Automatic instance removed
auxiliary instance file /u01/dump/ORCL/datafile/o1_mf_temp_m6ns0c2n_.tmp deleted
auxiliary instance file /u01/dump/PEPF_PITR_ORCL/onlinelog/o1_mf_3_m6ns2rcv_.log deleted
auxiliary instance file /u01/dump/PEPF_PITR_ORCL/onlinelog/o1_mf_2_m6ns2rb4_.log deleted
auxiliary instance file /u01/dump/PEPF_PITR_ORCL/onlinelog/o1_mf_1_m6ns2r8p_.log deleted
auxiliary instance file /u01/dump/PEPF_PITR_ORCL/datafile/o1_mf_users_m6ns2npg_.dbf deleted
auxiliary instance file /u01/dump/ORCL/datafile/o1_mf_sysaux_m6nrwygk_.dbf deleted
auxiliary instance file /u01/dump/ORCL/datafile/o1_mf_undotbs1_m6nrwyhw_.dbf deleted
auxiliary instance file /u01/dump/ORCL/datafile/o1_mf_system_m6nrwybv_.dbf deleted
auxiliary instance file /u01/dump/ORCL/controlfile/o1_mf_m6nrwr5f_.ctl deleted
auxiliary instance file tspitr_pEpF_92746.dmp deleted
Finished recover at 2024-06-13 11:16:46

RMAN> 

5、RMAN成功后查询并验证表是否恢复
SQL> select count(*) from obj_tb;

  COUNT(*)
----------
     72373
经过验证被误删除的表成功恢复。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/26343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

博客摘录「 AXI三种接口及DMA DDR XDMA介绍(应用于vivado中的ip调用)」2024年6月10日

关键要点: 1.AXI Stream经过协议转换可使用AXI_FULL(PS与PL间的接口,如GP、HP和ACP)。 2.传输数据类里就涉及一个握手协议,即在主从双方数据通信前,有一个握手的过程。基本内容:数据的传输源会…

浅谈配置元件之HTTP请求默认值

浅谈配置元件之HTTP请求默认值 在进行HTTP请求的测试计划设计时,"HTTP请求默认值"配置元件扮演着极其重要的角色,它能够简化测试计划的设置,提高测试效率。本问将详细介绍如何使用JMeter中的“HTTP请求默认值”配置元件。 HTTP请求…

rocketmq-5.1.2的dleger高可用集群部署

1、背景 原先为5.0.0版本,因检查出有漏洞,升级到5.1.2版本。 【Rocketmq是阿里巴巴在2012年开发的分布式消息中间件,专为万亿级超大规模的消息处理而设计,具有高吞吐量、低延迟、海量堆积、顺序收发等特点。在一定条件下&#xf…

天锐绿盾 | 无感知加密软件、透明加密系统、数据防泄漏软件

摘要:文件加密软件,包含禁止非授权的文件泄密和抄袭复制解决方案即使被复制泄密都是自动加密无法阅读,透明加密,反复制软件,内网监控,文件加密,网络安全方案,透明文件加密,加密文件,图纸加密,知识产权保护,加密数据; 通过绿盾信息安全管理软件,系统在不改…

3D线扫相机中的深度数据与激光反射强度数据获取及其应用

1. 引言 3D线扫相机(3D line scan camera)是一种高精度的三维测量设备,广泛应用于工业自动化、质量控制和精密测量等领域。与传统二维成像相机不同,3D线扫相机能够同时获取物体的深度信息和反射强度信息,从而为高精度…

传统工厂该如何做数字化转型?

传统工厂实现数字化转型需多方面着手,包括树立战略意识、明确目标规划,加强信息化建设、提升数据能力,培养引进人才、推动技术创新,优化业务流程、提高生产效率与质量管控,加强协同合作、实现产业链整合,建…

力扣爆刷第150天之TOP100五连刷(几数之和、堆排、合并链表)

力扣爆刷第150天之TOP100五连刷(几数之和、堆排、合并链表) 文章目录 力扣爆刷第150天之TOP100五连刷(几数之和、堆排、合并链表)一、15. 三数之和二、53. 最大子数组和三、912. 排序数组四、21. 合并两个有序链表五、1. 两数之和…

【CH32V305FBP6】USBD HS 中断分析

文章目录 前言中断分析 USBHS_IRQHandler传输完成:USBHS_UIF_TRANSFERTOKEN_IN:发送完成TOKEN_OUT:接收完成 描述符:USBHS_UIF_SETUP_ACT总线复位:USBHS_UIF_BUS_RST总线挂起:USBHS_UIF_SUSPEND 前言 所有…

JavaScript创建函数和对象的常用方法

简介 随着版本的更新,JavaScript中存在大量的创建函数和对象的方法,下面是一些常见的方式以及对应的优缺点,内容参考:ES6 入门教程 创建函数 1. 函数声明(Function Declaration) function myFunction(a…

np.arctan2和np.arctan

np.arctan2 和 np.arctan 都是用于计算反正切函数的 NumPy 函数,但它们的使用和功能有所不同。 np.arctan2 np.arctan2(y, x) 计算 atan2(y,x),即从坐标 (x,y)到原点的角度(弧度)。它考虑了两个参数的符号来确定正确的象限&…

神经网络 torch.nn---nn.RNN()

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) RNN — PyTorch 2.3 documentation torch.nn---nn.RNN() nn.RNN(input_sizeinput_x,hidden_sizehidden_num,num_layers1,nonlinearitytanh, #默认tanhbiasTrue, #默认是Truebatch_firstFalse,dropout0,bidirection…

Android开发之音乐播放器添加排行需求

Music统计功能需求 1.记录歌曲名称与次数(歌曲播放结束算一次),根据播放次数制作一个排行列表;(开始说要记录歌手,后面debug发现这个字段没有,暂时不记录) 2.记录播放歌曲的时长,时间累加;&…

sourcemap

sourcemap介绍 什么是sourceMap sourcemap是为了解决开发代码与实际运行代码不一致时帮助我们debug到原始开发代码的技术webpack通过配置可以自动给我们source maps文件,map文件是一种对应编译文件和源文件的方法 类型含义source-map原始代码 最好的sourcemap质量…

element table 点击某一行中按钮加载

在Element UI中,实现表格(element-table)中的这种功能通常涉及到数据处理和状态管理。当你点击某一行的按钮时,其他行的按钮需要动态地切换为加载状态,这可以通过以下步骤实现: 1.表格组件:使用…

一文读懂Web Codecs API:浏览器背后的媒体魔术师

引言 ​在早期的Web 网页中,视频播放通常要依靠 Flash 和 Silverlight 等插件来完成,浏览器是不支持直接播放视频的。 随着网络技术的发展,视频这种媒体方式的需求变得普遍,HTML5中,出现了一个新的元素Video&#xf…

【全开源】旅行吧旅游门票预订系统源码(FastAdmin+ThinkPHP+Uniapp)

🌍旅游门票预订系统:畅游世界,一键预订 一款基于FastAdminThinkPHPUniapp开发的旅游门票预订系统,支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统,提供前后台无加密源码,支…

RabbitMQ延迟消息(通过死信交换机实现)

延迟消息:生产者发送消息时指定一个时间,消费者不会立刻收到消息,而是在指定时间后才收到消息 通过DLX和TTL模拟出延迟队列的功能,即,消息发送以后,不让消费者拿到,而是等待过期时间&#xff0…

山东大学软件学院多核平台上的并行计算期末回忆版

(2021级,大数据专业,老师是lwg和yzk,考题全是考前老师说的原题,毫无变化,最终期末分还是看实验情况多一些,但是老师到底是怎么比较的大家的实验性能,让我很头大,晕~&…

linux驱动学习(十三)之锁

需要板子一起学习的可以这里购买(含资料):点击跳转 一、锁的作用 1、同步和互斥 1)同步:同一件事情的依次处理,数据的接收---> 数据的处理 --->数据的发送 2)互斥---- 防止对临界资源的竞争,在一个时刻&#…

18. SDP协议

SDP协议描述 SDP(Session Description Protocol)它只是一种信息格式的描述标准&#xff0c;本身不属于传输协议&#xff0c;但是可以被其他传输协议用来交换必要的信息。 SDP规范 多个媒体级描述 一个会话级描述 由多个<type><value>组成 会话层 会话的名称与目…