Oracle數(shù)據(jù)庫快照的使用
下面以我在開發(fā)襄樊市電信局170話費(fèi)催繳系統(tǒng)中使用快照加快查詢速度的實(shí)現(xiàn)過程為例來說明快照的使用方法:
170話費(fèi)催繳系統(tǒng)是一個(gè)向用戶電話播放催繳話費(fèi)提示音的系統(tǒng)。用戶的欠費(fèi)金額存放在rs6000小型機(jī)sffw用戶下的表yh_qfcx中(yh_qfcx表是一個(gè)隨用戶繳費(fèi)情況動(dòng)態(tài)變化的欠費(fèi)記錄表),而催繳系統(tǒng)的數(shù)據(jù)按要求存放在另外一臺(tái)xf170服務(wù)器dmtcx用戶下,為在dmtcx用戶下使用sffw用戶下表yh_qfcx中的部分?jǐn)?shù)據(jù),我在dmtcx用戶下建立了yh_qfcx的快照S_yh_qfcx,以加快查詢速度。
具體步驟如下:
一、在sffw用戶下建立表yh_qfcx的快照日志;
只有先建立表yh_qfcx的快照日志,才能在快照中執(zhí)行快速刷新。
Create snapshot log on yh_qfcx;
二、在dmtcx用戶下建立到sffw用戶的數(shù)據(jù)庫鏈link_sf;
建立了到sffw用戶的數(shù)據(jù)庫鏈后才能從sffw用戶下的表yh_qfcx中獲取數(shù)據(jù)。
Create database link link_sf
Connect to sffw identified by xxxxxxx using 'rs6000';
三、在dmtcx用戶下建立快照s_yh_qfcx;
Create snapshot s_yh_qfcx as
Select yhh,qf6+qf5+qf4+qf3+qf2+qf1+qf qfje
From yh_qfcx@link_sf
Where tjbz='K' and bz6+bz5+bz4+bz3+bz2+bz1+bz>0;
四、根據(jù)需要修改快照刷新的間隔時(shí)間;
dmtcx用戶下的快照s_yh_qfcx為了與sffw用戶下的主表yh_qfcx保持同步,需要不斷刷新快照。只有設(shè)定了快照的刷新間隔時(shí)間,oracle才會(huì)自動(dòng)刷新該快照。
快照的刷新有兩種方式:快速刷新和完全刷新??焖偎⑿滦枰煺盏闹鞅硐扔锌煺杖罩敬嬖?完全刷新時(shí)oracle執(zhí)行快照查詢,將結(jié)果放入快照??焖偎⑿卤韧耆⑿驴?,因?yàn)榭焖偎⑿聦⒅鲾?shù)據(jù)庫的數(shù)據(jù)經(jīng)網(wǎng)絡(luò)發(fā)送到快照的數(shù)據(jù)少,僅需傳送主表中修改過的數(shù)據(jù),而完全刷新要傳送快照查詢的全部結(jié)果。
Alter snapshot s_yh_qfcx refresh fast
Start with sysdate+1/1440 next sysdate+1/144;
{此SQL語句的意思為:設(shè)定oracle自動(dòng)在1分鐘
(1/24*60)后進(jìn)行第一次快速刷新,以后每隔10分鐘
(10/24*60)快速刷新一次。}
Alter snapshot s_yh_qfcx refresh complete
Start with sysdate+1/2880 next sysdate+1;
{此SQL語句的意思為:設(shè)定oracle自動(dòng)在30鈔
(30/24*60*60)后進(jìn)行第一次完全刷新,
以后每隔1天完全刷新一次。}
說明:
1、因?yàn)榭煺账⑿率欠?wù)器自動(dòng)完成的,所以要保證oracle數(shù)據(jù)庫啟動(dòng)了快照刷新進(jìn)程。查看oracle數(shù)據(jù)庫是否啟動(dòng)了快照刷新進(jìn)程,可以以數(shù)據(jù)庫sys身份查看視圖V_$SYSTEM_PARAMETER中的參數(shù)snapshot_refresh_processes的值是否為1,如果不為1,則快照刷新進(jìn)程未啟動(dòng)。
2、啟動(dòng)快照刷新進(jìn)程的方法為:修改oracle數(shù)據(jù)庫的初始化文件initorcl.ora,將其中的snapshot_refresh_processes參數(shù)的值改由0改為1,然后重新啟動(dòng)oracle數(shù)據(jù)即可。
3、需要說明的是:建立快照日志時(shí)oracle數(shù)據(jù)庫為我們建立了一個(gè)基于yh_qfcx的觸發(fā)器tlog$_yh_qfcx和快照日志表mlog$_yh_qfcx;建立快照時(shí)oracle數(shù)據(jù)庫為我們建立了一個(gè)表、兩個(gè)視圖、一個(gè)索引,它們分別為:
一個(gè)表:snap$_s_yh_qfcx;
兩個(gè)視圖:mview$_s_yh_qfcx和s_yh_qfcx;
一個(gè)索引:I_snap$_s_yh_qfcx(
基于表snap$_s_yh_qfcx中的m_row$$字段。
相關(guān)文章
關(guān)于Oracle存儲(chǔ)過程和調(diào)度器實(shí)現(xiàn)自動(dòng)對(duì)數(shù)據(jù)庫過期數(shù)據(jù)清除的問題
這篇文章主要介紹了Oracle存儲(chǔ)過程和調(diào)度器實(shí)現(xiàn)自動(dòng)對(duì)數(shù)據(jù)庫過期數(shù)據(jù)清除,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01Oracle SQLPlus導(dǎo)出數(shù)據(jù)到csv文件的方法
這篇文章主要介紹了Oracle SQLPlus導(dǎo)出數(shù)據(jù)到csv文件,需要的朋友可以參考下2020-05-05oracle中動(dòng)態(tài)SQL使用詳細(xì)介紹
Oracle編譯PL/SQL程序塊分為兩個(gè)種:通常靜態(tài)SQL采用前一種編譯方式,而動(dòng)態(tài)SQL采用后一種編譯方式,需要了解的朋友可以參考下2012-11-11關(guān)于系統(tǒng)重裝后Oracle數(shù)據(jù)庫完全恢復(fù)的解決辦法
本篇文章是對(duì)系統(tǒng)重裝后Oracle數(shù)據(jù)庫完全恢復(fù)的解決辦法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06Oracle性能究極優(yōu)化(Oracle 性能優(yōu)化)
Linux Journal 發(fā)表了一篇優(yōu)化 Oracle 數(shù)據(jù)庫的文章,感覺十分的有用。簡(jiǎn)要介紹其摘要和大家共同分享 Linux 在企業(yè)級(jí)數(shù)據(jù)庫上應(yīng)用2007-03-03winserver 2012R2 安裝oracle及創(chuàng)建表流程(推薦)
這篇文章主要介紹了winserver 2012R2 安裝oracle及創(chuàng)建表流程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06oracle數(shù)據(jù)庫中查看系統(tǒng)存儲(chǔ)過程的方法
這篇文章主要介紹了oracle數(shù)據(jù)庫中查看系統(tǒng)存儲(chǔ)過程的方法,需要的朋友可以參考下2014-06-06oracle中if/else的三種實(shí)現(xiàn)方式詳解
本文給大家介紹了oracle中if/else的三種實(shí)現(xiàn)方式及注意事項(xiàng),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-10-10