Windows Oracle Database にパッチを適用してみた

まずは情報収集

Windows版のOracleの場合、DBバンドルパッチという形で提供されているようなので、それを当てることにする。
その前に、MOS(My Oracle Support)で、パッチ検索しておく。
推奨は2件。

パッチ19852357 ORACLE JAVAVM COMPONENT 12.1.0.1.1 DATABASE PSU - GENERIC JDBC PATCH (OCT2014)
パッチ20160748 WINDOWS DB BUNDLE PATCH 12.1.0.1.16

READMEを読むと、OPatchを新しくしとけってあるので、p6880880もダウンロードしておくこと。

パッチ適用準備

ダウンロードしておいたパッチのzipを解凍。
OPathのほうは、ORACLE_HOMEの下に既にOPatchが存在するので、OPatch_oldか何かにリネームしてp6880880のほうをコピペする。
それ以外のほうは、ORACLE_HOMEの下にpatchディレクトリを作って、その中にフォルダ毎放り込んでおく。
patchディレクトリの下に、19852357ディレクトリや20160748ディレクトリを置くことになる。

パッチ適用

ここから先はコマンドプロンプトで実行する。まずは、パスを通すのと、ディレクトリ移動。

set ORACLE_HOME=C:\app\oracle12c\product\12.1.0\dbhome_1
set PATH=%ORACLE_HOME%\OPatch;%ORACLE_HOME%\perl\bin;%PATH%
cd %ORACLE_HOME%\patch\20160748

20160748のREADMEによれば、サービス停止しておけとあるのでサービス停止。

net stop OracleServiceORCL
net stop OracleOraDB12Home1TNSListener
net stop OracleVssWriterORCL
net stop OracleOraDB12Home1MTSRecoveryService

パッチ状態の確認(事前)。

opatch lspatches
opatch lsinventory

パッチ適用。

opatch apply

20160748のREADMEによれば(後略

net start OracleServiceORCL
net start OracleOraDB12Home1TNSListener
net start OracleVssWriterORCL
net start OracleOraDB12Home1MTSRecoveryService

sqlplus /nolog
conn / as sysdba
startup                      ←上のサービス開始で始まっているんだけど、README通りだとこれ。
quit

パッチ適用されているかどうかの確認。

opatch lspatches
opatch lsinventory

20160748のREADMEによれば、これが必要。19852357ではこんなの書いていないので、READMEで各パッチ毎に指示があるはず。

datapatch -verbose

19852357のほうもREADME読みながらやってみた。こっちは基本上と同じ流れで、opatch applyのみで、datapatchはなし。
これでおしまい。振り返ってみると意外に簡単でした。

VirtualBox、Vagrant、knifeによる開発環境作成をやってみる。(6)

ホストOSからのリモート接続設定

ホストOSからIPアドレスを指定してアクセスできるようにするにはVagrantfile中の下記のコメントアウトを解除しなければならないが、その前にVMをhaltする。

>vagrant halt

そして、Vagrantfileの中のコメントアウトを解除する。

# config.vm.network :private_network, ip: "192.168.33.10"

GlassFish管理コンソールのリモート接続設定

ローカル以外からGlassFish共通操作画面に接続するには、管理者(admin)パスワードを設定しSSLを有効にする必要がある。

管理者パスワード設定
$ sudo /usr/local/glassfish3/glassfish/bin/asadmin change-admin-password
Enter admin user name [default: admin]> admin
Enter admin password>
Enter new admin password>
Enter new admin password again>
Command change-admin-password executed successfully.
SSL有効
$ sudo /usr/local/glassfish3/glassfish/bin/asadmin enable-secure-admin
Enter admin user name>  admin
Enter admin password for user "admin">
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.
サーバ再起動
$ sudo /etc/init.d/glassfish stop
Waiting for the domain to stop .....
Command stop-domain executed successfully.
Stopping application server glassfish
$ sudo /etc/init.d/glassfish start
Starting application server glassfish
Waiting for domain1 to start .........
Successfully started the domain : domain1
domain  Location: /usr/local/glassfish3/glassfish/domains/domain1
Log File: /usr/local/glassfish3/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.

これでユーザ名とパスワードを入力すれば、ローカル以外の端末からでも管理コンソールが接続可能となる。信頼されない証明書として警告が出るが正しい証明書を作る等対応は各々で。

VirtualBox、Vagrant、knifeによる開発環境作成をやってみる。(5)

knife-soloのインストール

下記のコマンドでインストール。

>gem install knife-solo

バージョンは0.3.0、また一緒にインストされたChefのバージョンは11.6.0だった。また、後からおこなう「knife solo init chef-repo」の時に色々怒られる(ERROR)ので、下記のコマンドも実行しておく。

>gem install win32-process --no-ri --no-rdoc 
>gem install ffi --no-ri --no-rdoc
>gem install windows-pr --no-ri --no-rdoc
>gem install net-ssh -v 2.6.5

レシピを準備する

下記で、レシピのテンプレートが作られる。このchef-repoというディレクトリにレシピを作成する。

>knife solo init chef-repo

次に、下記を実行する。

>cd chef-repo
>knife solo prepare -i "C:\Users\[ユーザー名]\.vagrant.d\insecure_private_key" -p 2222 vagrant@127.0.0.1

knife solo prepare を実行すると、VMにchefをインストールしてくれているみたい。ちなみに、事前に ssh が通るように ~/.ssh/config にどのキーを使うかを書いておいたほうが、毎回-iオプションを入力せずにすむらしい。書式はこんなん。

Host 127.0.0.1
    HostName        127.0.0.1
    Port            2222
    IdentityFile    C:\Users\k-ohyama\.vagrant.d\insecure_private_key
    User            vagrant

rsyncsshのパスを通す

Windowsの場合rsyncがないので、インストールする必要がある。knife-soloのREADME.rdocのページを見てみる。すると、下記のサイトを見てrsyncをインストールせよ、と書かれていた。
https://github.com/thbar/rsync-windows
しかし面倒臭いので、ここ(https://www.itefix.no/i2/cwrsync-get?quicktabs_7=1)からインストーラーを入手して、インストール先にパスを通す。

レシピの編集

initで作ったフォルダ構成は下記のようになっている。

cookbooks
├[サービス名]/recipes/default.rb → レシピの内容
├data_bags
├nodes
│ └xx.xx.xx.xx.json → レシピを実行するノードに対して、実行するレシピが書かれたファイル。
├roles
├site-cookbooks
└solo.rb

レシピのひな形は下記のコマンドで作成する。

>knife cookbook create [recipe名] -o cookbooks

このコマンドでcookbooks/[recipe名]が作られる。
たとえば、VMjavaをインストールするというレシピの場合、まず下記でjavaという名前のcookbookを作る。

>knife cookbook create java -o cookbooks

そしてcookbooks/ java/recipes/default.rbを編集する。
下記は、インストールを行うレシピ。

%w{java-1.7.0-openjdk}.each do |pkg|
  package pkg do
    action :install
  end
end

nodes/127.0.0.1.jsonを下記のように編集する。

{
   "run_list":["recipe[java]"]
 }

これで実行できるはず。
今回は、Java7+GlassFish3.1.2.2+PostgreSQL9.2.6のレシピで行う。
レシピはこちら

レシピを実行する

>knife solo cook -i "C:\Users\[User名]\.vagrant.d\insecure_private_key" -p 2222 vagrant@127.0.0.1

VirtualBox、Vagrant、knifeによる開発環境作成をやってみる。(4)

rsyncのインストール(ゲスト側)

VMのゲストOS側に、rsyncをインストールしておく。

$ sudo yum install rsync

BOX化

今動いているVMをBoxにしてみる。
>vagrant package
これで、このboxを好きなところに持って行って、vagrant box addできる。
例えば、C:\Vagrant\boxes\CentOS59x86-64rsync.box にあるとすると、下記でbox addできる。ただ、これをやる時に、先程とは別のディレクトリでやること。

>vagrant box add CentOS59x86-64rsync C:\Vagrant\boxes\CentOS59x86-64rsync.box

VirtualBox、Vagrant、knifeによる開発環境作成をやってみる。(3)

VM(ゲストOS)を追加して起動する

Vagrantは任意のVirtualBox形式のVMを使って環境構築できるようだ。
VMのTemplateも用意されているみたい。下記から追加したいVMを確認する。
ここ(http://www.vagrantbox.es/)
次に、適当なディレクトリを作成し、下記のコマンドを実行。

>mkdir CentOS_5.9_x86_64
>cd CentOS_5.9_x86_64

ここからboxへのURLを取ってきて入力。
書式> vagrant box add [name] [URL]
書式> vagrant init [name]
書式> vagrant up

>vagrant box add CentOS_5.9_x86_64 http://tag1consulting.com/files/centos-5.9-x86-64-minimal.box
>vagrant init CentOS_5.9_x86_64

ここで、一旦設定を確認するため、Vagrantfileの中身を確認しよう。

>vagrant up

なお、VMはC:\Users\[User名]\.vagrant.d\boxesに保存されていた。

VMにアクセスする

通常は下記のコマンドでゲストOSにログインできる。

>vagrant ssh  (ホストがWin以外)

ホストがWinの場合、Tera Term などのSSHクライアントを使う。
接続情報は下記。私は、Tera Term Proを使用してアクセスできることを確認した。

Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: C:/Users/[ユーザー名]/.vagrant.d/insecure_private_key

VirtualBox、Vagrant、knifeによる開発環境作成をやってみる。(2)

Rubyのインストール

ここ(http://rubyinstaller.org/)からRubyをダウンロードする。
自分は2.0.0-p247-x64をダウンロードし、インストールする。後から行うgem install knife-soloでエラーが出たので、DEVELOPMENT KITも合わせてインストールしておく。DevKitの方は、ダウンロードしたexeを実行すると、中身が解凍される。これ以降、インストールしたRubyの「Rubyコマンドプロンプト」を起動して、実行していく。

>ruby dk.rb init
>ruby dk.rb install

VirtualBoxのインストール

ここ(https://www.virtualbox.org/wiki/Downloads)より、ダウンロードしてきてインストール。バージョンは4.2.16 r86992だった。インストール先はC:\Program Files\Oracle\VirtualBox

Vagrantのインストール

ここ(http://downloads.vagrantup.com/)より、ダウンロードしてきてインストール。バージョンは1.2.7だった。
インストール先はC:\Vagrant