Oracle自動(dòng)備份的三種方法:
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供北侖網(wǎng)站建設(shè)、北侖做網(wǎng)站、北侖網(wǎng)站設(shè)計(jì)、北侖網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、北侖企業(yè)網(wǎng)站模板建站服務(wù),10年北侖做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
Oracle自動(dòng)備份數(shù)據(jù)庫(kù)不外乎以下三種方式:
WINDOWS下的任務(wù)計(jì)劃(At命令)
UNIX下的Crontab
第三方工具如Viritas
在以上三種方式中Viritas屬于第三方工具,很多人可能都沒(méi)有接觸,主要說(shuō)一下windows的任務(wù)計(jì)劃與unix的cron
1、生成腳本文件,如backup.rcv 假定文件內(nèi)容如下:
$cat backup.rcv connect target sys/password rcvcat rman/rman@localname; run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’ archivelog all delete input; release channel c1; release channel c2; release channel c3; }
2、生成執(zhí)行文件在windows上生成backup_archive.bat,內(nèi)容包括rman cmdfile = backup.rcv 在unix下生成 backup_archive.sh,內(nèi)容包括oracle/ramn/rman cmdfile = backup.rcv
3、加入調(diào)度在windows中用任務(wù)計(jì)劃向?qū)Ъ纯?,或使用at命令。在unix中,在目標(biāo)機(jī)器上編寫(xiě)一個(gè)文件,用以啟動(dòng)Oracle自動(dòng)備份進(jìn)程。假定文件名為ORACLE,文件將放在/var/spool/cron/crontabs目錄下
$cat oracle
0 23 * * 0 backup_archive.sh
#表示星期天23點(diǎn)對(duì)數(shù)據(jù)庫(kù)備份
0 12,18 * * * backup_archive.sh
#表示每天12點(diǎn),18點(diǎn)備份
Crontab文件的每一行由六個(gè)域(minutes,hours,day of month,month,day of week,command)組成,域之間用空格或Tab分隔開(kāi)來(lái)。
不使用Oracle text功能,也有很多方法可以在Oracle數(shù)據(jù)庫(kù)中搜索文本.可以使用標(biāo)準(zhǔn)的INSTR函數(shù)和LIKE操作符實(shí)現(xiàn)。
SELECT *FROM mytext WHERE INSTR (thetext, 'Oracle') 0;
SELECT * FROM mytext WHERE thetext LIKE '%Oracle%';
有很多時(shí)候,使用instr和like是很理想的, 特別是搜索僅跨越很小的表的時(shí)候.然而通過(guò)這些文本定位的方法將導(dǎo)致全表掃描,對(duì)資源來(lái)說(shuō)消耗比較昂貴,而且實(shí)現(xiàn)的搜索功能也非常有限,因此對(duì)海量的文本數(shù)據(jù)進(jìn)行搜索時(shí),建議使用oralce提供的全文檢索功能 建立全文檢索的步驟步驟一 檢查和設(shè)置數(shù)據(jù)庫(kù)角色首先檢查數(shù)據(jù)庫(kù)中是否有CTXSYS用戶和CTXAPP腳色。如果沒(méi)有這個(gè)用戶和角色,意味著你的數(shù)據(jù)庫(kù)創(chuàng)建時(shí)未安裝intermedia功能。你必須修改數(shù)據(jù)庫(kù)以安裝這項(xiàng)功能。 默認(rèn)安裝情況下,ctxsys用戶是被鎖定的,因此要先啟用ctxsys的用戶。 步驟二 賦權(quán) 在ctxsys用戶下把ctx_ddl的執(zhí)行權(quán)限賦于要使用全文索引的用戶,例:
grant execute on ctx_ddl to pomoho;
步驟三 設(shè)置詞法分析器(lexer)
Oracle實(shí)現(xiàn)全文檢索,其機(jī)制其實(shí)很簡(jiǎn)單。即通過(guò)Oracle專利的詞法分析器(lexer),將文章中所有的表意單元(Oracle 稱為 term)找出來(lái),記錄在一組 以dr$開(kāi)頭的表中,同時(shí)記下該term出現(xiàn)的位置、次數(shù)、hash 值等信息。檢索時(shí),Oracle 從這組表中查找相應(yīng)的term,并計(jì)算其出現(xiàn)頻率,根據(jù)某個(gè)算法來(lái)計(jì)算每個(gè)文檔的得分(score),即所謂的‘匹配率’。而lexer則是該機(jī)制的核心,它決定了全文檢索的效率。Oracle 針對(duì)不同的語(yǔ)言提供了不同的 lexer, 而我們通常能用到其中的三個(gè):
n basic_lexer: 針對(duì)英語(yǔ)。它能根據(jù)空格和標(biāo)點(diǎn)來(lái)將英語(yǔ)單詞從句子中分離,還能自動(dòng)將一些出現(xiàn)頻率過(guò)高已經(jīng)失去檢索意義的單詞作為‘垃圾’處理,如if , is 等,具有較高的處理效率。但該lexer應(yīng)用于漢語(yǔ)則有很多問(wèn)題,由于它只認(rèn)空格和標(biāo)點(diǎn),而漢語(yǔ)的一句話中通常不會(huì)有空格,因此,它會(huì)把整句話作為一個(gè) term,事實(shí)上失去檢索能力。以‘中國(guó)人民站起來(lái)了’這句話為例,basic_lexer 分析的結(jié)果只有一個(gè)term ,就是‘中國(guó)人民站起來(lái)了’。此時(shí)若檢索‘中國(guó)’,將檢索不到內(nèi)容。
n chinese_vgram_lexer: 專門(mén)的漢語(yǔ)分析器,支持所有漢字字符集(ZHS16CGB231280 ZHS16GBK ZHT32EUC ZHT16BIG5 ZHT32TRIS ZHT16MSWIN950 ZHT16HKSCS UTF8 )。該分析器按字為單元來(lái)分析漢語(yǔ)句子?!袊?guó)人民站起來(lái)了’這句話,會(huì)被它分析成如下幾個(gè)term: ‘中’,‘中國(guó)’,‘國(guó)人’,‘人民’,‘民站’,‘站起’,起來(lái)’,‘來(lái)了’,‘了’??梢钥闯?,這種分析方法,實(shí)現(xiàn)算法很簡(jiǎn)單,并且能實(shí)現(xiàn)‘一網(wǎng)打盡’,但效率則是差強(qiáng)人意。
n chinese_lexer: 這是一個(gè)新的漢語(yǔ)分析器,只支持utf8字符集。上面已經(jīng)看到,chinese vgram lexer這個(gè)分析器由于不認(rèn)識(shí)常用的漢語(yǔ)詞匯,因此分析的單元非常機(jī)械,像上面的‘民站’,‘站起’在漢語(yǔ)中根本不會(huì)單獨(dú)出現(xiàn),因此這種term是沒(méi)有意義的,反而影響效率。chinese_lexer的最大改進(jìn)就是該分析器 能認(rèn)識(shí)大部分常用漢語(yǔ)詞匯,因此能更有效率地分析句子,像以上兩個(gè)愚蠢的單元將不會(huì)再出現(xiàn),極大 提高了效率。但是它只支持 utf8, 如果你的數(shù)據(jù)庫(kù)是zhs16gbk字符集,則只能使用笨笨的那個(gè)Chinese vgram lexer.
如果不做任何設(shè)置,Oracle 缺省使用basic_lexer這個(gè)分析器。要指定使用哪一個(gè)lexer, 可以這樣操作:
第一. 當(dāng)前用戶下下建立一個(gè)preference(例:在pomoho用戶下執(zhí)行以下語(yǔ)句)
exec ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer');
第二. 在建立全文索引索引時(shí),指明所用的lexer:
CREATE INDEX myindex ON mytable(mycolumn) indextype is ctxsys.context
parameters('lexer my_lexer');
這樣建立的全文檢索索引,就會(huì)使用chinese_vgram_lexer作為分析器。
步驟四 建立索引
通過(guò)以下語(yǔ)法建立全文索引
CREATE INDEX [schema.]index on [schema.]table(column) INDEXTYPE IS ctxsys.context [ONLINE]
LOCAL [(PARTITION [partition] [PARAMETERS('paramstring')]
[, PARTITION [partition] [PARAMETERS('paramstring')]])]
[PARAMETERS(paramstring)] [PARALLEL n] [UNUSABLE];
例:
CREATE INDEX ctx_idx_menuname ON pubmenu(menuname)
indextype is ctxsys.context parameters('lexer my_lexer')
步驟五 使用索引
使用全文索引很簡(jiǎn)單,可以通過(guò):
select * from pubmenu where contains(menuname,'上傳圖片')0
全文索引的種類
建立的Oracle Text索引被稱為域索引(domain index),包括4種索引類型:
l CONTEXT
2 CTXCAT
3 CTXRULE
4 CTXXPATH
依據(jù)你的應(yīng)用程序和文本數(shù)據(jù)類型你可以任意選擇一種。
對(duì)多字段建立全文索引
很多時(shí)候需要從多個(gè)文本字段中查詢滿足條件的記錄,這時(shí)就需要建立針對(duì)多個(gè)字段的全文索引,例如需要從pmhsubjects(專題表)的 subjectname(專題名稱)和briefintro(簡(jiǎn)介)上進(jìn)行全文檢索,則需要按以下步驟進(jìn)行操作:
? 建議多字段索引的preference
以ctxsys登錄,并執(zhí)行:
EXEC ctx_ddl.create_preference(' ctx_idx_subject_pref',
'MULTI_COLUMN_DATASTORE');
? 建立preference對(duì)應(yīng)的字段值(以ctxsys登錄)
EXEC ctx_ddl.set_attribute(' ctx_idx_subject_pref ','columns','subjectname,briefintro');
? 建立全文索引
CREATE INDEX ctx_idx_subject ON pmhsubjects(subjectname)
INDEXTYPE ISctxsys.CONTEXT PARAMETERS('DATASTORE ctxsys.ctx_idx_subject_pref lexer my_lexer')
? 使用索引
select * from pmhsubjects where contains(subjectname,'李宇春')0
全文索引的維護(hù)
對(duì)于CTXSYS.CONTEXT索引,當(dāng)應(yīng)用程序?qū)磉M(jìn)行DML操作后,對(duì)基表的索引維護(hù)是必須的。索引維護(hù)包括索引同步和索引優(yōu)化。
在索引建好后,我們可以在該用戶下查到Oracle自動(dòng)產(chǎn)生了以下幾個(gè)表:(假設(shè)索引名為myindex):
DR$myindex$I、DR$myindex$K、DR$myindex$R、DR$myindex$N其中以I表最重要,可以查詢一下該表,看看有什么內(nèi)容:
SELECT token_text, token_count FROM dr$i_rsk1$I WHERE ROWNUM = 20;
這里就不列出查詢接過(guò)了??梢钥吹?,該表中保存的其實(shí)就是Oracle 分析你的文檔后,生成的term記錄在這里,包括term出現(xiàn)的位置、次數(shù)、hash值等。當(dāng)文檔的內(nèi)容改變后,可以想見(jiàn)這個(gè)I表的內(nèi)容也應(yīng)該相應(yīng)改變,才能保證Oracle在做全文檢索時(shí)正確檢索到內(nèi)容(因?yàn)樗^全文檢索,其實(shí)核心就是查詢這個(gè)表)。這就用到sync(同步) 和 optimize(優(yōu)化)了。
同步(sync): 將新的term 保存到I表;
優(yōu)化(optimize): 清除I表的垃圾,主要是將已經(jīng)被刪除的term從I表刪除。
當(dāng)基表中的被索引文檔發(fā)生insert、update、delete操作的時(shí)候,基表的改變并不能馬上影響到索引上直到同步索引??梢圆樵円晥D CTX_USER_PENDING查看相應(yīng)的改動(dòng)。例如:
SELECT pnd_index_name, pnd_rowid,
TO_CHAR (pnd_timestamp, 'dd-mon-yyyy hh24:mi:ss') timestamp
FROM ctx_user_pending;
該語(yǔ)句的輸出類似如下:
PND_INDEX_NAME PND_ROWID TIMESTAMP
------------------------------ ------------------ --------------------
MYINDEX AAADXnAABAAAS3SAAC 06-oct-1999 15:56:50
同步和優(yōu)化方法: 可以使用Oracle提供的ctx_ddl包同步和優(yōu)化索引
一. 對(duì)于CTXCAT類型的索引來(lái)說(shuō), 當(dāng)對(duì)基表進(jìn)行DML操作的時(shí)候,Oracle自動(dòng)維護(hù)索引。對(duì)文檔的改變馬上反映到索引中。CTXCAT是事務(wù)形的索引。
索引的同步
在對(duì)基表插入,修改,刪除之后同步索引。推薦使用sync同步索引。語(yǔ)法:
ctx_ddl.sync_index(
idx_name IN VARCHAR2 DEFAULT NULL
memory IN VARCHAR2 DEFAULT NULL,
part_name IN VARCHAR2 DEFAULT NULL
parallel_degree IN NUMBER DEFAULT 1);
idx_name 索引名稱
memory 指定同步索引需要的內(nèi)存。默認(rèn)是系統(tǒng)參數(shù)DEFAULT_INDEX_MEMORY 。
指定一個(gè)大的內(nèi)存時(shí)候可以加快索引效率和查詢速度,且索引有較少的碎片
part_name 同步哪個(gè)分區(qū)索引。
parallel_degree 并行同步索引。設(shè)置并行度。
例如:
同步索引myindex:Exec ctx_ddl.sync_index ('myindex');
實(shí)施建議:建議通過(guò)oracle的job對(duì)索引進(jìn)行同步
索引的優(yōu)化
經(jīng)常的索引同步將會(huì)導(dǎo)致你的CONTEXT索引產(chǎn)生碎片。索引碎片嚴(yán)重的影響了查詢的反應(yīng)速度。你可以定期優(yōu)化索引來(lái)減少碎片,減少索引大小,提高查詢效率。
當(dāng)文本從表中刪除的時(shí)候,Oracle Text標(biāo)記刪除的文檔,但是并不馬上修改索引。因此,就的文檔信息占據(jù)了不必要的空間,導(dǎo)致了查詢額外的開(kāi)銷。你必須以FULL模式優(yōu)化索引,從索引中刪除無(wú)效的舊的信息。這個(gè)過(guò)程叫做垃圾處理。當(dāng)你經(jīng)常的對(duì)表文本數(shù)據(jù)進(jìn)行更新,刪除操作的時(shí)候,垃圾處理是很必要的。
exec ctx_ddl.optimize_index ('myidx', 'full');
實(shí)施建議:每天在系統(tǒng)空閑的時(shí)候?qū)θ乃饕M(jìn)行相應(yīng)的優(yōu)化,以提高檢索的效率
P.S.定時(shí)優(yōu)化索引
3.定時(shí)優(yōu)化同步域索引
創(chuàng)建定時(shí)任務(wù),定期優(yōu)化和同步域索引
SQL create or replace procedure hsp_sync_index as
2 begin
3 ctx_ddl.sync_index('id_cont_msg');
4 end;
5 /
Procedure created.
Elapsed: 00:00:00.08
SQL VARIABLE jobno number;
SQL BEGIN
2 DBMS_JOB.SUBMIT(:jobno,'hsp_sync_index();',
3 SYSDATE, 'SYSDATE + (1/24/4)');
4 commit;
5 END;
6 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.27
SQL create or replace procedure hsp_optimize_index as
2 begin
3 ctx_ddl.optimize_index('id_cont_msg','FULL');
4 end;
5 /
SQL VARIABLE jobno number;
SQL BEGIN
2 DBMS_JOB.SUBMIT(:jobno,'hsp_optimize_index();',
3 SYSDATE, 'SYSDATE + 1');
4 commit;
5 END;
6 /
Procedure created.
Elapsed: 00:00:00.03
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.02
SQL
從Windows桌面執(zhí)行“開(kāi)始”→“程序”→“Oracle - ORACLE_HOME_NAME”→“配置和移置工具”→“Database Configuration Assistant”命令,打開(kāi)Database Configuration Assistant對(duì)話框的歡迎界面,單擊該界面中的“下一步”按鈕
啟用“創(chuàng)建數(shù)據(jù)庫(kù)”選項(xiàng),單擊“下一步”按鈕,進(jìn)入“步驟2:數(shù)據(jù)庫(kù)模板”界面
啟用“一般用途或事務(wù)處理”選項(xiàng),單擊“下一步”按鈕,進(jìn)入“步驟3:數(shù)據(jù)庫(kù)標(biāo)識(shí)”界面
在“步驟3:數(shù)據(jù)庫(kù)標(biāo)識(shí)”界面中設(shè)置新數(shù)據(jù)庫(kù)的全局?jǐn)?shù)據(jù)庫(kù)名,這里設(shè)置為myorcl,而數(shù)據(jù)庫(kù)實(shí)例名(SID)默認(rèn)與全局?jǐn)?shù)據(jù)庫(kù)名相同,也為myorcl
設(shè)置好口令后,單擊“下一步”按鈕,進(jìn)入“步驟6:存儲(chǔ)選項(xiàng)”界面,在該界面中啟用“文件系統(tǒng)”選項(xiàng)
單擊“下一步”按鈕,進(jìn)入“步驟7:數(shù)據(jù)庫(kù)文件所在位置”界面。設(shè)置好存儲(chǔ)位置后,單擊“下一步”按鈕,進(jìn)入“步驟8
¤采用默認(rèn)設(shè)置,單擊“下一步”按鈕,進(jìn)入“步驟9:數(shù)據(jù)庫(kù)內(nèi)容”界面,該界面中可以對(duì)示例方案及定制腳本進(jìn)行配置。采用默認(rèn)設(shè)置,單擊“下一步”按鈕,進(jìn)入“步驟10:初始化參數(shù)”界面,該界面中可以對(duì)內(nèi)存、調(diào)整大小、字符集和連接模式進(jìn)行配置。采用默認(rèn)設(shè)置,單擊“下一步”按鈕,進(jìn)入“步驟11:安全設(shè)置”界面,在該界面中采用默認(rèn)設(shè)置,即啟用“保留增強(qiáng)的11g默認(rèn)安全設(shè)置”選項(xiàng)。¤單擊“下一步”按鈕,進(jìn)入“步驟 12:自動(dòng)維護(hù)任務(wù)”界面,在該界面中選擇“啟用自動(dòng)維護(hù)任務(wù)”選項(xiàng)。
單擊“下一步”按鈕,進(jìn)入“步驟13:數(shù)據(jù)庫(kù)存儲(chǔ)”界面,在該界面中可以指定數(shù)據(jù)庫(kù)的存儲(chǔ)參數(shù),單擊“下一步”按鈕,進(jìn)入“步驟14:創(chuàng)建選項(xiàng)”界面
9
單擊“完成”按鈕,在彈出的“確認(rèn)”對(duì)話框中單擊“確定”按鈕,即可開(kāi)始新數(shù)據(jù)庫(kù)的創(chuàng)建
文章名稱:oracle怎么自動(dòng)維護(hù),oracle日常運(yùn)維
文章位置:http://jinyejixie.com/article26/dsdgpcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、面包屑導(dǎo)航、云服務(wù)器、全網(wǎng)營(yíng)銷推廣、移動(dòng)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)