11 應用程式突報Oracle TNS-12514典型案例分析
故障描述
某次深夜,使用者反饋某核心業務系統故障,提示無法連線資料庫。之後,使用者同步嘗試在堡壘機上,使用客戶端工具連線資料庫,同樣命中報錯,輸出TNS-12514無法連線資料庫。相信但凡有經驗的DBA,遇到此類報錯,可能會想“這不是很常見的連線問題嘛”,但事實真的有這麼簡單麼?
根因分析
首先,使用者就檢查了資料庫alert日誌,其中也未發現ORA-報錯資訊,在和使用者的交流當中,其實也大概排除了網路問題以及可能的配置變更,如下圖所示:
其次檢視叢集狀態crsctl stat res -t顯示正常,CRS日誌該時間點未發現錯誤資訊,系統日誌/var/log/messages該時間點未發現錯誤資訊,監聽狀態正常但監聽日誌裡報錯無法連線,如下顯示:
Sat Jan 28 00:08:04 2023 28-JAN-2023 00:08:04 * service_update * ecrac1 * 0 28-JAN-2023 00:08:07 * service_update * ecrac1 * 0 Sat Jan 28 00:08:16 2023 28-JAN-2023 00:08:16 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ecrac1)(CID=(PROGRAM=sqlplus)(HOST=infolexdr)(USER=mon))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.128.243.41)(PORT=19157)) * establish * ecrac1 * 12514 TNS-12514: TNS:listener does not currently know of service requested in connect descriptor 28-JAN-2023 00:08:16 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ecrac1)(CID=(PROGRAM=sqlplus)(HOST=infolexdr)(USER=mon))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.128.243.41)(PORT=19158)) * establish * ecrac1 * 12514 TNS-12514: TNS:listener does not currently know of service requested in connect descriptor 28-JAN-2023 00:08:16 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ecrac1)(CID=(PROGRAM=sqlplus)(HOST=infolexdr)(USER=mon))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.128.243.41)(PORT=19159)) * establish * ecrac1 * 12514 TNS-12514: TNS:listener does not currently know of service requested in connect descriptor 28-JAN-2023 00:08:16 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ecrac1)(CID=(PROGRAM=sqlplus)(HOST=infolexdr)(USER=mon))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.128.243.41)(PORT=19160)) * establish * ecrac1 * 12514 TNS-12514: TNS:listener does not currently know of service requested in connect descriptor 28-JAN-2023 00:08:16 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ecrac1)(CID=(PROGRAM=sqlplus)(HOST=infolexdr)(USER=mon))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.128.243.41)(PORT=19161)) * establish * ecrac1 * 12514 TNS-12514: TNS:listener does not currently know of service requested in connect
透過檢查TNS-12514錯誤輸出,大致判斷跟SERVICE_NAME相關,返回檢視alert日誌裡有修改service_name的操作,引起關注。
與客戶核實確認問題時間點是在執行expdp邏輯備份資料庫操作,近期無資料庫引數修改等操作,且第一次出現該故障。
重點分析alert日誌,發現邏輯備份前系統執行alter system set 語句如下:
Sat Jan 28 00:05:02 2023 ALTER SYSTEM SET service_names='ecrac1','SYS$SYS.KUPC$C_1_20230128000501.ECRAC' SCOPE=MEMORY SID='ecrac1'; ALTER SYSTEM SET service_names='SYS$SYS.KUPC$C_1_20230128000501.ECRAC','ecrac1','SYS$SYS.KUPC$S_1_20230128000501.ECRAC' SCOPE=MEMORY SID='ecrac1'; Sat Jan 28 00:05:02 2023 DM00 started with pid=645, OS id=141291, job IMPCBSMID.SYS_EXPORT_SCHEMA_01 Sat Jan 28 00:05:03 2023 ALTER SYSTEM SET service_names='SYS$SYS.KUPC$S_1_20230128000501.ECRAC','ecrac1' SCOPE=MEMORY SID='ecrac1'; ALTER SYSTEM SET service_names='ecrac1' SCOPE=MEMORY SID='ecrac1'; Sat Jan 28 00:05:06 2023 ALTER SYSTEM SET service_names='ecrac1','SYS$SYS.KUPC$C_1_20230128000506.ECRAC' SCOPE=MEMORY SID='ecrac1'; ALTER SYSTEM SET service_names='SYS$SYS.KUPC$C_1_20230128000506.ECRAC','ecrac1','SYS$SYS.KUPC$S_1_20230128000506.ECRAC' SCOPE=MEMORY SID='ecrac1'; Sat Jan 28 00:05:07 2023 DM00 started with pid=326, OS id=141607, job IMPCBSMID.SYS_EXPORT_SCHEMA_01 Sat Jan 28 00:05:08 2023 DW00 started with pid=133, OS id=141707, wid=1, job IMPCBSMID.SYS_EXPORT_SCHEMA_01 Sat Jan 28 00:10:04 2023 ALTER SYSTEM SET service_names='SYS$SYS.KUPC$S_1_20230128000506.ECRAC','SYS$SYS.KUPC$C_1_20230128000506.ECRAC','ecrac1','SYS$SYS.KUPC$C_1_20230128001004.ECRAC' SCOPE=MEMORY SID='ecrac1'; ALTER SYSTEM SET service_names='SYS$SYS.KUPC$C_1_20230128001004.ECRAC','SYS$SYS.KUPC$S_1_20230128000506.ECRAC','SYS$SYS.KUPC$C_1_20230128000506.ECRAC','ecrac1','SYS$SYS.KUPC$S_1_20230128001004.ECRAC' SCOPE=MEMORY SID='ecrac1';
理論上service_names包含了例項名即可正常連線,其他名字是系統預設追加進去,邏輯備份結束後會自動去掉,但該問題現象感覺跟此相關。對比其他rac環境上的alert日誌發現也是如此記錄,未發現異常點;對比前幾天的備份點均如此,無異常。初步判斷該問題為資料庫bug導致,檢視mos文件:Bug 14320415 - The value of service name is sometimes removed during expdp/impdp in RAC - superseded (Doc ID 14320415.8)
事後,在和客戶的交流溝通中,有聊到這套資料庫例項大概有5、6年時間沒有重啟了,Oracle官方在原文中描述,資料庫例項在長期未重啟過的情況下,如果註冊service_names次數達到65536上限後,就會觸發此bug導致註冊失敗,進而會引發連線問題。
解決方案
針對該案例,MOS文件原文中也給出了幾種解決方案,最快捷的方式是重啟資料庫例項,不過需要額外申請停機視窗;其次,可以選擇安裝該BUG對應的補丁,甚至可以升級至大版本,比如12C或者19C,不過這類動作影響較大,停機時間更久。綜上,最後使用者透過重啟例項解決,對於每年定期重啟資料庫或者伺服器的使用者,也不太可能碰到類似的問題。詳情可以參考:Connection With Net Service Name Sometimes Fails With ORA-12514 During DataPump Export/Import In RAC (Doc ID 2302731.1)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30310891/viewspace-2938349/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫壞塊典型案例分析Oracle資料庫
- 英特爾:5G典型應用案例分析(附下載)
- Session工作原理和典型應用分析Session
- Oracle分散式事務典型案例處理Oracle分散式
- 應用程式報ORA-01115錯誤
- 效能分析(2)- 應用程式 CPU 使用率過高案例
- Oracle資料庫壞塊典型案例擴充Oracle資料庫
- Oracle ADF 應用--案例講解Oracle
- 實力認證|江民科技榮獲“AI芯”標準典型應用案例AI
- Oracle報performing DMLDDL operation over object in bin案例分析OracleORMObject
- 企業側應急響應的典型場景與案例分享
- [應用案例]OT應用案例之dasdig
- 中國移動研究院:5G典型應用案例集錦(附下載)
- MPLS VPN典型應用場景——VecloudCloud
- ZooKeeper典型應用場景一覽
- 幾個SQLLDR的典型案例SQL
- oracle SPA 效能分析案例Oracle
- 喜報!雲創智慧城市典型應用成功入選智慧城市“紅寶書”!
- Angular Ngrx Store 應用程式狀態的一些典型例子Angular
- 成功案例分析 CUDA計算應用無極限
- 兩種Oracle應用程式開發介面之簡要分析Oracle
- 安如磐石煤炭行業應對Web威脅典型案例行業Web
- 即速應用:2020小程式年中研究分析報告
- [企業管理]一個軟體企業管理的典型案例分析
- Apache Hudi典型應用場景知多少?Apache
- 設計模式 | 策略模式及典型應用設計模式
- Flink Table Store 典型應用場景
- Zookeeper 介紹及典型應用場景
- [SSL]公鑰與私鑰典型應用
- 索引在ORACLE中的應用分析索引Oracle
- APUS:2014年11月全球應用分析報告(附下載)
- 淺析低程式碼開發的典型應用構建場景
- 案例報導:索尼鐳射工程機興仁城市應用
- MySQL Binlog 技術原理和業務應用案例分析MySql
- 分析一個企業CRM系統應用的案例
- 2022愛分析·低程式碼應用實踐報告
- Go 中一個非典型不加鎖讀寫變數案例分析Go變數
- 設計模式 | 外觀模式及典型應用設計模式