Oracle Database 12c for Linux on Windows Azure仮想マシン


Windows Azureの仮想マシンに構築したOracle LinuxでOracle Database 12cを動かしてみます。
ここではスタンドアロン・サーバーとして構築します。
※ここで紹介する手順はあくまで最低限の構成として実験的にインストールするもので、ベストプラクティスではありません。実運用をするにあたっては、swapファイルやデータファイルなどが利用するディスクを検討するなど最大限に性能を出すための工夫や、セキュリティを意識した設定、Azureのメンテナンスを考慮した可用性の向上をする構成をする必要があります。

なお、今回の環境は、仮想マシンのギャラリーで公開されているOracle Database 12.1.0.1 Enterprise Edition – Oracle Linux 6.4.0.0.0を利用しました。
このイメージでは、Oracle Database 12cがインストールされているので、Listenerの設定とデータベースの作成を行います。
また、レスポンスファイルを利用して、コマンドラインで実施します。以降、Azure上のLinuxにsshを利用し初期登録ユーザーで接続しているものとして説明します。

  1. 事前準備
    1. データファイルなどのためのディスクを作成
      参考) データ ディスクを仮想マシンに接続する方法

      1. Azure管理ポータルの仮想マシンのページで該当の仮想マシンを選択し、画面下の「ディスクの接続」から「空のディスクの接続」をクリックします。
        ディスクの接続
      2. 適当なファイル名とファイルサイズを設定します。
        キャッシュ設定は、REDOログファイルの領域にもなるため、「なし」を選択します。
        OracleDB12cForLinuxOnAzure02
        仮想マシンにディスクが接続されたら次に進みます。
      3. 仮想マシンに接続したsshコンソールで直前に接続されたディスクの識別子を確認します。
        $ sudo grep SCSI /var/log/messages
        Feb 15 12:24:12 localhost kernel: SCSI subsystem initialized
        Feb 15 12:24:12 localhost kernel: Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
        Feb 15 12:24:12 localhost kernel: sd 3:0:1:0: [sdb] Attached SCSI disk
        Feb 15 12:24:12 localhost kernel: sd 2:0:0:0: [sda] Attached SCSI disk
        Feb 15 12:54:34 localhost kernel: sd 5:0:0:0: [sdc] Attached SCSI disk

        上記の場合、「sdc」が最後に作られているため、これになります。

      4. fdiskを利用して接続したディスクにパーティションを作成します。
        $ sudo fdisk /dev/sdc  ← 接続したディスクの識別子
        Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
        Building a new DOS disklabel with disk identifier 0xd155ab1a.
        Changes will remain in memory only, until you decide to write them.
        After that, of course, the previous content won't be recoverable.
        
        Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
        
        WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
                 switch off the mode (command 'c') and change display units to
                 sectors (command 'u').
        
        Command (m for help): n
        Command action
          e extended
          p primary partition (1-4)
        p
        Partition number (1-4): 1
        First cylinder (1-652, default 1):
        Using default value 1
        Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652):
        Using default value 652
        
        Command (m for help): p
        
        Disk /dev/sdc: 5368 MB, 5368709120 bytes
        255 heads, 63 sectors/track, 652 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disk identifier: 0x20b55dfc
        
           Device Boot      Start         End      Blocks   Id  System
        /dev/sdc1               1         652     5237158+  83  Linux
        
        Command (m for help): w
        The partition table has been altered!
        Calling ioctl() to re-read partition table.
        Syncing disks.
      5. 作成したパーティションをフォーマットします。
        sudo mkfs -t ext4 /dev/sdc1
      6. パーティションをマウントするディレクトリを作成します。
        sudo mkdir /u01/app/oracle/oradata
      7. パーティションをマウントし、オーナーとパーミッションを変更します。
        sudo mount /dev/sdc1 /u01/app/oracle/oradata
        sudo chown oracle:oinstall /u01/app/oracle/oradata
        sudo chmod 750 /u01/app/oracle/oradata
      8. OS再起動時もマウントされるように、/etc/fstabの編集して最後に以下のような行を追加します。
        /dev/sdc1  /u01/app/oracle/oradata  ext4  defaults  0 0
      9. fast_recovery_areaやauditの出力先なども必要に応じて別ディスクをマウントします。
    2. swap領域を作成
      現在(2014/02/15)Windows Azureのギャラリーで公開されているLinuxディストリビューションでは、swap領域が割り当てられていません。
      利用するインスタンスサイズに応じて、必要なサイズのswapファイルを作成します。

      インスタンスサイズ swapファイルサイズ
      XS (メモリが小さいため利用できません)
      Small 2.625GB
      Medium 3.5GB
      Large 7GB
      Extra Large 14GB
      A6 16GB
      A7 16GB

      (ここでは/var/tmp/swap.imgとして3342MBのswapファイルを作成しています。)

      $ sudo dd if=/dev/zero of=/var/tmp/swap.img bs=1M count=3342
      $ sudo mkswap /var/tmp/swap.img
      $ sudo swapon /var/tmp/swap.img
      $ cat /proc/swaps
      Filename Type Size Used Priority
      /var/tmp/swap.img file 3422200 0 -1
    3. OS再起動時もswapが有効になるように、/etc/fstabの編集して最後に以下の行を追加します。
      /var/tmp/swap.img  swap  swap  defaults  0 0
  2. 以降、oracleユーザーで実施します。
    $ su - oracle
  3. 環境変数を設定します。
    $ export ORACLE_BASE=/u01/app/oracle
    $ export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1
    $ export PATH=$PATH:$ORACLE_HOME/bin
  4. Listenerを構成します。
    netca /silent /responsefile $ORACLE_HOME/assistants/netca/netca.rsp
  5. データベースを作成します。
    dbca -silent -responseFile $ORACLE_HOME/assistants/dbca/dbca.rsp
    Enter SYS user password:  ← sysユーザーのパスワードを入力します
    
    Enter SYSTEM user password: ← systemユーザーのパスワードを入力し、完了するまでしばらく待ちます。
  6. これでデータベースの作成が完了です。
    確認してみましょう。

    $ export ORACLE_SID=orcl12c
    $ sqlplus / as sysdba
    :
    SQL> select instance_name, status from v$instance;
    INSTANCE_NAME STATUS
    ---------------- ------------
    orcl12c OPEN
  7. OS起動時のデータベースの自動起動の設定はOracleのマニュアルを参照して適宜設定してください。
    (最新のマニュアルには書いてないかも。その場合、古いマニュアルを見るのが吉。)

以上、Oracle Database 12c for LinuxをWindows Azureの仮想マシンに構築する手順でした。

Windows Azureのメンテナンスに対応した可用性を向上する方法は後日書くかも。


タグ: , ,


コメントをどうぞ