2016年12月12日

[JPOUG Advent Calendar] Oracle on Hyper-V 2016

このエントリは「JPOUG Advent Calendar 2016」の12日目です。
昨日は峯岸隆一さんの「 Trace File Analyzer(TFA)に含まれている oratop コマンドを使ってみた」 でした。
charade_oo4oと申します。昨年に引き続き、今年も参加致します。

 <2016年リリース>

今年はOracleもMicrosoftもサーバ向けの主力製品を一新した年でした。
なのにいまいち気分が盛り上がりませんでした。

「Windows Server 2016」は、まだ使わなくても良い理由を探してしまう事が多いです。
・Nano Server…CBBモデルでSA必須。
・Server Core…(2008からの機能)Oracle Databaseではサポート対象外。
・Docker…Nano Server、Server Coreと同じ理由。PDBとの機能重複。
・Storage Space Direct…H/Wがサポートしていない場合有。ASMとの機能重複。
・Storage Replica…Data Guardとの機能重複。
そもそもOracle Databaseはまだ動作保証されていません。

「Oracle Database 12c Release 2」は、まだOracle Database Cloud Service上のみのリリースです。
DDD2016で初めて知った12.2新機能も多かったので、オンプレミス向けにリリースされた際に検証したいと思います。
特に「INMEMORY JOIN GROUP」は面白そうだと思いました。

「インメモリカラムストアをディスクに保存出来れば、再ポピュレーションの負荷を削減できるのに。」という半年前の妄想は、Securefile LOBへ保存する「In-Memory Fast-Start」で実装される様です。

気になる点は、異なるバージョン間の互換性サポートです。
12.2のサーバに対して、11.2.0.3以降のクライアントが必要でした。
一つ前の11.2のサーバでは、9.2.0.4以降のクライアントと接続可能でした(但し一部バージョンは除く)。
12.2は大胆に切り捨てたと思います。

新旧サーバ移行では、DataPumpのNETWORK_LINK以外でも、旧クライアントから新サーバ、新クライアントから旧サーバの相互接続 が必要な場合が多いです。
新バージョンのサーバと旧バージョンのクライアント間の検証は、Premier SupportかExtended Support開始後2年以内のものについて実施するとの事でした。
12.1のES開始は2018年8月なので、13.1が2020年8月までにリリースされないと、12.1も切り捨てられる可能性があります。
13.1が先か、東京オリンピックが先か、予断を許しません。
12.2.0.1へ移行した場合も、初期リリースは相互接続可能なバージョンに制約が出る事が多いです。
次々期移行を考えると、次期移行は11.2.0.4か、12.1.0.2か、12.2.0.1か、結構悩ましいです。

 <今年のネタ>

昨年までHyper-V上でのOracleの試行錯誤をテーマにしていましたが、2016年はネタが思いつきませんでした。
2016年に試した事は、ようやく12.1.0.2RACを構築した位でした。
基本的にはOTNの12.1.0.1RACの資料を参考にHyper-Vで構築しました。2014年のネタと同様です。

http://www.oracle.com/technetwork/jp/database/enterprise-edition/documentation/raconvbox-db12101onol6u4-2080481-ja.pdf
Oracle VM VirtualBox を用いた Oracle Real Application Clusters (RAC) 12c Release 1 環境の構築

注意点はメモリ割当が2.5Gでは足りなくなった事でした。
メモリ不足でOS自体が突然再起動してしまう事がありました。
12.1.0.2RACからmgmtdb(グリッド・インフラストラクチャ管理リポジトリ)がどちらかのノードで実行されます。
alertlogから確認すると、sga_target = 752M、pga_aggregate_target = 325Mでした。
その他は12.1.0.1RAC同様、OS自体で1G弱、DBに1G、ASMに1G必要でした。
合計すると、mgmtdb有のノードでは4G弱、mgmtdb無のノードでは3G弱必要となります。
今回は起動メモリは2.5Gのまま、動的メモリの上限を4Gへ変更して対応しました。

その他の注意点としては、dbcaを実行する前にはOSを再起動して、別ノードへmgmtdbを移動させた方が良さそうでした。
mgmtdb有のノードでdbcaを実行すると、リソース不足の為かdbca実行中に固まる事もありました。

rc1,rc2:2ノードRAC rcd:DNS

rc1:mgmtdb有 メモリ要求:5529MB

rc2:mgmtdb無 メモリ要求:4177MB

rcd:DNS&iSCSI(共有ディスク用) メモリ要求:1638MB

 <VHDXブートの勧め>

ネタが少ないので検証用PCの環境説明します。
私が自宅で使用しているPCは、Hyper-Vで使用される仮想ディスクのVHDXファイルで物理環境を起動するVHDXブートで使用していま す。
更に同一VHDXで、物理起動(VHDXブート)とHyper-V起動を実行しています。

VHDXブートのメリットは下記の通りです。
○1台のPCで複数OSを検証可能。
○別VHDXから起動すると、他のVHDXをファイルベースでバックアップ・リストア可能。

VHDXブートの最大のデメリットは下記の通りです。
×OSのアップグレードが実行不能。

このデメリットを補う為に、同一VHDXでのHyper-V起動を併用しています。
環境構築の手順や注意点は、下記の通りです。

No
手順・注意点
1
物理環境でHyper-Vを有効化。
2
同じ名称で仮想スイッチを作成。PowerShellを管理者として実行。

New-VMSwitch -Name "外部" -NetAdapterName アダプタ名
New-VMSwitch -Name "内部" -SwitchType Internal
New-VMSwitch -Name "プライベート" -SwitchType Private

rem 内部向けにJumboPacket設定
netsh interface ipv4 set subinterface interface="vEthernet (内部)" mtu=9000 store=persistent
netsh interface ipv4 show interfaces

rem 内部向けにIPアドレス設定
netsh interface ip set address name="vEthernet (内部)" source=static address=192.168.xxx.xxx mask=255.255.xxx.xxx
netsh interface ip show address
3
構築済の仮想マシンをインポート。PowerShellを管理者として実行。

import-vm -path "?:\???\Virtual Machines\???.vmcx" -Register
4
VHDXブート用の仮想マシンは第二世代で作成。
C:の容量が足りない場合、第二世代ではオンライン拡張可能。
5
OSのアップグレードはHyper-Vの仮想マシンで実施。
6
VHDXブート設定。コマンドプロンプトを管理者として実行。
仮想マシンをシャットダウン後、対象のVHDXを物理環境にマウント (例 F:)。

bcdedit /copy {current}等 /d "description"
bcdedit /set  {identifier} device   partition=F:
bcdedit /set  {identifier} osdevice partition=F:

※vhd=[?:]\???\???.vhdx の指定では、再インストール時にパーティションを切り直すとVHDXブート不能となる場合有。
7
再起動時のブートメニューで、VHDXブート対象のOSを選択。
8
初回VHDXブート時に物理環境のドライバインストール。
9
ドライブレター変更時にエラーが出る場合、仮想メモリを無効化(ページングファイルなし)。
10
1に戻る。

VHDXブートで2つのWindows10環境を交互にアップグレードして、Active-Standby方式での復旧を可能としています。
Insider ProgramのFast Ringは1-2週間に一度位のペースでアップグレードされます。
時には不安定なBuildが落ちてきます。最近はHyper-Vのコンソールが不安定です。

最近のWindows10は、ネイティブ4KセクタのVHDXにもインストール可能です。
新規格のデバイスには、MicrosoftもOracleも当時の最新版でも対応していない事があります。
対応していても、機能制限や運用回避が必要な場合があります。
特にOracleは、上限テスト、別製品組合せ・新旧バージョン組合せテストが弱いと感じる事も多いです。

複数端末に同一構成を用意する場合も、VHDXブートは役立ちます。
研修環境でVHDXブートを活用している所もありました。

  <まとめ>

・11.2.0.4か、12.1.0.2か、12.2.0.1か。
・12.1.0.2RACはメモリ喰らい。
・VHDXブートは便利。

明日はKenichi Miharaさんです。
posted by charade at 00:00| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする