Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103678507
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-05-19 15:36:02

出处:赛迪网 
 

配置重现数据库

以下的例子演示了命令行配置。这也可以用企业管理器来完成。

在我们配置重现数据库之前,我们需要照顾以下一些先决条件。

Flash Recovery Area

首先,我们需要配置一个Flash Recovery Area (FRA)。在10g中,这是个新东西,FRA只不过是一个恢复相关文件的磁盘定位。对于重现数据库,一个新的后台进程,名为Recovery Writer (RVWR),在来自SGA的数据库重现缓存的映像之前,阶段性地写入磁盘,作为FRA中的重现日志。重现日志是在FRA中由Oracle数据库自动管理的。

重现日志的成本是以空间和性能来衡量的。空间是数据库写密度的一个因素。一个24小时运行的,以5%的数据块写入作为重现日志的方式必然会导致磁盘整体空间的5%的增长。因为块是以规律的间隔写入的,而不是事务的一部分,所以对性能的影响是可以忽略不计的。

要配置FRA,你需要设置如下的初始化参数:

alter system set db_recovery_file_dest= 
  'C:\oracle\product\10.2.0\flash_recovery_area' scope=both;
alter system set db_recovery_file_dest_size = 10G scope=both;

存档

接下来,我们需要配置存档。再一次,我们需要使用FRA作为我们的文档日志目的地。与传统恢复类似,重现数据库需要存档以向前恢复提交的事务,在重现日志重新存储了希望时间之前的时点之后。

要最小化配置存档,执行如下的命令,按照顺序:

SQL> startup mount
ORACLE instance started.
.
.
.
Database mounted.

SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> archive log list

Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     2
Next log sequence to archive   4
Current log sequence           4

重现数据库

配置了这些先决条件之后,我们准备好配置重现数据库了。

首先,我们需要设置重现保持目标。这个初始化参数,以分钟来计算,代表我们可以把数据库返回到多长时间之前。它的值决定了FRA中重现日志的数量和时间段。下面我们的例子将其设置为24小时。要理解这个保持时间段并不是保证是非常重要的。如果FRA需要空间,重现日志将会自动删除目标保持时间点之前的记录。稍后我们会看到,我们保证重现日志的方式在FRA中进行维护。有了保持时间段设置,重现数据库可以激活。

SQL> startup mount;
ORACLE instance started.
.
.
.
Database mounted.

SQL> alter system set db_flashback_retention_target = 1440 scope=both;

System altered.

SQL> alter database flashback on;

Database altered.

SQL> alter database open;

Database altered.

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

重现数据库示例

下面的例子用于演示,它想要描述单个表之外的损坏。

45. 监控FRA
46. select name,space_limit,space_used, space_reclaimable from v$recovery_file_dest;
47. 
48. NAME        SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE
49. -------------------------------------------- 
50. C:\oracle\product\10.2.0/flash_recovery_area 2147483648  166646272  0
51. 
52. 
53. select * from v$flash_recovery_area_usage;
54. 
55. FILE_TYPE    PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
56. ------------ ------------------ ------------------------- ---------------
57. CONTROLFILE                   0                         0               0
58. ONLINELOG                     0                         0               0
59. ARCHIVELOG                 7.38                         0              29
60. BACKUPPIECE                   0                         0               0
61. IMAGECOPY                     0                         0               0
62. FLASHBACKLOG                .38                         0               1
63. 在表的映像之前显示
64. select c1, ora_rowscn from my_table;
65. 
66.         C1 ORA_ROWSCN
67. ---------- ----------
68.          1    1320954
69. 判断数据库的时间点

在10gR1中,你有两种选择来捕捉你的数据库的PIT:时间戳和系统修改号码(SCN)。这个信息是作为重现操作的一部分要求的。 捕捉到提交的SCN或者稍后的非常重要,而不是数据管理语言操作。Oracle提供了一种比较笨拙的方式来捕捉提交的SCN,通过userenv('commitscn')函数。我们的示例在发生损坏的数据管理语言操作之前捕捉到了这个信息。

select current_scn from v$database;

CURRENT_SCN
-----------
    1321065
or 
select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') 
  "Recover Time" from v$database;

Recover Time
-------------------
2006-09-23:20:13:48

阅读(376) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~