用10046進行診斷一例
今天,一直執行正常的物化檢視重新整理忽然執行不正常
SQL> exec dbms_refresh.refresh('WAI_REFRESH');
begin dbms_refresh.refresh('WAI_REFRESH'); end;
ORA-02019: connection description for remote database not found
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 794
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 851
ORA-06512: at "SYS.DBMS_IREFRESH", line 683
ORA-06512: at "SYS.DBMS_REFRESH", line 195
ORA-06512: at line 1
但是手工重新整理正常(item屬於WAI_REFRESH重新整理組中)
SQL> exec dbms_snapshot.refresh('item');
PL/SQL procedure successfully completed
檢查DB LINK情況
SQL> select distinct master_link from user_mviews;
MASTER_LINK
--------------------------------------------------------------------------------
@WAI.SOUCHANG.COM
SQL> select * from ;
DUMMY
-----
X
一切正常。百思不得其解,決定用10046事件試試到底發生什麼。
SQL> @gettrace
TRACE_FILE_NAME
--------------------------------------------------------------------------------
/opt/oracle/admin/sc2test/udump/sc2test_ora_30715.trc
SQL> alter session set events '10046 trace name context forever,level 12';
Session altered
SQL> exec dbms_refresh.refresh('WAI_REFRESH');
begin dbms_refresh.refresh('WAI_REFRESH'); end;
ORA-02019: connection description for remote database not found
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 794
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 851
ORA-06512: at "SYS.DBMS_IREFRESH", line 683
ORA-06512: at "SYS.DBMS_REFRESH", line 195
ORA-06512: at line 1
用tkprof格式化/opt/oracle/admin/sc2test/udump/sc2test_ora_30715.trc,有如下可疑資訊
The following statement encountered a error during parse:
select errcount from where destination = 'IMAGE.SOUCHANG.COM'
Error encountered: ORA-02019
檢查user_refresh_children,發現有一個OWNER是test使用者的,它在test_tag_group使用者下是一個同義詞
SQL> select OWNER,NAME,ROWNER from user_refresh_children;
OWNER NAME ROWNER
------------------------------ ------------------------------ ------------------------------
TEST_TAG_GROUP USERS TEST_TAG_GROUP
TEST IMAGE TEST_TAG_GROUP
TEST_TAG_GROUP AUTHORITIES TEST_TAG_GROUP
TEST_TAG_GROUP AVERREVIEWRATE TEST_TAG_GROUP
TEST_TAG_GROUP CATEGORY TEST_TAG_GROUP
TEST_TAG_GROUP CHANNEL TEST_TAG_GROUP
TEST_TAG_GROUP CLOB_CONTENT TEST_TAG_GROUP
TEST_TAG_GROUP FLEA_MARKET_INFO TEST_TAG_GROUP
TEST_TAG_GROUP ITEM TEST_TAG_GROUP
TEST_TAG_GROUP ITEM_TAG TEST_TAG_GROUP
TEST_TAG_GROUP KEYWORD TEST_TAG_GROUP
TEST_TAG_GROUP LOGS TEST_TAG_GROUP
.....................
進一步檢查發現,test_tag_group使用者下並沒有@IMAGE.SOUCHANG.COM這個DBLINK。
知道錯誤原因了,問題就容易解決了。在本例中,只需在test_tag_group中建立新建一個與IMAGE.SOUCHANG.COM一樣的DB LINK 即可。也可以把test使用者下的DB LINK修改為public型別的。
最後關閉10046事件
SQL> alter session set events '10046 trace name context off';
Session altered
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63720/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server database mail問題診斷一例SQLServerDatabaseAI
- 免費網站seo診斷:從哪些維度進行診斷呢?網站
- 使用ErrorStack進行錯誤跟蹤及診斷Error
- [JVM] 應用診斷工具之Fastthread(線上診斷)JVMASTthread
- 使用SQL_TRACE進行資料庫診斷(轉)SQL資料庫
- 利用errorstack事件進行錯誤跟蹤和診斷Error事件
- Java執行緒診斷Java執行緒
- MySQL使用event等待事件進行資料庫效能診斷MySql事件資料庫
- 使用 SOS 對 Linux 中執行的 .NET Core 進行問題診斷Linux
- 【譯】.NET 5 中的診斷改進
- 如何透過鏈路追蹤進行定時任務診斷
- 教程直播第7期|如何對 OceanBase 進行 SQL 診斷和調優SQL
- 線上診斷神器-arthas基本應用
- 如何利用 Webshell 診斷 EDAS Serverless 應用WebshellServer
- 發電機過速診斷研究 - 基於LSTM進行狀態監測
- Oracle診斷案例-Job任務停止執行Oracle
- ORACLE診斷案例Oracle
- 用 Arthas 神器來診斷 HBase 異常程式
- ORACLE 如何診斷高水位爭用(enq: HW – contention)OracleENQ
- 利用performance_schema進行故障診斷(mysql金字塔法則讀書筆記)ORMMySql筆記
- Java診斷利器ArthasJava
- SQL問題診斷SQL
- 用更雲原生的方式做診斷|大規模 K8s 叢集診斷利器深度解析K8S
- Oracle診斷事件列表(轉)Oracle事件
- 軟體專案過程診斷與改進建議案例
- 詳解JAVA執行緒問題診斷工具Thread DumpJava執行緒thread
- Oracle EBS基礎學習:Oracle EBS啟用診斷功能Oracle
- 如何使用 dotTrace 來診斷 netcore 應用的效能問題NetCore
- 應用崩潰了?Android vitals 幫您精確診斷應用崩潰Android
- AI診斷心臟病比人類更準?但這只是識圖,不是診斷AI
- 10046事件概述事件
- 學界 | 吳恩達團隊最新:利用MRNet進行膝關節磁共振成像輔助診斷吳恩達
- openGauss 支援WDR診斷報告
- 故障分析 | Kubernetes 故障診斷流程
- 如何選擇java診斷工具Java
- .NET Core 服務診斷工具
- 整車EOL 診斷系統
- .Net Core服務診斷排查