oracle技术点滴--snaphost

来源:互联网 发布:怎么看淘宝即将上架 编辑:程序博客网 时间:2024/05/23 21:08

一.本机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)

原创粉丝点击