LoginSignup
5
4

More than 5 years have passed since last update.

Chefを使ってOracle Databaseをインストール&データベース作成をサイレント・モードで実施してみた

Last updated at Posted at 2016-06-29

概要

Chefを利用してのOracle Data baseのサイレント・インストールを実施してみました。

-Chefを使ってOracle Databaseをサイレント・インストールしてみた

上記の投稿での記載しましたが、Oracle Databaseは導入した後にDatabase Configuration Assistant (DBCA)で構成を行う事でデータベースを利用する事が可能となります。

DBCAを使用したデータベースの作成

DBCAは対話型 (GUIによるウィザード形式)か、非対話型 (スクリプトによるバッチ形式)での実行が可能です。

対話型でのDBCAによる作業手順は、マニュアルの次の箇所にまとめられています。

一方で、非対話型 (サイレントモード) でのDBCAの使用方法は、次の場所に記載があります。

サイレント・モードでは、DBCAコマンドのパラメータとして、各種属性値を渡すか、レスポンスファイルとして事前に作成し、そのファイルをパラメータとして渡すかの実施方法があります。
実施は次のコマンドで実施します。

$ORACLE_HOME/bin/dbca -silent -responseFile /PATH/TO/DBCA-RESONSE-FILE.rsp 

今回作成するRecipe

  • DBCAで使用するレスポンスファイルを生成する
  • DBCAをサイレント・モードで実行し、データベースを作成する

Recipe. DBCA用のレスポンスファイルの生成

以下の3種類のファイルを作成します。
- Recipe
- Template
- Attribute

レスポンスファイルを生成

テンプレートからレスポンスファイルを生成し、オーナー/グループ権限を設定します。

recipes/responsefile.rb
template node['database']['response_file_dbca'] do
  source 'dbca_oracledb.rsp.erb'
  owner node['database']['owner']
  group node['database']['group']
  mode '0644'
end

レスポンスファイルのひな型

インストールに最低限必要な属性値をパラメータ化しています。
パラメータ化している主な項目は以下のものです。

項目名 説明
OPERATION_TYPE 動作タイプ
以下の分類参照

  • OPERATION_TYPE
コマンド 説明
createDatabase データベースを作成
createTemplateFromDB 既存のデータベースからデータベース・テンプレートを作成
createCloneTemplate 既存のデータベースからクローン(シード)データベース・テンプレートを作成
deleteDatabase データベースを削除
configureDatabase データベースを構成
createPluggableDatabase CDBにPDBを作成
unplugDatabase CDBからPDBを切断
deletePluggableDatabase PDBを削除
configurePluggableDatabase PDBを構成

項目名 説明
GDBNAME グローバル・データベース名
database_name.domain_name形式
SID データベース・システム識別子
CREATEASCONTAINERDATABASE CDBの作成フラグ
デフォルト:false (非CDB)
NUMBEROFPDBS 作成するPDBの数
デフォルト:0
PDBNAME 各PDBの名前
NUMBEROFPDBSが1より大きい場合はそれぞれの名前に番号が付与
PDBADMINPASSWORD PDBのローカル管理者のパスワード
TEMPLATENAME デフォルトの場所の既存のテンプレートの名前
SYSPASSWORD 新しいデータベースのSYSユーザー・パスワード
SYSTEMPASSWORD 新しいデータベースのSYSTEMユーザー・パスワード
CHARACTERSET データベースのキャラクタ・セット
NATIONALCHARACTERSET データベースの各国語キャラクタ・セット

以下、Templateファイルより抜粋

tempalates/default/default.rb
OPERATION_TYPE = "<%= node['database']['operation_type'] %>"
GDBNAME = "<%= node['database']['gdbname'] %>"
SID = "<%= node['database']['sid'] %>"
CREATEASCONTAINERDATABASE = <%= node['database']['create_as_container_database'] %>
NUMBEROFPDBS = <%= node['database']['number_of_pdbs'] %>
PDBNAME = <%= node['database']['pdbname'] %>
PDBADMINPASSWORD = "<%= node['database']['pdb_admin_password'] %>"
TEMPLATENAME = "<%= node['database']['template_name'] %>"
SYSPASSWORD = "<%= node['database']['sys_password'] %>"
SYSTEMPASSWORD = "<%= node['database']['system_password'] %>"
CHARACTERSET = "<%= node['database']['characterset'] %>"
NATIONALCHARACTERSET = "<%= node['database']['national_characterset'] %>"

デフォルト値の設定

パラメータ化している属性値のデフォルト値を設定します。

今回はパスワードは平文でハードコードしていますが、実際はData Bagを使用して暗号化するとよいです。

attributes/default.rb
default['database']['operation_type'] = 'createDatabase'
default['database']['gdbname'] = 'orcl'
default['database']['sid'] = 'orcl'
default['database']['create_as_container_database'] = 'true'
default['database']['number_of_pdbs'] = '2'
default['database']['pdbname'] = 'pdb'
default['database']['pdb_admin_password'] = <平文パスワードのハードコード>
default['database']['template_name'] = 'General_Purpose.dbc'
default['database']['sys_password'] = <平文パスワードのハードコード>
default['database']['system_password'] = <平文パスワードのハードコード>
default['database']['characterset'] = 'AL32UTF8'
default['database']['national_characterset'] = 'AL16UTF16'

DBCAサイレント・モードによるデータベースの生成

executeリソースによりdbcaコマンドをインストール・ユーザ(この例ではoracle)で実行します。

recipes/dbca.rb
execute "dbca oracle database" do
  user node['database']['user']
  group node['database']['group']
  command "#{node['database']['oracle_home']}/bin/dbca -silent -responseFile #{node['database']['response_file_dbca']}"
  not_if { Dir.exist?("#{node['database']['oracle_base']}/oradata") }
end

Chefの実行イメージ

chef-oracle-database-dbca.gif

まとめ

Chefを利用してOracle Databaseの基本的な構成を用意する事が自動で行えるようになりました。
このようなChefによる基本構成のCookbookがあれば、これをベースとした様々な構成を組む事も容易にできるようになります。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4