Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

ASMを使用したANF上の自動化されたOracleクローンライフサイクル

共同作成者 kevin-hoke

アレン・カオ、ニヤズ・モハメド、NetApp

このソリューションは、ASM 構成のAzure NetApp Filesストレージ上の Azure クラウドでホストされている Oracle Data Guard の物理スタンバイ データベースから Oracle クローン データベースをセットアップ、クローン作成、および更新するための Ansible ベースの自動化ツールキットを提供します。

目的

Oracle Data Guard 構成内のフィジカル スタンバイ Oracle データベースのクローンを他のユース ケースに活用すると、複数の目的を達成できます。開発または UAT の目的で運用データベースの書き込み可能なコピーを提供します。したがって、レポートの短い遅延 (10 ~ 15 分) が許容される場合は、高額な Active Data Guard ライセンス コストを削減できます。特にシンクローンがオプションである場合は、ストレージコストを節約できます。この Ansible ベースの自動化ツールキットにより、ユーザーはスケジュールに従って Oracle データベースをセットアップ、クローン作成、およびクローン更新して、ライフサイクル管理を合理化できます。このツールキットは、Azure NetApp Filesストレージを使用して Azure パブリック クラウドにデプロイされた Oracle データベースと、Data Guard 構成で構成された Oracle データベースに適用されます。

このソリューションは、次のユースケースに対応します。

  • Ansible 自動化用に Oracle スタンバイ データベース クローン構成ファイルをセットアップします。

  • ユーザー定義のスケジュールで Ansible プレイブックを使用して、Data Guard スタンバイからクローン Oracle データベースを作成または更新します。

観客

このソリューションは次の人々を対象としています。

  • Azure クラウドで Oracle データベースを管理する DBA。

  • Azure NetApp Filesストレージを管理するストレージ管理者。

  • 他のユースケースのために、Data Guard スタンバイから Oracle データベースのクローンを作成したいアプリケーション所有者。

ライセンス

このGitHubリポジトリのコンテンツにアクセス、ダウンロード、インストール、または使用することにより、あなたは以下のライセンス条項に同意したことになります。"ライセンスファイル"

メモ この GitHub リポジトリのコンテンツを使用した派生作品の作成および/または共有には一定の制限があります。コンテンツを使用する前に、必ずライセンスの条件をお読みください。すべての条件に同意しない場合は、このリポジトリのコンテンツにアクセスしたり、ダウンロードしたり、使用したりしないでください。

ソリューションの展開

展開の前提条件

Details

展開には次の前提条件が必要です。

Ansible controller:
  Ansible v.2.10 and higher
  ONTAP collection 21.19.1
  Python 3
  Python libraries:
    netapp-lib
    xmltodict
    jmespath
Oracle servers:
  Physical standby Oracle servers in Data Guard configuration
  Clone target Oracle servers with ASM configuration
メモ 簡素化のため、クローン先の Oracle サーバーは、Oracle ソフトウェア スタックや Oracle ホームのディレクトリ レイアウトなど、スタンバイ Oracle サーバーと同じように構成する必要があります。

ツールキットをダウンロードする

Details
git clone https://bitbucket.ngage.netapp.com/scm/ns-bb/na_oracle_clone_anf.git
メモ 現時点では、このツールキットにアクセスできるのは、Bitbucket アクセス権を持つNetApp内部ユーザーのみです。関心のある外部ユーザーの場合は、アカウント チームにアクセスをリクエストするか、 NetAppソリューション エンジニアリング チームに問い合わせてください。

Ansibleのソースおよびターゲットホストファイルの構成

Details

ツールキットには、Ansible プレイブックが実行されるソースおよびターゲットの Oracle ホストを定義するホスト ファイルが含まれています。通常、これには、Data Guard セットアップのスタンバイ DB ホストとターゲット Oracle クローン ホストが含まれます。以下はサンプルファイルです。ホスト エントリには、ターゲット ホストの IP アドレスと、ユーザーがホストにアクセスしてクローン コマンドまたは更新コマンドを実行するための SSH キーが含まれます。 Azure NetApp Filesストレージは API 経由で構成されます。したがって、ANF 接続は HTTP プロトコルを介してローカル ホスト経由で行われます。

[ora_stdby]
oras ansible_host=172.179.119.75 ansible_ssh_private_key_file=oras.pem
[ora_clone]
orac ansible_host=52.148.142.212 ansible_ssh_private_key_file=orac.pem
[azure]
localhost ansible_connection=local

グローバル変数の設定

Details

以下は、グローバル レベルで適用可能な変数を含む、一般的なグローバル変数ファイル vars.yml の例です。

######################################################################
###### Oracle DB clone on ANF user configuration variables      ######
###### Consolidate all variables from ANF, linux and oracle     ######
######################################################################
###########################################
### ONTAP/ANF specific config variables ###
###########################################
# ANF credential
subscription: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
client: "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
tenant: "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
# Cloned DB volumes from standby DB
resource_group: ANFAVSRG
storage_account: ANFOraWest
anf_pool: database2
data_vols:
  - "{{ groups.ora_stdby[0] }}-u02"
  - "{{ groups.ora_stdby[0] }}-u04"
  - "{{ groups.ora_stdby[0] }}-u05"
  - "{{ groups.ora_stdby[0] }}-u06"
  - "{{ groups.ora_stdby[0] }}-u03"
nfs_lifs:
  - 10.0.3.36
  - 10.0.3.36
  - 10.0.3.36
  - 10.0.3.36
  - 10.0.3.36
###########################################
### Linux env specific config variables ###
###########################################
####################################################
### DB env specific install and config variables ###
####################################################
# Standby DB configuration
oracle_user: oracle
oracle_base: /u01/app/oracle
oracle_sid: NTAP
db_unique_name: NTAP_LA
oracle_home: '{{ oracle_base }}/product/19.0.0/{{ oracle_sid }}'
spfile: '+DATA/{{ db_unique_name }}/PARAMETERFILE/spfile.289.1190302433'
adump: '{{ oracle_base }}/admin/{{ db_unique_name }}/adump'
grid_home: /u01/app/oracle/product/19.0.0/grid
asm_disk_groups:
  - DATA
  - LOGS
# Clond DB configuration
clone_sid: NTAPDEV
sys_pwd: "xxxxxxxx"

ホスト変数の設定

Details

ホスト変数は、特定のホストにのみ適用される {{ host_name }}.yml という名前の host_vars ディレクトリに定義されます。このソリューションでは、ターゲット クローン DB ホスト パラメータ ファイルのみが構成されます。 Oracle スタンバイ DB パラメータは、グローバル vars ファイルで構成されます。以下は、一般的な構成を示すターゲット Oracle クローン DB ホスト変数ファイル orac.yml の例です。

# User configurable Oracle clone host specific parameters
# Database SID - clone DB SID
oracle_base: /u01/app/oracle
oracle_user: oracle
clone_sid: NTAPDEV
oracle_home: '{{ oracle_base }}/product/19.0.0/{{ oracle_sid }}'
clone_adump: '{{ oracle_base }}/admin/{{ clone_sid }}/adump'
grid_user: oracle
grid_home: '{{ oracle_base }}/product/19.0.0/grid'
asm_sid: +ASM

追加のクローンターゲットOracleサーバー構成

Details

クローン先の Oracle サーバーには、ソース Oracle サーバーと同じ Oracle ソフトウェア スタックがインストールされ、パッチが適用されている必要があります。 Oracle ユーザー .bash_profile には $ORACLE_BASE と $ORACLE_HOME が設定されています。また、$ORACLE_HOME 変数はソース Oracle サーバー設定と一致する必要があります。ターゲットの ORACLE_HOME 設定がスタンバイ Oracle サーバーの構成と異なる場合は、相違点を回避するためにシンボリック リンクを作成します。以下は例です。

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
       . ~/.bashrc
fi
# User specific environment and startup programs
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/oracle/product/19.0.0/grid
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/NTAP
alias asm='export ORACLE_HOME=$GRID_HOME;export PATH=$PATH:$GRID_HOME/bin;export ORACLE_SID=+ASM'

プレイブックの実行

Details

Oracle データベース クローン ライフサイクルを実行するためのプレイブックは合計 2 つあります。 DB のクローンまたは更新は、オンデマンドで実行することも、crontab ジョブとしてスケジュールすることもできます。

  1. Ansible コントローラーの前提条件をインストールします (1 回のみ)。

    ansible-playbook -i hosts ansible_requirements.yml
  2. クローンまたは更新プレイブックを呼び出すシェル スクリプトを使用して、crontab からオンデマンドまたは定期的にクローン データベースを作成および更新します。

    ansible-playbook -i oracle_clone_asm_anf.yml -u azureuser -e @vars/vars.yml
    0 */2 * * * /home/admin/na_oracle_clone_anf/oracle_clone_asm_anf.sh

追加のデータベースをクローンするには、別の oracle_clone_n_asm_anf.yml と oracle_clone_n_asm_anf.sh を作成します。それに応じて、host_vars ディレクトリ内の Ansible ターゲット ホスト、グローバル vars.yml、および hostname.yml ファイルを構成します。

メモ ツールキットの実行はさまざまな段階で一時停止され、特定のタスクが完了できるようになります。たとえば、DB ボリュームのクローン作成が完了するまで 2 分間一時停止します。一般的にはデフォルトで十分ですが、固有の状況や実装に応じてタイミングの調整が必要になる場合があります。

詳細情報の入手方法

NetAppソリューションの自動化の詳細については、次のWebサイトをご覧ください。"NetAppソリューション自動化"