OCI(Oracle Cloud)でOracleデータベースを作成してsqlplusで接続した話

本日は、前回に続きOCIの話題である。無料でOracleデータベースが使えるという話を聞きつけサインアップしてVMインスタンスを作ったのが前回まで。

今回は、データベースを作成してみるのである。
OCIのデータベースには、ATPとADWがある。
ATPは「AUTONOMOUS TRANSACTION PROCESSING」と書いてある。大文字で書いてあるのがOracleというかSQLぽいが、正直「なんのこっちゃっ」ていう感じではある。
ADWはDATA WAREHOUSEとなっているので、大規模感がある。ちょっと試したいだけなので、ATPの方にする。
「Autonomous Databaseの作成」画面で名前やタイプ、管理用パスワードを入力して画面下の作成ボタンをクリックするだけなのだが、注意すべき箇所が1点。
「データベースを構成します」のところで、データベースの大きさを決定するが、Always Freeの無料枠に収まるような設定にしないと料金がかかる、という点。
無料枠のスイッチ.png
サブスクライブしたらいったいいくらかかるんだろうか。
まぁ、最初の30日間はいくらか「使ってもいいクレジット」が貰えるようなので、試してみても良いかもね。
コンソール画面の右側にどれだけ無料枠のクレジットを使ったかが表示されている。
無料枠クレジット.png
今見て気づいたけど、3万円も貰ってるんだ。なら、1ヶ月程度ならOracleをサブスクライブしても平気?やらないけど。
で、話は戻って、「Autonomous Databaseの作成」ボタンをクリックするとデータベースを作成できる。VMを作った時と同様に数分で作成できる。
うーん、時代を感じるなぁ。バージョンは19cになっているし。SQLポケットリファレンスはどこまでだっけか。えーと...
なんと12cまでじゃん。なんか一気に飛んでないか?
12cは12.1、12.2とマイナーバージョンアップがあって、その後18cが出たのね。ここでいきなり飛ぶのか。18は2018年っていうこと。18cの後は19cになってる。21cっていうのもあるみたい。やっぱりバージョンを西暦の年(YY)にしたのか。cは相変わらずクラウドのcなのよね?
はぁ、年取ったなぁ。凹むなぁ。

それはさておき、しばらくするとデータベースが作成される。
じゃあsqlplusで繋げてscott/tigerでselect投げてみるか。と思ってみるものの...
どうやって繋げるのかわからん!
「すべての場所からのセキュア・アクセス」にしたので、ネットに公開されている状態だとは思うのだが...
VMの時みたいに、sshでいける?

Macにsqlplusをインストール

sqlplusで行けそうなのだが、sqlplusが見つからない。容量不足で削除したんだっけか。Macに入れてみた。
Oracleのサイトからダウンロードできる。
OICインスタントクライアント.png
DMGファイルをダウンロードして、マウントして、install_ic.shを実行する。以下はその時のコンソールの様子。

asai@gray ~ % cd /Volumes
asai@gray /Volumes % ls
Macintosh HD                                 home
Recovery                                     instantclient-basic-macos.x64-19.8.0.0.0dbru
asai@gray /Volumes % cd instantclient-basic-macos.x64-19.8.0.0.0dbru
asai@gray instantclient-basic-macos.x64-19.8.0.0.0dbru % ls
BASIC_LICENSE            libclntsh.dylib.10.1     libocci.dylib            libocijdbc19.dylib
BASIC_README             libclntsh.dylib.11.1     libocci.dylib.10.1       liboramysql19.dylib
INSTALL_IC_README.txt    libclntsh.dylib.12.1     libocci.dylib.11.1       network
adrci                    libclntsh.dylib.18.1     libocci.dylib.12.1       ojdbc8.jar
genezi                   libclntsh.dylib.19.1     libocci.dylib.18.1       ucp.jar
install_ic.sh            libclntshcore.dylib.19.1 libocci.dylib.19.1       uidrvci
libclntsh.dylib          libnnz19.dylib           libociei.dylib           xstreams.jar
asai@gray instantclient-basic-macos.x64-19.8.0.0.0dbru % ./install_ic.sh
/Users/asai/Downloads/instantclient_19_8
Creating dir: /Users/asai/Downloads/instantclient_19_8...
Copying /Volumes/instantclient-basic-macos.x64-19.8.0.0.0dbru files ...

DMGファイルのウインドウはもう必要ないのでアンマウントする。
/Users/ユーザー名/Downloads/instantclient_19_8/にインストールされるので、PATHを切るのだが、Downloads以下にあるのはイヤなので、一つ上にディレクトリを移動。
/Users/ユーザー名/instantclient_19_8/にパスを切る。.bashrcや.zshrcで環境変数PATHにinstantclient_19_8のディレクトリパスを追加すればOK。

exports PATH = /Users/ユーザー名/instantclient_19_8/:$PATH

みたいにすればOKなはず。
ターミナルを再起動してsqlplusコマンドを打ってみる。

asai@gray ~ % sqlplus
zsh: command not found: sqlplus

コマンドがない。
えーとSQL*Plusパッケージも必要なのね。

asai@gray ~ % cd /Volumes/instantclient-sqlplus-macos.x64-19.8.0.0.0dbru
asai@gray instantclient-sqlplus-macos.x64-19.8.0.0.0dbru % ls
INSTALL_IC_README.txt SQLPLUS_README        install_ic.sh         libsqlplusic.dylib
SQLPLUS_LICENSE       glogin.sql            libsqlplus.dylib      sqlplus
asai@gray instantclient-sqlplus-macos.x64-19.8.0.0.0dbru % cp -r * /Users/asai/instantclient_19_8

これでどうでしょう?

asai@gray ~ % sqlplus
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Aug 11 08:30:09 2021
Version 19.8.0.0.0
Copyright (c) 1982, 2020, Oracle.  All rights reserved.
Enter user-name:

きた!
ローカルでOracleデータベースが動いているわけもないので、接続はできず。
OCIに接続するにはホスト指定をすれば良いのだろうか。sqlnet.oraファイルを編集すればいいのか?
Oracleに繋げるの久しぶりー。
よくわからないので、OCIのコンソールにログイン。データベース接続のところから「ウォレットのダウンロード」をクリック。パスワードを入れろというので、入れた。
ウォレットのダウンロード.png
ダウンロードしてきたzipファイル内に、sqlnet.oraを発見。tnsnames.oraもある。tnsnames.oraの方にホスト名が書いてあった。なんか、highとかlowとか色々あるが...
よくわからないが、とりあえず、/Users/ユーザー名/instantclient_19_8/network/adminにコピーしてみる。
TNS_ADMIN環境変数でコピーしたディレクトリを設定。

export PATH = /Users/ユーザー名/instantclient_19_8/:$PATH
export TNS_ADMIN = /Users/ユーザー名/instantclient_19_8/network/admin

sqlnet.oraファイルにもパスのところが?になっているところがあるので、ちゃんと実在するインストール先のパスに変更。
これで、sqlplusコマンドを叩くのだが、ユーザーは「ADMIN」にして、パスワードはウォレットをダウンロードした時のやつにして、TNS名をtnsnames.oraに書いてある名前にしてみた。_highとか_lowとかはよくわからないのでとりあえず_lowで。多分、何かの優先順位なんでしょう。

asai@gray admin % sqlplus ADMIN/[パスワード]@db202108090627_low
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Aug 11 11:07:40 2021
Version 19.8.0.0.0
Copyright (c) 1982, 2020, Oracle.  All rights reserved.
Last Successful login time: Wed Aug 11 2021 10:49:46 +09:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.1.0
SQL>

できた。
パスワードが丸見えなのがちょっと...ではあるが、sqlplusなんてあまり使わないからいいでしょ。
もっと使いやすいSQLクライアントを探してみるのである。
本日は以上。

投稿者プロフィール

asai
asai