ASMを使用したANFでのOracleクローンライフサイクルの自動化
ネットアップ、Niyaz Mohamed、Allen Cao氏
このソリューションには、Ansibleベースの自動化ツールキットが用意されています。このツールキットを使用すると、ASM構成を使用するAzure NetApp Filesクラウド上のOracle Data Guardの物理スタンバイデータベースから、Oracleクローンデータベースをセットアップ、クローニング、更新できます。
目的
Oracle Data Guard構成で物理スタンバイOracleデータベースのクローンを他のユースケースに活用することは、さまざまな目的に役立ちます。開発またはUAT目的で本番データベースの書き込み可能なコピーを提供します。そのため、短時間(10~15分)のレポート作成が許容される場合は、Active Data Guardの高価なライセンスコストを削減できます。特にシンクローンがオプションの場合は、ストレージコストを削減できます。このAnsibleベースの自動化ツールキットを使用すると、Oracleデータベースのクローンをユーザのスケジュールに従って設定、クローニング、更新し、ライフサイクル管理を合理化できます。このツールキットは、Azure NetApp FilesストレージとData Guard構成で構成されたOracleデータベースを使用してAzureパブリッククラウドに導入されたOracleデータベースに適用されます。
この解決策 は、次のユースケースに対応します。
-
Ansibleの自動化用にOracleスタンバイデータベースクローンの構成ファイルをセットアップします。
-
Ansible Playbookを使用して、クローンOracleデータベースをData Guardスタンバイからユーザ定義のスケジュールで作成または更新します。
対象読者
この解決策 は、次のユーザーを対象としています。
-
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 Homeのディレクトリレイアウトなど、スタンバイOracleサーバと同じように構成する必要があります。 |
ツールキットをダウンロード
Details
|
このツールキットにアクセスできるのは、現時点でビットバケットアクセス権を持つNetApp内部ユーザーのみです。ご興味のある外部ユーザーの方は、アカウントチームにアクセス権をリクエストするか、NetAppソリューションエンジニアリングチームにお問い合わせください。 |
Ansibleのソースホストとターゲットホストのファイル構成
Details
このツールキットには、Ansible Playbookを実行するソースとターゲットのOracleホストを定義するhostsファイルが含まれています。通常、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パラメータは、グローバル変数ファイルで設定されます。以下は、一般的な構成を示す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 user.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'
Playbookの実施
Details
Oracleデータベースのクローンライフサイクルを実行するには、合計で2つのプレイブックがあります。DBのクローンまたは更新は、オンデマンドで実行することも、crontabジョブとしてスケジュール設定することもできます。
-
Ansibleコントローラの前提条件をインストール- 1回のみ。
-
クローンデータベースの作成と更新は、クローンまたは更新プレイブックを呼び出すシェルスクリプトを使用して、オンデマンドまたは定期的にcrontabから実行します。
追加データベースをクローニングするには、別のoracle_clone_n_asm_anf.ymlおよびoracle_clone_n_asm_anf.shを作成します。必要に応じて、host_varsディレクトリにAnsibleターゲットホスト、グローバルvars.yml、およびhostname.ymlファイルを構成します。
|
ツールキットの実行は、特定のタスクを完了するために、さまざまな段階で一時停止します。たとえば、DBボリュームのクローンを完了するために2分間一時停止します。一般に、デフォルトで十分ですが、タイミングは固有の状況や実装に合わせて調整する必要があります。 |
詳細情報の入手方法
NetAppソリューションの自動化の詳細については、次のWebサイトを参照してください。"NetApp 解決策の自動化"