みなさん、こんにちは。新人若井さんが出来先輩の助けを借りながら、アマゾン ウェブ サービス(以下AWS)上でOracle DBを作成しようと言うこの企画。とうとう、終盤に入ってまいりました。前回ではOS周りの設定変更を実施していきましたが、今回はその続きにプラスしてとうとうOracleDBのインストール作業に入っていきます!それでは、物語、スタート!

  • 若井 あらた (わかい あらた)
    新人エンジニアで、今回データベース課に配属となった。本物語の主人公。



  • 出来 益代 (でき ますよ)
    中堅エンジニアで、データベース課に所属する。年齢は不詳。仕事熱心で、比較的後輩の面倒見もよいお姉さまタイプ。



※ この物語はフィクションであり、登場する団体・人物などの名称はすべて架空のものです

インストールディレクトリの作成

出来「前回までに、カーネルパラメーターの変更とか、ユーザー制限の設定が完了してたわね。今回はまず、インストールディレクトリの作成よ。実際にOracleソフトウェアが格納されるディレクトリを作っていくわよ。まずはこれをおさえましょう。」

  • ORACLE_BASE
     ⇒Oracleのインストール先のベースとなるディレクトリ。基本的にはORACLE_BASEのサブディレクトリにORACLE_HOMEが存在するように設定する。
  • ORACLE_HOME
     ⇒Oracleのインストール先となるディレクトリ。

出来「今回作成するディレクトリをORACLE_BASEとしましょう。場所は『/u01/app/oracle』ね。ORACLE_HOMEはインストールする時に自動で作られるから、今は作らなくてもいいわ。権限の変更も忘れないでね。」

[root@ip-172-31-24-192 ~]# mkdir -p /u01/app/oracle
[root@ip-172-31-24-192 ~]# chown oracle:oinstall /u01/app/oracle
[root@ip-172-31-24-192 ~]# chmod 775 /u01/app/oracle

若井「はい。完了です。」

Oracle TNS Listener用のポート番号の予約

出来「次は、Oracle TNS Listenerが使用するポート番号を『/etc/services』に追加して予約するわよ。」
若井「Oracle TNS Listener?」
出来「そう。Oracleデータベースにクライアントから接続しに行く時に、まず接続要求はこのOracle TNS Listenerって言うアプリケーションで受け付けられるのよ。接続要求を受け取った後は、データベースに要求を引き渡す。こう言った役割をしているのよ。クライアントは、基本的にはIPアドレスと、Oracle TNS Listenerがリッスンしているポート番号にめがけて通信要求するの。(まぁその他にも設定はあるのですがここではわかりやすく記載します。)」
若井「なるほど! それで、Oracle TNS Listenerが起動するポート番号で他のアプリケーションが起動しない為に、ポート番号の予約をするんですね!」
出来「そう言う事。ポート番号はデフォルト値の1521としましょう。『/etc/services』にすでにポート番号「1521」で予約されているサービスはコメントアウトしてこんな記述を追加して。」

#ncube-lm 1521 /tcp #1521で予約されているncubeをコメントアウト
#ncube-lm 1521 /udp #1521で予約されているncubeをコメントアウト
listener 1521/tcp   # Oracle TNS Listener

若井「了解しました。」

[root@ip-172-31-24-192 ~]# vi /etc/services
[root@ip-172-31-24-192 ~]# cat /etc/services | grep 1521
#ncube-lm        1521/tcp                # nCube License Manager
#ncube-lm        1521/udp                # nCube License Manager
listener        1521/tcp                # Oracle TNS Listener
[root@ip-172-31-24-192 ~]#

出来「ここまで出来たら、一旦サーバーを再起動しておきましょうか。」

[root@ip-172-31-24-192 ~]# shutdown ?r now

Oracleのインストール

出来「ようやくここまで来たわね。」
若井「と言いますと?」
出来「とうとうOracleソフトウェアをインストールするわ。」
若井「おー。」
出来「まずは、Oracle ソフトウェアをAWS EC2サーバー上へ格納しましょう。若井君の端末に『winscp』っていうソフトが入ってたわよね?」
若井「えーっと…ありますね。」
出来「Oracle.comからLinuxの64bitに対応したOracleソフトウェアをまずはダウンロードしてきて。」
若井「わかりました。」
出来「終わったら、教えてね。」
若井「はい。」

【参考】http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linx8664soft-100572.html

(カタカタカタカタカタ・・・・・ターン)

若井「終わりました!結構ダウンロードに時間かかってしましました。」
出来「まぁ、2GB以上あるからね。」
若井「じゃあ、次はサーバー上にアップロードですね。」
出来「その前に、やることがあるの。」
若井「え!」
出来「今の秘密鍵では、winSCPでは対応してない形式なのよ。winSCPでも対応している、『putty形式』に変換する必要があるわ。端末の中に、『Putty key Generator』が入っているから、それを開いてみて。」
若井「これですかね。」

出来「そう、それ。『Load』をクリックして、いつも接続に使ってる『test_key.pem』を選択して。ロードが完了したら『save private key』を押すと、『Putty形式』に変換された、ファイルが出来るわ。」
若井「できました!」
出来「OK!さっそく、winSCPでつないでみましょう。」
若井「こんな感じに入力でいいのかな?」

若井「接続できました!」

出来「じゃあ、『/u01/sft』と言うディレクトリを作って、そこにアップロードしましょう。一旦、TeraTermでログインして、『mkdir』と権限変更をよろしく。」
若井「了解しました。」

[root@ip-172-31-24-192 ~]# mkdir /u01/sft
[root@ip-172-31-24-192 ~]# chown oracle:oinstall /u01/sft
[root@ip-172-31-24-192 ~]# chmod 777 /u01/sft

若井「じゃあ、アップロードを開始します。」

しばらくして…

若井「アップロードは完了です。」
出来「よし、じゃあ、解凍しましょうか。アップロードしたファイルの所有者を『Oracleユーザー』へ変更。」

[root@ip-172-31-24-192 ~]# cd /u01/sft/
[root@ip-172-31-24-192 sft]# ls -ltr
total 2295600
-rw-rw-r--. 1 ec2-user ec2-user 1239269270 Aug 28 21:44 linux.x64_11gR2_database_1of2.zip
-rw-rw-r--. 1 ec2-user ec2-user 1111416131 Aug 28 21:49 linux.x64_11gR2_database_2of2.zip
[root@ip-172-31-24-192 sft]# chown oracle:oinstall linux*
[root@ip-172-31-24-192 sft]# ls -ltr
total 2295600
-rw-rw-r--. 1 oracle oinstall 1239269270 Aug 28 21:44 linux.x64_11gR2_database_1of2.zip
-rw-rw-r--. 1 oracle oinstall 1111416131 Aug 28 21:49 linux.x64_11gR2_database_2of2.zip
[root@ip-172-31-24-192 sft]#

出来「完了したら、『Oracleユーザー』へスイッチして、『unzipコマンド』で解答しましょう。」

[root@ip-172-31-24-192 ~]# su ? oracle
[oracle@ip-172-31-24-192 ~]$ cd /u01/sft/
[oracle@ip-172-31-24-192 sft]$ unzip linux.x64_11gR2_database_1of2.zip
~~~~~~標準出力は割愛~~~~~~
[oracle@ip-172-31-24-192 sft]$ unzip linux.x64_11gR2_database_2of2.zip
~~~~~~標準出力は割愛~~~~~~

出来「Oracleをインストールする時には、『Oracle Universal Installer』と言うGUIのツールを使うのよ。」
若井「GUIですか。今コマンドを打っているテラタームはCUIですよね。」
出来「そうね。もう忘れたの?だから、はじめに入れたVNCを使うんじゃない。」
若井「そうか!なるほど!」
出来「そう。だから、『Oracle』ユーザーでもVNCクライアントで接続できるように設定しましょう。まずは、vncで『Oracle』ユーザーでログインする時のパスワードの設定から。」

[oracle@ip-172-31-24-192 ~]$ vncpasswd
Password:
Verify:
[oracle@ip-172-31-24-192 ~]$

出来「次に、『/etc/sysconfig/vncservers』の設定変更。あ、これは『root』ユーザーでやってね。」

[oracle@ip-172-31-24-192 ~]$ su ? root
Password:

[root@ip-172-31-24-192 ~]#
[root@ip-172-31-24-192 ~]# vi /etc/sysconfig/vncservers
※以下を追記
VNCSERVERS="2:oracle"
VNCSERVERARGS[2]="-geometry 1024x768"
[root@ip-172-31-24-192 ~]#

出来「設定出来たら、vncの再起動。」

[root@ip-172-31-24-192 ~]# service vncserver restart
Shutting down VNC server: 2:oracle                         [FAILED]
Starting VNC server: 2:oracle xauth:  creating new authority file /home/oracle/.Xauthority

New 'ip-172-31-24-192:2 (oracle)' desktop is ip-172-31-24-192:2

Creating default startup script /home/oracle/.vnc/xstartup
Starting applications specified in /home/oracle/.vnc/xstartup
Log file is /home/oracle/.vnc/ip-172-31-24-192:2.log

                                                           [  OK  ]
[root@ip-172-31-24-192 ~]#

出来「OK。今の設定は『Oracle』ユーザーで5902番ポートを使ってvnc接続する様に設定したのよ。だから、セキュリティグループのポートを開放する必要があるわ。解放の方法はわかるわね。」
若井「はい!」

出来「じゃあ、vncビューアーでログインしてみましょう。」

若井「ログインできました!」
出来「じゃあ、いよいよ、Oracleのインストールを開始するわ。OracleのGUIのインストーラーである、『Oracle Universal Installer』を起動するの。さっき、ソフトウェアをunzipした所に、databaseと言うディレクトリができているわ。その配下に『runInstaller』と言うファイルがあるから、それを実行するのよ。もちろん実行はvncビューアーから『Terminal』を立ち上げて、そこで実行するのよ。」
若井「わかりました。」

若井「お!GUIが起動してきました!!」

っと、今回はこのあたりで、次回は、Oracleインストールの続きからです!お楽しみに!!

執筆者紹介

山口 正寛(YAMAGUCHI Masahiro)

株式会社システムサポート 東京支社インフラソリューション事業部所属。

同社が得意とするOracleデータベースのエンジニアで、大規模DWHのDB管理者、DBコンサルタントなどを経験。また、同社の無料セミナーの企画にも携わる。

今回、機器がなくても気軽に環境を構築し検証したいというかた向けに AWS上でOracleデータベースを構築することをストーリー調で記載する。 尚、同社はAWSを用いたクラウド工房 powered by AWSというプロダクトがあり、産学官連携でも活用している。