oracle snapshot
Step 1: Connect String 需加在 DB Server 的中
此處的 ConnectionString 名稱不用加 .DomainCOM.TW
ConnectionStringName(建議命名為: ServerNameSID) =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP or HostName)(PORT = 1521))
)
(CONNECT_DATA =
(SID = SID_Name)
(SERVER = DEDICATED)
)
)
D:\Oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
P.S
其它 tnsnames.ora Format:
ConnectionStringName(建議命名為: ServerNameSID) .Domain.COM.TW =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = tcp.Domain.COM.TW)
(PROTOCOL = TCP)
(Host = IP or HostName)
(Port = 1521)
)
(ADDRESS =
(COMMUNITY = tcp.DomainCOM.TW)
(PROTOCOL = TCP)
(Host = IP or HostName)
(Port = 1526)
)
(ADDRESS =
(COMMUNITY = tcp.DomainCOM.TW)
(PROTOCOL = TCP)
(Host = IP or HostName)
(Port = 1525)
)
)
(CONNECT_DATA = (SID = SID_Name)
)
)
http://blog.roodo.com/mywork/archives/1438997.html
http://docs.oracle.com/cd/B10500_01/network.920/a96581/tnsnames.htm
http://blog.csdn.net/ywq5914251/article/details/8373486
http://rickyju.pixnet.net/blog/post/28183404-oracle-%3A-listener.ora,-sqlnet.ora,-tnsnames.ora
1. 上述的 SID 也可寫成 SERVICE_NAME, Ex: (SERVICE_NAME = SID_Name))
2.ConnectionStringName也可以指定Domain(假設Domain為DD): ServerNameSID.DD
在 PL/SQL 中登入 (必須在 Oracle Client 中的 tnsnames.ora 也加上 ConnectionString, 此處的 ConnectionString 名稱需加 .DomainCOM.TW)
若將 ServerNameSID.DD 加上 COM.TW , 在 PL/SQL 中登入就不用指定Domain, Ex: ServerNameSID.DD.COM.TW
Step 2.1: 建立 DB Link
Step 2.2: 設定 Connection Related
Step 2.3: 測試 DB link 是否成功
Step 3: 建立 Snapshot
Snapshot 的 Refresh 分 3 種
Fast:快速(增量)刷新,雖然這是首選不過也會依據查詢的sql有不同的限制, 但快速刷新比完全刷新速度快,因為快速刷新 Snapshot 的數據較少,僅需變更修改過的數據。
Complete:完整刷新,會刪除MVL後在依據查詢sql重新產生MV(花費更多時間)。
Force:由Oracle自動判斷是否滿足fast refresh條件否則就執行complete(預設)。
Step 3.1: Snapshot 快速刷新前置作業
快速刷新需要建立 Snapshot log, 建立 Snapshot log 之前必須先建立 Snapshot Table
再將 snapshotClientTable 加上 Primary Key, 接下來就可以建立 Snapshot Log
Step 3.2: 建立 Snapshot
若使用”完全刷新”可以省略 Step 3.1, 快速刷新與完全刷新建立 Snapshot 部分幾乎相同, 完全刷新需再第7行設定 REFRESH COMPLETE, 設定 REFRESH FAST 為快速刷新, 下列以完全刷新為例:
TABLESPACE <TableSpaceName>
STORAGE (INITIAL100K NEXT50K PCTINCREASE0)
REFRESH COMPLETE
START WITH to_date(to_char(sysdate+1, 'dd-mm-yy') || ' 06:00:00', 'dd-mm-yy hh24:mi:ss')
NEXT to_date(to_char(sysdate+1, 'dd-mm-yy') || ' 06:00:00', 'dd-mm-yy hh24:mi:ss')
AS select * from <snapshotSourceTable>@<DbLinkName>;
Example
TABLESPACE USERS
STORAGE (INITIAL100K NEXT50K PCTINCREASE0)
REFRESH COMPLETE
START WITH SYSDATE
NEXT TO_DATETO_CHAR(SYSDATE + 1, 'dd-mm-yy') || ' 06:00:00', 'dd-mm-yy hh24:mi:ss')
AS SELECT * FROM snapshotServerTable@link;
P.S
1: 刪除 Snapshot
2: 更改 Snapshot Refresh 時間
1. 此 SQL 語句的意思:設定oracle自動在30秒 ( 30/24*60*60 ) 後進行第一次完全刷新,
以後每隔1天完全刷新一次。
Start with sysdate+1/2880 next sysdate+1;
2.此 SQL 語句的意思为:設定 Oracle 自動在1分鐘 ( 1/24*60 ) 後進行第一次快速刷新,
以後每隔10分鐘 ( 10/24*60 ) 快速刷新一次。
Start with sysdate+1/1440 next sysdate+1/144;
3: 查詢 Snapshot 相關資訊
SELECT * FROM dba_snapshots
SELECT * FROM dba_snapshot_logs
4: materialized view 與 snapshot 區別
參考:
http://77857.blog.51cto.com/67857/179913
http://www.dotblogs.com.tw/ricochen/archive/2009/09/22/10737.aspx
http://py3939.pixnet.net/blog/post/25399529-create-materialized-view
http://blog.xuite.net/yuyuante/stock/11287925
它們之間的區別就是沒有區別,只不過,一個名詞是新的,一個名詞是舊的。
物化視圖(materialized view)=快照(snapshot)。
在新系統下,曾經用“快照”的情況,現在就用“物化視圖”好了。
描述:
MV跟Snapshot的功能類似, SQL Navigator down出來也是snapshot ,但是底層還是有不一樣的地方.請搞清楚是MV還是Snapshot
結論:
(1) Snapshot與MV是同義詞.創建完畢導出的dll文件說明是snapshot.
(2) MV log是與Refresh的方式有關. Fast方式才需要LOG.
(3) MV是新名詞, snapshot是舊名詞而已.僅僅為了保持兼容性
The keyword SNAPSHOT is supported in place of MATERIALIZED VIEW for backward compatibility.
用 COMPLETE 的方式, 每次都抓全部資料, 適合資料量不多的狀況.
如果用 FAST 的方式 (即增量抓取) 抓資料, 是每次只抓新的資料. 適合資料量多的狀況.
因此 DBA 希望請你們提供 view(table) 的大小, 以便判斷適合用 COMPLETE 或是 FAST 的方式.