快照的内容是一个或者多个表或者视图的查询结果。通常,被查询的表和视图位于远程数据库中,称为快照的主表,主表所在的数据库称为主数据库。快照主要用在分布式数据库中,是主表数据在本地数据库的只读拷贝。创建快照时,应该注意以下几点:
1.当创建快照时,ORACLE在快照所在的模式中创建一个表、一个视图以及至少一个索引,用来维护快照中的数据。由于这些对象自动由ORACLE命名,建议快照的名字小于19个字节。
2.快照中的数据是快照查询的查询结果,根据快照查询的不同,快照的类型也不同。
3.快照只是主表在某一时刻的拷贝,而主表中的数据有可能改变,所以为了真实的反映主表的数据必须更新快照—刷新快照,方式:
   3.1手工刷新DBMS_SNAPSHOT.REFRESH()
   3.2自动刷新快照
4.刷新快照时,主数据库和本地数据库都要用到回滚段

解决方案 »

  1.   

    一个例子--GLOBAL NAME设置为TRUE或者FALSE并不影响快照的使用
    --global_names = false
    job_queue_processes = 16
    job_queue_interval = 60
    open_links = 4--TOM/MAO用户拥有足够权限
    --创建快照的语句最好加上模式(用户)的名称ORCL:主数据库
    MYDB:本地数据库--创建共有数据库链
    CREATE PUBLIC DATABASE LINK orcl_link
    USING 'ORCL';--创建私有数据库链
    CREATE DATABASE LINK orcl_link
    CONNECT TO tom IDENTIFIED BY mao; SELECT * FROM global_name@orcl_link;--在ORCL数据库上创建表SNAP_TABLE
    CREATE TABLE SNAP_TABLE (ID CHAR(5),VALUE NUMBER(10,2));--创建主键
    ALTER TABLE SNAP_TABLE ADD CONSDROPTRAINT snap_table_key PRIMARY KEY (ID);--在ORCL数据库表SNAP_TABLE创建快照日志
    CREATE SNAPSHOT LOG ON SNAP_TABLE;--在MYDB上创建快照
    CREATE SNAPSHOT TOM.MY_SNAP
    REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/1440
    AS SELECT * FROM TOM.SNAP_TABLE@ORCL_LINK;
    --在DBA_STUDIO中察看快照查询--测试快照的刷新
    INSERT INTO SNAP_TABLE VALUES('10014',140);
    COMMIT ;--1分钟之后可以看到了刷新的结果--删除快照
    DROP SNAPSHOT MY_SNAP;
    DROP SNAPSHOT SNAPOF_SNAP_TABLE;