ORACLE restore point

来源:互联网 发布:怎样做淘宝优惠券代理 编辑:程序博客网 时间:2024/05/16 15:12

最近一段时间由于工作方向的变化,对ORACLE的关注少了些。近日在看RMAN相关书籍时,谈到当 flashback recovery area 空间不够时,可以删除些不需要的Restore Point ,才了解到Restore Point。

 

以前在使用FlashBack时,常常需要记住Timestamp或者SCN ,10GR2引入Restore Point 后,只需命名Restore Point 即可将数据库或者表FlashBack创建Restore Point 点。

以下是我实验的一段例子:

SQL> show user
USER 为 "SYS"

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

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


SQL> show parameter recov

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 0
recovery_parallelism integer 0


SQL> alter system set db_recovery_file_dest_size =4G scope=both
2 ;

系统已更改。

SQL> alter system set db_recovery_file_dest ='d:/recovery' scope=both;

系统已更改。

SQL> alter database flashback on ;

数据库已更改。

SQL> alter database open ;

数据库已更改。
SQL> conn system/manager
已连接。

SQL> create table test as select * from all_tables ;

表已创建。

SQL> select count(*) from test ;

COUNT(*)
----------
1527

SQL> create restore point b ;

还原点已创建。

SQL> drop table test ;

表已删除。

SQL> purge recyclebin;

回收站已清空。

 

SQL> flashback table test to restore point b ;
flashback table test to restore point b
*
第 1 行出现错误:
ORA-00942: 表或视图不存在


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


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


SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。

Total System Global Area 167772160 bytes
Fixed Size 1295632 bytes
Variable Size 100666096 bytes
Database Buffers 62914560 bytes
Redo Buffers 2895872 bytes
数据库装载完毕。
SQL> flashback database to restore point b ;

闪回完成。

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


SQL> alter database open RESETLOGS ;

数据库已更改。

SQL> select count(*) from system.test ;

COUNT(*)
----------
1527

SQL> select name from v$restore_point ;

NAME
--------------------------------------------------------------------------------
B

SQL> drop restore point b ;

还原点已删除。

SQL> conn system/manager
已连接。
SQL> delete from test ;

已删除1527行。

SQL> rollback ;

回退已完成。

SQL> create restore point b ;

还原点已创建。

SQL> delete from test ;

已删除1527行。

SQL> commit;

提交完成。

SQL> select count(*) from test ;

COUNT(*)
----------
0

SQL> flashback table test to restore point b ;
flashback table test to restore point b
*
第 1 行出现错误:
ORA-08189: 因为未启用行移动功能, 不能闪回表


SQL> alter table test enable row movement ;

表已更改。

SQL> flashback table test to restore point b ;

闪回完成。

SQL> select count(*) from test ;

COUNT(*)
----------
1527

 

Technorati : restore point

原创粉丝点击