読者です 読者をやめる 読者になる 読者になる

素敵なおひげですね

PowerShellを中心に気分で書いているブログです。

All Windows Serverな環境でOracle Real Application Clusters(RAC)を構築してみる - 0.導入編

Windows Oracle Vagrant

以前にWindows環境でOracle 12cのOracle Real Application Clusters(RAC)に構築したのですが、その際に結構ハマりまくって難儀したので公開可能な範囲で知見を共有したいと思いこのエントリを書きます。

お断り

RACを扱うのはクリティカルな環境が多そうなので一応断りを入れておきます。

今回構築するのはあくまでお試しの環境です。
本エントリの手順をそのまま本番環境に実施してRACを構築・運用するのはお勧めしませんし、それにより何らかのエラーや損害が出たとしても一切責任を負えませんのであらかじめご了承ください。

基本的にRACを含めてOracle Databaseはサポート契約無しで運用すると死ねるので、何か問題が起きた時はきちんとサポートに問い合わせて対処する様にしてください。

構築する環境について

断りをいれたところで今回構築する環境について説明します。
以前に構築した時はアプライアンスのストレージを使ったりしたのですが、今回はストレージもWindows ServerにしてAll Windowsな環境でRACの構築を行ってみます。

WindowsのバージョンはすべてWindows Serer 2012 R2Oracleは先日リリースされたばかりのOracle Database 12.1.0.2.0 Standard EditionでSE2 RACにしてみます。

具体的なスペックについては以下の様にします。

サーバーの種類 CPU メモリ ドライブ ホスト名 IPアドレス(Public) IPアドレス(iSCSI) IPアドレス(RACインターコネクト) 特記事項
Domain Controller 2コア 2GB C:20GB dcserver 192.168.33.11 作成するドメインは contso.local とする
Storage Server 2コア 2GB C:20GB D:50GB storageserver 192.168.33.21 192.168.34.21 iSCSIストレージ
RAC Node #1 2コア 6GB C:20GB D:20GB oraserver01 192.168.33.31 192.168.34.31 192.168.35.31 Oracle 12.1.0.2.0 SE2
RAC Node #1 VIP - - - oraserver01-vip 192.168.33.33
RAC Node #2 2コア 6GB C:20GB D:20GB oraserver02 192.168.33.32 192.168.34.32 192.168.35.32 Oracle 12.1.0.2.0 SE2
RAC Node #2 VIP - - - oraserver02-vip 192.168.33.34
RAC SCAN - - - oracluster 192.168.33.41 192.168.33.42 192.168.33.43 DNSラウドロビン

図にするとこんな感じです。

f:id:stknohg:20150916185103p:plain

環境はVirtualBox上に仮想環境を作り、Vagrantを使ってある程度構築を省力化します。
Vagrantfileは以下の様な感じになります。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|

  # Domain Controller
  config.vm.define "dc" do |dc|
    dc.vm.box = "Win2012R2"
    dc.vm.guest = :windows
    dc.vm.communicator = :winrm
    # Network Configurations
    dc.vm.network "private_network", ip: "192.168.33.11", adapter: 2, virtualbox__intnet: "public"
    # VM Configurations
    dc.vm.provider "virtualbox" do |vb|
      vb.gui = true
      vb.memory = "2048"
      vb.customize ["modifyvm", :id, "--cpus", "2"]
      vb.customize ["modifyvm", :id, "--paravirtprovider", "hyperv"]
    end
  end

  # Storage Server
  config.vm.define "storage" do |storage|
    storage.vm.box = "Win2012R2"
    storage.vm.guest = :windows
    storage.vm.communicator = "winrm"
    # Network Configurations
    storage.vm.network "private_network", ip: "192.168.33.21", adapter: 2, virtualbox__intnet: "public"
    storage.vm.network "private_network", ip: "192.168.34.21", adapter: 3, virtualbox__intnet: "iscsi"
    # VM Configurations
    storage.vm.provider "virtualbox" do |vb|
      vb.gui = true
      vb.memory = "2048"
      vb.customize ["modifyvm", :id, "--cpus", "2"]
      vb.customize ["modifyvm", :id, "--paravirtprovider", "hyperv"]
    end
  end
  
  # RAC Node #1
  config.vm.define "rac1" do |rac1|
    rac1.vm.box = "Win2012R2"
    rac1.vm.guest = :windows
    rac1.vm.communicator = "winrm"
    # Network Configurations
    rac1.vm.network "private_network", ip: "192.168.33.31", adapter: 2, virtualbox__intnet: "public"
    rac1.vm.network "private_network", ip: "192.168.34.31", adapter: 3, virtualbox__intnet: "iscsi"
    rac1.vm.network "private_network", ip: "192.168.35.31", adapter: 4, virtualbox__intnet: "interconnect"
    #
    rac1.vm.provider "virtualbox" do |vb|
      vb.gui = true
      vb.memory = "6144"
      vb.customize ["modifyvm", :id, "--cpus", "2"]
      vb.customize ["modifyvm", :id, "--paravirtprovider", "hyperv"]
    end
  end
  
  # RAC Node #2
  config.vm.define "rac2" do |rac2|
    rac2.vm.box = "Win2012R2"
    rac2.vm.guest = :windows
    rac2.vm.communicator = "winrm"
    # Network Configurations
    rac2.vm.network "private_network", ip: "192.168.33.32", adapter: 2, virtualbox__intnet: "public"
    rac2.vm.network "private_network", ip: "192.168.34.32", adapter: 3, virtualbox__intnet: "iscsi"
    rac2.vm.network "private_network", ip: "192.168.35.32", adapter: 4, virtualbox__intnet: "interconnect"
    #
    rac2.vm.provider "virtualbox" do |vb|
      vb.gui = true
      vb.memory = "6144"
      vb.customize ["modifyvm", :id, "--cpus", "2"]
      vb.customize ["modifyvm", :id, "--paravirtprovider", "hyperv"]
    end
  end
  
end

上記例ではVagrant BoxWin2012R2を使っていますが、Boxは、

stknohg.hatenablog.jp

の手順を参考にするなどして適当に作成してください。
今回使うBoxWin2012R2はOSインストール直後の状態に最新のWindows Updateを適用したものになっています。

構築の手順

以降のエントリは以下の順序でWindowsRACを構築する手順について説明していきます。
(状況によっては順序や内容を変えるかもしれません...)

  1. Active Directoryの構築

  2. Storage Server(iSCSI)の構築

  3. RACインストールのための前準備

  4. Oracle Grid Infrastructureのインストール

  5. ASMの設定

  6. Oracle Database Softwareのインストール

  7. データベース作成

Oracleの現場を効率化する100の技

Oracleの現場を効率化する100の技