Oracle 23ai 新機能 – エラーの改善

AIです。(Artificial Intelligence ではありません)

最近は朝晩は冷え込み、秋が少しずつ近づいているのを感じます。雑貨屋さんに行けばハロウィングッズも見かけるようになり…ってちょっと早いような気もしますが笑

さて、今回は 23ai のエラーの変更について見ていきます!

■エラーの出力

Oracle Database 23ai の SQL*Plus から、エラーメッセージが親切になることを皆さまご存知でしょうか。実際に 19c と 23ai で SQL*Plus から ORA-1017 のメッセージを発生させて見比べてみましょう。

$ sqlplus AI/AI ★19c にログイン

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 4 06:45:15 2024
Version 19.7.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

ERROR:
ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。


Enter user-name:
$ sqlplus AI/AI ★23ai にログイン

SQL*Plus: Release 23.0.0.0.0 - Production on 火 9月 3 17:46:19 2024
Version 23.4.0.24.05

Copyright (c) 1982, 2024, Oracle.  All rights reserved.

ERROR:
ORA-01017: 資格証明が無効であるか、権限がありません。ログオンは拒否されました ヘルプ:
https://docs.oracle.com/error-help/db/ora-01017/★


ユーザー名を入力してください:

はい。23ai では URL が表示されていますね。

この URL を開き、該当のリリースを選択するとそのエラーの原因や取るべきアクションを確認することができます。

エラーの出力内容については、SET ERRORDETAILS で制御可能です。このパラメータを VERBOSE に設定するとエラーの原因、とるべきアクションが表示されるようになります。※デフォルトは ON です。

SET ERRORDETAILS { OFF | ON | VERBOSE }
SQL> conn AI/AI
ERROR:
ORA-01017: 資格証明が無効であるか、権限がありません。ログオンは拒否されました ヘルプ:
https://docs.oracle.com/error-help/db/ora-01017/


警告: Oracleにはもう接続されていません。

SQL> set errordetails VERBOSE
SQL> conn AI/AI
ERROR:
ORA-01017: 資格証明が無効であるか、権限がありません。ログオンは拒否されました ヘルプ:
https://docs.oracle.com/error-help/db/ora-01017/
Cause:  An invalid credential was provided when accessing the Oracle
        Database or you were not authorized to access this database.
Action: Depending on your authentication method, ensure that the correct
        credential is provided when logging in to Oracle Database.
        Retry your credential after checking it. If your credential is
        correct, you may not be authorized to access the database.
        You will need to contact your database administrator or
        identity management administrator to confirm that you are
        authorized to access the database.


警告: Oracleにはもう接続されていません。

■OERR コマンド

詳細なエラーの説明は SQL*Plus の OERR コマンドでいつでも確認することができるようになりました。こちらにも URL が載っていますね。

実際にエラーが発生していない状態でも、原因ととるべきアクションがわかるので調査に便利そう。

SQL> OERR ORA-1017
Message: "invalid credential or not authorized; logon denied"
ヘルプ: https://docs.oracle.com/error-help/db/ora-01017/
Cause:  An invalid credential was provided when accessing the Oracle
        Database or you were not authorized to access this database.
Action: Depending on your authentication method, ensure that the correct
        credential is provided when logging in to Oracle Database.
        Retry your credential after checking it. If your credential is
        correct, you may not be authorized to access the database.
        You will need to contact your database administrator or
        identity management administrator to confirm that you are
        authorized to access the database.

ちなみに OS 側から oerr コマンドを実行することもできます。実はこちらの機能は、10.2.0.5 からあったのだとか。(AIは初めて知りました…)書いてある内容はそう変わりませんが、URL はこちらでは出力されませんね。

$ oerr ORA 1017
01017, 00000, "invalid credential or not authorized; logon denied"
// *Cause:  An invalid credential was provided when accessing the Oracle
//          Database or you were not authorized to access this database.
// *Action: Depending on your authentication method, ensure that the correct
//          credential is provided when logging in to Oracle Database.
//          Retry your credential after checking it. If your credential is
//          correct, you may not be authorized to access the database.
//          You will need to contact your database administrator or
//          identity management administrator to confirm that you are
//          authorized to access the database.

■まとめ

いかがでしたでしょうか。今までは Oracle のエラーに遭遇したら、Database エラー・メッセージのマニュアルを開いて、該当するエラー番号のページを探して、エラーを検索して…といった作業をしていました。地味に工程が多い…。

23ai からは、OERR コマンドやエラーの URL から即座にエラーの概要を確認できるようになり、とても便利になる予感がしております!