DML操作 DDL觸發器
今天應用方告訴我,一個DML操作導致資料庫報錯,說“ORA-234567,不允許開發執行DDL操作,請聯絡DBA”
為了安全,DBA在各個庫上建立了DDL觸發器,不允許開發人員執行DDL。
但是開發人員給我反饋,他們僅僅只是執行了普通的INSERT操作,沒有任何DDL操作。
第一個感覺是,可能DML操作導致資料庫遞迴了執行了某些DDL操作。
還好這個錯誤可以重現,經過10046跟蹤。發現由於在執行INSERT過程中,資料庫的表空間不足,導致ORACLE遞迴了進行清空回收站的操作,這個操作屬於DDL。因此就出現了開頭說的問題。
當然在一個監控良好的生產環境並不會出現這個問題,在表空間不夠的時候,應該結合監控系統第一時間報警出來。
但是經過測試發現,已經刪除的表的空間會計算進入表空間剩餘空間
如果回收站開啟的話,即使系統看上去還有幾十G的剩餘,但是可能這些空間都是被刪除的表的空間,需要清空回收站才能使用。
如果系統裡存在DDL TRIGGER,那麼就可能會導致,明明系統裡還有大量的可用空間,但是INSERT卻報錯“ORA-234567,不允許開發執行DDL操作,請聯絡DBA”
開不開回收站是個問題。
為了安全,DBA在各個庫上建立了DDL觸發器,不允許開發人員執行DDL。
但是開發人員給我反饋,他們僅僅只是執行了普通的INSERT操作,沒有任何DDL操作。
第一個感覺是,可能DML操作導致資料庫遞迴了執行了某些DDL操作。
還好這個錯誤可以重現,經過10046跟蹤。發現由於在執行INSERT過程中,資料庫的表空間不足,導致ORACLE遞迴了進行清空回收站的操作,這個操作屬於DDL。因此就出現了開頭說的問題。
當然在一個監控良好的生產環境並不會出現這個問題,在表空間不夠的時候,應該結合監控系統第一時間報警出來。
但是經過測試發現,已經刪除的表的空間會計算進入表空間剩餘空間
如果回收站開啟的話,即使系統看上去還有幾十G的剩餘,但是可能這些空間都是被刪除的表的空間,需要清空回收站才能使用。
如果系統裡存在DDL TRIGGER,那麼就可能會導致,明明系統裡還有大量的可用空間,但是INSERT卻報錯“ORA-234567,不允許開發執行DDL操作,請聯絡DBA”
開不開回收站是個問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-1193542/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 觸發器 限制DDL操作Oracle觸發器
- 資料庫觸發器,禁止DDL操作資料庫觸發器
- ORACLE DDL觸發器Oracle觸發器
- oracle ddl 觸發器Oracle觸發器
- 透過觸發器禁止模式物件的DDL操作觸發器模式物件
- DDL、DML、DCL、DQL相關操作
- Mysql 基礎操作 DDL DML DCLMySql
- MySQL的DDL和DML操作語法MySql
- Oracle DBLINK 抽數以及DDL、DML操作Oracle
- 使用Logminer工具分析DML和DDL操作
- DML, DDL操作的自動提交問題
- postgresql 觸發器操作SQL觸發器
- 配置支援DML和DDL操作同步的GoldenGateGo
- DDL觸發器設定導致DDL無法執行(二)觸發器
- DDL觸發器設定導致DDL無法執行(一)觸發器
- Oracle資料庫DDL審計觸發器觸發的bug問題Oracle資料庫觸發器
- DDL,DML操作對結果快取的影響快取
- 觸發器中操作LOB觸發器
- 使用系統級觸發器禁用DDL語句觸發器
- SQL Server約束和DML觸發器的比較SQLServer觸發器
- DML、DDL、DCL區別
- DDL,DML,DCL區別
- 【開發篇sql】 基礎概述(三) DDL和DMLSQL
- MsSql資料庫使用SQL plus建立DDL和DML操作方法SQL資料庫
- SQL Server 2005中的DDL觸發器的實現SQLServer觸發器
- MsSql 資料庫使用sqlplus建立DDL和DML操作方法SQL資料庫
- 使用自治事務在觸發器中執行DDL語句示例觸發器
- oracle trigger觸發器審計schema物件的變更ddlOracle觸發器物件
- oracle support nologging ddl dmlOracle
- performing DML/DDL operation over object in binORMObject
- Oracle DDL,DML,DCL,TCL 基礎概念Oracle
- 【原創】建立DDL觸發器捕捉schema所有物件改變的記錄觸發器物件
- Begin end程式碼段裡面有DDL和DML,如果DDL成功了而DML失敗了,則DDL的程式碼也會回滾
- oracle goldengate 配置DML&DDL實驗OracleGo
- Oracle使用系統級觸發器審計重要帳號的DDL語句Oracle觸發器
- Oracle觸發器觸發級別Oracle觸發器
- 【Flashback】回收站中被標記刪除的表不可以DML和DDL操作
- Oracle中審計刪除(DELETE)操作的觸發器Oracledelete觸發器