deploy/ansible/roles-db/4.1.3-ora-dg/tasks/ora-dg-preparation.yaml (567 lines of code) (raw):
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
---
# /*---------------------------------------------------------------------------8
# | Prepare the sql script for data guard initial configuration. |
# | |
# | |
# | Step 1 create the SQL scripts for DG |
# +------------------------------------4--------------------------------------*/
# - name: "Add environment variables to the Bash profile"
# become: true
# become_user: "{{ oracle_user_name }}"
# ansible.builtin.blockinfile:
# path: /home/oracle/.bashrc
# insertafter: 'fi '
# block: |
# #User Specific environment
# export ORACLE_HOME=/oracle/{{ db_sid }}/{{ ora_version }}
# export ORACLE_SID={{ db_sid }}
# export ORACLE_BASE=/oracle
# export LD_LIBRARY_PATH=$ORACLE_HOME/lib
# export TNS_ADMIN=$ORACLE_HOME/network/admin
# export DB_SID={{ db_sid }}
- name: "Oracle Data Guard - Preparation: Create sap_deployment_automation folder"
become: true
become_user: "root"
ansible.builtin.file:
path: /etc/sap_deployment_automation/dgscripts
mode: '0755'
state: directory
owner: oracle
group: oinstall
- name: "Oracle Data Guard - Preparation: create enablearchivelog.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/enablearchivelog.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
exit
mode: '0755'
- name: "Oracle Data Guard - Preparation: create standbyredologs.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/standbyredologs.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
alter database add standby logfile '/oracle/{{ db_sid | upper }}/oraarch/standbylog/srl1.dbf' size 400M reuse;
alter database add standby logfile '/oracle/{{ db_sid | upper }}/oraarch/standbylog/srl2.dbf' size 400M reuse;
alter database add standby logfile '/oracle/{{ db_sid | upper }}/oraarch/standbylog/srl3.dbf' size 400M reuse;
alter database add standby logfile '/oracle/{{ db_sid | upper }}/oraarch/standbylog/srl4.dbf' size 400M reuse;
exit
mode: '0755'
when: node_tier == "oracle"
- name: "Oracle Data Guard for oracle asm - Preparation: create standbyredologs.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/standbyredologs.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
alter database add standby logfile '+ARCH' size 400M reuse;
alter database add standby logfile '+ARCH' size 400M reuse;
alter database add standby logfile '+ARCH' size 400M reuse;
alter database add standby logfile '+ARCH' size 400M reuse;
exit
mode: '0755'
when: node_tier == "oracle-asm"
- name: "Oracle Data Guard for oracle asm - Preparation: create fralogs.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/fralogs.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
alter database add standby logfile '+ARCH' size 400M reuse;
alter database add standby logfile '+ARCH' size 400M reuse;
alter database add standby logfile '+ARCH' size 400M reuse;
alter database add standby logfile '+ARCH' size 400M reuse;
exit
mode: '0755'
when: node_tier == "oracle-asm"
- name: "Oracle Data Guard - Preparation: create enableforcelogging.sql"
become: true
become_user: oracle
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/enableforcelogging.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
ALTER DATABASE FORCE LOGGING;
ALTER SYSTEM SWITCH LOGFILE;
exit
mode: '0755'
- name: "Oracle Data Guard - Preparation: create turnonflashback.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/turnonflashback.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
ALTER DATABASE FLASHBACK ON;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
exit
mode: '0755'
- name: "Oracle Data Guard - Preparation: create createpfile.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/createpfile.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
CREATE PFILE FROM SPFILE;
exit
mode: '0755'
- name: "Oracle Data Guard - Preparation: create createspfile.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/createspfile.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
CREATE SPFILE FROM PFILE;
exit
mode: '0755'
when:
- node_tier == 'oracle'
- name: "Oracle Data Guard for ASM - Preparation: create createspfile.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/createspfilesecondary.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
CREATE spfile='+DATA/{{ db_sid | upper }}_STDBY/PARAMETERFILE/spfile{{ db_sid | upper }}.ora' from pfile='/oracle/{{ db_sid | upper }}/{{ ora_release }}/dbs/init{{ db_sid | upper }}.ora';
exit
mode: '0755'
when:
- node_tier == 'oracle-asm'
- name: "Oracle Data Guard for ASM - Preparation: create asmsecondarystartup.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/asmsecondarystartup.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
STARTUP MOUNT;
exit
mode: '0755'
when:
- node_tier == 'oracle-asm'
# orasecondarystartup.sql
- name: "Oracle Data Guard - Preparation: create orasecondarystartup.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/orasecondarystartup.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
STARTUP MOUNT;
exit
mode: '0755'
when:
- node_tier == 'oracle'
- name: "Oracle Data Guard - Preparation: create secondarystartup.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/secondarystartup.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
STARTUP NOMOUNT PFILE=$ORACLE_HOME/dbs/init{{ db_sid | upper }}.ora;
exit
mode: '0755'
- name: "Oracle Data Guard - Preparation: create asmsecondarystartup.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/asmsecondarystartup.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
STARTUP MOUNT;
exit
mode: '0755'
- name: "Oracle Data Guard - Preparation: create dgstatus.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/dgstatus.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
select instance_name, status, database_role from v$database, v$instance;
exit
mode: '0755'
- name: "Oracle Data Guard - Preparation: create enabledgbroker.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/enabledgbroker.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
ALTER SYSTEM SET dg_broker_start=true;
exit
mode: '0755'
# Set Primary and Secondary node names.
- name: "Oracle Data Guard - Preparation: Setting the primary and Secondary DB names"
ansible.builtin.set_fact:
ora_primary: "{{ ansible_play_hosts_all[0] }}" # Oracle Primary Host
ora_secondary: "{{ ansible_play_hosts_all[1] }}" # Oracle Secondary Host
current_host: "{{ ansible_hostname }}"
# Debug for testing
- name: "Oracle Data Guard - Preparation: Debug: installer prechecks output"
ansible.builtin.debug:
msg:
- "primary host is {{ ora_primary }}"
- "secondary host is {{ ora_secondary }}"
- "host is {{ current_host }}"
verbosity: 2
# Create Listener for primary node.
- name: "Oracle Data Guard - Preparation: Create the Listener file for Primary"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: listener_primary.j2
dest: "/oracle/{{ db_sid }}/{{ ora_version }}/network/admin/listener.ora"
mode: '0644'
force: true
vars:
hostname: "{{ ora_primary }}"
when: current_host == ora_primary
# Create Listener for secondary node.
- name: "Oracle Data Guard - Preparation: Create the Listener file for Secondary"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: listener_secondary.j2
dest: "/oracle/{{ db_sid }}/{{ ora_version }}/network/admin/listener.ora"
mode: '0644'
force: true
vars:
hostname: "{{ ora_secondary }}"
when: current_host == ora_secondary
# Create tnsnames.ora for primary node.
- name: "Oracle Data Guard - Preparation: Create the tnsnames file for Primary"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: tnsnames_primary.j2
dest: "/oracle/{{ db_sid }}/{{ ora_version }}/network/admin/tnsnames.ora"
mode: '0644'
force: true
vars:
hostname: "{{ ora_primary }}"
sap_dbp_hostname: "{{ ora_primary }}"
sap_dbs_hostname: "{{ ora_secondary }}"
when: current_host == ora_primary
# tnsnames for observer
- name: "Oracle Data Guard - Preparation: Create the tnsnames file for Observer"
become: true
become_user: root
ansible.builtin.template:
backup: true
src: tnsnames_primary.j2
dest: "{{ target_media_location }}/downloads/{{ db_sid | upper }}/tnsnames.ora"
mode: '0644'
force: true
vars:
hostname: "{{ ora_primary }}"
sap_dbp_hostname: "{{ ora_primary }}"
sap_dbs_hostname: "{{ ora_secondary }}"
when: current_host == ora_primary
# Create tnsnames.ora for secondary node.
- name: "Oracle Data Guard - Preparation: Create the tnsnames file for Secondary"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: tnsnames_secondary.j2
dest: "/oracle/{{ db_sid }}/{{ ora_version }}/network/admin/tnsnames.ora"
mode: '0644'
force: true
vars:
hostname: "{{ ora_secondary }}"
sap_dbp_hostname: "{{ ora_primary }}"
sap_dbs_hostname: "{{ ora_secondary }}"
when: current_host == ora_secondary
# Create sqlnet.ora for secondary node.
- name: "Oracle Data Guard - Preparation: Create the sqlnet.ora for Secondary"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: sqlnet.ora.j2
dest: "/oracle/{{ db_sid }}/{{ ora_version }}/network/admin/sqlnet.ora"
mode: '0644'
force: true
vars:
hostname: "{{ ora_secondary }}"
sap_dbp_hostname: "{{ ora_primary }}"
sap_dbs_hostname: "{{ ora_secondary }}"
when: current_host != ora_primary
- name: "Oracle Data Guard - Preparation: Create the sqlnet.ora for Observer"
become: true
become_user: root
ansible.builtin.template:
backup: true
src: sqlnet.ora.j2
dest: "{{ target_media_location }}/downloads/{{ db_sid | upper }}/sqlnet.ora"
mode: '0644'
force: true
vars:
hostname: "{{ ora_primary }}"
sap_dbp_hostname: "{{ ora_primary }}"
sap_dbs_hostname: "{{ ora_secondary }}"
when: current_host != ora_primary
# Create the sql script for updating the data guard specific parameters for Primary node.
- name: "Oracle Data Guard - Preparation: Create the SQL for Dataguard parameters on Primary"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: dbparametersfordg.j2
dest: "/etc/sap_deployment_automation/dgscripts/dbparametersfordg.sql"
mode: '0644'
force: true
vars:
hostname: "{{ ora_primary }}"
sap_dbp_hostname: "{{ ora_primary }}"
sap_dbs_hostname: "{{ ora_secondary }}"
when: current_host == ora_primary
# Create the tnsnames.ora for SAP.
- name: "Oracle Data Guard - Create TNSNAMES.ORA for SAP Application servers"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: tnsnamesforsap.j2
dest: "/etc/sap_deployment_automation/dgscripts/tnsnames.ora"
mode: '0644'
force: true
vars:
hostname: "{{ ora_primary }}"
sap_dbp_hostname: "{{ ora_primary }}"
sap_dbs_hostname: "{{ ora_secondary }}"
# Create DB trigger sql for SAP HA Setup
- name: "Oracle Data Guard - Preparation: Create the SQL for DBTrigger on Primary"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: dbtrigger.j2
dest: "/etc/sap_deployment_automation/dgscripts/dbtrigger.sql"
mode: '0644'
force: true
when: current_host == ora_primary
- name: "Oracle Data Guard - Preparation: create dgconfig.sh"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: dgconfig.j2
dest: "/etc/sap_deployment_automation/dgscripts/dgconfig.dgmgrl"
mode: '0644'
force: true
when: current_host == ora_primary
- name: "Oracle Data Guard - Preparation: create rman-restore.rman"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: rman-restore.j2
dest: "/etc/sap_deployment_automation/dgscripts/rman-restore.rman"
mode: '0644'
force: true
when:
- current_host == ora_secondary
- node_tier == 'oracle'
- name: "Oracle Data Guard - Preparation: create rman-restore.rman for oracle-asm"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: rman-restore-asm.j2
dest: "/etc/sap_deployment_automation/dgscripts/rman-restore.rman"
mode: '0644'
force: true
when:
- current_host == ora_secondary
- node_tier == 'oracle-asm'
- name: "Oracle Data Guard - Preparation: create secondarystartup.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/secondarystartup.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
STARTUP NOMOUNT PFILE=$ORACLE_HOME/dbs/init{{ db_sid | upper }}.ora;
exit
mode: '0755'
when: current_host == ora_secondary
# Update the Local_Listener value for Secondary Node.
- name: "Oracle Local Listener Update - Preparation: create listenerupdate.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/listenerupdate.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
alter system set LOCAL_LISTENER="(ADDRESS=(PROTOCOL=TCP)(HOST={{ ora_secondary }})(PORT=1521))" SCOPE=both;
exit
mode: '0755'
when: current_host == ora_secondary
# Update the Local_Listener value for Primary Node.
- name: "Oracle Local Listener Update - Preparation: create listenerupdate.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/listenerupdate.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
alter system set LOCAL_LISTENER="(ADDRESS=(PROTOCOL=TCP)(HOST={{ ora_primary }})(PORT=1521))" SCOPE=both;
exit
mode: '0755'
when: current_host == ora_primary
# Enable Flashback for Secondary Node.
- name: "Oracle Local Listener Update - Preparation: create listenerupdate.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/secondary_flashback_secondary.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION THROUGH LAST SWITCHOVER;
exit
mode: '0755'
when: current_host == ora_secondary
# Create Directories for RESTORE on Secondary
- name: "ORACLE: Create oracle SIDarch directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/oraarch/{{ db_sid | upper }}arch
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "ORACLE: Create oracle standbylog directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/oraarch/standbylog
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "ORACLE: Create oracle oraflash directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/oraflash
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "ORACLE: Create saptrace directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/saptrace
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "ORACLE: Create saparch directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/saparch
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "ORACLE: Create sapprof directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/sapprof
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "ORACLE: Create sapcheck directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/sapcheck
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "ORACLE: Create saptrace audit directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/saptrace/audit
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "ORACLE: Create saptrace background directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/saptrace/background
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "ORACLE: Create saptrace diag directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/saptrace/diag
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "ORACLE: Create saptrace usertrace directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/saptrace/usertrace
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "ORACLE: Create orawallet directory"
ansible.builtin.file:
path: /oracle/{{ db_sid | upper }}/orawallet
mode: '0755'
state: directory
owner: oracle
group: oinstall
when: current_host == ora_secondary
- name: "Oracle Data Guard - Rescue create shutdownsecondary.sql"
become: true
become_user: "{{ oracle_user_name }}"
ansible.builtin.blockinfile:
create: true
path: /etc/sap_deployment_automation/dgscripts/shutdownsecondary.sql
marker_begin: "-- BEGIN"
marker_end: "-- END"
block: |
SHUTDOWN ABORT;
exit
mode: '0755'
- name: "Oracle Data Guard - Preparation: Create ASM Directories for Secondary System"
become: true
become_user: oracle
ansible.builtin.template:
backup: true
src: asmfilesystems-secondary.j2
dest: "/etc/sap_deployment_automation/dgscripts/asmfilesystems-secondary.sh"
mode: '0755'
force: true
when:
- current_host == ora_secondary
- node_tier == "oracle-asm"
...
# /*---------------------------------------------------------------------------8
# | END |
# +------------------------------------4--------------------------------------*/