2026年9月29日 星期二

Java 問題造成 opatch 錯誤案例

Oracle 版本: 19.27 

OS 版本: AIX 7.5


問題描述:

將 DB 從 19.27 打 patch 到 19.32 , opatch 遇到了 java 錯誤 :


看起來是因為找不到 java 所以無法執行,但 java 的確是可以執行的 :


設定環境變數 JAVA_HOME 再執行 opatch 一樣的錯誤 :


除了 DB Home 打 patch 有遇到這個問題之外,在打 Goldengate 的 patch 的時候也會出現類似的 java 錯誤: 

OUI-67073:UtilSession failed


解決方法:

使用 opatch 的時候直接指定 jdk 的路徑即可 :

[oracle@db19c ~]$ $ORACLE_HOME/OPatch/opatch apply -jdk /u01/app/oracle/product/19.27.0/dbhome_1/jdk


2026年8月28日 星期五

CRS-4548 造成無法停止 crs 案例

Oracle 版本: 19.27 , RAC

OS 版本: Linux 8.6


問題描述:

使用 crsctl stop crs 停止 crs 發生 CRS-4548: Unable to connect to CRSD ,造成 crs 無法停止的情況 :


問題分析:

檢查 crs 狀態,確認當前 crs 服務是正常且處於啟動的狀態 :


檢查 crs init process , crsd 確實也是處於 ONLINE 狀態 :


就是一個怪異的情境,明明 crs 狀態都是正常的,但是 crsctl stop crs 卻出現 

CRS-4548: Unable to connect to CRSD ,理論上一般出現這個訊息都是在 crs 沒有啟動的時候才會發生,

進一步檢查 crs alert.log ,的確是有 stop 的訊息,但是系統又自動啟動 crs ,最後才報 CRS-4548 :


只要 crsctl stop crs ,由 alert.log 來看還是會自動開啟,這一個循環造成無法停止的情況。


解決方法:

先停止 ora.crsd 之後再 crsctl stop crs :

[root@db19c01 bin]# ./crsctl stop res ora.crsd -init


ora.crsd 先停止之後,整個 cluster 就可以正常下來了 :


2026年7月27日 星期一

Timezone Upgrade 異常案例

資料庫執行 impdp 作業時發生 time zone 相關錯誤 :

A black screen with white text

AI-generated content may be incorrect.

這個訊息表示 export 的來源資料庫 time zone version 為 44 ,而 import 到這個資料庫的 time zone 

為 32 低於來源資料庫,檢查目前的 time zone 資訊 :

SQL> select property_name,substr(property_value,1,30) value

     from database_properties where property_name like 'DST_%';

A screen shot of a computer

AI-generated content may be incorrect.

目前 time zone 已經從 32 upgrade 到 44 ,但是 upgrade 沒有完成導致 DST_UPGRADE_STATE 

的狀態仍為 UPGRADE ,檢視 time zone upgrade 過程的錯誤訊息如下 :

SQL> set serveroutput on

SQL> var numfail number

SQL> begin

      dbms_dst.upgrade_database(:numfail,

        parallel => true,

        log_errors => true,

        log_errors_table => 'SYS.DST$ERROR_TABLE',

        log_triggers_table => 'SYS.DST$TRIGGER_TABLE',

        error_on_overlap_time => false,

        error_on_nonexisting_time => false);

      dbms_output.put_line('Failures:'||:numfail);

    end;

    /

A screenshot of a computer program

AI-generated content may be incorrect.

結果顯示在 refresh materialized view 的時候發生 ORA-00942 table 不存在的錯誤。

經查證此 MView 已經不再使用,所以會產生 table 不存在的問題,將此不使用的 MView drop 

之後再檢查 time zone upgrade 已無錯誤 :

SQL> DROP MATERIALIZED VIEW GNC.MV_MERCH_DATA;

A computer screen shot of white text

AI-generated content may be incorrect.

upgrade 已無錯誤即可 end upgrade session :

SQL> var fail number

SQL> begin

      dbms_dst.end_upgrade(:fail);

      dbms_output.put_line('Failures:'||:fail);

    end;

    /

A computer screen shot of white text

AI-generated content may be incorrect.


end upgrade session 之後 DST_UPGRADE_STATE 狀態恢復正常 :

A screen shot of a computer

AI-generated content may be incorrect.