2024年12月3日火曜日

Autonomous Databaseでの「アカウントがロックされています。」エラーについて

Autonomous DatabaseのAPEXワークスペースにサインインしようとしたときに、「アカウントがロックされています。」というエラーが表示されました。そのときの対処についての覚書です。


結果としては、APEXの管理サービスよりユーザーの編集を開いて、ロックを解除しました。


オンプレミスのAPEXのインストールでは、管理者および開発者もAPEX自体に登録されたユーザーなので、この対応になります。

Autonomous Databaseの場合、管理者および開発者ユーザーと同名のデータベース・ユーザーが作成され、そのユーザーのユーザー名とパスワードでデータベースで認証することで、APEXの開発ツールにサインインします(APEXのアプリケーションについては、APEXに保存されているパスワードにより認証されます)。そのため、データベース・ユーザーがロックされてると、同様に「アカウントがロックされています。」のエラーが発生します。

以下の問い合わせを発行し、ユーザーの状態を確認します。
select username, account_status, lock_date from dba_users where username = upper('ユーザー名')

この場合は、データベース・ユーザーのアカウントをアンロックすることで、事象は解消します。
alter user ユーザー名 account unlock;

APEXワークスペースに紐づくデフォルト・パーシング・スキーマもデータベース・ユーザーなので、アカウントはロックできます。Oracle APEXのアプリケーションは、アプリケーションに割り当てられたパーシング・スキーマの権限でSQLやPL/SQLを実行しますが、そのデータベース・ユーザーでデータベースに接続はしません。そのため、パーシング・スキーマのアカウントがロックされていても、アプリケーションは動作します。

データベース・アクション(SQL Developer Web)や、SQLclのようなツールでパーシング・スキーマのデータベース・ユーザーで接続する場合は、そのアカウントがロックされていると接続できません。

APEXの開発ツールにサインインする際に「アカウントがロックされています。」というエラーが発生した場合は、APEXユーザーのステータスとデータベースのユーザーのステータスの両方を確認する必要があります。

今回の記事は以上になります。