Oracle-35-闪回数据库

通过引入闪回日志和归档日志将数据库还原到某个历史时间点,但有几种误操作是无法还原的:删除表空间、删除数据文件、对数据文件进行resize、重建控制文件、使用nologing子句、resetlog等

首先查看数据库是否开启闪回功能

SYS@ orcl>select flashback_on from v$database;

FLASHBACK_ON
------------------
NO

Elapsed: 00:00:00.01
SYS@ orcl>alter database flashback on;

Database altered.

Elapsed: 00:00:00.35

开启闪回功能后会有闪回日志

[oracle@RHEL6 ~]$ su - grid
Password: 
[grid@RHEL6 ~]$ asmcmd -p
ASMCMD [+] > cd flash
ASMCMD [+flash] > cd orcl
ASMCMD [+flash/orcl] > cd flashback
ASMCMD [+flash/orcl/flashback] > ls
log_1.298.982857115
ASMCMD [+flash/orcl/flashback] > 

查看日志信息

SYS@ orcl>alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

Session altered.

Elapsed: 00:00:00.00
SYS@ orcl>select OLDEST_FLASHBACK_SCN,OLDEST_FLASHBACK_TIME from v$flashback_database_log;

OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI
-------------------- -------------------
             1255671 2018-07-30 15:51:55

Elapsed: 00:00:00.07
SYS@ orcl>

查看允许闪回的时间限制

SYS@ orcl>show parameter flashback

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     1440
SYS@ orcl>

我们也可以创建还原点

SYS@ orcl>create restore point before_drop_emp;

Restore point created.

Elapsed: 00:00:00.04

查看还原点信息

SYS@ orcl>col name for a20
SYS@ orcl>select NAME,SCN,TIME from v$restore_point;

NAME                        SCN TIME
-------------------- ---------- ---------------------------------------------------------------------------
BEFORE_DROP_EMP         1256695 30-JUL-18 04.31.47.000000000 PM

Elapsed: 00:00:00.01

 模拟DML语句误操作

SYS@ orcl>drop table scott.e1 purge;

Table dropped.

Elapsed: 00:00:00.11

我们利用闪回数据库修复数据,需要数据库在mount状态下

SYS@ orcl>shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@ orcl>startup mount
ORACLE instance started.

Total System Global Area  784998400 bytes
Fixed Size                  2217464 bytes
Variable Size             528484872 bytes
Database Buffers          251658240 bytes
Redo Buffers                2637824 bytes
Database mounted.
SYS@ orcl>flashback database to restore point before_drop_emp;

Flashback complete.

Elapsed: 00:00:00.73

闪回后我们使用只读打开数据库

SYS@ orcl>alter database open read only;

Database altered.

Elapsed: 00:00:02.12
SYS@ orcl>select * from scott.e1;

     EMPNO ENAME      JOB              MGR HIREDATE                  SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------ ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80                1125                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81                1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81                1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81                2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81                1250       1400         30
      7698 BLAKE      MANAGER         7839 01-MAY-81                2850                    30
      7782 CLARK      MANAGER         7839 09-JUN-81                2450                    10
      7788 SCOTT      ANALYST         7566 19-APR-87                3000                    20
      7839 KING       PRESIDENT            17-NOV-81                5000                    10
      7844 TURNER     SALESMAN        7698 08-SEP-81                1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87                1100                    20
      7900 JAMES      CLERK           7698 03-DEC-81                 950                    30
      7902 FORD       ANALYST         7566 03-DEC-81                3000                    20
      7934 MILLER     CLERK           7782 23-JAN-82                1300                    10

14 rows selected.

Elapsed: 00:00:00.02

数据库闪回后必须用resetlog方式打开

SYS@ orcl>shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@ orcl>startup
ORACLE instance started.

Total System Global Area  784998400 bytes
Fixed Size                  2217464 bytes
Variable Size             528484872 bytes
Database Buffers          251658240 bytes
Redo Buffers                2637824 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


SYS@ orcl>alter database open resetlogs;

Database altered.

Elapsed: 00:00:07.58

猜你喜欢

转载自blog.csdn.net/Paul_George/article/details/81281206
今日推荐