「基本からわかる!高性能×高可用性データベースシステムの作り方」indexページ▶▶
はじめまして。「基本からわかる!高性能×高可用性データベースシステムの作り方」を担当します日本オラクル日下部です。この連載ではOracle Databaseの性能や可用性について解説していきます。
本連載の第1回は、オンプレミスのOracle Databaseソフトウェアのインストールについて扱います。インストレーション・ガイドのマニュアルや、Oracle Technology Networkで提供されているインストール手順書の各操作が何を行っているのかの補足を行います。この原稿を執筆している2018年3月16日現在、最新バージョンであるOracle Database 18cはOracle CloudとOracle Engineered Systemで利用できるようになっています。Oracle Database 18cのOracle Engineered Systemでないオンプレミス環境用のバイナリはまだリリースされていませんが、バージョンになるべく依存しない解説をしたいと思います。
Oracle CloudなどのPaaSを利用すると、Oracle Databaseのインストールからデータベース作成、そして最低限の運用の設定を少ない手順で構成することができます。Oracle CloudのPaaSについては「もしもみなみんがDBをクラウドで動かしてみたら」を参照してみてください。
Oracle Databaseサーバーのインストール形態
Oracle Databaseは単一サーバーで実行するシングル・インスタンスの構成と、複数のサーバーが共有ディスクとインターコネクト・ネットワークを介して協調動作するOracle Real Application Clusters(RAC)の構成があります。RAC構成の場合、Oracle Databaseのソフトウェアをインストールする前にOracle Grid Infrastructureのソフトウェアをインストールします。クラスタ構成のOracle Grid Infrastructureは、クラスタを構成するノードを確定させるノード・メンバシップの管理やOracle Automatic Storage Management(ASM)の構成、そしてOracleインスタンスやOracleリスナーの死活監視の役割を担います。

シングル・インスタンス構成でもOracle Grid Infrastructureを組み合わせて使用することができます。シングル・インスタンス用にOracle Grid Infrastructureを構成する場合、これをOracle Restart構成と呼びます。Oracle RestartはOracle Grid Infrastructureからクラスタ構成の管理を省略した構成で、シングル・インスタンス構成でASMを使用する場合にインストールします。

Oracle Grid Infrastructure / Oracle Databaseのインストール手順ドキュメント
Oracle Grid InfrastructureとOracle Databaseのソフトウェアのインストールには、各プラットフォーム用のマニュアルがあります。また、Linux x86-64版のOracle Database 12c Release 2のインストール手順の例がOracle Technology Networkで提供されています。
これらのマニュアルや手順書にはインストールを行う操作手順が記述されているのですが、本連載第1回ではそれぞれの手順が何を行っているのかを補足します。
Oracle Grid Infrastructure / Oracle Databaseインストール概要
Oracleソフトウェアをインストールする前に、OS上でいくつか設定を行っておくことがあります。Oracleソフトウェアはインストールの過程において、バイナリの配置だけでなく、基本的な構成とそのチェックも行います。そのため、インストーラに指定するパラメータは事前にOS上で設定しておくものがあります。

OSグループとOSユーザーの作成
Oracle Grid InfrastructureとOracle Databaseをインストールするにあたり、それぞれのソフトウェア用にOSユーザーを作成します。一般的には、Oracle Grid Infrastructure用のOSユーザーは”grid”で、Oracle Database用のOSユーザーは”oracle”です。各OSユーザーはいくつかのOSグループに所属させますが、このOSユーザーはOracleソフトウェアの特権ユーザーとしてアクセスできます。たとえば:
$ sqlplus / as sysdba
というOracleインスタンスへのログイン方法を見たことがあると思います。パスワードの指定もなしになぜOracleインスタンスにログインできるかというと、このOSユーザーがSYSDBA権限に割り当てられたOSグループ(一般的にはdbaグループ)に属しており、OSによって認証されたからです。これをオペレーティング・システム認証といいます。Oracle Grid InfrastructureとOracle Databaseは、OSにログインして特権操作を行うユーザーを、そのOSユーザーが所属するOSグループによって区別しています。また、SYSDBA権限は非常に強力であるため、Oracleのバージョンがあがるにつれ、操作できることが限定された権限が用意されてきました。
どのOSグループをどのOracle権限に対応させるかは、Oracleソフトウェアのインストーラで指定します。そのため、Oracleソフトウェアをインストールする前にOSグループを作成します。Oracle Databaseの各権限でできることは「セキュリティ・ガイド」のマニュアルを参照してください。




OSカーネル・パラメータとOSユーザーのリソース制限の設定
Oracle Grid InfrastructureとOracle DatabaseはそれぞれインストールしたOSユーザーの権限で巨大なメモリと多数のファイルを使用します。Unix/Linux系OSでは、各OSユーザーが使用できるリソースに制限がかかっています。Oracle Databaseを稼動させるためにはOSのデフォルト値では小さいため、OSカーネル・パラメータとOSユーザーのリソース制限をより大きな値に設定します。OSカーネル・パラメータの設定方法はOSごとに異なるので、各OS用のインストレーション・ガイドのマニュアルを参照してください。これらの値はOracleソフトウェアのインストーラによって最低限の推奨値を満たしているかがチェックされます。
Oracleソフトウェア・インストール用のディレクトリ作成
Oracleソフトウェアをインストールするためのディレクトリを作成します。ディレクトリの階層には、Oracle InventoryとORACLE_BASE、そしてORACLE_HOMEというものがあります。 Oracle InventoryはOracleソフトウェアを最初にインストールしたときに作成されるディレクトリで、このOS上にインストールされるすべてのOracleソフトウェアの構成を管理する情報が格納されます。

ORACLE_BASEはOracleソフトウェアのOSユーザーごとに作成される階層で、Oracle Grid InfrastructureとOracle Databaseで分けます。ORACLE_BASEの配下にはOracle Grid InfrastructureやOracle Databaseのログ・ファイルなどを格納するディレクトリが作成されます。
ORACLE_HOMEはOracleソフトウェアのバイナリが展開されるディレクトリです。Oracle Databaseは1つのOS上に複数のバージョンをインストールすることができますが、ORACLE_HOMEディレクトリを複数分けることでインストールを区別します。
Oracle Grid Infrastructureのバイナリの一部はroot権限で動作するため、ORACLE_HOMEはインストーラによってOSユーザーのオーナーがrootに変更されます。ORACLE_BASE配下にはgridユーザーの権限でログ・ファイルを作成するため、gridユーザーでの書き込み権限が必要です。そのため、Oracle Grid InfrastructureのORACLE_HOMEはORACLE_BASEと並列の階層に作成します。
このように構成したOracleソフトウェアのディレクトリ階層の構造をOptimal Flexible Architectureと呼んでいます。現在の構造になったのはOracle Database 11g Release 1からです。
ASM用デバイス・ファイルの設定
Oracle Grid Infrastructureをインストールする過程において、少なくとも1つのASMディスク・グループを作成します。そのため、Oracle Grid Infrastructureのインストーラを起動する前に1つ目のASMディスク・グループ用のデバイス・ファイルの設定を行います。Oracle Grid InfrastructureのOSユーザーがASM用のデバイス・ファイルにアクセスできるようにOSオーナーとOSグループを設定します。SolarisとLinuxプラットフォームでは2つの方法があります。
1つ目の方法は、ASMディスク用のファイルのOSオーナーを直接変更する方法です。Oracle Grid Infrastructureのインストール・ユーザーはgridで、ASM管理者(OSASM)グループをインストーラでasmadminと指定するので、ASMディスクに該当するデバイス・ファイルのOSオーナーがgrid:asmadminとなるように構成します。 2つ目の方法は、Oracle Grid Infrastructureに付属するASM Filter Driver(ASMFD)というカーネル・ドライバを使用することです。ASMFDはLinux版のOracle Grid Infrastructure 12c Release 1で導入され、Oracle Grid Infrastructure 12c Release 2でSolaris版にも導入されました。ASMFDはASMディスク用にデバイス・ファイルをラベル付けします。ASMFDでラベル付けするデバイス・ファイルのOSオーナーはrootのままでかまいません。デバイス・ファイルのOSオーナーがrootのままでラベル付けするには、root権限で以下のように操作します。
$(Oracle Grid Infrastructure 12c R2のソフトウェアを/u01/app/12.2.0/gridに展開) # export ORACLE_HOME=/u01/app/12.2.0/grid # export ORACLE_BASE=/tmp # cd /u01/app/12.2.0/grid # bin/asmcmd afd_label DATA1 /dev/xvdb1 --init # bin/asmcmd afd_label DATA2 /dev/xvdc1 --init
Oracle Grid Infrastructureのインストールの過程で1つ目のASMディスク・グループを構成します。このとき、ASMディスク用のデバイス・ファイルの「検出パス」を変更する場合があります。Linux版の検出パスのデフォルト値は/dev/sd*となっています。これは、Linuxプラットフォームのストレージ・デバイスのデフォルト命名規則がsda,sdb,…となっているためです。環境によってはデバイス・ファイルの命名規則が異なるため、検出パスを変更します。たとえば、Oracle VMで構成された仮想化環境上のOracle Linuxでは、xvda,xvdb,…という命名規則になっているため、検出パスを/dev/xvd*とします。

ASMは、格納されるファイルをASMの機能によって冗長化することができます。ASMで冗長化する場合は二重化(標準冗長性)、三重化(高冗長性)、もしくはフレックス冗長性を選択できます。ASMで冗長化しない場合は外部冗長性を選択します。外部冗長性の場合はRAID等のストレージ・アレイの機能で耐障害性を担保してください。ASMはストレージ・アレイの冗長化機能と組み合わせて使用することもできますが、ASMで冗長化すると、ASMファイルの一部に破損が検出された場合にミラーされた領域から自動的に復元されます。そのため、ASMの冗長化を構成することをお勧めします。
第1回はOracle Grid InfrastructureとOracle Databaseのソフトウェア・インストールについて補足しました。次回はデータベースを作成(CREATE DATABASE)するときに考慮することについての説明を予定しています。
