Oracle 19C上線後可能出現的問題彙總(全)

資料和雲發表於2022-12-05

導讀:2019年2月Oracle 19c正式問世,新的版本引入了很多重大的功能和新特性,如自治索引、線上操作維護的增強、ADG備庫發出的DML支援自動重定向等等,引起了廣泛關注。而目前市面上Oracle資料庫應用較為廣泛的版本主要是11g 的 11.2.0.4 和12c的12.2.0.1版本,相信大家都十分期待19c的新特性新功能,也更關心19c上線可能會帶來哪些問題。本文以某客戶生產環境資料庫上線19c為例,列舉上線後可能會出現了哪些問題,供大家參考。


問題詳情



某客戶一生產環境資料庫上線 Oracle 19C,作業系統為版本為Red Hat Enterprise Linux Server release 7.6(Maipo),資料庫版本為19.5.0.0.191015,ogg版本為19.1.0.0.0。在割接之後出現了一些問題,內容如下:

1. OGG延時問題


問題現象:OGG一直延時1小時左右

解決辦法:

TRANLOGOPTIONSINTEGRATEDPARAMS (MAX_SGA_SIZE 1024,_LOGMINER_READ_BUFFERS 256,parallelism 2)

修改為:

TRANLOGOPTIONS INTEGRATEDPARAMS (MAX_SGA_SIZE 2048, _LOGMINER_READ_BUFFERS 256,parallelism 2)

OGG延時解除。

2. jar包問題


問題現象:資料庫日誌報錯資訊如下:

2019-10-29T06:15:22.116566+08:00
Errors in file /xxxx/diag/rdbms/xxx2/trace/axxxx67.trc  (incident=807865) (PDBNAME=xxxx):
ORA-03137: malformed TTC packet from clientrejected: [3146] [94] [] [] [] [] [] []
xxxxx(3):Incident details in: /xxxx/diag/rdbms/xxx2/trace/axxxx65.trc
2019-10-29T06:15:23.163773+08:00
xxxxx(3):Session (xx,xxx): Bad TTC Packet Detected: Inbound connection fromclient
xxxxx(3):Session (xx,xxx): Bad TTC Packet Detected: DB Logon User: xxxxx, Remote Machine: xxxxx, Program: xxxxx, OS User: xxxxx
xxxxx(3):Session (xx,xxx): Bad TTC PacketDetected: Client IP Address: xx.xx.xx.xx


解決辦法:

1. 使用合適的jdbc驅動, jdbc vs jdk, jdbcvs db 的相容矩陣如下:

Oracle 19C上線後可能出現的問題彙總(全)
Oracle 19C上線後可能出現的問題彙總(全)

2. 程式碼問題


先看下面一段有問題的程式碼:

    Connection con = null;
     try{
         con = getConnection();
         con.setAutoCommit(false);
           /*
         * update USER set name=’xxx’where id=’000001’;
            */
         con.commit();
     }finally{
          if(con!=null){
              try {
                con.close();
             } catch (SQLExceptione) {
               e.printStackTrace();
             }
           }
       }
問題就出現在con.setAutoCommit(false);,寫程式碼的人把資料庫連線con 設定成非自動提交,但沒有在執行出現異常的時候進行回滾。如果在執行第5行的時候出現異常,con既沒有提交也沒有回滾,表USER就會被鎖住(如果oracle資料庫就是行鎖),而這個鎖卻沒有機會釋放。有人會質疑,在執行con.close()的時候不會釋放鎖嗎?因為如果應用伺服器使用了資料庫連線池,連線不會被斷開。

3. 註冊服務問題    


CDB service和PDB service的建立和刪除方法:
建立PDB xxx的service(add的時候有引數-pdb):

srvctl add service-s service_name -db db_unique_name -pdb pdb_name-preferred(instance_name1,instance_name2)srvctl start service -sservice_name -db db_unique_name

建立CDB的service(不指定-pdb引數預設建立cdb的服務)

srvctl add service -s service_name-db db_unique_name -preferred(instance_name1,instance_name2)srvctl start service -sservice_name -db db_unique_name

4. 時區問題

時區問題導致的後果是日誌資訊記錄的時間有偏差,tfa收集指定時間段資訊有偏差。

cd  $ORACLE_HOME/crs/install
vi  s_xxx_xxx_env.txt
將表示時區的TZ一行中的New_York修改為Shanghai
修改前:
TZ=America/New_York
修改後:
TZ=Asia/Shanghai


參考文件:Differencein Log Time for Clusterware/Database Instance Alert Log Compare to Server Time(Doc ID 2312945.1)

5. ORA-600問題

ORA-600 [KPDBSWITCHPRERESTORE:TXN] 錯誤導致crash,命中BUG In 12.2.0.1 ORA-600 [kpdbSwitchPreRestore: Txn] Crash RACInstances (文件 ID 2583951.1)。MOS關於該文章的描述In 12.2.0.1 ORA-600 [kpdbSwitchPreRestore: Txn] Crash RAC Instances(文件 ID 2583951.1),該BUG會在Oracle 20.1版本中修復。

Oracle 19C上線後可能出現的問題彙總(全)

後臺call stack基本命中,不過_drop_stat_segment引數必須在每個例項中進行設定。

_drop_stat_segment根據解釋是ILM的統計資訊,ILM是12C推出的特性,主要是利用heatmap+Automatic Data Optimization物件進行管理,_drop_stat_segment設定為1應該是清理ILM的相關統計資訊段,該引數在12C中只是建議*._drop_stat_segment=1設定來避免因為ILM導致sysaux過大——HEATMAPSegment Size Is Large In SYSAUX Even When Heatm=Off (文件 ID 2024036.1).


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556440/viewspace-2680504/,如需轉載,請註明出處,否則將追究法律責任。

相關文章