ITPub博客

首页 > Linux操作系统 > Linux操作系统 > restore point特色二&闪回数据库特性(三)

restore point特色二&闪回数据库特性(三)

原创 Linux操作系统 作者:赵宇 时间:2008-04-29 12:22:13 0 删除 编辑

之所以这个题目这么写,是因为可靠的还原点,隐式地打开数据库的闪回特性,启动闪回日志,但是只是针对这个还原点,即使不做alter database flashback on;也可以做flashback database操作,但又不能做flashback database to scn的指定闪回数据库操作,特色而已.

 

创建可靠的还原点,在关闭数据库的情况下:

SQL> conn / as sysdba
已连接。
SQL>  create restore point before_drop guarantee flashback database;

create restore point before_drop guarantee flashback database
*
第 1 行出现错误:
ORA-38784: 无法创建还原点 'BEFORE_DROP'。
ORA-38785: 必须对可靠的还原点启用介质恢复。


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

Total System Global Area  612368384 bytes
Fixed Size                  1298184 bytes
Variable Size             171966712 bytes
Database Buffers          436207616 bytes
Redo Buffers                2895872 bytes
数据库装载完毕。
SQL> archive log list
数据库日志模式             非存档模式
自动存档             禁用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     4
当前日志序列           6
SQL> show parameter log_archive

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_config                   string
log_archive_dest                     string
log_archive_dest_1                   string
log_archive_dest_10                  string
log_archive_dest_2                   string
log_archive_dest_3                   string
log_archive_dest_4                   string
log_archive_dest_5                   string
log_archive_dest_6                   string
log_archive_dest_7                   string
log_archive_dest_8                   string

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_9                   string
log_archive_dest_state_1             string      enable
log_archive_dest_state_10            string      enable
log_archive_dest_state_2             string      enable
log_archive_dest_state_3             string      enable
log_archive_dest_state_4             string      enable
log_archive_dest_state_5             string      enable
log_archive_dest_state_6             string      enable
log_archive_dest_state_7             string      enable
log_archive_dest_state_8             string      enable
log_archive_dest_state_9             string      enable

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_duplex_dest              string
log_archive_format                   string      ARC%S_%R.%T
log_archive_local_first              boolean     TRUE
log_archive_max_processes            integer     2
log_archive_min_succeed_dest         integer     1
log_archive_start                    boolean     FALSE
log_archive_trace                    integer     0
SQL> alter database archivelog;

数据库已更改。

SQL> archive log list
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     4
下一个存档日志序列   6
当前日志序列           6
SQL> alter database open;

数据库已更改。

SQL> create restore point before_drop guarantee flashback database;
create restore point before_drop guarantee flashback database
*
第 1 行出现错误:
ORA-38784: 无法创建还原点 'BEFORE_DROP'。
ORA-38787: 在闪回数据库处于关闭状态时, 创建第一个可靠还原点需要装载模式。


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

Total System Global Area  612368384 bytes
Fixed Size                  1298184 bytes
Variable Size             171966712 bytes
Database Buffers          436207616 bytes
Redo Buffers                2895872 bytes
数据库装载完毕。
SQL>
SQL> create restore point before_drop guarantee flashback database;

还原点已创建。

SQL>

SQL> conn / as sysdba
已连接。
SQL> select flashback_on from v$database;

FLASHBACK_ON
----------------------------------------------------------------------
RESTORE POINT ONLY

SQL> alter database open;

数据库已更改。


我们可以发现创建可靠的还原点以后,数据库默认打开flashback database log,但是只保存针对这个还原点的日志,我们测试一下,
是否可以还原到中间时刻

SQL> conn scott/tiger
已连接。

SQL> select count(*) from emp2;

  COUNT(*)
----------
        14

SQL> insert into emp2 select * from emp2;

已创建14行。

SQL> /

已创建28行。

SQL> /

已创建56行。

SQL> /

已创建112行。

SQL> /

已创建224行。

SQL> /

已创建448行。

SQL> /

已创建896行。

SQL> /

已创建1792行。

SQL> /

已创建3584行。

SQL> commit;

提交完成。

SQL> select distinct ora_rowscn from emp2;

ORA_ROWSCN
----------
    659777
    658468


SQL> conn / as sysdba
已连接。
SQL> select * from v$restore_point;

       SCN DATABASE_INCARNATION# GUA STORAGE_SIZE TIME                                     NAME
---------- --------------------- --- ------------ ---------------------------------------- -----------------------------
    658906                     2 YES      8192000 27-4月 -08 08.18.49.000000000 下午       BEFORE_DROP


SQL> conn scott/tiger
已连接。
SQL> delete from emp2 where rownum<1000;

已删除999行。

SQL> commit;

提交完成。


SQL> select distinct ora_rowscn from emp2;

ORA_ROWSCN
----------
    659777
    660070


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

Total System Global Area  612368384 bytes
Fixed Size                  1298184 bytes
Variable Size             171966712 bytes
Database Buffers          436207616 bytes
Redo Buffers                2895872 bytes
数据库装载完毕。
SQL>


SQL> flashback database to scn 658468;
flashback database to scn 658468
*
第 1 行出现错误:
ORA-38726: 未启用闪回数据库事件记录。


SQL> select * from v$flashback_database_log;

OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
-------------------- ------------------- ---------------- -------------- ------------------------
              658906 2008-04-27 20:18:49             1440        8192000                        0

SQL> flashback database to scn 658906;
flashback database to scn 658906
*
第 1 行出现错误:
ORA-38726: 未启用闪回数据库事件记录。


SQL> flashback database to restore point BEFORE_DROP;

闪回完成。

仅仅能执行这个闪回数据库操作,不能针对SCN,闪回数据库在未做alter database flashback on的情况下,只能
闪回到还原点.

SQL> alter database open read only;

数据库已更改。

SQL> select distinct ora_rowscn from scott.emp2;

ORA_ROWSCN
----------
    658468

SQL> select count(*) from scott.emp2;

  COUNT(*)
----------
        14

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/175005/viewspace-255694/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-25

  • 博文量
    73
  • 访问量
    916780