Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1693500
  • 博文数量: 136
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3261
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-22 11:26
文章分类

全部博文(136)

文章存档

2010年(1)

2009年(26)

2008年(109)

我的朋友

分类: Oracle

2008-03-11 17:40:13

-- 1. 版本及闪回区信息
SQL> select * from v$version;
 
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
 
-- 闪回区路径及最大大小
SQL> set linesize 1000
SQL> show parameter db_recover
 
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- -----------------------------
db_recovery_file_dest                string                 D:\oracle/flash_recovery_area
db_recovery_file_dest_size           big integer            2G
-- 闪回区数据保持时间(分钟)
SQL> show parameter flash
 
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------
db_flashback_retention_target        integer                1440
SQL> select 1440/60 hours from dual;
 
     HOURS
----------
        24
 
SQL> shut
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
 
Total System Global Area  289406976 bytes
Fixed Size                  1248600 bytes
Variable Size             109052584 bytes
Database Buffers          176160768 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
-- 2. 开启数据库闪回(归档下才可开启数据库闪回)
SQL> alter database flashback on;
alter database flashback on
*
第 1 行出现错误:
ORA-38706: 无法启用 FLASHBACK DATABASE 事件记录。
ORA-38707: 尚未启用介质恢复。
 

SQL> alter database flashback on;
alter database flashback on
*
第 1 行出现错误:
ORA-38706: 无法启用 FLASHBACK DATABASE 事件记录。
ORA-38707: 尚未启用介质恢复。
 

SQL> archive log list
数据库日志模式             非存档模式
自动存档             禁用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     287
当前日志序列           289
SQL> alter database archivelog;
 
数据库已更改。
 
SQL> archive log list
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     287
下一个存档日志序列   289
当前日志序列           289
SQL> alter database flashback on;
 
数据库已更改。
 
SQL> alter database open;
 
数据库已更改。
 
-- 最早恢复到的事件点
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
 
会话已更改。
 
SQL> select * from v$flashback_database_log;
 
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
-------------------- ------------------- ---------------- -------------- ------------------------
           464604298 2008-03-11 16:51:50             1440        8192000                        0
 
-- 3. 数据库闪回测试
-- 3.1 创建并损坏数据
SQL> create table t1 as select * from dba_objects;
 
表已创建。
 
SQL> create table t2 as select * from dba_objects;
 
表已创建。
 
SQL> create table t3 as select * from dba_objects;
 
表已创建。
 
SQL> select sysdate from dual;
 
SYSDATE
-------------------
2008-03-11 16:58:23
 
SQL> drop table t2;
 
表已删除。
 
SQL> truncate table t3;
 
表被截断。
 
-- 3.2 闪回数据库
SQL> flashback database to timestamp(to_date('2008-03-11 16:58:23', 'yyyy-mm-dd hh24:mi:ss'));
flashback database to timestamp(to_date('2008-03-11 16:58:23', 'yyyy-mm-dd hh24:mi:ss'))
*
第 1 行出现错误:
ORA-38757: 要闪回数据库, 数据库必须已装载但不能打开。
 

SQL> shut
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
 
Total System Global Area  289406976 bytes
Fixed Size                  1248600 bytes
Variable Size             113246888 bytes
Database Buffers          171966464 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
SQL> flashback database to timestamp(to_date('2008-03-11 16:58:23', 'yyyy-mm-dd hh24:mi:ss'));
 
闪回完成。
 
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
 

SQL> alter database open resetlogs;
 
数据库已更改。
 
-- 4. 检查闪回结果
SQL> select count(*) from t1;
 
  COUNT(*)
----------
     50191
 
SQL> select count(*) from t2;
 
  COUNT(*)
----------
     50192
 
SQL> select count(*) from t3;
 
  COUNT(*)
----------
     50193
 
SQL>
 
-- 5. 关闭数据库闪回
SQL> shut
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
 
Total System Global Area  289406976 bytes
Fixed Size                  1248600 bytes
Variable Size             117441192 bytes
Database Buffers          167772160 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
SQL> alter database flashback off;
 
数据库已更改。
 
SQL> alter database open;
 
数据库已更改。
 
SQL>
 
参考《flashback database》  -- by piner
阅读(3263) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~