Oracle flashback database to scn 实战

SQL> select * from user_tables where table_name like '%TEST%';

未选定行

SQL> select (table_name) from user_tables;

TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE

SQL> discon;
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
SQL> conn /as sysdba;
已连接。
SQL> shutdown;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              92276068 bytes
Database Buffers           71303168 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
SQL> flashback database wdb to scn 728829;

闪回完成。

SQL> alter database wdb open resetlogs;

数据库已更改。

SQL> discon
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
SQL> conn scott/huaqin@wdb;
已连接。
SQL> select table_name from user_tables;

TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE

SQL> select current_scn from V$database;

CURRENT_SCN
-----------
     729799

SQL> who;
SP2-0042: 未知命令 "who" - 其余行忽略。
SQL> shutdown;
ORA-01031: 权限不足
SQL> conn /as sysdba;
已连接。
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              92276068 bytes
Database Buffers           71303168 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。

##################################################
# 1.修改数据库为非归档模式                       #
##################################################
SQL> alter database NOARCHIVELOG;
alter database NOARCHIVELOG
*
第 1 行出现错误:
ORA-38774: 无法禁用介质恢复 - 闪回数据库已启用


SQL> select open_mode from V$database;

OPEN_MODE
----------
MOUNTED

SQL> shutdown;
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount;
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              92276068 bytes
Database Buffers           71303168 bytes
Redo Buffers                2945024 bytes
SQL> alter database noarchive;
alter database noarchive
                       *
第 1 行出现错误:
ORA-02231: ALTER DATABASE ???????


SQL> alter database noarchives;
alter database noarchives
                        *
第 1 行出现错误:
ORA-02231: ALTER DATABASE ???????


SQL> alter database flashback off;
alter database flashback off
*
第 1 行出现错误:
ORA-01507: ??????


SQL> alter database mount;

数据库已更改。

SQL> alter database flashback off;

数据库已更改。

SQL> alter database noarchivelog;

数据库已更改。

SQL> select flashback_on,log_mode from v$database;

FLASHBACK_ON       LOG_MODE
------------------ ------------
NO                 NOARCHIVELOG

##################################################
# 2.打开数据库                                   #
##################################################
SQL> alter database open;

数据库已更改。

SQL> conn scott/huaqin@wdb;
已连接。
SQL> desc recyclebin;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 OBJECT_NAME                               NOT NULL VARCHAR2(30)
 ORIGINAL_NAME                                      VARCHAR2(32)
 OPERATION                                          VARCHAR2(9)
 TYPE                                               VARCHAR2(25)
 TS_NAME                                            VARCHAR2(30)
 CREATETIME                                         VARCHAR2(19)
 DROPTIME                                           VARCHAR2(19)
 DROPSCN                                            NUMBER
 PARTITION_NAME                                     VARCHAR2(32)
 CAN_UNDROP                                         VARCHAR2(3)
 CAN_PURGE                                          VARCHAR2(3)
 RELATED                                   NOT NULL NUMBER
 BASE_OBJECT                               NOT NULL NUMBER
 PURGE_OBJECT                              NOT NULL NUMBER
 SPACE                                              NUMBER

SQL> select object_name ,type from recyclebin;

未选定行

SQL> select table_name from user_tables;

TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE

SQL> create table test(log_date date);

表已创建。

SQL> insert into test values (sysdate);

已创建 1 行。
##################################################
# 3.获取插入数据之后的scn                       #
##################################################
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
     731999

SQL> select * from test;

LOG_DATE
--------------
08-8月 -07

SQL> delete from test;

已删除 1 行。
##################################################
# 4.获取删除数据之后的scn                       #
##################################################
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
     732023

SQL> commit;

提交完成。

SQL> select * from test;

未选定行

SQL> insert into test values (sysdate);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from test;

LOG_DATE
--------------
08-8月 -07
##################################################
# 5.插入数据之后的SCN                       #
##################################################
SQL> select current_scn from V$database;

CURRENT_SCN
-----------
     732065

SQL> delete from test;

已删除 1 行。

SQL> commit;

提交完成。

SQL> select * from test;

未选定行
##################################################
# 6.删除数据之后的SCN                       #
##################################################
SQL> select current_scn from V$Database;

CURRENT_SCN
-----------
     732093

SQL> conn /as sysdba;
已连接。
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              92276068 bytes
Database Buffers           71303168 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
SQL> alter database flashback on;
alter database flashback on
*
第 1 行出现错误:
ORA-38706: 无法启用 FLASHBACK DATABASE 事件记录。
ORA-38707: 尚未启用介质恢复。


SQL> alter database archivelog;

数据库已更改。

SQL> alter database flashback on;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> conn scott/huaqin@wdb;
已连接。
SQL> select * from test;

未选定行

SQL> flashback database to scn 732065;
flashback database to scn 732065
*
第 1 行出现错误:
ORA-01031: 权限不足


SQL> conn /as sysdba;
已连接。
SQL> flashback database to scn 732065;
flashback database to scn 732065
*
第 1 行出现错误:
ORA-38757: 要闪回数据库, 数据库必须已装载但不能打开。


SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              92276068 bytes
Database Buffers           71303168 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
##################################################################################
# 7.因为之恢复之前前没有打开归档模式,也没有打开FSASHBACK特性,所以闪回数据库失败#                       #
##################################################################################
SQL> flashback database to scn 732065;
flashback database to scn 732065
*
第 1 行出现错误:
ORA-38729: 执行 FLASHBACK 的闪回数据库日志数据不足。


SQL> alter database open;

数据库已更改。
########################################
#察看是否已经打开归档模式和flashback特性
########################################
SQL> select open_mode,log_mode from v$database;

OPEN_MODE  LOG_MODE
---------- ------------
READ WRITE ARCHIVELOG

SQL> select open_mode,log_mode,flashback_on from v$database;

OPEN_MODE  LOG_MODE     FLASHBACK_ON
---------- ------------ ------------------
READ WRITE ARCHIVELOG   YES

SQL> conn scott/huaqin@wdb
已连接。
SQL> select * from test;

未选定行

SQL> select current_scn from V$database;

CURRENT_SCN
-----------
     732863

SQL> insert into test values(sysdate);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from test;

LOG_DATE
--------------
08-8月 -07

SQL> select current_scn from V$database;

CURRENT_SCN
-----------
     732884

SQL> discon;
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
SQL> conn /as sysdba;
已连接。
SQL> shutdown;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              92276068 bytes
Database Buffers           71303168 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
SQL> flashback database to scn 732863;

闪回完成。

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项


SQL> alter database open resetlog;
alter database open resetlog
                    *
第 1 行出现错误:
ORA-02288: 无效的 OPEN 模式


SQL> alter database open resetlogs;

数据库已更改。

SQL> conn scott/huaqin@wdb;
已连接。
##################################################
# 成功恢复到插入数据之前                       #
##################################################
SQL> select * from test;

未选定行

SQL>

你可能感兴趣的:(Oracle flashback database to scn 实战)