OGG DDL觸發器引發的故障系列(一)
故障現象:
資料庫所有ddl操作無法成功,無法編譯任何包 , 包括 grant、alter、impdp/expdp、drop、truncate等操作。
排查步驟:
確認報錯
SQL> drop user test cascade; drop user test cascade * ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-01950: no privileges on tablespace 'ODC_TPS' ORA-06512: at line 999 ORA-01950: no privileges on tablespace 'ODC_TPS' SQL> grant dba to odc; grant dba to odc * ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-01950: no privileges on tablespace 'ODC_TPS' ORA-06512: at line 999 ORA-01950: no privileges on tablespace 'ODC_TPS'
可以看到報錯,
沒有對
ODC_TPS表空間的許可權。
進一步檢查該表空間的資訊:
SQL> SELECT t.owner, t.segment_name,SUM(bytes)/1024/1024 From dba_segments t 2 WHERE t.tablespace_name = 'ODC_TPS' 3 GROUP BY t.owner,t.segment_name 4 ORDER BY SUM(bytes) desc; OWNER SEGMENT_NAME SUM(BYTES)/1024/1024 -------------------- -------------------- -------------------- ODC GGS_MARKER 104 ODC GGS_DDL_HIST 8 ODC SYS_C0011139 4 ODC GGS_MARKER_IND1 2 ODC GGS_DDL_HIST_i4 .25 ODC GGS_DDL_HIST_i2 .1875 ODC GGS_DDL_HIST_i5 .1875 ODC GGS_DDL_HIST_i6 .125 ODC GGS_DDL_HIST_i3 .125 ODC GGS_DDL_HIST_i1 .125 ODC GGS_DDL_HIST_INDEX1 .125 ODC GGS_DDL_HIST_ALT_u2 .0625 ODC GGS_SETUP_UKEY .0625 ODC SYS_C0017453 .0625 ODC GGS_CHECKPOINT .0625 ODC GGS_DDL_HIST_ALT_u3 .0625 ODC GGS_SETUP .0625 ODC GGS_DDL_HIST_ALT_u1 .0625 ODC GGS_DDL_HIST_ALT .0625
該表空間為ODC使用者所使用,且ODC為ogg的管理使用者,進一步確認是否開啟了ogg的DDL同步:
SQL> select OWNER,TRIGGER_NAME,STATUS from dba_triggers where TRIGGER_NAME='GGS_DDL_TRIGGER_BEFORE'; OWNER TRIGGER_NAME STATUS ---------- ------------------------------ -------- SYS GGS_DDL_TRIGGER_BEFORE ENABLED
ogg的DDL觸發器存在且是enabled狀態,ogg是開啟ddl同步的。
安裝ogg軟體時,如果需要同步DDL操作,則需要安裝DDL的相關元件,安裝了DDL的元件後,就會在sys使用者下建立一個DDL觸發器,用來捕獲ddl操作並儲存到ogg管理使用者下的相應表中。
排查到這一步就已經比較明顯了,當資料庫中有ddl操作時,ddl的觸發器需要將這一操作記錄到odc使用者下的相關表中(所在的表空間是ODC_TPS),但是當前odc使用者在該表空間上沒有配額,導致以上報錯。
嘗試先將dba許可權給ogg的管理使用者,但是賦予許可權失敗,報錯如下:
SQL> grant dba to odc; grant dba to odc * ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-01950: no privileges on tablespace 'ODC_TPS' ORA-06512: at line 999 ORA-01950: no privileges on tablespace 'ODC_TPS'
看到相同的報錯。
嘗試給odc使用者賦許可權,由於賦許可權操作屬於ddl無法完成,所以要先禁用ogg的ddl觸發器,賦許可權後在開啟。
login as sysdba SQL>alter trigger GGS_DDL_TRIGGER_BEFORE disable; SQL>alter user odc quota unlimited on odc_tps; SQL>alter trigger GGS_DDL_TRIGGER_BEFORE enable;
賦許可權後即可進行ddl、編譯等操作,問題解決。
參考文件:
DDL fails because of GoldenGate DDL trigger with error: ORA-01950: no privileges on tablespace ( 文件 ID 1513413.1)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29956245/viewspace-2942627/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 由OGG引發的資料庫故障資料庫
- OGG同步複製時與相容觸發器解決方法觸發器
- ORA-00130 引發的故障
- 【故障公告】資料庫伺服器 CPU 100% 引發全站故障資料庫伺服器
- remote_listener引發的故障分析REM
- 【故障公告】資料庫伺服器再次 CPU 100% 引發全站故障資料庫伺服器
- 【故障公告】redis 伺服器當機引發部落格站點故障Redis伺服器
- 【故障公告】資料庫伺服器 CPU 100% 引發網站故障資料庫伺服器網站
- EventSource 引發的一系列事件事件
- D觸發器觸發器
- mysql觸發器MySql觸發器
- 觸發器的一些新認知觸發器
- vue系列:跳轉到同一個路由引數不同但是不觸發更新的問題Vue路由
- 瞭解SQL Server觸發器及觸發器中的事務AWSQLServer觸發器
- 【故障公告】訪問高峰資料庫伺服器 CPU 100% 引發全站故障資料庫伺服器
- DNS伺服器故障引發流量異常問題-VeCloudDNS伺服器Cloud
- MySql-觸發器MySql觸發器
- sqlserver 列觸發器SQLServer觸發器
- 除錯觸發器除錯觸發器
- 建立MySQL觸發器MySql觸發器
- SqlServer-觸發器SQLServer觸發器
- logon觸發器for dbaGo觸發器
- MySQL使用觸發器MySql觸發器
- 語句觸發器觸發器
- 【故障公告】部落格系統升級到 .NET 5.0 引發的故障
- Oracle開發基礎-觸發器Oracle觸發器
- MySQL:一個innodb_thread_concurrency設定不當引發的故障MySqlthread
- 詳述一條SQL引發的高CPU故障處理過程SQL
- 【故障公告】阿里雲 RDS 資料庫突發 CPU 近 100% 引發全站故障阿里資料庫
- Oracle DBLink bug引發的故障(Session Hang Memory leak)OracleSession
- 【故障公告】阿里雲搶佔式例項伺服器被釋放引發全站故障阿里伺服器
- bettertouchtool mac教程:如何新增一個新的觸發器Mac觸發器
- 禁止oracle表的觸發器triggerOracle觸發器
- MySQL觸發器的使用規則MySql觸發器
- SqlServer觸發器的建立與使用SQLServer觸發器
- 阿里雲大面積故障原因:觸發一個未知程式碼bug導致阿里
- 行為和觸發器觸發器
- MySQL觸發器介紹MySql觸發器