首页 > 数据库 > Oracle > OCP课程52:管理II之使用闪回技术2
课程目标:
1、全面回忆概览
Oracle数据库11g的全面回忆功能(也称闪回数据存档)提供了一种用于跟踪生产数据库改变的机制,安全、高效、使用方便且对应用透明。
使用全面回忆技术,可以自动跟踪和存储数据到启用了闪回数据归档功能的表中。这确保了闪回查询可以获得SQL级访问数据库对象的版本而不会产生快照太旧的错误。
闪回数据存档可跟踪和存储所有事务改变到到一个“跟踪”表,而不需要再在应用中创建这个功能了。使用全面回忆可以用于审核报告,数据分析和决策支持系统。
应用举例:
2、创建步骤
闪回数据归档过程:
一个闪回数据归档包含一个或多个表空间。可以有多个闪回数据归档。基于保留时间的要求,创建不同的闪回数据归档,例如,创建一个所有记录必须保存两年,创建另一个所有记录必须保存五年。数据库在保留时间到期后一天将自动清除所有的历史信息。
创建步骤如下:
(1)为闪回数据归档创建一个表空间。大小取决于基表和预期的DML和DDL活动。
(2)创建一个指定保留时间的闪回数据归档。此项任务需要FLASHBACK ARCHIVE ADMINISTER系统权限。如果要求不同的保留时间,则必须创建不同的归档。
(3)为表启用闪回归档。此项任务需要FLASHBACK ARCHIVE对象权限。虽然为表启用了闪回归档,但一些DDL语句不允许在该表执行。默认情况下,表没有启用闪回存档。
例子:为表创建闪回数据归档
SQL> create tablespace fda_tbs1;
Tablespace created.
SQL> create flashback archive fda1 tablespace fda_tbs1 quota 10M retention 1 year;
Flashback archive created.
SQL> alter table hr.employees flashback archive fda1;
Table altered.
3、全面回忆如何工作
FBDA后台进程在一个自动调整的时间间隔从undo(和缓冲区缓存)捕获历史数据。时间间隔默认为五分钟。被更新的行整行都会被存储,不论该行有多少字段被更新。
4、全面回忆方案
使用CREATE FLASHBACK ARCHIVE语句创建一个闪回数据归档。
在上图中第一个例子,创建一个默认的闪回数据归档,名字为fla1,使用10 GB的tbs1表空间,保留五年。在第二个例子中,指定默认的闪回数据归档。默认情况下,系统没有闪回数据归档。可以用以下两种方式来设置:
在第三个例子中,启动闪回数据归档。如果没有启用Automatic Undo Management,则在修改表时会出现ORA-55614错误。
例子:指定默认闪回数据归档
SQL> alter flashback archive fda1 set default;
Flashback archive altered.
SQL> alter table hr.emp flashback archive;
Table altered.
SQL> select * from hr.emp;
EMPLOYEE_ID FIRST_NAME LAST_NAME
----------- -------------------- -------------------------
EMAIL PHONE_NUMBER HIRE_DATE JOB_ID
------------------------- -------------------- ------------ ----------
SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
---------- -------------- ---------- -------------
100 Steven King
SKING 515.123.4567 17-JUN-03 AD_PRES
10000 90
SQL> delete from hr.emp;
1 row deleted.
SQL> commit;
Commit complete.
SQL> select * from hr.emp as of timestamp to_timestamp('2016-02-01 12:00:00','yyyy-mm-dd hh24:mi:ss');
EMPLOYEE_ID FIRST_NAME LAST_NAME
----------- -------------------- -------------------------
EMAIL PHONE_NUMBER HIRE_DATE JOB_ID
------------------------- -------------------- ------------ ----------
SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
---------- -------------- ---------- -------------
100 Steven King
SKING 515.123.4567 17-JUN-03 AD_PRES
10000 90
5、全面回忆方案
为表启用闪回数据归档,可以在CREATE TABLE或者ALTER TABLE语句指定FLASHBACK ARCHIVE子句。在FLASHBACK ARCHIVE子句,指定表的历史数据存储的位置。默认使用系统默认的闪回数据归档。在ALTER TABLE语句指定NO FLASHBACK ARCHIVE为表禁用闪回数据归档。
上一页的最后一个语句显示了如何检索2007年初的所有货物的库存。继续前面的例子:
注意:删除闪回数据归档的所有表空间会导致错误。
例子:修改及删除闪回数据归档
SQL> alter flashback archive fda1 add tablespace tbs3 quota 10G;
Flashback archive altered.
SQL> alter flashback archive fda1 modify retention 2 year;
Flashback archive altered.
SQL> alter flashback archive fda1 purge before timestamp(systimestamp-interval '1' day);
Flashback archive altered.
SQL> drop flashback archive fda1;
Flashback archive dropped.
6、透明模式演变
闪回数据归档支持最常见的DDL命令。当一个模式涉及到上图中列出的DDL,全面回忆自动跟踪该更改。闪回查询返回对应模式的的行。
7、全模式演变
DBMS_FLASHBACK_ARCHIVE包不自动支持所有DDL修改。可以使用DISASSOCIATE_FBA和REASSOCIATE_FBA存储过程来分离和关联指定的表及其闪回数据归档。
注意:这个功能要谨慎使用,同时由于分离期间历史数据可以被修改,故归档不能确保不被改变。
上图显示了以下工作流程:
8、限制
当对表启用了闪回数据归档,一些DDL语句会产生错误ORA-55610,例如:
例子:删除启用了闪回数据归档的表
SQL> drop table hr.emp;
drop table hr.emp
*
ERROR at line 1:
ORA-55610: Invalid DDL statement on history-tracked table
9、使用指导
闪回数据归档使用指导:
10、查看闪回数据归档
可以使用动态数据字典视图查看跟踪表和闪回数据归档的元数据。访问USER_FLASHBACK_*,必须有表的所有者的权限。查看DBA_FLASHBACK_*视图,需要SYSDBA权限。
例子 :查询闪回数据归档信息
SQL> select f.owner_name,f.flashback_archive_name,f.retention_in_days from dba_flashback_archive f;
OWNER_NAME FLASHBACK_ARCHIVE_NAME RETENTION_IN_DAYS
------------------------------ ------------------------- -----------------
SYS FDA1 365
SQL> select * from dba_flashback_archive_ts;
FLASHBACK_ARCHIVE_NAME FLASHBACK_ARCHIVE# TABLESPACE_NAME QUOTA_IN_MB
------------------------- ------------------ ------------------------------ ----------------------------------------
FDA1 1 FDA_TBS1 10
SQL> select * from dba_flashback_archive_tables;
TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NAME ARCHIVE_TABLE_NAME STATUS
------------------------------ ------------------------------ ------------------------- ----------------------------------------------------- -------------
EMP HR FDA1 SYS_FBA_HIST_89969 ENABLED
11、闪回删除和回收站
使用闪回表命令,可以恢复DROP TABLE语句删除的表,无需使用point-in-time恢复。
注意:当前用户的RECYCLEBIN初始化参数控制闪回删除是否启用。如果设置该参数为OFF,则删除的表不会进入到回收站。如果设置参数为ON,则删除的表进入回收站并可回收。默认情况下,RECYCLEBIN设置为ON。
例子:查看RECYCLEBIN初始化参数
SQL> show parameter recyclebin;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
SQL> alter system set recyclebin=off scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 889389056 bytes
Fixed Size 2258360 bytes
Variable Size 662702664 bytes
Database Buffers 218103808 bytes
Redo Buffers 6324224 bytes
Database mounted.
Database opened.
SQL> show parameter recyclebin;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string OFF
SQL> alter system set recyclebin=on scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 889389056 bytes
Fixed Size 2258360 bytes
Variable Size 662702664 bytes
Database Buffers 218103808 bytes
Redo Buffers 6324224 bytes
Database mounted.
Database opened.
SQL> show parameter recyclebin;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string ON
12、回收站
如果没有启用回收站,当删除一个表,与表及其依赖的对象相关联的空间会被立即回收(即可以用于其他对象)。
如果启用了回收站,当删除一个表,与表及其依赖的对象相关联的空间不会被立即回收,即使它出现在DBA_FREE_SPACE视图。相反,删除的对象在回收站被引用且仍旧属于其所有者。除非空间不足,回收站对象使用的空间不会自动回收。这可以使用户在尽可能长的时间内恢复回收站对象。
当删除的表“移动”到回收站,系统对该表及其相关的对象和约束进行重命名。命名约定如下:
BIN$unique_id$version
unique_id是一个26个字符的全局唯一标识符,version是一个由数据库指定的版本号。
回收站本身就是一个数据字典表,维护被删除对象的原始名称和系统生成名称之间的关系。可以使用DBA_RECYCLEBIN查询回收站。上图中说明如下:
(1)创建EMPLOYEES表。
(2)删除EMPLOYEES表。
(3)EMPLOYEES表所有的区现在被任务是空闲空间。
(4)重命名EMPLOYEES表并记录到回收站。
例子:查看回收站
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
EMP BIN$KCkSs4IS/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:11:28:12
EMP BIN$KCkSs4IN/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:53:34
EMP BIN$KCkSs4II/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:04:21
EMP BIN$J9iOOkW8dhzgU4vmqMCn2w==$0 TABLE 2015-12-27:10:00:41
13、从回收站还原表
使用FLASHBACK TABLE ... TO BEFORE DROP命令从回收站恢复表及其依赖对象,可以在该命令中使用该表的原始名称,或者使用在该对象被删除时分配给该对象的系统名称。
如果使用原始名称,且在回收站中该名称对应多个对象版本,则恢复最后删除的那一个(LILO:last in,first out)。如果想恢复其他版本,可以指定系统生成的表名进行恢复,或者继续使用FLASHBACK TABLE ... TO BEFORE DROP,直到恢复到想要的版本。
如果在表删除后,在同一个模式中又创建了一个新的相同名字的表,闪回删除时如果不指定RENAME TO子句进行重命名,则会报错。
注意:闪回删除表后,表的索引、触发器和约束仍然使用回收站中的名称。因此,建议在闪回删除前查询回收站和DBA_CONSTRAINTS视图,重命名索引、触发器和约束。
例子:闪回删除
SQL> flashback table emp to before drop rename to emp_rec;
Flashback complete.
14、回收站:自动空间回收
只要回收站中对象的空间没有被回收,就可以使用闪回删除进行恢复。以下为回收站对象回收策略:
(1)不对应回收站对象的空闲空间
(2)对应回收站对象的空闲空间。在这种情况下,回收站中的对象使用先进先出(FIFO)算法自动清除回收站对象。
(3)如果表空间自动扩展,自动分配空闲空间。
15、回收站:手动空间回收
使用PURGE命令从回收站永久删除对象。当一个对象被从回收站清除,则对象及其依赖对象从数据库中永久删除。因此,从回收站中PURGE的对象不能再使用闪回删除进行恢复。
PURGE用法如下:
也可以使用EM从回收站中彻底删除表。
注意:对于PURGE TABLE和PURGE INDEX命令,如果使用对象的原始名称且回收站中有多个对象对应这个名称,则清除最先进入回收站的对象(FIFO)。
例子:清除回收站的对象
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
EMP BIN$KCkSs4IN/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:53:34
EMP BIN$KCkSs4II/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:04:21
EMP BIN$J9iOOkW8dhzgU4vmqMCn2w==$0 TABLE 2015-12-27:10:00:41
SQL> purge table emp;
Table purged.
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
EMP BIN$KCkSs4IN/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:53:34
EMP BIN$KCkSs4II/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:04:21
16、绕过回收站
可以使用DROP TABLE PURGE命令彻底删除表及其依赖的对象,这些对象不会进入回收站。
当使用DROP TABLESPACE ... INCLUDING CONTENTS命令删除表空间时,表空间中的对象不会进入回收站,而且回收站中属于该表空间的对象也会被清除。当不使用INCLUDING CONTENTS子句删除表空间时,表空间必须为空才能执行成功,即使回收站中有属于该表空间的对象。在这种情况下,这些对象也会被清除。
当使用DROP USER ... CASCADE命令时,用户和用户拥有的所有对象都会被永久删除。回收站中属于该用户的对象也会被删除。
为了增加安全性,可以不使用回收站。
例子:彻底删除表
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
EMP BIN$KCkSs4IN/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:53:34
EMP BIN$KCkSs4II/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:04:21
SQL> drop table emp1 purge;
Table dropped.
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
EMP BIN$KCkSs4IN/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:53:34
EMP BIN$KCkSs4II/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:04:21
17、查询回收站
通过USER_RECYCLEBIN视图或者RECYCLEBIN同义词查看删除的对象。
通过DBA_RECYCLEBIN视图查看在回收站中的所有对象。
使用SQL*Plus命令SHOW RECYCLEBIN显示可以“undropped”的对象。
上面的例子展示了如何从回收站中提取重要信息:
例子:查看回收站
SQL> select owner,original_name,object_name,type,ts_name,droptime,related,space
2 from dba_recyclebin where can_undrop='YES';
OWNER ORIGINAL_NAME OBJECT_NAME TYPE TS_NAME DROPTIME RELATED SPACE
---------- -------------------- ------------------------------ ---------- ---------- ------------------- ---------- ----------
SYS EMP BIN$KCkSs4IN/UXgU4vmqMCqCA==$0 TABLE TS02 2015-12-31:10:53:34 89456 8
HR EXPORT000067 BIN$KBi1njRdZtXgU4vmqMDxTA==$0 TABLE USERS 2015-12-30:14:33:00 89302 8
SYS EMP BIN$KCkSs4II/UXgU4vmqMCqCA==$0 TABLE TS02 2015-12-31:10:04:21 89455 8
HR EMP BIN$KpmWw9TVSWDgU4vmqMDVxA==$0 TABLE EXAMPLE 2016-01-31:11:08:56 89121 8
HR EMP BIN$KpoTVpYRVQDgU4vmqMDVTA==$0 TABLE USERS 2016-01-31:11:43:46 89954 8
HR EMP BIN$Kp7F8DcYaeLgU4vmqMAJuA==$0 TABLE USERS 2016-01-31:17:20:02 89966 8
HR EMP BIN$Kp7F8DcdaeLgU4vmqMAJuA==$0 TABLE USERS 2016-01-31:17:21:52 89968 8
7 rows selected.
SQL> select original_name,object_name,ts_name,droptime
2 from user_recyclebin where can_undrop='YES';
ORIGINAL_NAME OBJECT_NAME TS_NAME DROPTIME
-------------------- ------------------------------ ---------- -------------------
EMP BIN$KCkSs4IN/UXgU4vmqMCqCA==$0 TS02 2015-12-31:10:53:34
EMP BIN$KCkSs4II/UXgU4vmqMCqCA==$0 TS02 2015-12-31:10:04:21
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
EMP BIN$KCkSs4IN/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:53:34
EMP BIN$KCkSs4II/UXgU4vmqMCqCA==$0 TABLE 2015-12-31:10:04:21
18、相关习题
(1)You enabled Flashback Data Archive on the INVENTORY table. Which DDL operation is supported on the table after enabling Flashback Data Archive?
A.Drop the table.
B.Partition the table
C.Truncate the table.
D.Add a column to the table.
E.Rename a column in the table.
答案:D
(2)You are working as a DBA on the decision support system. There is a business requirement to track and store all transactions for at least three years for a few tables in the database. Automatic undo management is enabled in the database. Which configuration should you use to accomplish this task?
A.Enable Flashback Data Archive for the tables.
B.Specify undo retention guarantee for the database.
C.Enable supplemental logging for the database.
D.Query V$UNDOSTAT to determine the amount of undo that will be generated and create an undo tablespace for that size.
E.Create Flashback Data Archive on the tablespace on which the tables are stored.
答案:A
(3)You want to track and store all transactional changes to a table over its lifetime. To accomplish
this task, you enabled Flashback Data Archive with the retention of 5 years. After some time, the
business requirement changed and you were asked to change the retention from 5 years to 3
years. To accomplish this, you issued the following command:
ALTER FLASHBACK ARCHIVE fla1 MODIFY RETENTION 3 YEAR;
What is the implication of this command?
A. The command produces an error because the retention time cannot be reduced.
B. All historical data is retained but the subsequent flashback data archives are maintained for only three years.
C. All historical data is purged and the new flashback data archives are maintained for three years.
D. All historical data older than three years is purged from the flashback archive FLA1.
答案:D
(4)You are working on the APPDB database as a DBA. The database has a default Flashback Data Archive DFLA1 created on it. You issued the following command to drop the Flashback Archive FLA1:
DROP FLASHBACK ARCHIVE fla1;
What is the effect of this command?
A. The Flashback Archive FLA1 is dropped only if it is empty.
B. The tablespace having Flashback Archive is dropped.
C. The Flashback Archive FLA1 is dropped after moving the existing data in it to the default Flashback Archive.
D. The Flashback Data Archive and historical data are dropped.
答案:D
(5)Which two are the prerequisites to enable Flashback Data Archive? (Choose two.)
A. Database must be running in archivelog mode.
B. Automatic undo management must be enabled.
C. Undo retention guarantee must be enabled.
D. The tablespace on which the Flashback Data Archive is created must be managed with Automatic Segment Space Management (ASSM).
答案:BD
(6)Exhibit:
View the Exhibit and examine the output.
You executed the following command to enable Flashback Data Archive on the
EXCHANGE_RATE table:
ALTER TABLE exchange_rate FLASHBACK ARCHIVE;
What is the outcome of this command?
A. The Flashback Archive is created on the same tablespace where the tables are stored.
B. The Flashback Archive is created on the SYSAUX tablespace.
C. The command generates an error because no Flashback Archive name is specified and there is no default Flashback Archive.
D. The table uses the default Flashback Archive.
答案:C
(7)When setting up the Flashback Data Archive, which of these key parameters are required?
(Choose all that apply.)
A. Tablespace name
B. Storage quota
C. Retention
D. Table name
E. Create a default archive
答案:AC
(8)To clean up old records that are in a Flashback Data Archive and are past the retention period,
what must the DBA do?
A. TRUNCATE the archive table.
B. DROP the Flashback Data Archive.
C. Nothing; expired rows are automatically removed.
D. Nothing; expired rows are moved to an archive table.
E. Delete entries from the archive where the metadata date retained is greater than the retention period.
答案:C
(9)Note the output of the following query;
SQL> SELECT flashback_archieve_name, status FROM dba_flashback_archieve;
FLASHBACK_ARCHIEVE_NAME STATUS
FLA1
You executed the following command to enable Flashback Data Archive on the EXCHANGB_PATE table:
ALTER TABLE exchange_rate FLASHBACK ARCHIEVE;
What is the outcome of this command?
A. The table uses the default Flashback Data Archive.
B. The Flashback Data Archive Is created In the SYSAUX tablespace.
C. The Flashback Data Archive is created in the same tablespace where the tables are stored.
D. The command generates an error because no flashback Data Archive name is specified and there is no default Flashback Data Achieve.
答案:D
(10)You need to maintain a record of all transactions on some tables for at least three years.
Automatic undo management is enabled for the database.
What must you do accomplish this task?
A. Enable supplemental logging for the database.
B. Specify undo retention guarantee for the database
C. Create Flashback Data Archive in the tablespace where the tables are stored.
D. Create Flashback Data Archive and enable Flashback Data Archive for specific tables.
答案:D
(11)Which are the two prerequisites before setting up Flashback Data Archive? (Choose two.)
A.Flash recovery area must be defined
B.Undo retention guarantee must be enabled.
C.Database must be running in archivelog mode.
D.Automatic undo management must be enabled.
E.The tablespace in which the Flashback Data Archive is created must have automatic segment space Management (ASSM).
答案:DE
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31374161/viewspace-2138427/ ,如需转载,请注明出处,否则将追究法律责任。