亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

oracle復制應用實例之一

瀏覽:101日期:2023-11-21 10:42:27
;復制是一種實現數據分布的方法,也就是說把一個系統中的數據通過網絡分布到另外一個或者多個地理位置不同的系統中,以適應可伸縮組織的需要、減輕主服務器的工作負荷和提高數據的使用效率。;Ora Oracle8針對數據分布式計算的需要,提供了一整套功能強大的數據庫復制解決方案。 Oracle8的數據復制按功能可以分為三類:基本(簡單)復制、高級復制和混合復制,而高級復制又可分為多主節點復制和可更新快照復制。在 《數據復制中的定時任務機制》 介紹了Oracle8中的定時復制的機制,本文將主要介紹一個 Oracle 快照復制的實際例子及其技術實現細節。;一、業務需求 在一個實際的數據庫應用中,如銀行、稅務等商業應用中通常都采用這樣一種解決方案,在一個行政區域內,如一個省或者一個市,在不同的地理位置架設數臺數據庫服務器,這些不同地理位置的服務器具有同樣的后臺數據庫。為了維護數據庫系統的一致性,對于整個行政區域應用的代碼表應該保持一致,假如不考慮數據復制,想維護同樣的不沖突的代碼表是很困難的。下面是一個實際的業務需求,我們用這里例子來說明 Oracle快照復制的應用。;為了維護整個系統代碼表的一致性,客戶提出了這樣的業務需求,對于系統的代碼表采用統一維護,即在一臺服務器上維護,如圖1所示。在位置1(數據庫Ora_db1,用戶userA)上維護代碼表,其他位置(數據庫ora_db2,用戶userB;ora_db3,用戶userC和ora_db4,用戶UserD)可以直接使用這些代碼表,也就是說在位置1具有對代碼表插入、刪除和更新的能力,而在其他地方只能有查詢的能力。;; 二、應用設計針 對上述的需求,我們提出了這樣一種解決方案,也就是采用 Oracle8的快照復制。具體業務實現方案設計如下:;在位置1的數據庫Ora_db1維護所有的代碼表,在其余數據庫建立相對于位置1的所有代碼表的快照。為了維護快照的方便,在位置2、3和4創建一個單獨的快照表空間和一個模式(schema),系統中的其他用戶通過一個私有同義詞來存取這些快照。這里私有同義詞相對公共同義詞要好,這是因為在位置1存在一個同樣規范的系統,它的表是通過公共同義詞來存取的。對于快照的刷新,采用 Oracle系統包DBMS-_REFRESH進行,并將該刷新過程的運行定時在天天早上2:00,這樣可以減少網絡流量。對于快照的刷新形式,由于對于代碼表的維護不是很多而且代碼表的數據量相對較少,所以在此選擇了完全刷新,這樣就避免了治理快照日志的麻煩。下面以一個節點2(ora_db2)為例來說明具體的技術實現細節。;三、技術實現細節 除非非凡說明,下面的SQL命令都是在數據庫ora_db2的SYSETM用戶下運行的。假設要復制的代碼表有三個:dm_gy_rydm,dm_gy_jgdm和dm_gy_yhdm.;1.在數據庫2(ora_db2)上增加數據庫1(ora_db1)的services name;可以直接在tnsnames.ora文件中增加數據庫1的services name,包括IP地址,SID以及端口號等。Services name 命名為ora_db1.world.;2. 創建一個用于連接數據庫1(ora_db1)的數據庫連接(dblink);SQL> CREATE PUBLIC DATABASE LINK ora_db1.world CONNECT TO SYSTEM IDENTIFIED BY MANAGER USING 'ora_db1.world';;出于安全考慮,可以采用一個私有數據連接。;3. 創建一個名為Snapshot_ts的表空間來存放快照,并創建一個和該表空間有關的名為Snap的用戶。;SQL > CREATE TABLESPACE snapshot_ts DATAFILE 'c:orantdbfilesprodsnapshot01.dbf' SIZE 30M DEFAULT STORAGE (INITIAL 30 K NEXT 15 K MINEXTENTS 1 MAXEXTENTS 100 PCTINCREASE 0);ONLINE PERMANENT;;SQL > CREATE USER snap IDENTIFIED BY snap DEFAULT TABLESPACE snapshot_ts;;SQL > GRANT CONNECT, RESOURCE TO snap;;可以通過下面的SQL語句在ora_db1數據庫以userA用戶來粗略地估計表空間snapshot_ts的大小。;SQL > SELECT SUM(bytes);FROM USER_SEGMENTS WHERE SEGMENT_NAME IN(' dm_gy_rydm','dm_gy_jgdm','dm_gy_yhdm');;4. 運行下面的腳本文件snapsql.sql來生成創建ora_db1數據庫上userA用戶下代碼表的快照腳本:;/* Snapsql.sql */ spool c:snapcreate_snapshot.sql SELECT 'CREATE SNAPSHOT SNAP.' TABLE_NAME ' PCTFREE 10 PCTUSED 40 TABLESPACE snapshot_ts ' ' STORAGE (INITIAL ' INITIAL_EXTENT ' NEXT ' NEXT_EXTENT ' PCTINCREASE 0 )' ' AS SELECT * FROM userA.' TABLE_NAME '@ora_db1.world;' FROM USER_TABLES WHERE TABLE_NAME IN( (' dm_gy_rydm', 'dm_gy_jgdm', 'dm_gy_yhdm'); spool off;注重上面這個生成所需表快照的腳本有一定的局限性,假如所需生成快照的表中含有類型為long的列,‘select *'在這里就不會起作用,上面的這個SQL腳本就不能自動建立生成所需快照的腳本,必須通過在select列表中顯式地添加long型列名來創建表的快照。下面是一個例子,假如我們要創建快照依靠的表dm_gy_note中有一個列note類型為long,就需要單獨寫出如下的創建快照的腳本:;CREATE SNAPSHOT snap.dm_gy_note PCTFREE 10 PCTUSED 40 TABLESPACE snapcost_ts STORAGE (INITIAL 40960 NEXT 57344 PCTINCREASE 0 ) AS SELECT dm, dmmc,note FROM userA.dm_gy_note@ora_db1.worl; SQL > @snapsql.sql;5. 通過運行第4步創建的腳本文件create_snapshot.sql來創建所有的快照, 在腳本文件中包含下面這樣的代碼:;CREATE SNAPSHOT snap. dm_gy_rydm PCTFREE 10 PCTUSED 40 TABLESPACE snapshot_ts STORAGE (INITIAL 163840 NEXT 57344 PCTINCREASE 0);AS SELECT * FROM userA. dm_gy_rydm @ora_db1.world;;運行腳本文件create_snapshot.sql后,就在模式snap中創建了所需要的快照。下一步就是考慮該如何刷新快照。對于快照的刷新,可以通過一些桌面DBA工具來刷新快照也可以通過系統包dbms_snapshot.refresh來刷新一個快照:;SQL > EXECUTE DBMS_SNAPSHOT.REFRESH('snap.dm_gy_rydm');6. 創建一個定時刷新過程來定時刷新快照:;/*sp_snapshot_refresh.sql */ CREATE OR REPLACE PROCEDURE sp_snapshot_refresh IS BEGIN DBMS_REFRESH.MAKE ( NAME=>'tax_dmb_grp', LIST=>'snap. dm_gy_rydm, 'snap.dm_gy_jgdm', 'snap.dm_gy_yhdm', NEXT_DATE=>TRUNC (SYSDATE+1)+2/24, INTERVAL=>'(SYSDATE+1)', IMPLICIT_DESTROY=>FALSE, LAX=>TRUE); END; / SQL > EXECUTE sp_snapshot_refresh;這樣就創建了一個定時任務來天天早晨2:00定時刷新快照。運行下面的SQL語句就可以看到剛剛加入的這個任務。;SQL > SELECT JOB, WHAT FROM DBA_JOBS;;7. 在用戶userB下創建快照的私有同義詞:;SQL > CREATE SYNONYM userB.dm_gy_rydm FOR snap.dm_gy_rydm;;8. 以Snap用戶向userB用戶授與快照可以select的權限。;SQL > GRANT SELECT ON dm_gy_rydm TO userB;;同樣的步驟在位置3(ora_db2)和位置4(ora_db3)建立位置1(ora_db1)的代碼表快照和定時刷新任務。這樣就可實現在位置1統一維護代碼表,在位置2、3和4使用該代碼表的目的。如下面的SQL語句,在位置2(ora_db2)用戶UserB瀏覽在位置1(ora_db1)中的代碼表。;SQL > SELECT * FROM dm_gy_rydm;;;; 四、日常維護  無論任何時候只要出現網絡連接問題,刷新就會失敗。這些錯誤信息可以在alert log文件中找到。下面簡單介紹一下對這種問題的處理辦法:;1. 首先在任務隊列中找到刷新快照的的任務編號;SQL > SELECT JOB,what FROM DBA_JOBS;;2. 刪除該任務;SQL > EXECUTE DBMS_JOB.REMOVE (JOBNO);;3. 刪除快照組;SQL > EXECUTE DBMS_REFRESH.DESTROY ('tax_dmb_grp');;4. 重新創建快照組并且重新定時任務來定時刷新快照;SQL > EXECUTE sp_snapshot_refresh; 五、快照監視;快照可以通過下面的SQL語句來監視;SQL > SELECT NAME,TO_CHAR(last_refresh,'DD-MON-YY HH:MM:SS');FROM DBA_SNAPSHOTS;
標簽: Oracle 數據庫
主站蜘蛛池模板: 国产v日韩v欧美v精品专区 | 亚洲视频在线免费播放 | 国产亚洲综合视频 | 亚洲黄色网页 | 在线观看网址 | 青青草视频在线观看免费 | 一级黄色免费 | 黄色性一级片 | 免费欧洲毛片a级视频老妇女 | 久久精品国产精品国产精品污 | 久久久久久亚洲精品不卡 | 九九热亚洲精品综合视频 | 亚洲欧美日本国产综合在线 | 国产短视频精品区第一页 | 亚洲精品91香蕉综合区 | 欧美特黄a级高清免费看片 欧美特黄a级猛片a级 | 国产mm | 免费视频黄| 日本大片在线观看免费视频 | 国产黄色片在线看 | 伊人亚洲影院 | 久久爱成人网 | 婷婷色网站 | 日本一级特黄特色大片免费视频 | a级午夜毛片免费一区二区 a级午夜理论免费毛片 | www.国产视频 | 在线免费看一级片 | 日本aaaa特级毛片 | 国产在线ts人妖免费视频 | 日韩毛片大全免费高清 | 免费在线观看视频网站 | 日韩欧美精品中文字幕 | 日韩毛片在线免费观看 | 国产午夜亚洲精品一级在线 | 黄色毛片视频在线观看 | 打电话系列国产在线 | 操你影院 | aaa网站| 免费的全黄一级录像带 | 亚洲精品乱码国产精品乱码 | 麻豆传媒入口直接进入免费 |