Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

OracleDB

Oracle DBで「ORA-09925: Unable to create audit trail file」エラーが出た時の対処方法について

投稿日:2022年1月2日 更新日:

<目次>

(1) Oracle DBで「ORA-09925: Unable to create audit trail file」エラーが出た時の対処方法について
 (1-1) エラー概要
 (1-2) 原因と対策①
 (1-3) 原因と対策②
 (1-4) 解消確認

(1) Oracle DBで「ORA-09925: Unable to create audit trail file」エラーが出た時の対処方法について

(1-1) エラー概要

OracleDB(11g)でSQL*Plusでログインした際に、以下のようなエラーメッセージが出ました。

 

(図111)

(例)

ERROR:
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 28: No space left on device
Additional information: 9925
ORA-01017: invalid username/password; logon denied
このエラーメッセージにはいくつかのパターンがあり、後述する原因に応じて少しずつメッセージが変わってきます。
 

(1-2) 原因と対策①

●原因

 
監査用のディレクトリ(※環境変数「AUDIT_FILE_DEST」で設定)が見つからないor書き込み出来ない時に発生する可能性があります。
 

●切り分け①:ディレクトリ存在有無確認

・「AUDIT_FILE_DEST」に設定されているパスを以下ファイルから確認します。
 
(確認コマンド)
$ cat $ORACLE_HOME/dbs/init.ora
私の環境の場合、次のパスでした。
$ORACLE_BASE/admin/[ご自身のORACLE_SIDの値]/adump
(図121)①

●切り分け②:ディレクトリの存在確認

 
上記で調べたディレクトリが存在するか?を「cd」コマンドで、そのフォルダに移動できるか?で確認します。
 
(確認コマンド例)
$ export ORACLE_BASE=/u01/app/oracle
$ cd $ORACLE_BASE/admin/orcl/adump

(図121)②

・フォルダがない →対策の①へ
・フォルダがある →対策の②へ

●対策①:ディレクトリ作成を行います。

$ mkdir $ORACLE_BASE/admin/orcl/adump

(図121)③

●対策②:ディレクトリに対してwrite権限を付与します。

$ chown +w $AUDIT_FILE_DEST

(図121)④

目次にもどる

(1-3) 原因と対策②

●原因

監査ログを保持するためのファイルが、ディレクトリの「容量不足」により生成出来ない場合にも発生し得ます。対象のディレクトリは「原因と対策①」と同じ以下ディレクトリです。

(調査対象)

$ORACLE_BASE/admin/[ご自身のORACLE_SIDの値]/adump

●切り分け①:ディスク使用率確認

 
・下記のコマンドでディスクの空き状況を確認します。
(コマンド)
$ df -h
(結果)
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        97G   26G   66G  29% /
tmpfs           939M  8.0K  939M   1% /dev/shm
/dev/vda1       239M  101M  126M  45% /boot

⇒「Use%」が100%に近い場合、対策①を実行します。

●切り分け①:ディスク使用率確認

・ディスクが原因ではない(使用率が低い)場合に次は「inode」を確認します。

(コマンド)
$ df -i

(結果)

Filesystem      Inodes   IUsed  IFree IUse% Mounted on
/dev/vda3      6414336 6414336      0  100% /
tmpfs           240224       3 240221    1% /dev/shm
/dev/vda1        64000      50  63950    1% /boot

⇒IUseが100%に近い値の場合、対策②を実行します。

(図131)

●対策①:ディスク対策 ⇒ 不要なファイルを削除

 
ディスクが原因の場合は、容量を逼迫させているディレクトリを特定し、そこの不要なファイルを削除していく対応になります。

ディレクトリの特定には以下のコマンドを使います。まずはroot配下(/*)に対して実行し、その結果を見て次に実行する対象を決めて、繰り返し実行して特定します。

(コマンド)
du -shcx [対象ディレクトリ] 2>/dev/null
(例)まずはroot配下で実行
du -shcx /* 2>/dev/null
 

(結果例)

[root@tk2-216-17994 proc]# du -shcx /* 2>/dev/null
7.7M    /bin
99M     /boot
~~~~中略~~~~
8.8G    /u01
1.8G    /usr
12G     /var
25G     合計

(図132)

●対策②:inode対策 ⇒ 不要な大量の少量ファイルを削除

「inode」の使用率が高い場合、容量が非常に小さい(あるいは0バイト)のファイルが大量(数百万単位)に生成されてしまって「inode」の枯渇を引き起こしている可能性があるため、対処を行います。具体的な手順は以下を参照ください。

(1-4) ■解消確認

 
再度、エラーとなったSQL*Plusの接続をチェック ⇒成功

(図141)

Adsense審査用広告コード


Adsense審査用広告コード


-OracleDB

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Linuxサーバ(CentOS6)にOracleDB11gをインストールする(その4)

掲題の通り、LinuxにOracleDB(11g)をインストールする方法について書きます。 「(その3)」の続編記事です。 https://rainbow-engine.com/2017/05/05/ …

OracleDB11gのキャラクタセットを変更する手順について(概要編)

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件   (1-2-1) 「props$」更新はNG   (1-2-2) 10g以降は”ALTER DATABA …

OracleデータベースとSQL Serverを冗長性の機能面での比較検討

(0)目次 (1) 冗長性の機能(Oracle)  (1-1) Oracle RAC  (1-2) Oracle Fail Safe (2) 冗長性の機能(SQL Server)  (2-1) Alw …

Oracleデータベースのバックアップをimpdpでリストアする方法

※本記事は「Oracleデータベースのバックアップをexpdpで取得する方法」の続きとなる記事です。 (0)目次&概説 (3) インポート手順(impdp)  (3-1) (事前作業)ロールの付与   …

データベースのインデックスの基本と種類とOracleやSQL Serverでの特長について

(0)目次&概説 (1) データベースのインデックスとは (2) インデックスはどのような場面で使う? (3) インデックスの主要な方式  (3-1) B木  (3-2) B+木  (3-3) ビット …

  • English (United States)
  • 日本語
Top