No Oracle, No Life.

Oracle 製品と戯れる日々の記録。

Oracle Database 18c SQL*Plus 新機能

さっそくですが、今回も引き続き、18cを見ていきたいと思います。

まず私が気になったのが、最も使用するであろうインタフェース、
SQL*Plusの新機能です。内容によっては、使い勝手が
大きく変わるため、期待しております。12cR2ではhistory機能が
追加されています。
(個人的には↑キーで過去のSQLを選択できると、なおよかったのですが・・・)

さて、18cのマニュアル「SQL*Plus User’s Guide and Reference」を
確認しますと、以下の3つの機能が追加されています。

 

実行したSQLのSQL_IDが返されるようになる。

SET FEEDBACK に SQL_ID オプションを設定すると、
実行したSQLのSQL_IDが返されるようになりました。
特定のSQLを検証する際に役立ちますね。

 

表示するクエリーの行数を制限できる

SET ROWLIMIT コマンドで、表示するクエリーの行数を制限できるようになりました。
「WHERE ROWNUM >= 〇〇」と付与しなくてもよくなります。

出力サイズを画面サイズにあわせて動的変更

私は3つの新機能の中でこれが一番うれしいです!
SET LINESIZE にWINDOWオプションが追加され、
画面サイズに合わせて自動的に出力サイズが変わります。

最初は小さめ(サイズ69)でSQLを実行し、
途中で画面を広げて(自動的にサイズ108に変更)SQLを実行しました。

実行するSQLによって、出力される列数も異なりますから
さまざまなデータを確認するたびに、頻繁にLINESIZEを変えることが多かったのですが、
これが動的に変わるのはとてもうれしいです!!
こういう「かゆいところに手が届く」新機能を待ってました。

以上、SQL*Plusの3つの新機能をご紹介いたしました。

Oracle Database 18c がクラウドで使用可能に

先日(2/20)のブログでは、クラウドでまだ18cが利用できないと
記載しておりましたが、本日(3/6)より利用できるようになったとの
情報が公開されていました。
https://blogs.oracle.com/oracle4engineer/column_cloud_dbcs_18c

 

・・・というわけで。早速試してみようかと。
おお、先日は選択できていなかったですが、今回はばっちりメニューにでました。

さらにRACも選択可能です~!!

 

さっそく私もインスタンスをつくっちゃいました!

Oracle Database 18c がついにリリース開始

な、なんと!!
Oracle Database 18c がついに Oracle Cloud およびエンジニアドシステムで
リリースとの情報がっ!!

https://blogs.oracle.com/database/oracle-database-18c-:-now-available-on-the-oracle-cloud-and-oracle-engineered-systems

 

2/17 現在、Oracle Database Cloud Service のInstance作成画面で
選択できるか確認しましたが、まだのようでした。

ちょっと興奮しすぎて、勇み足だったようです。
近々リリースされることは間違いなさそうですね。

英語版のマニュアルは公開されてました。
https://docs.oracle.com/en/database/oracle/oracle-database/18/index.html

Oracle Cloudのデータセンターを日本開設を発表

かなーり時間があいての投稿となってしまいました。

昨日のUS ORACLE社のプレスリリースで非常に注目すべき内容が。
Oracle Cloudの積極的なグローバル展開について発表されています。

 

さらに詳細を見てみると

日本、中国、インド、シンガポール、韓国、サウジアラビアなどアジア太平洋地域の
各国に加え、オランダ アムステルダム、スイス、そしてカナダに2カ所、さらに
米国防省向けに米国内に2カ所の、全12カ所のデータセンター新設が
計画されているそうです!!

今まで日本国内からでは、富士通社、NEC社をはじめパートナーのデータセンターから、
クラウドサービスが提供されている状況でした。

他社ベンダーと比べ、オラクル社自身による国内データセンターが存在しない
状況でしたが、ようやくその状況も改善されるようです。
ちなみにこのプレスリリース内では、時期についての発表はありませんでした。

OTNサイトにて弊社社員の連載記事が公開されました!

少々間があいてしまいましたが・・・。
弊社スペシャリストがOracle Database 12c R2の新機能を紹介する連載記事、
題して!
「コーソルOracleスペシャリストがチェック!Oracle Database 12c R2新機能」
がOTNサイトより掲載されております!

私も連載記事の著者として参加させていただきました!
12cR2 新機能を知りたい方は、ぜひともチェックください!

Oracle Linux 6 update 9 リリース

Oracle Linux 6 update 9 がリリースされたそうです。
ISOイメージをOracle Software Delivery Cloud というWebサイトから、
ダウンロードできることを確認しました。

また、変更内容が記載されたリリースノートも公開されています。
Oracle Linux Release Notes for Release 6 Update 9
http://docs.oracle.com/cd/E37670_01/E84716/html/index.html

oracle-database-server-12cR2-preinstall-1.0-1.el6.x86_64.rpm が
パッケージに同梱されている、かと期待しましたが、なさそうですね。(がっかり)

ソフトウェア・キーストア・パスワードに外部ストアを使用する

12cR2から、透過的データ暗号化のソフトウェア・キーストアまたはハードウェアの
キーストアのパスワードに、外部ストアを使用できるようになっています。

今までは、キーストアのオープン、クローズ、バックアップなどの操作に対して
ADMINISTER KEY MANAGEMENT文を実行するときに、パスワードを入力する必要が
ありました。スクリプトでこの操作を実行する場合は、平文でパスワードが
ハードコードされることになり、セキュリティ上の問題となります。

12cR2からは、外部ストアを使用することにより、パスワードの代わりに
「EXTERNAL STORE」を含めれば、操作ができるようになりました。
これにより、パスワードを平文でハードコードすることがなくなります。

実際に検証環境でやってみました。

<環境>
Oracle Linux 6.6
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 – 64bit Production

 
1. キーストアの設定
キーストアを格納するディレクトリを作成します。

–キーストア用
[oracle@node01 ~]$ mkdir /u01/app/oracle/admin/orcl/wallet
–外部ストア用
[oracle@node01 ~]$ mkdir /u01/app/oracle/admin/orcl/wallet/external_store

 
次に、sqlnet.ora に ENCRYPTION_WALLET_LOCATION を設定します。キーストアを格納するパスを記載します。

※sqlnet.ora に以下を追記

ENCRYPTION_WALLET_LOCATION=
 (SOURCE=
  (METHOD=FILE)
  (METHOD_DATA=
   (DIRECTORY=/u01/app/oracle/admin/orcl/wallet)))

 
外部ストアは、12cR2から追加された初期化パラメータである、「EXTERNAL_KEYSTORE_CREDENTIAL_LOCATION」に格納場所を設定します。
設定後、データベースを再起動します。

SQL> alter system set EXTERNAL_KEYSTORE_CREDENTIAL_LOCATION = “/u01/app/oracle/admin/orcl/wallet/external_store” scope=spfile;

システムが変更されました。

SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1073741824 bytes
Fixed Size 8801008 bytes
Variable Size 763364624 bytes
Database Buffers 297795584 bytes
Redo Buffers 3780608 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL> show parameter EXTERNAL_KEYSTORE_CREDENTIAL_LOCATION

NAME TYPE VALUE
————————————- ———– ————————————————
external_keystore_credential_location string /u01/app/oracle/admin/orcl/wallet/external_store

 
2. キーストアの作成
いよいよ、キーストアを作成します。キーストアを作成するだけでなく、
外部ストアも作成します。外部ストアの作成については、日本語マニュアル
「Oracle Database Advanced Securityガイド」に情報が見つけられず、
非常に苦労をしました。英語マニュアル「Database Advanced Security Guide」
には、コマンドが載っていました。

Database Advanced Security Guide
Configuring an External Store for a Keystore Password
https://docs.oracle.com/database/122/ASOAG/configuring-transparent-data-encryption.htm#ASOAG10474

–キーストアの作成
SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE ‘/u01/app/oracle/admin/orcl/wallet’ IDENTIFIED BY password;

キーストアが変更されました。

–外部ストアの作成
SQL> ADMINISTER KEY MANAGEMENT ADD SECRET ‘password’ FOR CLIENT ‘TDE_WALLET’ TO LOCAL AUTO_LOGIN KEYSTORE ‘/u01/app/oracle/admin/orcl/wallet/external_store’;

キーストアが変更されました。

 
さぁ、実際にキーストアをオープンしてみます。
通常は、設定したパスワード(上記だと、”password”)を入力しなければなりませんが、
外部ストアを作成したことにより、”EXTERNAL STORE”を設定することでオープンが可能になります。

SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY EXTERNAL STORE CONTAINER = ALL;

キーストアが変更されました。

SQL> select * from v$encryption_wallet;

WRL_TYPE
——————–
WRL_PARAMETER
——————————————————————————–
STATUS WALLET_TYPE WALLET_OR FULLY_BAC
—————————— ——————– ——— ———
CON_ID
———-
FILE
/u01/app/oracle/admin/orcl/wallet/
OPEN_NO_MASTER_KEY PASSWORD SINGLE UNDEFINED
1

 
もちろん、まだマスターキーを作成していないので、からっぽですが。
ちなみに、コマンドでもありましたが、ローカル自動オープンキーストアの
仕組みを使用しているせいか、外部ストアのファイルは、「cwallet.sso」となっています。

[oracle@node01 ~]$ ls -lrt /u01/app/oracle/admin/orcl/wallet/external_store
合計 4
-rw——- 1 oracle oinstall 3915 3月 16 22:16 2017 cwallet.sso

 
また、外部ストアを損失しても、設定したパスワードがわかっていれば、
問題なくキーストアの操作は可能です。復旧も、再作成すれば元通りになります。
設定が間違っていたり、正しく認識されていないと、ORA-00988エラーが発生します。

SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY EXTERNAL STORE CONTAINER = ALL;
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY EXTERNAL STORE CONTAINER = ALL
*
行1でエラーが発生しました。:
ORA-00988: パスワードが指定されていないか、または無効です。

 
透過的データは設定も容易で簡単に暗号化設定ができる分、キーストアの扱いで
考慮すべき点がありますので、それを助けてくれる新機能があるのはうれしいですね!
他の機能も見ていきたいと思います!

Oracle Database 12c Release 2 オンプレミス版がついにリリース!

3/1に Oracle Database 12c Release (12.2) のオンプレミス版の
Linux x86-64, Solaris SPARC, Solaris x86-64 版がリリースされました!

※US OTNサイトより。
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

OTNサイトおよびOracle Software Delivery Cloudから
ダウンロードが可能です。
※3/2時点、まだ日本のOTNではダウンロードできないようです。
 USのOTNでダウンロードできます。

私も今までOracle Cloudトライアル版から検証しておりましたが、
さっそくオンプレミス版をダウンロードして検証しております!
追加されたさまざまな新機能をぜひ手元の環境でためしてみましょう!

Oracle SQLDeveloperでOracle以外のDBに接続

先日のわんくま同盟福岡勉強会#39のときにご質問をいただきました。
#38のときに発表した「Oracle SQLDeveloper」に関してのものです。
そのときその場で回答し解決しましたが、あわせてこちらでも記載しておこうと思います。

Oracle SQLDeveloperでは、Oracle Database以外のデータベースに接続することができます。
デフォルトでは、Oracle Databaseしか接続先を指定することができない状況です。

各サード・パーティのデータベースに接続するため、JDBCドライバが必要です。
例えば、SQLServer、Sybase では、JTDCというJDBCドライバをダウンロードします。
以下のサイトにあります。
https://sourceforge.net/projects/jtds/files/jtds/1.2.5/

MySQLは、以下のサイトからJDBCドライバをダウンロードできます。
https://www.mysql.com/products/connector/

ダウンロードしたJDBCドライバは、zipファイルを展開しておきます。

次にOracle SQLDeveloperを起動し、メニュー「ツール」-「プリファレンス」を選択。
プリファレンス画面を表示します。
左ペインで「データベース」ー「サード・パーティJDBCドライバ」を選択します。

「エントリの追加」ボタンを押下し、各JDBCドライバのjarファイルを選択します。

エントリの追加を行い、再びデータベースへの接続画面を開くと
下部にタブが追加され、接続先を指定できるようになります。
<Sqlserver>

<Sybase>

<MySQL>

Oracle Database だけでなく、さまざまなデータベースをご使用の方は、
Oracle SQLDeveloper1つで事が足りるので非常に便利なのではないかと思います。
ぜひ使ってみてください。

わんくま同盟 福岡勉強会 #39 に登壇しました!

2017/01/28 (土)、天神パークビルにて行われた
わんくま同盟 福岡勉強会#39 にスピーカーとして参加いたしました。

勉強会の詳細な内容については、こちら。
わんくま同盟 福岡勉強会 #39
※私は「おいろん」というHNで参加しています。
セッションテーマは、「Oracle Database Cloud Service」についてです。

この日はIBM Bluemix Infrastructure(旧SoftLayer)についてのセッションあり、
ライトニングトークでもクラウドの話題があり、
『今、クラウドが熱い!』と再認識した勉強会でした。

「Oracle Database Cloud Serviceはまだ使ったことがない」
といった方、ぜひこの機会に触れてみてはいかがでしょうか。