2つの疾患は、SYSTEM表スペース不足エラー
まず、疾患:
PLSQLログインエラー:
ORA-00604:エラー再帰SQL層が表示されます。
ORA-01653:表ではない(表スペースで)を拡張することによって。
ORA-02002:エラーの書き込み監査証跡レコード
第二に、病理:
1、表スペース不足
2は、データベース監査機能を引き起こすことになっている(SYS.AUD $表)
第三に、ポジショニングの原因:
データベースに接続します。
OracleのSU# #SQLPLUS / NOLOG SQL > CONN / AS SYSDBA //が再接続する SQLを> STARTUP MOUNT; // 保留 SQL > ALTER データベース を開き ; //データベースを開きます
次のSQLを実行し、テーブルスペースの使用状況を見ます
SELECT UPPER (F.TABLESPACE_NAME) "TABLESPACE_NAME"を、 D.TOT_GROOTTE_MB "TABLESPACE_SIZE(M)"、 D.TOT_GROOTTE_MB - F.TOTAL_BYTES "TABLESPACE_USED(M)"、 TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES)/ D .TOT_GROOTTE_MB * 100、2)、' 990.99 ' ) "TABLESPACE_USED_BI"、 F.TOTAL_BYTES "TABLESPACE_FREE(M)" FROM (SELECT TABLESPACE_NAME、ROUND(SUM(バイト)/(1024 * 1024)、2)TOTAL_BYTES、ROUND(MAX(バイト)/(1024 * 1024)、2)MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME)F、 (SELECT DD.TABLESPACE_NAME、ROUND(SUM(DD.BYTES)/(1024 * 1024)、2)TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME)D D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 4 DESC。
SYSTEM表領域の使用量の割合は99.81に達しています。
第四に、治療:
表スペースが不十分な処置です。
プログラム:表スペースが自己通電されていない場合、自己通電モードがに変更されます。(このためには適していません)
まず、表示された場合は、表スペースの増分
SQL > を選択し FILE_NAME、TABLESPACE_NAME、AUTOEXTENSIBLE から DBA_DATA_FILES。
YESの説明は、自動インクリメントされ
NO次のSQLを実行した場合は、変更モード:
SQL>データベースのデータファイルを、NEXT 50M MAXSIZE UNLIMITED ON '/home/app/XXX/oradata/XXX/system01.dbf' AUTOEXTEND改変すること。
注:サイズの各増分のためにそれらの対応するデータ・ファイル・パスフィルによるシステム、50M。
オプションII:(このためには適していない)データファイルのサイズに対応するテーブルスペースの拡張
利用可能な対応するテーブルスペースファイルは32Gを持っています。
データファイルに対応するテーブルの所定の空間が32Gを超えることはできません。
あなたは、テーブルスペースを拡張することにより、対応するファイルのサイズに到達できない場合、SQLは次のようになります。
SQL > 変更 データベースのデータファイルを「/home/app/XXX/oradata/XXX/system01.dbf 」 32000Mサイズを変更。
オプション3:データファイルSYSTEM02.DBFを追加SYSTEM表スペース(問題のない適した理由)
サイズ:500M、わずかな増加から:50M
SQL> alter tablespace "SYSTEM" add datafile '/home/app/XXX/oradata/XXX/system02.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
注:一个表空间能对应多个数据文件,但一个数据文件只能对应一个表空间
方案四:清空AUD$表数据并关闭审计功能(根本原因,笔者使用了该方案)
1、查sys.aud$及其索引 占用大小
SQL> SELECT t.owner, t.segment_name,SUM(bytes)/1024/1024/1024 as SIZE_G FROM dba_segments t WHERE t.tablespace_name = 'SYSTEM' and t.segment_name='AUD$' GROUP BY t.owner,t.segment_name ORDER BY SUM(bytes) desc;
可怕,就是这个审计表,达到了31个G了,问题就在此。
2、清空AUD$:
SQL> truncate table AUD$;
3、查看审计功能
SQL> show parameter audit
4、关闭审计功能:
SQL> alter system set audit_trail='none' scope=spfile;
如果只是清理 AUD$表,问题已经解决,但是时间久后,问题还是会复现,如果不需要审计数据可以关闭审计功能永久解决。
注:此上方案解决后,需要重启
SQL> shutdown immediate; //关闭 SQL> startup mount; //挂起 SQL> alter database open; //打开数据库
转自:https://blog.csdn.net/heshushun/article/details/80899839