新聞中心
Oracle數(shù)據(jù)庫是一個(gè)復(fù)雜的系統(tǒng),需要定期進(jìn)行優(yōu)化以保持其最佳性能,手動(dòng)優(yōu)化可能是一項(xiàng)耗時(shí)且容易出錯(cuò)的任務(wù),因此使用凌晨定時(shí)器自動(dòng)執(zhí)行優(yōu)化任務(wù)是一個(gè)很好的解決方案,在本教程中,我們將介紹如何使用凌晨定時(shí)器幫助Oracle定時(shí)進(jìn)行自動(dòng)優(yōu)化。

目前成都創(chuàng)新互聯(lián)公司已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、孝昌網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
1、創(chuàng)建優(yōu)化腳本
我們需要?jiǎng)?chuàng)建一個(gè)Oracle優(yōu)化腳本,這個(gè)腳本將包含一系列的SQL命令,用于分析表、索引和統(tǒng)計(jì)信息,以及執(zhí)行相應(yīng)的優(yōu)化操作,以下是一個(gè)簡(jiǎn)單的優(yōu)化腳本示例:
分析表空間 ANALYZE TABLE SYS.USERS COMPUTE STATISTICS; ANALYZE TABLE SYS.ORDERS COMPUTE STATISTICS; ANALYZE TABLE SYS.DEPT COMPUTE STATISTICS; 分析索引 ANALYZE INDEX SYS.USERS_PK; ANALYZE INDEX SYS.ORDERS_PK; ANALYZE INDEX SYS.DEPT_PK; 更新統(tǒng)計(jì)信息 DBMS_STATS.GATHER_DATABASE_STATS(estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,cascade=>TRUE);
2、創(chuàng)建PL/SQL程序包
接下來,我們需要?jiǎng)?chuàng)建一個(gè)PL/SQL程序包,用于存儲(chǔ)我們的優(yōu)化腳本,在這個(gè)程序包中,我們將定義一個(gè)存儲(chǔ)過程,該過程將在運(yùn)行時(shí)執(zhí)行我們的優(yōu)化腳本,以下是一個(gè)簡(jiǎn)單的PL/SQL程序包示例:
CREATE OR REPLACE PACKAGE OPTIM_PACKAGE AS PROCEDURE RUN_OPTIMIZATION; END OPTIM_PACKAGE; /
在程序包定義中添加我們的優(yōu)化腳本:
CREATE OR REPLACE PACKAGE BODY OPTIM_PACKAGE AS
PROCEDURE RUN_OPTIMIZATION IS
CURSOR c_tables IS
SELECT table_name FROM user_tables;
CURSOR c_indexes IS
SELECT index_name FROM user_indexes;
v_sql CLOB;
BEGIN
FOR r_table IN c_tables LOOP
v_sql := v_sql || 'ANALYZE TABLE ' || r_table.table_name || ' COMPUTE STATISTICS;';
END LOOP;
FOR r_index IN c_indexes LOOP
v_sql := v_sql || 'ANALYZE INDEX ' || r_index.index_name || ';';
END LOOP;
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_COMP=LINGUISTIC';
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_SORT=BINARY_CI';
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''YYYYMMDD''' || 'HH24:MI:SS''' || '''' || 'NLS_NUMERIC_CHARACTERS=''.,''' || '''' || 'NLS_CURRENCY=''$''' || '''' || 'NLS_ISO_CURRENCY=''$''' || '''' || 'NLS_LANGUAGE=''AMERICAN''' || '''' || 'NLS_TERRITORY=''US''' || '''' || 'NLS_CHARACTERSET=''AL32UTF8''';
EXECUTE IMMEDIATE 'DBMS_STATS.GATHER_DATABASE_STATS(estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,cascade=>TRUE)';
COMMIT;
END RUN_OPTIMIZATION;
END OPTIM_PACKAGE;
/
3、創(chuàng)建凌晨定時(shí)器任務(wù)
現(xiàn)在,我們需要?jiǎng)?chuàng)建一個(gè)凌晨定時(shí)器任務(wù),用于在指定的時(shí)間運(yùn)行我們的優(yōu)化程序包,以下是一個(gè)簡(jiǎn)單的凌晨定時(shí)器任務(wù)示例:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (job_name => 'OPTIM_JOB', 任務(wù)名稱
job_type => 'PLSQL_BLOCK', 任務(wù)類型
job_action => 'BEGIN OPTIM_PACKAGE.RUN_OPTIMIZATION; END;', 任務(wù)動(dòng)作
start_date => TRUNC(SYSDATE) + INTERVAL '7' HOUR, 開始時(shí)間(凌晨7點(diǎn))
repeat_interval => 'FREQ=DAILY', 重復(fù)間隔(每天)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)); 結(jié)束時(shí)間(無限期)));
END;
/
4、確保定時(shí)器任務(wù)已啟用并運(yùn)行
我們需要確保我們的凌晨定時(shí)器任務(wù)已啟用并運(yùn)行,可以使用以下查詢來檢查任務(wù)狀態(tài):
SELECT job_name, status, next_run_date FROM dba_scheduler_jobs;
如果一切正常,您應(yīng)該看到名為“OPTIM_JOB”的任務(wù)已啟用并計(jì)劃在每天凌晨7點(diǎn)運(yùn)行,現(xiàn)在,您的Oracle數(shù)據(jù)庫將自動(dòng)進(jìn)行優(yōu)化,無需手動(dòng)干預(yù)。
網(wǎng)頁題目:凌晨定時(shí)器幫助Oracle定時(shí)進(jìn)行自動(dòng)優(yōu)化
鏈接地址:http://m.fisionsoft.com.cn/article/dphicso.html


咨詢
建站咨詢
