ORA-01157が発生した場合の対処法

Oracleをキレイにするために、使っていない表領域を整理しました。すると、Oracleのログに以下のエラーが出力されました。

行1でエラーが発生しました。:
ORA-01157: データファイル5を識別/ロックできません –
DBWRトレース・ファイルを参照してください ORA-01110:
データファイル5: ‘/u01/app/oracle/oradata/TS/TS001.dbf’

原因

これはデータファイルがOS的に見えなくなっている場合に発生します。データファイルがOS上から削除されてしまったか、NAS領域なのであればmountが外れてしまっている場合などが考えられます。私は表領域を整理する中で、誤って必要な表領域のデータファイルを物理削除してしまったようです。

ステップ① MOUNTモードで起動

データベースをシャットダウンして、MOUNTモードで起動します。

SQL> shutdown immediate
SQL> startup mount;

ORACLEインスタンスが起動しました。
Total System Global Area 1173240615 bytes
Fixed Size 8635922 bytes
Variable Size 373223054 bytes
Database Buffers 681671552 bytes
Redo Buffers 8120081 bytes
データベースがマウントされました。

MOUNTモードとは、制御ファイルの読み込みまでで、データベースファイルは読み込みません。
MOUNTモードの説明はこちらがわかりやすかったです。
https://sql-oracle.com/?p=56

ステップ② 表領域をdrop offlineする

エラーが発生した表領域を「drop offline」します。「drop offline」することで、指定したデータファイルをオフライン化して、削除対象としてマークします。

SQL> alter database datafile ‘<対象データファイルパス>’ offline drop ;
データベースが変更されました。

(例)alter database datafile ‘/u01/app/oracle/oradata/TS/ts001.dbf’ offline drop ;

ステップ③ データベースをopenする

SQL> alter database open;
データベースが変更されました。

ステップ④ 表領域を削除する

SQL> drop tablespace ‘<対象表領域名>’ including contents;
表領域が削除されました。

(例)drop tablespace ts001 including contents;

この後は、念のため再起動して完了です。

開発環境だからといって派手(雑に)に表領域を整理したせいで、いやー焦った焦った (;´∀`)


AWSの公式アイコンが利用できる

単なる紹介ですが、、、、

AWSの公式アイコンが公開されていて、自由に利用できます。

私はこれを知るまで、社内の資料を作成するときにシステム構成図にAWSのサービスが登場するときには、それっぽい箱を頑張って書いていました。。。もっと早く知りたかった。

こちらのURLから取得できます。
https://aws.amazon.com/jp/architecture/icons/

勝手に使っていいのか?と思いましたが、上記のページにこのように書いてあります。

PowerPoint用のテンプレートや画像が公開されています。例えば、EC2であればこんな感じ↓

EC2のアイコン

【WebSphere Application Server】ログを英語で出力する

WASで製品サポートに問い合わせをするとき、問い合わせ先は英語圏なので、ログは英語で出力されている方が、いろいろとスムーズです。エラーコードとかから分かるような気がしますが、なんとなくサポートの対応もよくなる気がして、いつも英語で送っています。

WASのログの言語は、起動ユーザの環境変数LANGで決まります。例えば、以下の環境変数であれば、日本語で出力されます。

WASは起動時に<WAS_PROFILE_ROOT>/profiles/<profile_name>/bin/ setupCmdLine.shというスクリプトを実行して、初期化処理を行っています。その中で、環境変数LANGが設定されてなければ、LANG=Cがexportされて、英語で出力されます。

でも、LANGを変更すると、他のものにも影響がでてしまうので、 setupCmdLine.sh の末尾に以下の一行を追加して、WASを再起動すれば、LANGを変更せずに、ログ出力を英語にできます。

なお、これはWindowsでは使えない方法なので、ご注意を 。
(ーoー)y~~~