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

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

関連記事

SQLでCASE文の結果をWHERE句に指定する方法およびコスト面の考察

本記事では、 ・SQLでCASE文の結果をWHERE句に指定する方法について記述します。 ・CASE文を使う場合のコストについて考察します。 (0)目次&概説 (1) NG例 (2) OK例&解説 ( …

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

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

ORA-28000エラーの解除方法と発生原因について

<目次> (1) 記事の目的  (1-1) エラー概要  (1-2) エラー原因  (1-3) エラー対策 (1) 記事の目的 (1-1) エラー概要 SQLDeveloperを使ってOracleDB …

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

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

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

掲題の通り、LinuxにOracleDB(11g)をインストールする方法について書きます。 ■目次 (0)前提条件 (1)インストール要件の確認 (2)ユーザ/グループ作成 (3)Oracle DBソ …

  • English (United States)
  • 日本語
Top