Oracle DBでSQLclを試していきたいと思います。
既存の公開情報も多くあるのであえて書くべきではないことも多いですが、他の情報にはない部分も確認していきたいと思います。
使ってみた使用感としては従来通りのRDBとして使用するならsqlplusよりも便利だと思います。
この従来通りというのがポイントだと思います。
正直今まで全然存在に気づかなかったSQLclですが実際に使用すると色々とよく分かりました。
それでは実際に使ってみます。
SQLclを使用してみる
機能は充実
それでは接続していきます。
ちなみに、SYSDBA喧伝での接続方法は同じです。
[oracle@oracle12c ~]$ sql / as sysdba SQLcl: 土 8 18 13:55:33 2018のリリース17.3.0 Production Copyright (c) 1982, 2018, Oracle. All rights reserved. 接続先: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.3.0.0.0 SQL>
もちろん、SYSユーザで接続が完了しているのですべての操作が可能なはずです。
SQL> show user USERは"SYS"です SQL>
正常にSQLも実行でき、sqlplusと同じようにバッファにSQL文が格納されます。
SQL> select * from v$instance; INSTANCE_NUMBER INSTANCE_NAME HOST_NAME VERSION VERSION_LEGACY --------------- ---------------- ---------------------------------------------------------------- ----------------- ----------------- VERSION_FULL STARTUP_ STATUS PAR THREAD# ARCHIVE LOG_SWITCH_WAIT LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST BLO ----------------- -------- ------------ --- ---------- ------- --------------- ---------- --- ----------------- ------------------ --------- --- CON_ID INSTANCE_MO EDITION FAMILY DATABASE_TYPE ---------- ----------- ------- -------------------------------------------------------------------------------- --------------- 1 orcl oracle12c 18.0.0.0.0 18.0.0.0.0 18.3.0.0.0 18-08-18 OPEN NO 1 STOPPED ALLOWED NO ACTIVE PRIMARY_INSTANCE NORMAL NO 0 REGULAR EE SINGLE SQL> l 1* select * from v$instance
sqlplusとの最大の違いはやはり履歴の機能でしょう。
こちらはかなり便利になります。
SQL> history History: 1 select * from v$instance; SQL>
他にもエリアス機能など様々ですが個人的には履歴機能と、方向キーで履歴を登れるだけで随分便利だと感じます。
Postgresを使っている時も履歴機能はかなり有効だったので、通常通り使用するならやはりsqlplusよりもSQLciの方が便利な気がします。
またDDLの取得機能も非常に便利です。
SQL> ddl USERS CREATE TABLE "C##NIKAIDO"."USERS" ( "ID" NUMBER, "NAME" VARCHAR2(30) ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ; SQL>
「ddl テーブル名」でDDLが取得可能です。
つまりDBMS_METADATA.GET_DDLを使用しなくて簡単にDDLが取得できるようになりました。
show pdbsコマンドが使用できない?
SQLclフォームからPDB関係のコマンドを使用しましたが以下はエラーになってしまいました。
使用である場合は、プラガブル・データベース環境ではsqlplusで操作するべきと言えるでしょう。
SQL> show pdbs SP2-0382: SHOW PDBSコマンドは使用できません。 SQL>
SYSユーザで接続していますが「show pdbs」コマンドが失敗します。
以下の通り、「show con_name」は実行できます。
SQL> show con_name CON_NAME ------------------------------ CDB$ROOT SQL>
PDBの起動停止は以下の通り可能です。
しかしshowコマンドが使えないのは不便ですね。
SQL> alter pluggable database all close immediate; Pluggable database ALLが変更されました。 SQL> SQL> alter pluggable database all open; Pluggable database ALLが変更されました。
プラガブル・データベースへの接続は可能です。
つまり、showコマンド以外はsqlplusと同じ操作が可能です。
SQL> alter session set container=TESTPDB; Sessionが変更されました。 SQL>
最後に
SQLclを少しだけですが操作してみました。
show pdbsコマンドが使用できないのは仕様なのか設定なのかは不明です。
また他にもsqlplusと違う部分が探せば見つかるかもしれません。
基本的にはsqlplusで出来ることは全て出来るのでSQLclの方が便利なのは間違いありません。
環境はOracle 18cだったので、こちらのバージョンはSQLclが標準で使用できます。
どこかでsqlplusからSQLclへインターフェースを変更しても良いかもしれません。