OracleDBのSQLclを試してみる

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へインターフェースを変更しても良いかもしれません。

スポンサーリンク

フォローする

合わせて読んでみる

良ければ他の記事もどうぞ!



スポンサーリンク