百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

详解Oracle数据库备份恢复---闪回机制,值得收藏!

sinye56 2024-09-19 02:15 4 浏览 0 评论

概述

Oracle 9i 开始支持闪回,Oracle10g开始全面支持闪回功能,Oracle11g有所完善,为我们快速的恢复数据,查询历史数据提供了很大的便捷方法。

今天主要对Oracle常用闪回使用做些详细介绍,其中对于不常用的事务和版本闪回,这里就不多做介绍了。


01

Oracle闪回概述

这里用表格来说明


02

Oracle闪回使用详解

1、闪回开启

(1)开启闪回必要条件

a.开启归档日志

SQL> archive log list; 
##如未开启,在mount状态执行alter database archivelog;

b.设置合理的闪回区

db_recovery_file_dest:指定闪回恢复区的位置

db_recovery_file_dest_size:指定闪回恢复区的可用空间大小

db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟(1天),实际取决于闪回区大小

(2)检查是否开启闪回

SQL> select flashback_on from v$database;

(3)开启闪回

a.开启归档

mount状态:alter database archivelog;

b.设置闪回区

SQL> alter system set db_recovery_file_dest='/home/U01/app/oracle/fast_recovery_area' scope=both;
SQL> alter system set db_recovery_file_dest_size=60G scope=both;
SQL> alter system set db_flashback_retention_target=4320 scope=both;

c.开启flashback (10g在mount开启)

SQL> alter database flashback on;

(4)确定闪回开启

SQL> select flashback_on from v$database;

2、闪回使用

(1)闪回查询

闪回查询主要是根据Undo表空间数据进行多版本查询,针对v$和x$动态性能视图无效,但对DBA_、ALL_、USER_是有效的

a.闪回查询

允许用户查询过去某个时间点的数据,用以重构由于意外删除或更改的数据,数据不会变化。

SQL> select * from scott.dept;
SQL> delete from scott.dept where deptno=40;
SQL> commit;
SQL> select * from scott.dept as of timestamp sysdate-10/1440;
SQL> select * from scott.dept as of timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss');

b.闪回版本查询

用于查询行级数据库随时间变化的方法

c.闪回事务查询

用于提供查看事务级别数据库变化的方法

(2)闪回表(update/insert/delete)

闪回表就是对表的数据做回退,回退到之前的某个时间点,其利用的是undo的历史数据,与undo_retention设置有关,默认是14400分钟(1天)。同样,sys用户表空间不支持闪回表,要想表闪回,需要允许表启动行迁移。

闪回表示例:

SQL> flashback table scott.dept to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss');
SQL> select row_movement from dba_tables where table_name='DEPT' and owner='SCOTT';
SQL> alter table scott.dept enable row movement; 
SQL> flashback table scott.dept to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss');
SQL> select * from scott.dept;
SQL> alter table scott.dept disable row movement;

(3)闪回DROP(drop table)

当一个表被drop掉,表会被放入recyclebin回收站,可通过回收站做表的闪回。表上的索引、约束等同样会被恢复。不支持sys/system用户表空间对象,可通过alter system set recyclebin=off;关闭回收站功能

即使不开始flashback,只要开启了recyclebin,那么就可以闪回DROP表。

但如果连续覆盖,就需要指定恢复的表名,如果已经存在表,则需要恢复重命名。

(4)闪回数据库(truncate/多表数据变更)

数据库闪回必须在mounted状态下进行,基于快照的可以再open下进行闪回库

闪回数据库主要是将数据库还原值过去的某个时间点或SCN,用于数据库出现逻辑错误时,需要open database resetlogs

a.全库闪回

闪回整个数据库到XX个时间点

b.快照闪回

针对主库和备库都可以创建闪回快照点,然后恢复到指定的快照点,但主库一旦恢复到快照点,备库的同步则需要重新同步

c.闪回snapshot standby

此功能在11GR2非常实用,可自动创建闪回点、开启闪回日志,可完成线上数据测试后,然后做数据库闪回恢复主备关系

(5)闪回归档(增加、修改、重命名、删除表的列、truncate表、修改表的约束、以及修改分区表的分区规范)


03

闪回语句

1、闪回数据库

FLASHBACK DATABASE TO TIMESTAMP to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS');
flashback database to scn 16813234;

2、闪回DROP

其中table_name可以是删除表名称,也可以是别名

flashback table table_name to before drop;
flashback table table_name to before drop rename to table_name_new;

3、闪回表

flashback table table_name to scn scn_number;
flashback table table_name to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS');

4、闪回查询

select * from table_name as of timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS');
select * from scott.dept as of scn 16801523;

5、闪回快照

create restore point before_20190518 guarantee flashback database;
flashback database to restore point before_20190518 ;

闪回这块的内容还是比较多的,后面我在单独整一个excel文档分享下吧,后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

相关推荐

RHEL8和CentOS8怎么重启网络

本文主要讲解如何重启RHEL8或者CentOS8网络以及如何解决RHEL8和CentOS8系统的网络管理服务报错,当我们安装好RHEL8或者CentOS8,重启启动网络时,会出现以下报错:...

Linux 内、外网双网卡路由配置

1.路由信息的影响Linux系统中如果有多张网卡的情况下,如果路由信息配置不正确,...

Linux——centos7修改网卡名

修改网卡名这个操作可能平时用不太上,可作为了解。修改网卡默认名从ens33改成eth01.首先修改网卡配置文件名(建议将原配置文件进行备份)...

CentOS7下修改网卡名称为ethX的操作方法

?Linux操作系统的网卡设备的传统命名方式是eth0、eth1、eth2等,而CentOS7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的...

Linux 网卡名称enss33修改为eth0

一、CentOS修改/etc/sysconfig/grub文件(修改前先备份)为GRUB_CMDLINE_LINUX变量增加2个参数(net.ifnames=0biosdevname=0),修改完成...

CentOS下双网卡绑定,实现带宽飞速

方式一1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件DEVICE=bond0IPADDR=191.3.60.1NETMASK=255.255.2...

linux 双网卡双网段设置路由转发

背景网络情况linux双网卡:网卡A(ens3)和网卡B(...

Linux-VMware设置网卡保持激活

Linux系统只有在激活网卡的状态下才能去连接网络,进行网络通讯。修改配置文件(永久激活网卡)...

VMware虚拟机三种网络模式

01.VMware虚拟机三种网络模式由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有v...

Rocky Linux 9/CentOS Stream 9修改网卡配置/自动修改主机名(实操)

推荐...

2023年最新版 linux克隆虚拟机 解决网卡uuid重复问题

问题描述1、克隆了虚拟机,两台虚拟机里面的ip以及网卡的uuid都是一样的2、ip好改,但是uuid如何改呢?解决问题1、每台主机应该保证网卡的UUID是唯一的,避免后面网络通信有问题...

Linux网卡的Vlan配置,你可能不了解的玩法

如果服务器上连的交换机端口已经预先设置了TRUNK,并允许特定的VLAN可以通过,那么服务器的网卡在配置时就必须指定所属的VLAN,否则就不通了,这种情形在虚拟化部署时较常见。例如在一个办公环境中,办...

Centos7 网卡绑定

1、切换到指定目录#备份网卡数据cd/etc/sysconfig/network-scriptscpifcfg-enp5s0f0ifcfg-enp5s0f0.bak...

Linux搭建nginx+keepalived 高可用(主备+双主模式)

一:keepalived简介反向代理及负载均衡参考:...

Linux下Route 路由指令使用详解

linuxroute命令用于显示和操作IP路由表。要实现两个不同子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该...

取消回复欢迎 发表评论: