Database Support Blog

  • EDB
2018.05.23

SQL*Plusと互換性のある「EDB*Plus」を使ってみよう

SQL*Plusと互換性のある「EDB*Plus」を使ってみよう

EDB Postgres Advanced Server(EPAS)のコマンドライン・インターフェースには、psql(edb-psql)の他にEDB*Plusがあります。EDB*Plusは、Oracle DatabaseのSQL*Plusと互換性があるため、Oracle Databaseに慣れている方はそちらのほうが使いやすいでしょう。今回は、EDB*Plusの簡単な使用方法と、SQL*Plusとの違いをご紹介します。

EDB*Plusとは

EDB*Plusは、EPAS上でコマンドライン・インターフェースを提供するユーティリティです。EDB*Plusでは、SQLコマンド、Oracle PL/SQLと互換性のあるSQL Procedural Language(SPL)無名ブロック、EDB*Plusコマンドを使うことができます。

EDB*PlusコマンドはOracleのSQL*Plusコマンドと互換性があり、以下のような様々な機能を提供します。

- データベースオブジェクトにクエリを発行
- ストアドプロシージャを実行
- SQLコマンドの出力を整形
- バッチスクリプトを実行
- OSコマンドを実行
- 出力を記録


EDB*Plusのインストール方法

EPAS9.6以前

EPAS9.6以前のバージョンをご利用の場合、デフォルトの設定でEPASをインストールすることによりEDB*Plusはインストールされます。EPASのインストール手順については、弊社作成の「 はじめてのEDB Postgres (製品概要・構築編) 」または マニュアル をご参考になさってください。

EPAS10以降

EPAS10以降のバージョンをご利用の場合、EDB*PlusはEPASインストール時にインストールされないため、EPASをインストール後にyum(Linuxのみ)またはStackBuilder Plusからインストールします。yumやStackBuilder PlusからEDB*Plusをインストールする詳細な手順については、 マニュアル をご参考になさってください。


EDB*Plusの簡単な使用方法

EDB*Plus は、GUIのアプリケーションメニューから選択するか、OSコマンドから直接EDB*Plus(Windowsの場合:edbplus.bat、Linuxの場合:edbplus.sh)を起動することで使用できます。

OSコマンドから直接EDB*Plusを実行する場合、Windows環境では実行ファイルの拡張子を付けずにEDB*Plusを使用できますが、Linux環境ではデフォルトで拡張子を付けて実行する必要があります。Linux環境でも実行ファイルの拡張子を付けずにEDB*Plusを使用するには、aliasコマンドで拡張子無しのedbplusコマンドを作成します。

以下では、Linux環境でEDB*PlusからEPASに接続してemp.sqlというEMP表を参照するバッチスクリプトを実行するまでの手順をご紹介します。

検証環境

OS:Oracle Enterprise Linux 6.4 64bit
DB:EDB Postgres Advanced Server 10.3.8
EDB*Plus:v10.36.0.0

--aliasコマンドでedbplusコマンドを作成 ※この手順は任意です。

 
 # su - enterprisedb
 $ source /opt/edb/as10/pgplus_env.sh #EPAS関連の各種環境変数の設定。
$ alias edbplus='/opt/edb/as10/edbplus/edbplus.sh' $ edbplus /nolog EDB*Plus: Release 10 (Build 36.0.0) Copyright (c) 2008-2017, EnterpriseDB Corporation. All rights reserved. SQL> SQL> exit  

--edbデータベースへの接続情報を格納する$EDBHOME/edbplus/login.sqlを確認

 
 $ cat $EDBHOME/edbplus/login.sql
 define edb="localhost:51001/edb" 
 #login.sqlでは、Oracleのtnsnames.oraで設定する接続識別子と同様にデータベースへの接続情報を設定。
 #define <接続識別子名>=host[:port][/dbname]の構文で接続情報を設定。
 #portがデフォルトの5444の場合、portとdbname(デフォルトはedb)の指定は必須ではない。

--emp.sqlの内容を確認 ※事前に$EDBHOME/edbplusディレクトリ配下に以下の内容で作成しています。

 
 $ cd $EDBHOME/edbplus
 $ cat emp.sql
 set linesize 100
 set pagesize 100
 describe emp
 select * from emp;
 

--edbデータベースに接続

 
 $ cd $EDBHOME/edbplus 
 #@<接続識別子>を使用して接続する場合、$EDBHOME/edbplusディレクトリでedbplus username/passwordコマンドを実行する必要がある。
$ edbplus enterprisedb/oracle@edb Connected to EnterpriseDB 10.3.8 (localhost:51001/edb) AS enterprisedb EDB*Plus: Release 10 (Build 36.0.0) Copyright (c) 2008-2017, EnterpriseDB Corporation. All rights reserved. SQL>  

--EDB*Plusからemp.sqlを実行

 
 SQL> @emp
  
  Name                                                   Null?    Data Type
  ------------------------------------------------------ -------- -----------------------------------
  EMPNO                                                  NOT NULL NUMBER(4)
  ENAME                                                           VARCHAR2(10)
  JOB                                                             VARCHAR2(9)
  MGR                                                             NUMBER(4)
  HIREDATE                                                        TIMESTAMP(6)
  SAL                                                             NUMBER(7,2)
  COMM                                                            NUMBER(7,2)
  DEPTNO                                                          NUMBER(2)
  
  
 EMPNO ENAME      JOB         MGR HIREDATE                            SAL      COMM DEPTNO
 ----- ---------- --------- ----- ----------------------------- --------- --------- ------
  7369 SMITH      CLERK      7902 1980-12-17 00:00:00              800.00               20
  7499 ALLEN      SALESMAN   7698 1981-02-20 00:00:00             1600.00    300.00     30
  7521 WARD       SALESMAN   7698 1981-02-22 00:00:00             1250.00    500.00     30
  7566 JONES      MANAGER    7839 1981-04-02 00:00:00             2975.00               20
  7654 MARTIN     SALESMAN   7698 1981-09-28 00:00:00             1250.00   1400.00     30
  7698 BLAKE      MANAGER    7839 1981-05-01 00:00:00             2850.00               30
  7782 CLARK      MANAGER    7839 1981-06-09 00:00:00             2450.00               10
  7788 SCOTT      ANALYST    7566 1987-04-19 00:00:00             3000.00               20
  7839 KING       PRESIDENT       1981-11-17 00:00:00             5000.00               10
  7844 TURNER     SALESMAN   7698 1981-09-08 00:00:00             1500.00      0.00     30
  7876 ADAMS      CLERK      7788 1987-05-23 00:00:00             1100.00               20
  7900 JAMES      CLERK      7698 1981-12-03 00:00:00              950.00               30
  7902 FORD       ANALYST    7566 1981-12-03 00:00:00             3000.00               20
  7934 MILLER     CLERK      7782 1982-01-23 00:00:00             1300.00               10
  
 14 rows retrieved.
 

以上のように、EDB*PlusではSQL*Plusと同様に@<スクリプトファイル名>でのバッチスクリプト実行、DESCRIBEコマンド実行ができます。


EDB*PlusとSQL*Plusの異なる点

EDB*Plus では"!"(=HOST)が使用できない

EDB*Plus上でHOSTコマンドでOSコマンドを実行することはできますが、"!"でOSコマンドを実行することはできません。

 
 SQL> host pwd
 /home/enterprisedb
 SQL> host id
 uid=525(enterprisedb) gid=525(enterprisedb) 所属グループ=525(enterprisedb) context=unconfined_u:unconfined_r:unconfined_java_t:s0-s0:c0.c1023
 SQL> ! id
   2
   3

全てのSQL*Plusコマンドに互換性があるわけではない

SQL*Plusコマンドと互換性のあるEDB*Plusコマンドもありますが、全てのSQL*Plusコマンドに対応しているわけではありません。以下が、EDB*Plusコマンドの内容です。

 
 SQL> help index
 Type 'HELP [topic]' for command line help.
 @              ACCEPT         APPEND         CHANGE
 CLEAR          COLUMN         CONNECT        DEFINE
 DEL            DESCRIBE       DISCONNECT     EDBPLUS
 EDIT           EXIT           GET            HELP
 HOST           INDEX          INPUT          LIST
 PASSWORD       PAUSE          PRINT          PROMPT
 QUIT           REMARK         SAVE           SET
 SHOW           SPOOL          START          TRIMS
 UNDEFINE       VARIABLE
  

【補足】EDB*Plusとpsql(edb-psql)の異なる点

EDB*PlusはSQL*Plusとの互換性を意識して開発されているため、psql(edb-psql)との互換性がなくなっている部分があります。以下に、psql(edb-psql)との互換性がない部分をご紹介します。

デフォルトの設定で自動コミットは無効

psql(edb-psql)ではデフォルトの設定で自動コミットは有効ですが、EDB*Plusではデフォルトの設定で無効です。EDB*Plusで自動コミットを有効にしたい場合には以下のコマンドを実行する必要があります。

 
 SQL> SET AUTOCOMMIT ON
 SQL> 
 

SETコマンドでは変数を設定

psql(edb-psql)ではSETコマンドによりセッション単位でEPASのパラメーターを設定/変更できましたが、EDB*PlusのSETコマンドはSQL*Plusと同様にシステム変数などの設定を行うコマンドであるため、EPASのパラメーターを設定/変更することはできません。EDB*Plusを使用してセッション単位でEPASのパラメーターを設定/変更する場合にはALTER SESSION文を実行する必要があります。

以下の例では、EDB*Plusを使用してclient_encodingパラメーターの設定をSJISに設定しています。

 
 SQL> ALTER SESSION SET client_encoding=SJIS;
  
 Session altered.
 

SHOW ALLコマンドでは変数の設定を表示

psql(edb-psql)ではSHOW ALLコマンドでEPASのパラメーター設定を確認できましたが、EDB*PlusのSHOW ALLコマンドは変数の設定を確認するコマンドであるため、EPASのパラメーター設定を確認することができません。EDB*PlusでSHOWコマンドを使用してパラメーター設定を確認する場合にはSHOW PARAMETERコマンドを実行する必要があります。

 
 SQL> SHOW PARAMETER
 NAME                                    VALUE
 --------------------------------------- ---------------------------------------
 DateStyle                               ISO, DMY
 IntervalStyle                           postgres
 TimeZone                                Asia/Tokyo
 allow_system_table_mods                 off
 ...(以降省略)
  

まとめ

今回はEDB*Plusの簡単な使用方法と合わせてSQL*Plusと異なる点についてもご紹介しました。EDB*Plusは、SQL*Plusと互換性があるものの今回ご紹介したように一部異なる点もあるため、本ブログを参考に相違点を認識した上で使用してみてください。



■本記事の内容について
 本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • EDB
  • PostgreSQL
2024.01.16

EDBがもたらすデータベースの新たな価値 ~ EDB社Field CTO Ajit Gadge氏来日、セミナー講演レポート ~

EDB社のAjit Gadge氏を招き「PostgreSQLユーザーに捧ぐ、EDBを使ったDB機能向上とコスト削減の両立」セミナーを開催しました。DB市場の現状やトレンド、EDBの最新動向について紹介しております。アシストセッションのアーカイブ配信の視聴申し込みも可能です。ぜひご覧ください。

  • PostgreSQL
  • EDB
2023.12.20

PostgreSQLのSQLチューニングを体験してみよう!

35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載最終回となる9回目の記事では、「PostgreSQL SQLチューニング実践」のワークショップ主管である 田中 健一朗 にインタビューしました。

  • PostgreSQL
  • EDB
2023.10.30

データベースの健康診断! ~ PostgreSQL DB稼働分析体験 ~

35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載8回目となる今回の記事では、PostgreSQL DB稼働分析ワークショップの主管である保田 公貴にインタービューしました。

ページの先頭へ戻る