Oracle 11g闪回数据归档新功能解析
2008-12-15 13:01:44 来源:WEB开发网接下来,我在表HR.APPLICANTS上使用默认FBDA开启了闪回数据归档跟踪
然后,我对HR.DEPARTMENTS,HR.JOB_HISTORY和OE.CUSTOMERS表开启了闪回数据归档跟踪,为它们的历史数据选择了不同的FBDA.
最后,为了显示如何在表上中断FBDA跟踪,我再次在OE.CUSTOMERS 表上使用了ALTER TABLE NO FLASHBACK ARCHIVE;命令。
闪回数据归档:历史数据和元数据
Oracle 11g在FBDA中存储数据时没有“重新设计车轮”,每个启用FBDA的表使用三个简单的表结构,每个都以<源表所有者>.SYS_FBA_<目的>_格式命名,如表1所示。这些表中的数据可以直接查询,对于那些想一探Oracle 11g是如何管理FBDA基础结构的人来说非使用这些表不可。
表1.闪回数据归档:历史数据存储
为了便于解说,我首先在HR.APPLICANTS表上使用DML语句对其做了一个改变,然后我清洗了数据库缓冲区,并使用ALTER SYSTEM SET UNDO_TABLESPACE=…… SCOPE=BOTH; 命令将UNDO过程切换到一个不同的表空间上,请看下面的代码:
-- 对HR.APPLICANTS表做一些改变以便在对应的FBDA对象中自动产生"delta"记录,对最接近1000美元的申请者申请的薪水进行四舍五入
UPDATE hr.applicants
SET salary_desired = ROUND(salary_desired, -3)
WHERE MOD(applicant_id,5) = 0;
COMMIT;
-- 对最接近100美元的申请者申请的薪水进行四舍五入
UPDATE hr.applicants
SET salary_desired = ROUND(salary_desired, -2)
WHERE MOD(applicant_id,5) <> 0
AND MOD(applicant_id,3) = 0;
COMMIT;
-- 现在清空数据库缓冲区和当前UNDO表空间的内容,确保闪回版本查询从闪回数据归档中返回HR.APPLICANTS表的内容
DROP TABLESPACE smallundo INCLUDING CONTENTS AND DATAFILES;
CREATE UNDO TABLESPACE smallundo
DATAFILE '/u01/app/oracle/oradata/ORCL/tsp_smallundo01.dbf'
SIZE 2M;
ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM FLUSH BUFFER_CACHE;
ALTER SYSTEM SET UNDO_TABLESPACE = 'SMALLUNDO' SCOPE=BOTH;
TTITLE 'Sample Data from Flashback Data Archives|(From SYS_FBA_HIST_73218)'
COL applicant_id FORMAT 99999 HEADING 'Appl|ID'
COL endscn FORMAT 9999999 HEADING 'Ending|SCN'
COL last_name FORMAT A20 HEADING 'Last Name'
COL gender FORMAT A2 HEADING 'G|N|D|R'
COL salary_desired FORMAT 999999.99 HEADING 'Salary|Desired'
COL job_desired FORMAT A10 HEADING 'Job|Desired'
SELECT
applicant_id
,endscn
,last_name
,gender
,salary_desired
,job_desired
FROM HR.SYS_FBA_HIST_73218
WHERE applicant_id < 10
ORDER BY applicant_id, endscn;
TTITLE OFF
TTITLE 'Sample Data from HR.APPLICANTS|(Between Time Periods)'
COL applicant_id FORMAT 99999 HEADING 'Appl|ID'
COL versions_endscn FORMAT 9999999 HEADING 'Ending|SCN'
COL last_name FORMAT A20 HEADING 'Last Name'
COL gender FORMAT A2 HEADING 'G|N|D|R'
COL salary_desired FORMAT 999999.99 HEADING 'Salary|Desired'
COL job_desired FORMAT A10 HEADING 'Job|Desired'
SELECT
applicant_id
,VERSIONS_ENDSCN
,last_name
,gender
,salary_desired
,job_desired
FROM hr.applicants
VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2008-12-04 04:28','yyyy-mm-dd hh24:mi')
AND TO_TIMESTAMP('2008-12-04 04:55','yyyy-mm-dd hh24:mi')
WHERE APPLICANT_ID < 10
ORDER BY applicant_id, versions_endscn;
TTITLE OFF
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接