兩個Oracle配置問題的解決記錄

來源:互聯網
上載者:User

兩個Oracle配置問題的解決記錄

Oracle資料庫無論是在安裝還是運行,都涉及到與周邊軟硬體的各種聯絡。一套健康的資料庫系統,要想順利安裝並且平穩運行,都需要各方面周邊組件的配置調整。一旦某個方面存在問題,一些想當然的過程都會出現問題。

本篇記錄了最近遇到的兩個問題,記錄下來,留待不時之需。

--------------------------------------分割線 --------------------------------------

在CentOS 6.4下安裝Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虛擬機器中安裝步驟

Debian 下 安裝 Oracle 11g XE R2

--------------------------------------分割線 --------------------------------------

1、Oracle OCM作業運行報錯ORA-29280

一個同事系統中出現小故障,筆者協助協助查看。由於系統總體負載很低,也沒有明顯的功能影響點,筆者也沒有直觀的思路。一般而言,從alert log中我們可以按照時間關係查看到Oracle的重要問題現象。

從日誌情況中,卻發現了一些其他問題。

Mon Jun 02 22:00:08 2014

Errors in file /u01/app/oracle/diag/rdbms/dt/MM/trace/MM_j001_43954.trc:

ORA-12012: error on auto execute of job "ORACLE_OCM"."MGMT_CONFIG_JOB_2_1"

ORA-29280: invalid directory path

ORA-06512: at "ORACLE_OCM.MGMT_DB_LL_METRICS", line 2436

ORA-06512: at line 1

在系統資料庫運行過程中,基本每天夜間22點都會有這個報錯出現。系統負載很低(日誌切換並不頻繁),除此之外沒有明顯的錯誤。

22點對於Oracle而言是一個重要的時間點,進入10g之後,Oracle夜間都會自動調度一些維護作業,來確保資料庫順利高效運行。這些作業中,最有名的就是統計量自動收集作業,夜間對新對象或者變化頻繁對象進行資料統計量收集。

進入11g之後,這種夜間作業機制在不斷的強化,但是執行時間視窗有了變化,起始時間調整為夜間22:00開始。我們在日誌中看到的報錯,就是Oracle OCM(Oracle Configuration Manager)夜間執行的作業之一。

OCM是Oracle內部的一個工作群組件,用於提供一些配置參數協助方面的工作。我們安裝資料庫後,會看到使用者schema列表中包括一個名稱為ORACLE_OCM的使用者名稱,就是這個組件的內部對應資料使用者集合。

根據Oracle MOS的介紹,出現這樣的錯誤是由於Oracle資料庫升級過程中的不完全造成的。在OCM進行度量(instrument)過程中,會自動往一些directory目錄位置寫入資訊。如果目錄配置有問題,就會引起報錯。

一般系統中,我們也可以看到這些預設的目錄的。

SQL> select directory_name, directory_path from dba_directories;

DIRECTORY_NAME                DIRECTORY_PATH

------------------------------ --------------------------------------------------------------------------------

XMLDIR                        /u01/app/oracle/rdbms/xml

ORACLE_OCM_CONFIG_DIR          /u01/app/oracle/ccr/hosts/SimpleLinux.localdomain/state

DATA_PUMP_DIR                  /u01/app/admin/ora11g/dpdump/

ORACLE_OCM_CONFIG_DIR2        /u01/app/oracle/ccr/state

在很多情況下,ORACLE_OCM_CONFIG_DIR2目錄中是會寫入一些資料的。如果這個目錄配置有問題或者不存在,就會出現作業報錯的情況。

瞭解了問題原因,解決之道就比較容易了。和其他中繼資料損壞處理方法相同,或者執行安裝指令碼,重新安裝組件,或者禁用組件運行。

下面是進行OCM目錄配置的方法步驟。說明:由於環境所限,筆者沒有進行實際測試,下列指令碼在第三方環境中進行。

首先運行指令碼檢查OCM配置安裝情況。

[oracle@SimpleLinux ~]$ cd $ORACLE_HOME/ccr/bin

[oracle@SimpleLinux bin]$ ls -l | grep deploy

-rw-r--r--. 1 oracle oinstall 48758 Jun  5  2013 deployPackages

[oracle@SimpleLinux bin]$ chmod 755 deployPackages

[oracle@SimpleLinux bin]$ ./deployPackages -l

The Oracle Configuration Manager state/writeable directory structure is incomplete.

OCM is not configured for this host or ORACLE_CONFIG_HOME. Please configure OCM first.

根據筆者環境的提示,OCM沒有在筆者伺服器進行配置,如果配置了,就會顯示如Step2的提示內容。

第二步是執行指令碼建立OCM directory對象和授予許可權。

SQL> conn / as sysdba

Connected.

@ORACLE_HOME/ccr/admin/scripts/ocmjb10.sql

@ORACLE_HOME/ccr/admin/scripts/execute execocm.sql

最後確定directory建立情況。

SQL> select directory_name, directory_path from dba_directories where DIRECTORY_NAME like '%OCM_CONFIG%';

DIRECTORY_NAME                DIRECTORY_PATH

------------------------------ --------------------------------------------------------------------------------

ORACLE_OCM_CONFIG_DIR          /u01/app/oracle/ccr/hosts/SimpleLinux.localdomain/state

ORACLE_OCM_CONFIG_DIR2        /u01/app/oracle/ccr/state

注意:要求DIR2是存在的。

第二種方法更加簡單,如果確定系統不需要OCM運行,可以關閉這個作業執行。畢竟多一事不如少一事,當然這個需要確認系統不需要OCM的運行。

刪除ORACLE_OCM使用者schema,或者禁用job作業。

exec dbms_scheduler.disable('ORACLE_OCM.MGMT_CONFIG_JOB')

exec dbms_scheduler.disable('ORACLE_OCM.MGMT_STATS_CONFIG_JOB')

這個案例並不難解決,但是告訴我們一點:對系統的維護過程,要是全方面的。定期查看系統作業記錄,及時發現潛在問題,解決問題很重要。讓資料庫“帶傷”運行,未來會帶來一些意想不到的問題。

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.