您的位置:首页 > 数据库 > Oracle

oracle技术点滴--snaphost

2010-08-12 10:55 155 查看
一.本机oracle版本:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
测试用户为scott,system
二.过程
1.先在scott模下执行,
create snapshot log on emp;

实体化视图日志已创建。
2.在system下执行
create snapshot snapshot_scott
as select * from scott.emp;
实体化视图已创建。
3.在system下执行
select * from snapshot_scott;
查询结果如下(部分)
EMPNO ENAME
---------- --------
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS

EMPNO ENAME
---------- --------
7900 JAMES
7902 FORD
7934 MILLER

已选择14行。

4.执行insert into scott.emp(empno) values(1111)语句并提交。再执行第3步,发现查询一样。原因乃没有修改设置snapshot快照刷新,逐修改。

5. 修改快照刷新
alter snapshot snapshot_scott
refresh fast start with sysdate next sysdate + 1;

6.再执行3,发现查询结果已变。
EMPNO ENAME
---------- -------
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS

EMPNO ENAME
---------- -------
7900 JAMES
7902 FORD
7934 MILLER
1111

已选择15行。

三.其它知识点:
1.快照的刷新有两种方式:快速刷新和完全刷新。快速刷新需要快照的主表先有快照日志存在;完全刷新时oracle执行快照查询,将结果放入快照。快速刷新比完全刷新快,因为快速刷新将主数据库的数据经网络发送到快照的数据少,仅需传送主表中修改过的数据,而完全刷新要传送快照查询的全部结果。
alter snapshot snapshot_scott
refresh fast start with sysdate next sysdate + 1;
可改成
alter snapshot snapshot_scott
refresh complete start with sysdate next sysdate + 1;
2.亦可手动执行刷新快照.
EXEC DBMS_SNAPSHOT.REFRESH('XXXXXXX,'C');
EXEC DBMS_SNAPSHOT.REFRESH('XXXXXXXXX','F');
第一个参数是要刷新的快照名
第二个参数是刷新的方式(F:FAST , C:COMPLETE)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: