WindowsにOracle Database 12cをインストールしてみた

2019年5月9日

こんにちは。

今回は、Oracle Database 12cをWindows環境で使用しようとして、陥った、わかりづらく、めんどくさい事象を記載していきたいと思います。

 

あくまでも本記事は、Oracle初心者のボクが、Oracle社が公開しているマニュアルを見つつインストールしようとした際に詰まったことを書いているため、この記事の対象はOracle初心者の方になります。

 

参考にした資料

 

こちらは、Oracle社で公開されている、

SI on VirtualBox構築ガイド

というPDFのマニュアルが非常に役に立ちました。

ほとんどこちらの通りに行えばOracle Database のインストールは可能だと思います。

以下にURLも添付しておきます。

SI on VirtualBox 構築ガイド

 

今回、記事にするのは、このマニュアルの中でボクが詰まったところや、その対処方法を備忘として、記事にさせていただきました。

 

大前提は、このマニュアルを参考にして、上手くいかなかったことを記載したいと思います。

 

用意するもの

 

はじめに、今回Oracle DB 12cをインストールするために用意したものは以下になります。

こちらはマニュアルにも記載されている部分になりますが、

・Oracle のアカウント

・VirtualBox4.2.16 for Windows hosts

・VirtualBox 4.2.16 Oracle VM VirtualBox Extension Pack

・Oracle Linux Release 6 Update 4 for x86_64

・Oracle Database 12c Release 1

 

上記のソフトウェアを準備してください。

では早速、各事象について記載していきたいと思います。

 

最新版のOracle Linux Release 6をインストールしようとして失敗

 

手順には、Oracle Linux Release 6 Update 4 for x86_64を使用すると記載があるにも関わらず、欲を出し、Oracle Linux Release7.6をインストールしたため、本手順のOracle Linux Release 6をインストールする手順時に、手順通り進まないという事案が発生しました。

Oracleをインストールすることに一定のナレッジがある人であれば問題ないと思います。

しかし、ボクのようにマニュアルを片手にOracleをインストールしてみようと試みている方。

必ず、指定されたバージョンのソフトウェアを使用してください。

下手に最新版をインストールしようとすると、必ず、自信の知識不足がボトルネックになり、手順のどこかしらで詰みます。

その為、一旦は、『指定された手順通り』を心がけましょう。

続いて

 

oracle vaildated-verifiが実行できない

 

こちらは、タイトルの通り、oracle vaildated-verifitoiuというコマンドが実行できないケースが発生します。

こちらの原因は何かというと、単純に

『勘違い』

によるところになります。

 

本コマンドは以下どちらかで実行するように指示されているかと思います。

# oracle-rdbms-server-11gR2-preinstall-verify

#oracle-rdbms-server-12cR1-preinstall-verify

おそらくこのコマンドを実行する前に、大半の人は自身が使用しているOracle Pre-install RPMのバージョンを確認するのではないかと思います。

ただ、おそらく大半の人はOracleをインストールしたことがないため、そもそもOracle Pre-install RPMなんてどこでインストールしたんだっけと考え、試行錯誤にバージョンが確認できる場所を探されると思います。

そして、以下の画面にたどり着いて、12cと勘違いする人が出てくるかと思います。

 

こちらに記載されているnode1.oracle12c.jpにある、oracle12c.jpはあくまでも本ホストのドメイン名になります。

その為、これをみて勘違いして、以下のコマンドを実行してみエラーになると思います。

#oracle-rdbms-server-12cR1-preinstall-verify

 

そして、そもそもOracle Pre-install RPMなんていつダウンロードしたかと悩んでいるそこのあなた。

Oracle Pre-install RPMは以下の時点でダウンロードしております。

Oracle Linux 6インストール

→ソフトウェアの設定

→ソフトウェアのカスタマイズ

→サーバのシステム管理ツールに含まれるパッケージ

 

この時点ですね。

ちなみに、Oracle Linux Release 6 Update 4 for x86_64にはインストールされていませんが、他のバージョンであれば、インストールされているようでした。

Oracle Linux 7 以降などは12cのOracle Pre-Install RPMパッケージが提供されておりました。

 

この辺りは意識せずに手順を進めている方も多いと思いますので、実行ができない場合は今一度よく見直すことをお勧めします。

 

続いて

 

Oracle Database のインストール

 

こちらでは、Oracle Database 12c Release 1をインストールするのですが、人によってはインストールまでたどりつけない人がいるかと思います。

大前提として、Oracle アカウントを作成しているかを再度確認をしてください。

そして、自信のアカウントが作成されていることを確認した上で以下のURLよりダウンロードを試みてください。

Oracle Technology Network (OTN)

 

おそらく大半の人は問題なくサインインをして、ダウンロードが行えると思うのですが、不運にも以下のようなエラーによりダウンロードまでたどり着けない人がいると思います。

ネットワークが切断しました。

うまくOracleへ接続できない状態ですね。

これについて、色々試みてみましたが、原因となるものは特定できませんでした。

ただ、Oracleにログインする際に、複数のセッションでログインができないとあったため、ログイン履歴が残ってしまっていたのかなと思い、PCを再起動して、キャッシュなどを無くして一度クリアな状態に戻してみました。(と言ってもログインしてないし、再現させるべく複数セッションでログインしてみてもログインできたのですが)

そうしてみて、再度Oracleへサインインを試みたところ上手くいきました。

結局、明確な原因は分かりませんでしたが、おそらく、ボクのPCのメモリ不要なキャッシュなどが残っていたのでしょうと無理やり解釈。(笑)

こんなわけで何かあったらとりあえず再起動は効果的かもしれませんね!

 

Oracle Database 12cインストーラーの起動

 

まず最初に、Oracle Technology Network (OTN)

にログインができたらOracle Database 12cのダウンロードを行ってください。

その際に、迷われると思いますが、以下のファイルをダウンロードしましょう。

Oracle Database 12c Release 1

Linux x86-64

File1: linuxamd64_12102_database_1of2

File2: linuxamd64_12102_database_2of2

 

そしてダウンロードが完了したら、マニュアルの手順通りにダウンロードしたファイルをVBOXの共有フォルダへアップロードしてください。

 

アップロードが完了したら、仮想サーバにログインをして、コマンドでマウントを行うのですが、ボクはここで迷ってしまいました。

 

マウントして、Oracle Database 12cインストーラー起動時にはファイルパスに気を付けて!

 

ここの手順で、「mkdir /opt/image」でディレクトリを作成して、上記で共有フォルダ「Oracle」に配置したファイルを「# mount -t vboxsf oracle /opt/image」コマンドで作成したimageディレクトリへマウントすると思います。

このときマウントされる、若しくは、マウントすべきディレクトリimageを作成する場所は、ルートディレクトリの配下になります。

というのも、手順のunzipが完了後、rootユーザーからoracleユーザーへ切り替えるのですが、oracleユーザー上から起動ファイルを確認するとき、ルートディレクトリにファイルがあれば問題なく確認することができるからです。

rootユーザーの配下のディレクトリに配置してしまうと、ディレクトリ、ファイル権限を変更しなければ、Oracleユーザー上から確認できないケースが発生してしまいます。

また、意識せずにrootユーザーで12cのインストールファイルをマウントしてしまうと、Oracleユーザーでインストーラーを起動するときにどこのディレクトリにインストールファイルを格納したかわからなくなってしまうこともあります。

その為、詳しくなければ以下の手順で行えば問題なくインストーラーを起動できるので、参考にしてください。

手順

1、rootディレクトリにログイン

2、端末起動

3、ディレクトリをrootのホームディレクトリ階層からサーバのルートディレクトリ階層まで上がる。

[root@node1 ~] この状態はルートユーザーのホームディレクトリにいます。

 

[root@node1 /]この状態がルートディレクトリ状態です。

 

4、ルートディレクトリ上でディレクトリの作成

[root@node1 /]# mkdir opt

[root@node1 /]# mkdir opt/image

 

5、作成したディレクトリに共有フォルダOracleをマウント

[root@node1 /]# mount -t vboxsf oracle /opt/image

 

6、マウントしたファイルをunzip

[root@node1 /opt/image]# unzip linuxamd64_12102_database_1of2

[root@node1 /opt/image]# unzip linuxamd64_12102_database_2of2

上記を実行すると処理が流れるので、少し待ちます。

その後、ls -lでimageディレクトリの中を確認すると「database」フォルダが出来上がっています。

 

7、chmod -R 777 opt 権限変更

念のためですが、Oracleユーザーに切り替えたときに、インストーラーを実行できるように、optディレクトリ以下を全て実行、読み込み、変更の権限を付与しておきます。

本コマンドは以下の階層で実行してください。

[root@node1 /]# chmod -R 777 opt

 

8、Oracleユーザーに切り替える

 

9、Oracleユーザーでもルートディレクトリへ移動

[oracle@node1 ~]$の階層にいると思うので、[oracle@node1 /]$の階層へ移動します。

移動後「ls -l」コマンドで確認すると、rootユーザーで作成したディレクトリ「opt」を確認することができると思います。

 

10、databaseディレクトリに移動して、runInstallerを実行

[oracle@node1 /]$ cd opt/image/database でdatabaseディレクトリへ移動

→「ls -l」でrunInstallerが存在していることを確認

→「file runInstaller」でrunInstallerがシェルファイルであることを確認

→「./runInstaller」で実行

実行して、以下のような画面が立ち上がれば完了です。

 

 

 

インベントリの作成

 

インストールを手順通りに進めていくと、おそらくインベントリの作成で以下のようなエラーが発生すると思います。

インベントリの場所が無効です。

中央インベントリの場所は書き込み不可です。

 

これは、/u01/appの所有者がrootユーザーになっているため、インベントリを作成するための権限を持っていないというエラーが発生しております。

/u01/appの所有者を確認してみました。

 

その為、所有者を以下のコマンドでOracleユーザーへ変更します。

「chown oracle:oinstall /u01/app」

しかし、Oracleユーザーでchownコマンドを実行しても「許可されていない操作です。」とエラーが返ってくると思います。

これは単純にrootユーザーしか所有権を変更する権限を持っていないということなので、Oracleユーザーからrootユーザーへ切り替えます。

切り替える際は以下のコマンドで行えば楽に切り替わります。

「su – root」

Oracleユーザーからrootユーザーへ切り替わっていることが分かります。

 

その後、rootユーザーのルートディレクトリへ移動して、以下のコマンドを実行します。

「chown oracle:oinstall /u01/app」

 

コマンドを実行後、u01ディレクトリへ移動して、ls -lコマンドでappの所有権を確認するとrootからoracle:oinstallに変更されていることが分かります。

 

その後Oracleユーザーに再度切り替えて、インベントリの作成を実行すると、問題なく次に進むことができます。

 

 

 

所属するグループ・メンバーシップがoperではない

 

こちらは、前提条件チェックを実行すると発生する可能性のあるエラーになります。

前提条件のチェック後、修正をしてもおそらく失敗すると思います。

その場合rootユーザーで以下のシェルスクリプトを実行してください。

1、「su – root」でルートユーザーへログイン

2、ルートユーザーログイン後ルートディレクトリへ移動

3、cd /tmp/CVU_12.1.0.2.0_oracle/ ディレクトリへ移動

4、ls -lコマンドで runfixup.shがあることを確認

5、「./runfixup.sh」 を実行し以下の結果になることを確認

6、上記を確認後、再度、前提条件の修正を行うと成功する。

7、成功の確認後、再チェックするとサマリーへ進むことができる。

 

 

sqlplusでログイン

 

インストールマニュアルの通りであれば、環境変数の設定までが完了していれば、以下のコマンドでログインすることができます。

「sqlplus system/pw@ホスト名:ポート番号/Oracle_SID」

まず最初に、こちらのコマンドを実行すると、2パターンのオラクルエラーを検出する可能性があるため、そちらについて記載したいと思います。

 

パターン1

ORA‐12154 :TNS: 指定された接続識別子を解決できませんでした

こちらのエラーなのですが、どうやら調べてみたところ、原因と考えられるのはいくつかありました。

原因1:

listener.oraにリスナーの定義とデータベースの定義がされていない可能性があります。

「find -name listener.ora」でlistener.oraのファイルパスを確認して、中身を確認してみてください。

以下の画像は設定後の画像になりますが、ボクが確認したときは、「SID_LIST_LISTENER」の設定が行われおりませんでした。

こちらの設定が行われていない場合は、自信が作成したデータベースの設定値に合わせた設定値を入力ください。

 

原因2:

tnsnames.oraの定義が間違っている可能性があります。

tnsnames.oraというのは、クライアントの接続先となるネットサービス名の接続定義がされている設定ファイルのことになります。

こちらの定義が間違っていないかも確認してください。

ボクが確認したときはこちらの定義に誤りはございませんでした。

 

上記原因2つと合わせて、「.bash_profile」内の環境変数も間違っていないか確認をしてください。

よくあるパターンではORACLE_HOMEの環境変数に誤りがあると本エラーが発生するという情報がございました。

 

上記の設定の確認、変更後は必ず、lsnrctl上で「reload」を行ってください。

上記設定が正確に完了していれば、reload後に「status」コマンドを実行すると、インスタンスを1件確認することができると思います。

ここまで確認ができたら、次のエラーの対処に進みます。

 

恐らくsqlplusにログインしようとすると以下のエラーが発生すると思います。

実行コマンド:

sqlplus system/pw@サーバホスト名:ポート番号/ネットワークサービス名(ORACLE_SID)

エラーが二つでておりますね。

ORA‐01034:ORACLE not available

こちらは、接続先のインスタンスが使用できない場合に発生するエラーになります。

接続先のインスタンスが停止しているか、環境変数ORACLE_SIDの指定が誤っている場合に発生することがあるそうです。

ORA‐27101:shared memory realm does not exist

こちらのエラーはORA‐01034のエラーが発生した原因を表しているエラーのようです。

と言ってもよくわかりません。なので、原因は基本的には、ORA-01034と同じインスタンスが起動していない場合とORACLE_SIDの環境変数が間違っているという認識で問題ないと思います。

 

それで、本エラーの対応ですが、おそらくインスタンスは「lsnrctl status」で接続ができていることを確認しているため、ORACLE_SIDの環境変数、インスタンスの起動については問題はないと判断すると思います。

ボクもそう判断した為、本エラーにかなり迷いました。

 

そんなときに、以下のブログの手順を行わせていただいたところ、解決することができました。

Oracle DB起動時にエラーORA-01034・ORA-27101が出て起動しない際の対処法

 

上記はクライアントOSがWindowsなのですが、LinuxOS上でも問題なく対応することができました。

以下手順を画像付きで説明します。

※こちらの手順を上記のブログを参考にしていただいたため、上記のブログから確認していただいて問題ありません。

1、Linux上で端末を起動

2、sqlplus system/password as sysdbaと入力

アイドル・インスタンスで接続。

アイドルインスタンスというのは、インスタンスが起動していない状態でインスタンスへ接続すると表示されるメッセージです。

3、shutdown immediateと入力

データベースをシャットダウンします。

4、startup mountと入力

データベースをマウントします。

 

5、alter database noarchivelogと入力

アーカイブモードをノーアーカイブモードにします。

※アーカイブモードについてはREDOログの保存方法を調べると詳しく理解することができると思います。

 

6、alter database openと入力

 

7、shutdown immediateと入力

 

8、startup mountと入力

 

9、alter database archivelogと入力

10、alter database openと入力

 

11、exitで終了

12、sqlplus system/pw@ホスト名:ポート番号/Oracle_SIDと入力

13、sqlplusへログインを確認

 

 

SHOW PDBSコマンドは使用できません

 

 

このエラーはsystemユーザーにsysdba権限を与えることで実行できるようになります。

権限付与コマンドは以下

「connect system as sysdba」

→PW入力

→接続完了

 

再度、「SHOW PDBS;」を実行すると正常に実行されます。

 

 

以上。

Oracle DatabaseをWindowsにインストールするための備忘でした。