6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OCI をFree Tier(Always Free)の範囲で触ってみる

Last updated at Posted at 2023-10-09

はじめに

OCI の勉強がしたい、が、課金は嫌だ、ということで、
OCI Cloud Free Tier(Always Free クラウドサービス)の範囲で触れる箇所を触ってみる。

OCI Cloud Free Tierの詳細は下記。

最初の30日間の無料枠に加え、その後もAlways Free クラウドサービス として

  • Compute VM * 2
  • Automonous DB * 2

等が無料で利用可能。勉強用途で大変ありがたい。
OCIのアカウントを作成すると、最初は自動でFree Tierアカウントとなり、無料で使える箇所しか使えない安心設定になっている。
すでに最初の30日は過ぎてしまったため、Free Tierアカウントの範囲内でAlways Freeで使える箇所を試す。

VCN

「VCNウィザードの起動」から作成。

image.png

VCN名:my-vcn、コンパートメントはあらかじめ作成したmy-compartmentとして後はデフォルトで作成。
デフォルトでは

  • VCNのサブネット:10.0.0.0/16
  • パブリックサブネット:10.0.0.0/24
  • プライベートサブネット10.0.1.0/24

が設定される。

VCNウィザードの記載によれば、本来はインターネット・ゲートウェイ、NATゲートウェイ、サービスゲートウェイもセットで作成されるはずなのだが、always freeではインターネットゲートウェイしか作成されないようだ。後からサービスゲートウェイを個別に作成してみようともしてみたが、制限に引っかかってできなかった。

image.png

デフォルトのセキュリティリストはインターネットからのsshを受け入れる設定。後で自宅のIPからのみ許可、等に絞っておきたい。

image.png

Compute VM

my-instanceという名前でコンピュートインスタンスを作成する。

  • コンパートメント名:my-compartment
  • VCN:my-vcn
  • サブネット:パブリック・サブネットmy-vcn

で作成。(右下にブートボリュームの月額料金が書いてあるのが気になるが・・・これだけ別料金なのか?)

image.png

1分もかからず作成が完了。

image.png

インスタンス作成時にDLした秘密鍵でログインできた。

powershell
PS > ssh -i .\ssh-key-2023-10-09.key opc@XXX.XXX.XXX.XXX
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Mon Oct  9 03:36:07 2023 from XXX.XXX.XXX.XXX
[opc@my-instance ~]$
[opc@my-instance ~]$ cat /etc/*release*
Oracle Linux Server release 8.8
NAME="Oracle Linux Server"
VERSION="8.8"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:8:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://github.com/oracle/oracle-linux"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.8
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.8
Red Hat Enterprise Linux release 8.8 (Ootpa)
Oracle Linux Server release 8.8
cpe:/o:oracle:linux:8:8:server

素のままだとふと手を離したすきにsshが切断されてしまって不便なため以下を設定。

[root@my-instance ~]# cat /etc/ssh/sshd_config  | grep Client
ClientAliveInterval 60
ClientAliveCountMax 3

Autonomous DB

Autonomous DBの作成

以下で作成する。 Oracle Autonomous DBには

  • データウェアハウス:Autonomous Data Warehouse(ADW)
  • トランザクション処理:Autonomous Transaction Processing(ATP)
  • JSON:Autonomous JSON Database
  • APEX:APEX Application Development

の4種類があるが、ここではデータウェアハウスを選択。

image.png

「ネットワーク・アクセスの選択」は「すべての場所からのセキュア・アクセス」を選択。

※折角OCIのコンピュートインスタンスも立てたので、インスタンスからautonomous DBに接続することを見越して、「許可されたIP及びVCN限定のセキュア・アクセス」としたいところだが、そのようにはせず。後述。

image.png

数分で作成完了する。

image.png

compute VMからautonomous DBへ接続

パブリックサブネットに配置されたcompute VMから、autonomous DBにsqlplusで接続することを考える。
ここでは、インターネット経由で接続することとし、OCIの内部で通信を完結させることはしない。
というのも、OCIのコンピュートインスタンスから、インターネットを経由せずに直接内部でautomonous DBに通信したい場合、サービスゲートウェイを経由する必要がある、が、Always Free アカウントではサービスゲートウェイを作成できない・・という事情があるため。

compute VMにoracle instant client, sqlplus, toolsを導入

https://qiita.com/shirok/items/bcc355de5515ee54e8dc
手順は上記を参考にした。

上記から

  • Basicパッケージ(RPM):oracle-instantclient19.20-basic-19.20-0.0-1.x86_64.rpm
  • SQL*Plusパッケージ(RPM):oracle-instantclient19.20-sqlplus:19.20.0.0.0.0-1.x86_64.rpm
  • ツール・パッケージ(RPM):oracle-instantclient19.20-tools-19.20.0.0.0-1.x86_64.rpm
    • ツールはなくてもよいが、data pump, SQL*Loaderを使いたい場合は必要。今回はついでに

をダウンロードする。

scpでインスタンスに送り、インスタンス上で以下を実行。(手順の詳細は上記の「インストール手順」を参照)
/usr/lib/oracle/19.20/client64配下にパッケージが配置される。

[root@my-instance ~]# yum install oracle-instantclient19.20-sqlplus:19.20.0.0.0.0-1.x86_64.rpm
(略)
[root@my-instance ~]# yum install oracle-instantclient19.20-basic-19.20-0.0-1.x86_64.rpm
(略)
[root@my-instance ~]# rpm -qa | grep instantclient
oracle-instantclient19.20-sqlplus-19.20.0.0.0-1.x86_64
oracle-instantclient19.20-basic-19.20.0.0.0-1.x86_64
[root@my-instance ~]# rpm -ql oracle-instantclient19.20-sqlplus-19.20.0.0.0-1.x86_64
/usr/bin/sqlplus
/usr/bin/sqlplus64
/usr/lib/oracle
/usr/lib/oracle/19.20
/usr/lib/oracle/19.20/client64
/usr/lib/oracle/19.20/client64/bin
/usr/lib/oracle/19.20/client64/bin/sqlplus
/usr/lib/oracle/19.20/client64/lib
/usr/lib/oracle/19.20/client64/lib/glogin.sql
/usr/lib/oracle/19.20/client64/lib/libsqlplus.so
/usr/lib/oracle/19.20/client64/lib/libsqlplusic.so
/usr/share/oracle
/usr/share/oracle/19.20
/usr/share/oracle/19.20/client64
/usr/share/oracle/19.20/client64/doc
/usr/share/oracle/19.20/client64/doc/SQLPLUS_LICENSE
/usr/share/oracle/19.20/client64/doc/SQLPLUS_README

sqlplus が叩けるようになる。
/usr/bin/sqlplusがシンボリックリンクとして追加されており、特にPATHの追加は不要の模様。)

[root@my-instance ~]# which sqlplus
/usr/bin/sqlplus
[root@my-instance ~]# ll /usr/bin/sqlplus
lrwxrwxrwx. 1 root root 42 Jul 15 04:34 /usr/bin/sqlplus -> /usr/lib/oracle/19.20/client64/bin/sqlplus(/usr/share/Modules/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@my-instance ~]# sqlplus

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Oct 9 06:58:59 2023
Version 19.20.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Enter user-name: ^C
[root@my-instance ~]#

ウォレットのダウンロード

「データベース接続」から、autonomous DB接続用のウォレットをダウンロードする。Wallet_myautonomousDB.zipなるzipファイルを取得できる。

image.png

scpでインスタンスに送る。Wallet_myautonomousDB.zipを解凍すると以下のファイルが入っている。

[root@my-instance ~]# ll /home/opc/Wallet/
total 72
-rw-r--r--. 1 root root  5349 Oct  9 04:44 cwallet.sso
-rw-r--r--. 1 root root  5304 Oct  9 04:44 ewallet.p12
-rw-r--r--. 1 root root  5710 Oct  9 04:44 ewallet.pem
-rw-r--r--. 1 root root  3190 Oct  9 04:44 keystore.jks
-rw-r--r--. 1 root root   691 Oct  9 04:44 ojdbc.properties
-rw-r--r--. 1 root root  3044 Oct  9 04:44 README
-rw-r--r--. 1 root root   114 Oct  9 04:44 sqlnet.ora
-rw-r--r--. 1 root root   804 Oct  9 04:44 tnsnames.ora
-rw-r--r--. 1 root root  2056 Oct  9 04:44 truststore.jks
-rw-rw-r--. 1 opc  opc  21974 Oct  9 04:45 Wallet_myautonomousDB.zip

解凍されたファイル一式(zip本体除く)を、/usr/lib/oracle/19.20/client64/lib/network/wallet/ に配置する。

[root@my-instance ~]# mkdir  /usr/lib/oracle/19.20/client64/lib/network/wallet/
[root@my-instance ~]# cp -pi /home/opc/Wallet/* /usr/lib/oracle/19.20/client64/lib/network/wallet/
[root@my-instance ~]# rm  /usr/lib/oracle/19.20/client64/lib/network/wallet/Wallet_myautonomousDB.zip
[root@my-instance ~]# ll  /usr/lib/oracle/19.20/client64/lib/network/wallet/
total 48
-rw-r--r--. 1 root root 5349 Oct  9 04:44 cwallet.sso
-rw-r--r--. 1 root root 5304 Oct  9 04:44 ewallet.p12
-rw-r--r--. 1 root root 5710 Oct  9 04:44 ewallet.pem
-rw-r--r--. 1 root root 3190 Oct  9 04:44 keystore.jks
-rw-r--r--. 1 root root  691 Oct  9 04:44 ojdbc.properties
-rw-r--r--. 1 root root 3044 Oct  9 04:44 README
-rw-r--r--. 1 root root  149 Oct  9 04:50 sqlnet.ora
-rw-r--r--. 1 root root  804 Oct  9 04:44 tnsnames.ora
-rw-r--r--. 1 root root 2056 Oct  9 04:44 truststore.jks

sqlnet.ora に、ウォレットが配置されたディレクトリを記載する欄がある。
デフォルトの値から修正する。

[root@my-instance ~]# cat  /usr/lib/oracle/19.20/client64/lib/network/wallet/sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
SSL_SERVER_DN_MATCH=yes

[root@my-instance ~]# vi /usr/lib/oracle/19.20/client64/lib/network/wallet/sqlnet.ora ★修正
[root@my-instance ~]# cat  /usr/lib/oracle/19.20/client64/lib/network/wallet/sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/usr/lib/oracle/19.20/client64/lib/network/wallet")))
SSL_SERVER_DN_MATCH=yes

tnsnames.oraの中身には以下が記載されている。特に修正不要。
処理の性質に応じて使い分ける意図で、複数の接続サービスがあらかじめ用意されている。
(内部的にはリソースマネージャのコンシューマーグループにマッピングされているとのこと)
https://blogs.oracle.com/oracle4engineer/post/adb-services-shares-201905

[root@my-instance ~]# cat  /usr/lib/oracle/19.20/client64/lib/network/wallet/tnsnames.ora
myautonomousdb_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxxxxxxxxxxx_myautonomousdb_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

myautonomousdb_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxxxxxxxxxxx_myautonomousdb_low.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

myautonomousdb_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxxxxxxxxxxx_myautonomousdb_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

環境変数の設定

あまり作法がわからず、以下で設定

[opc@my-instance ~]$  cat .bashrc | tail -n 5
export ORACLE_BASE=/usr/lib/oracle/
export ORACLE_HOME=/usr/lib/oracle/19.20
export TNS_ADMIN=/usr/lib/oracle/19.20/client64/lib/network/wallet/
export NLS_LANG=japanese_japan.UTF8
export PATH=$PATH:/usr/lib/oracle/19.20/client64/bin

接続確認

以下で疎通できる。

[root@my-instance ~]# sqlplus ADMIN/"パスワード"@myautonomousdb_medium

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Oct 9 07:26:48 2023
Version 19.20.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Last Successful login time: Mon Oct 09 2023 07:24:45 +00:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0

SQL> select * from user_tables;

no rows selected

SQL>
6
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?