SYS.AUD$無法擴容導致無法登入的問題

來源:互聯網
上載者:User

昨天同事說有個測試庫無法登入了,用PLSQL Developer登陸後提示:

ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-01653: unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM
ORA-02002: error while writing to audit trail
ORA-00604: error occurred at recursive SQL level 1
ORA-01653: unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM

貌似以前聽@dbsnake說過這問題。


首先SYS.AUD$是資料字典表,儲存於SYSTEM資料表空間,儲存的是審計資訊,11g預設是開啟審計

SQL> show parameter audit_trail
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_trail                          string      DB


上面的提示明顯是指SYSTEM資料表空間的SYS.AUD$表無法繼續擴容了,可能是磁碟空間不足,或SYSTEM資料表空間分配的資料檔案空間不足。針對上面這個問題,有兩種方法:

1、擴容SYSTEM資料表空間。

2、降低SYS.AUD$的容量。

之所以有第二種方法,從MOS:73408.1這篇文章可以得到結論:

SYS.AUD$ is the only SYS object that should ever be directly modified

SYS.AUD$是唯一一個可以直接修改的SYS對象。


那如何降低SYS.AUD$的容量呢?

1、最簡單的方法就是truncate table SYS.AUD$,最直接,前提是不需要保留審計資訊。

2、MOS中也介紹一種方法:DELETE FROM sys.aud$ WHERE obj$name='<object_name>';,刪除SYS.AUD$中指定對象的審計資訊。這樣帶來的問題很明顯,就是不會降低高水位線。

3、也可以備份審計表,然後再降低容量。

CREATE TABLE backup_aud$ AS SELECT * from sys.aud$;

truncate table aud$;

exp file=aud_backup.dmp tables=backup_aud$

drop table backup_aud$;

如果僅需要降低SYS.AUD$佔用的空間,此時可以再次執行insert into aud$ select * from backup_aud$;將資料匯入進來。

4、要刪除SYS.AUD$表需要相應的許可權:要麼是SYS使用者,要麼具有DELETE ANY TABLE系統許可權,或者SYS使用者將SYS.AUD$表的DELETE許可權賦予這個使用者。具有delete_catalog_role角色亦可以,但11.2.0.2之前的版本可能有bug導致這個角色沒有SYS.AUD$的刪除許可權,需要人工添加,具體也可參見9697811這個bug描述。

5、MOS有介紹:The DELETE ANY TABLE privilege only applies to SYS objects if O7_DICTIONARY_ACCESSIBILITY=TRUE,表示如果O7_DICTIONARY_ACCESSIBILITY參數是TRUE,則只有SYS使用者可以具有DELETE ANY TABLE許可權。查了一些資料,也說O7_DICTIONARY_ACCESSIBILITY這個參數的作用就是保護資料字典基表,FALSE要求SYS不能以普通使用者角色登入,必須用sysdba角色登入,如果TRUE則普通使用者也可以訪問資料字典基表,就會引起安全問題了。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.