0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQL*Plus の新機能を試す(Oracle Database 23ai)

Posted at

SQL*Plus の新機能

 本記事では Oracle Database 23ai に附属の SQL*Plus に実装された新機能を検証します。
AUTOTRACE に SQL 文の変更アドバイスが出力される機能は [SQL Adviser Report 機能を試す(Oracle Database 23ai)] で紹介しましたので、それ以外の新機能について記載しています。

CONFIG

CONFIG コマンドは tnsnames.ora ファイルの内容を JSON 形式で出力します。CONFIG EXPORT TNS までは固定で、追加オプションにより動作が変わります。

CONFIG コマンドのデフォルト実行
SQL> CONFIG EXPORT TNS
ローカル・ネット・ネーミング構成ファイル/opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.oraの構成ストアJSONを生成しています

{
    "FREE": {
        "connect_descriptor": "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr23ai)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = freepdb1)))"
    },
    "LISTENER_FREE": {
        "connect_descriptor": "(ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr23ai)(PORT = 1521))"
    }
}

AZURE 句を指定すると、Oracle Database Service for Azure 用の JSON 出力が生成されます。

CONFIG コマンドに AZURE 句を指定
SQL> CONFIG EXPORT TNS AZURE
ローカル・ネット・ネーミング構成ファイル/opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.oraの構成ストアJSONを生成しています

{
"orcl/FREE/connect_descriptor": "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr23ai)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = freepdb1)))",
"orcl/LISTENER_FREE/connect_descriptor": "(ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr23ai)(PORT = 1521))"
}

tnsnames.ora ファイルを読み込むディレクトリ名は環境変数 TNS_ADMIN または $ORACLE_HOME/network/admin がデフォルトです。変更したい場合はディレクトリのパスを指定します。

ディレクトリを指定
SQL> CONFIG EXPORT TNS /home/oracle/tnsadmin
ローカル・ネット・ネーミング構成ファイル/home/oracle/tnsadmin/tnsnames.oraの構成ストアJSONを生成しています

{
    "FREE2": {
        "connect_descriptor": "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr23ai)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = freepdb1)))"
    },
    "LISTENER_FREE": {
        "connect_descriptor": "(ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr23ai)(PORT = 1521))"
    }
}

ファイルに出力する場合は FILE 句と同時にパスを指定します。ディレクトリを指定しない場合は SQL*Plus を実行したカレント・ディレクトリに作成されます。ファイル名も省略した場合にはカレントディレクトリに oraconfig.json ファイルが生成されます。

CONFIG コマンドの結果をファイルに出力
SQL> CONFIG EXPORT TNS FILE /tmp/tnsnames.json
ローカル・ネット・ネーミング構成ファイル/opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.oraの構成ストアJSONを生成しています
構成ストアJSONファイルが正常に生成されました(/tmp/tnsnames.json)

マニュアル上には出力ファイルに「JSON ファイル名」の形式が書かれていますが、この句を指定するとカレントディレクトリの JSON ディレクトリに oraconfig.json ファイルを作成しようとします。また出力ファイルの拡張子を json 以外にすると、ディレクトリ名と判断するようです。

出力ファイルの拡張子を変更するとエラー
SQL> CONFIG EXPORT TNS FILE test.out
SP2-1692: JSONファイル(test.out/oraconfig.json)の作成に失敗しました。
ヘルプ: https://docs.oracle.com/error-help/db/sp2-1692/

マニュアル
13.16 CONFIG

SHOW CONNECTION

SHOW CONNECTION NETSERVICEMAMES コマンドは tnsnames.ora ファイルの内容を出力します。短縮形として SHOW CONN NETS を使用できます。
パラメーターを指定しない場合、tnsnames.ora ファイルのサービス名一覧を出力します。

デフォルトの動作
SQL> SHOW CONNECTION NETSERVICENAMES
Local Net Naming configuration file: /opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora
FREE
LISTENER_FREE

サービス名を指定すると、tnsnames.ora ファイルのサービス詳細を出力します。大文字/小文字は区別されません。サービス名は複数回指定できます。

サービス名を指定
SQL> SHOW CONNECTION NETSERVICENAMES FREE
Local Net Naming configuration file: /opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora
FREE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr23ai)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = freepdb1)))

マニュアル
13.47 SHOW CONNECTION

OERR

OERR コマンドは Oracle Database 23c で追加されたコマンドで、オペレーティング・システム上の oerr コマンドを SQL*Plus 内から実行できます。ファシリティとして TNS を指定するとエラーが発生する不具合がありましたが、Oracle Database 23ai Free でも修正されていません。このためシンボリックリンクを作成して回避します。

OERR コマンドのエラー回避
SQL> OERR TNS 12154
SP2-0160: "/opt/oracle/product/23ai/dbhomeFree//network_src/mesg/tnsus.msg"をオープンできません。
ヘルプ: https://docs.oracle.com/error-help/db/sp2-0160/
SQL> !
$ cd $ORACLE_HOME/
$ ln -s network network_src
$ exit

SQL> OERR TNS 12154
Message: "Cannot connect to database. Cannot find alias %s in %s."
ヘルプ: https://docs.oracle.com/error-help/db/tns-12154/
Cause:  A connection to a database or other service is being requested
        using a connection alias but the alias specified cannot be resolved
        into a connect descriptor using one of the configured naming
        methods.
...

マニュアルの記載

Oracle Database 23ai のマニュアルを見ると、Oracle Database 23c は無かったことにされています。このため、新機能の説明には Oracle Database 23c と Oracle Database 23ai の新機能が一緒に記載されています。

Changes in This Release for Oracle Database SQL*Plus User's Guide and Reference

Author: Noriyoshi Shinoda / Date: June 6, 2024

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?