2015-06-03 51 views
1

DB:Oracle11gR2甲骨文滴用戶檢

操作系統:Linux

我想刪除其已經鎖定幾個星期,現在USER1 Oracle用戶。

我可以運行"drop user USER1 cascade;"刪除用戶,但在刪除之前要確認沒有其他人在用戶被鎖定後正在使用或使用對象。

  1. 如何在Oracle中驗證沒有人在上個月左右訪問或訪問過USER1對象?
  2. 是否有可用的db查詢/視圖,我們可以使用它來確保運行DROP命令的安全性?

感謝

回答

0

理想情況下,你會啓用訪問的審計上的各種物體,當你鎖定的帳戶,並留在地方,但長期則需要感覺很舒服。一個月可能已經足夠,但可能還有季度或年度流程,您需要考慮。

假設您當時沒有啓用審覈,並且現在不想啓用審覈並等待另一個月,那麼您可能可以使用的方法較少(瞭解到這些方法正在實施以提供更少的確定性)。

  • 您可以查詢v$segment_statistics加入v$statname查看關於表格段的各種統計信息。例如,「db block gets」和「consistent gets」會顯示某個進程在表中某個塊上執行了當前讀取或一致讀取的次數。但它不會告訴你讀取的內容 - 例如,收集統計信息的後臺作業可能會讀取表格中的數據。這些表格應該累積數據,因爲數據庫最後一次重新啓動,可能比您感興趣的時間段長得多或短得多。您可以在Oracle文檔中獲得list of the available statistics以精確調整您想要查找的內容。
  • 您可以查詢​​而不是v$segment_statistics。這將按時間段分列統計數據,以便在發生讀寫時告訴您。但它不會告訴你他們是誰。這也要求您有權使用AWR(否則查詢表可能違反您的許可證,如果您曾經審覈過,則會造成問題)。
  • 您可以查看dba_dependencies以查看是否有任何對象依賴於相關用戶擁有的對象。但是,這隻適用於存儲的對象(視圖,過程等)。它不會捕獲有關從應用程序提交的SQL語句或由用戶發出的特別查詢的信息。

如果您不希望啓用審覈,等待適當的時間,你可以得到更好的服務從任何角色/用戶擁有他們,而不是直接丟棄對象user1對象撤銷權限。這樣,如果由於缺乏特權而導致某些事情發生,那麼恢復特權相對容易,而不需要從備份中獲取對象。您也可以在拒絕權限錯誤時創建一個觸發器,告訴您請求來自哪裏。

+0

感謝您的精彩細節,它確實給了我不同的選擇去,真的很喜歡所有的建議,並希望落實用戶之前至少兩個實施。我也在重命名錶格並在丟失之前留下一段時間。 – homer