Oracle DB执行闪回数据库

 

• 配置闪回数据库
• 执行闪回数据库操作
• 监视闪回数据库
 
 
  • 闪回数据库
Oracle DB执行闪回数据库_第1张图片
闪回数据库操作:
• 作用类似于数据库的倒带按钮
• 可以在用户造成了逻辑数据损坏的情况下使用
 
闪回数据库
使用闪回数据库,通过还原自先前某个时间点以来发生的所有更改,可快速将数据库恢复到那个时间的状态。因为 不需要还原备份,所以此操作速度很快。可以使用此功能还原导致逻辑数据损坏的更改。
使用闪回数据库时,Oracle DB 可使用过去的块映像回退对数据库的更改。在正常数据库操作期间,Oracle DB 会不定期地将这些块映像记录在闪回日志中。闪回日志将按顺序写入并且不进行归档。Oracle DB 会自动在快速恢复区中创建、删除闪回日志和调整它的大小。你仅需出于监视性能目的而关注闪回日志,并确定为快速恢复区分配了多少磁盘空间以存放闪回日志。
使用闪回数据库倒回数据库所需的时间与需回退到多久以前以及目标时间之后发生的数据库活动量成比例。还原和恢复整个数据库所需的时间会长得多。闪回日志中的前像仅用于将数据库还原至过去的某一时间点,而前滚恢复则用于将数据库恢复到与过去某个时间一致的状态。Oracle DB 可将数据文件恢复至以前的时间点,但辅助文件除外,如初始化参数文件。闪回数据库还可用来辅助Data Guard 和恢复指导,以及用来同步已复制的数据库。
 
 
  • 闪回数据库体系结构
Oracle DB执行闪回数据库_第2张图片
 
启用闪回数据库功能时,会启动 RVWR(闪回写进程)后台进程。此后台进程按顺序将闪回数据库数据从闪回缓冲区写入闪回数据库日志,这些日志会被循环使用。随后,当发出FLASHBACK DATABASE命令时,系统使用闪回日志来还原到块的前像,然后使用重做数据前滚到所需的闪回时间。
启用闪回数据库的开销取决于数据库的读/写混合工作量。因为查询不需要记录任何闪回数据,所以工作量的写操作量越大,启用闪回数据库的开销就越高。
 
  • 配置闪回数据库
Oracle DB执行闪回数据库_第3张图片
 
SQL> SHUTDOWNIMMEDIATE
SQL> STARTUP MOUNT
SQL> ALTER DATABASE ARCHIVELOG;
如果数据库处于ARCHIVELOG 模式,则无需重新启动该数据库。
SQL> ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=2880 SCOPE=BOTH;
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER DATABASE OPEN;
 
可按以下步骤配置闪回数据库:
1.配置快速恢复区。
2.使用DB_FLASHBACK_RETENTION_TARGET初始化参数设置保留目标。可指定一个上限(以分钟为单位),指示数据库能够闪回到多长时间以前。 ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=2880 SCOPE=BOTH 使用了2,880 分钟,相当于两天。此参数只是一个目标,并不提供任何保证。闪回时间间隔取决于快速恢复区中保存的闪回数据量。
3.使用以下命令启用闪回数据库:
ALTER DATABASE FLASHBACK ON;
必须先针对归档配置数据库,之后才能发出命令来启用闪回数据库。
可以使用以下查询来确定是否已启用闪回数据库:
SELECT flashback_on FROM v$database;
可使用ALTER DATABASE FLASHBACK OFF命令来禁用闪回数据库。这样,会自动删除所有现有的闪回数据库日志。
注:只有在独占模式下装载数据库后才能启用闪回数据库,在打开状态下则不可以。
 
  • 你需要执行的操作
配置工作流:
1. 确保数据库处于ARCHIVELOG模式。
2. 启用闪回日志记录并指定快速恢复区。
 
您需要执行的操作
Oracle DB执行闪回数据库_第4张图片
 
登录到Oracle Enterprise Manager (EM)。在“Availability(可用性)”页上的“Backup/Recovery(备份/恢复)”区域中,选择“Recovery Settings(恢复设置)”。确保数据库处于ARCHIVELOG模式。如果数据库未处于此模式,请选中“ARCHIVELOG Mode(ARCHIVELOG 模式)”,然后单击“Continue(继续)”。需要关闭并重新启动实例,更改才能生效。
Oracle DB执行闪回数据库_第5张图片
配置了快速恢复区和归档后,USE_DB_RECOVERY_FILE_DEST被配置为归档日志目标位置10。选择“Enable Flashback Logging(启用闪回日志记录)”可启用闪回日志记录。还可以设置闪回保留时间,查看与闪回数据库窗口有关的重要信息。
复查快速恢复区的位置。快速恢复区是Oracle DB 中所有与恢复相关的文件和活动的统一存储位置。在发生介质故障后完全恢复数据库所需的所有文件都包含在快速恢复区中。可在快速恢复区中创建的与恢复相关的文件包括:归档重做日志文件、控制文件、Recovery Manager (RMAN) 创建的备份、闪回日志和更改跟踪文件。通过分配存储位置并将与恢复相关的文件集中到特定区域内,Oracle DB Server 减轻了数据库管理员的负担,使他们不必管理由这些组件创建的磁盘文件。
快速恢复区的默认位置为$ORACLE_BASE/flash_recovery_area。如果希望其位于其它位置,可立即进行更改。向下滚动到“Recovery Settings(恢复设置)”页的底部,然后单击“Apply(应用)”。
 
  • 闪回数据库:示例
• 闪回:以独占模式装载数据库
RMAN> FLASHBACK DATABASE TO TIME =  "TO_DATE('2009-05-27 16:00:00', 'YYYY-MM-DD HH24:MI:SS')";
RMAN> FLASHBACK DATABASE TO SCN=23565;
RMAN> FLASHBACK DATABASE  TO SEQUENCE=223THREAD=1;
 
SQL> FLASHBACK DATABASE  TO TIMESTAMP(SYSDATE-1/24);
SQL> FLASHBACK DATABASE TO SCN53943;
SQL> FLASHBACK DATABASE TO RESTORE POINT b4_load;
通过V$SESSION_LONG视图监视闪回数据库的进度。
• 复查更改:以只读方式打开数据库
• 完成:使用RESETLOGS以读/写方式打开数据库
 
闪回数据库:示例
可以使用RMAN FLASHBACK DATABASE命令执行闪回数据库操作。可以使用SEQUENCE和THREAD指定作为下限的重做日志序列号和线程。
RMAN 只选择可用于闪回到指定序列号(但不包括指定序列号)的文件。
也可以使用SQL FLASHBACK DATABASE命令将数据库返回到过去的某个时间或SCN。
如果使用TO SCN子句,则必须提供一个数字。如果指定TO TIMESTAMP,则必须提供一个时间戳值。还可以指定还原点名称。
可以通过V$SESSION_LONGOPS视图监视闪回数据库进度。
注:必须以独占模式装载数据库,之后才能发出FLASHBACK DATABASE命令;要复查更改,可以按只读方式打开数据库。完成后,必须用RESETLOGS选项以读/写方式打开数据库。
 
  • 闪回数据库注意事项
• 闪回数据库操作完成后,打开数据库:
– 在只读模式下验证使用的目标时间或SCN 正确无误。
– 使用 RESETLOGS操作以允许DML。
• “闪回”与“恢复”是对立的。
• 以下情况下不能使用闪回数据库操作:
– 控制文件已还原或已重新创建。
– 表空间已删除。
– 数据文件的大小已被减小。
• 使用TO BEFORE RESETLOGS子句闪回至上一RESETLOGS操作前的那一刻。
 
闪回数据库注意事项
在不能使用闪回数据库功能的情况下,应使用不完全恢复操作将数据库恢复至特定时间。
闪回数据库操作完成后,可在 只读模式下打开数据库,验证是否使用了正确的目标时间或 SCN。如果没有,可以再次闪回数据库,或者通过执行恢复操作来前滚数据库。所以,要还原闪回数据库操作,应前滚恢复数据库。
不能使用闪回数据库操作来恢复在闪回操作期间删除的数据文件。删除的数据文件会添加到控制文件中且标记为脱机,但是不会闪回。闪回数据库操作无法将数据文件闪回到其创建之后、调整大小之前的某个时间。如果某个文件在数据库要闪回到的期间调整了大小,则应在闪回数据库操作开始之前使该文件脱机。这适用于收缩的文件,而不是扩展的文件。
可以将闪回数据库用于已经配置为自动扩展的数据文件。通过在FLASHBACK DATABASE命令中提供TO BEFORE RESETLOGS子句,可恰好闪回至上一RESETLOGS操作前的那一刻。
注:闪回保留目标不能完全保证闪回可用。如果必需的文件需要在快速恢复区中占用空间,可能会自动删除闪回日志。
 
  • 监视闪回数据库
要针对保留目标监视容量:
• 查看快速恢复区的磁盘限额:
SQL> SELECT estimated_flashback_size, flashback_size FROM V$FLASHBACK_DATABASE_LOG;
• 确定当前闪回窗口:
SQL> SELECT oldest_flashback_scn, oldest_flashback_time FROM V$FLASHBACK_DATABASE_LOG;
 
• 监视闪回数据库日志中的日志记录:
SQL> SELECT * FROM V$FLASHBACK_DATABASE_STAT;
 
监视闪回数据库
监视快速恢复区的空间使用量是非常重要的,因为这样做可知道如何才能满足保留目标。
使用 V$FLASHBACK_DATABASE_LOG视图可监视闪回数据库的保留目标:
• ESTIMATED_FLASHBACK_SIZE使用先前记录的闪回数据,可估计快速恢复区中闪回日志需要多少磁盘空间才能满足当前闪回保留目标。估计的依据是自实例启动以来
的工作量,或者是等于闪回保留目标的最近时间间隔,取较小的那个值。
• FLASHBACK_SIZE给出了闪回数据的当前字节大小(以字节为单位)。
• OLDEST_FLASHBACK_SCN和OLDEST_FLASHBACK_TIME显示了数据库可闪回到的近似最低SCN 和时间。V$DATABASE中的CURRENT_SCN给出了当前数据库SCN。
使用V$FLASHBACK_DATABASE_STAT视图可监视闪回数据库日志中记录闪回数据的开销。此视图包含24 小时的信息,每一行代表一小时的时间间隔。使用此视图可确定闪回数据的生成速率变化。
SQL> SELECT begin_time, end_time, flashback_data, db_data,  redo_data, estimated_flashback_size AS EST_FB_SZE  FROM V$FLASHBACK_DATABASE_STAT;
 
BEGIN_TIM END_TIME FLASHBACK_DATA DB_DATA REDO_DATA EST_FB_SZE
--------- --------- -------------- ---------- ---------- ----------
12-FEB-09 12-FEB-09 16384              0                 24576         0
12-FEB-09 12-FEB-09 6594560          7471104     1533440     815923200
12-FEB-09 12-FEB-09 17235968        12361728     5150920     839467008
12-FEB-09 12-FEB-09 311648256      37249024     10272768     855195648
基于这些信息,可能需要调整保留时间或快速恢复区大小。
FLASHBACK_DATA和REDO_DATA分别代表时间间隔期间写入的闪回数据和重做数据的字节数,而且,DB_DATA提供了读写的数据块的字节数。此视图还包含一定时间间隔内预计需要的闪回空间。
查询V$RECOVERY_FILE_DEST可查看与快速恢复区相关的信息。列说明如下:
• NAME:快速恢复区的名称,指示位置字符串
• SPACE_LIMIT:在DB_RECOVERY_FILE_DEST_SIZE参数中指定的磁盘限制
• SPACE_USED:快速恢复区文件使用的空间(字节)
• SPACE_RECLAIMABLE:通过删除过时文件、冗余文件和其它空间管理算法确定的低优先级文件,可回收的空间量
• NUMBER_OF_FILES:文件数量
SQL> SELECT name, space_limit AS quota,space_used AS used,space_reclaimable AS reclaimable,number_of_files AS files FROM v$recovery_file_dest ;
NAME QUOTA USED RECLAIMABLE FILES
------------------------ ---------- ---------- ----------- -----
/u01/flash_recovery_area 5368707120 2507809104 203386880 226
 
使用EM 监视闪回数据库
Oracle DB执行闪回数据库_第6张图片
 
可在“Recovery Settings(恢复设置)”页中看到上面各页中提到的大多数闪回数据库统计信息。这些度量包括当前所有闪回日志使用的空间、最低SCN 和闪回数据中最低SCN 的时间。
 
  • 保证还原点
使用保证还原点可确保在任何时间通过执行FLASHBACK DATABASE命令都可闪回到该SCN。
SQL> CREATE RESTORE POINT before_upgrade GUARANTEE FLASHBACK DATABASE;
 
保证还原点
如普通还原点一样,保证还原点在恢复操作中可用作SCN 的别名。主要区别是保证还原点绝不会因过期而从控制文件中删除,必须显式删除它。但是,保证还原点还提供与使用闪回数据库功能相关的特定功能。
在特定SCN 创建保证还原点后,会通过强制执行闪回数据库操作将数据库恢复到该SCN 所对应的状态,即使未对数据库启用闪回日志记录也是如此。如果启用了闪回日志记录,则创建保证还原点会强迫保留所需的闪回日志,使闪回数据库操作可恢复到最早的保证还原点创建后的任何时间点。
保证还原点可用于将整个数据库还原到几天或几周前的已知正常状态,只要 快速恢复区中有足够的磁盘空间来存储所需的日志。与普通还原点相同,保证还原点可用于指定RECOVER DATABASE操作的时间点。
注:适用于闪回数据库的限制也适用于保证还原点。例如,收缩数据文件或删除表空间会导致受影响的数据文件无法闪回至保证还原点。
 
  • 闪回数据库和保证还原点
要使用保证还原点,数据库必须满足以下先决条件:
• COMPATIBLE初始化参数必须设置为10.2 或更大值。
• 数据库必须在ARCHIVELOG模式下运行。
• FLASHBACK DATABASE需要使用大约从还原点时间开始的归档重做日志。
• 必须配置快速恢复区。
 
闪回数据库和保证还原点
要支持使用保证还原点,数据库必须满足以下 先决条件
• COMPATIBLE初始化参数必须设置为10.2 或更大值。
• 数据库必须在ARCHIVELOG模式下运行。
• 要将数据库倒回至保证还原点,FLASHBACK DATABASE命令需要使用大约从还原点时间开始的归档重做日志。
• 必须配置快速恢复区。保证还原点使用类似于闪回日志记录的机制。与闪回日志记录一样,Oracle DB 必须将所需日志存储在快速恢复区中。
• 如果未启用闪回数据库,则创建第一个保证还原点时(或者如果已删除了先前创建的所有保证还原点), 数据库必须处于装载状态而不是打开状态
闪回数据库和保证还原点的日志记录需要捕获应用更改之前数据文件块的映像。
FLASHBACK DATABASE命令可使用这些映像将数据文件恢复至以前的状态。普通闪回日志记录与保证还原点日志记录的主要区别在于何时记录块,以及是否在快速恢复区空间不足时删除日志。这些区别会影响日志的空间使用量和数据库性能。
如果启用闪回数据库并定义了一个或多个保证还原点,则数据库执行普通闪回日志记录。
在这种情况下,恢复区会保留闪回至当前时间与目前最早定义的保证还原点之间的任意时间所需的闪回日志。如果保证还原点需要闪回日志,则不会因空间不足而删除闪回日志。
 

你可能感兴趣的:(Oracle DB执行闪回数据库)