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
rsyncとsshのパスを通す
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名]が作られる。
たとえば、VMにjavaをインストールするというレシピの場合、まず下記で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による開発環境作成をやってみる。(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
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。