deploy/ansible/roles-db/4.1.3-ora-dg/tasks/ora-dg-postprocessing-secondary.yaml (221 lines of code) (raw):

# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. --- # DGMGRL Config on Secondary for Enabling the Falshback logs. - name: "Oracle Data Guard - Check SAP Restore on secondary is completed" ansible.builtin.stat: path: /usr/sap/install/downloads/{{ db_sid | upper }}/post_processing_completed.txt register: primary_post_processing_completed when: node_tier in ["oracle","oracle-asm"] # Create the dgmgrl file for enabling the flashback on secondary database. - name: "Oracle Data Guard - Preparation: Create the secondary_log_apply_off file for Secondary" become: true become_user: oracle ansible.builtin.template: backup: true src: secondary_log_apply_off.j2 dest: "/etc/sap_deployment_automation/dgscripts/secondary_log_apply_off.dgmgrl" mode: '0644' force: true - name: "Oracle Data Guard - Preparation: Create the secondary_log_apply_on file for Secondary" become: true become_user: oracle ansible.builtin.template: backup: true src: secondary_log_apply_on.j2 dest: "/etc/sap_deployment_automation/dgscripts/secondary_log_apply_on.dgmgrl" mode: '0644' force: true - name: "Execute Block only if secondary DB restore is completed" block: # Disable the Log apply on Secondary for enabling Flashback - name: "Oracle Data Guard - Post Processing: Set Log apply off on Standby" become: true become_user: "{{ oracle_user_name }}" ansible.builtin.shell: dgmgrl / as sysdba @secondary_log_apply_off.dgmgrl register: secondary_log_apply_off_results failed_when: secondary_log_apply_off_results.rc > 0 args: creates: /etc/sap_deployment_automation/dgscripts/secondary_log_apply_off.txt chdir: /etc/sap_deployment_automation/dgscripts executable: /bin/csh - name: "Oracle Data Guard - Post Processing: Set Log apply off on Standby (Debug)" ansible.builtin.debug: var: secondary_log_apply_off_results.stdout_lines verbosity: 2 - name: "Oracle Data Guard - Post Processing: Restart lsnrctl on Primary (save output)" ansible.builtin.copy: dest: /etc/sap_deployment_automation/secondary_log_apply_off.log content: "{{ secondary_log_apply_off_results.stdout }}" mode: '0777' when: secondary_log_apply_off_results.stdout is defined - name: "Oracle Data Guard - Post Processing: Create secondary_log_apply_off.txt" become: true become_user: "{{ oracle_user_name }}" ansible.builtin.file: path: /etc/sap_deployment_automation/dgscripts/secondary_log_apply_off.txt state: touch mode: '0755' when: secondary_log_apply_off_results.rc == 0 # Enable Flashback on Secondary - name: "Oracle Data Guard - Enable Flashback on Oracle Secondary DB" become: true become_user: "{{ oracle_user_name }}" ansible.builtin.shell: sqlplus / as sysdba @turnonflashback.sql register: turn_on_flashback_secondary_results failed_when: turn_on_flashback_secondary_results.rc > 0 args: creates: /etc/sap_deployment_automation/dgscripts/turn_on_flashback_secondary.txt chdir: /etc/sap_deployment_automation/dgscripts executable: /bin/csh - name: "Oracle Data Guard - Setup Primary: Enable Flashback on Oracle Primary DB (debug)" ansible.builtin.debug: var: turn_on_flashback_secondary_results.stdout_lines verbosity: 2 - name: "Oracle Data Guard - Setup Primary: Enable Flashback on Oracle Secondary DB (save output)" ansible.builtin.copy: dest: /etc/sap_deployment_automation/dgscripts/turn_on_flashback_secondary.log content: "{{ turn_on_flashback_secondary_results.stdout }}" mode: '0755' when: turn_on_flashback_secondary_results.stdout is defined - name: "Oracle Data Guard - Setup Primary: Create turn_on_flashback_secondary.txt" become: true become_user: "{{ oracle_user_name }}" ansible.builtin.file: path: /etc/sap_deployment_automation/dgscripts/turn_on_flashback_secondary.txt state: touch mode: '0755' when: - turn_on_flashback_secondary_results.rc == 0 # Enable the log apply on secondary DB after enabling Flashback - name: "Oracle Data Guard - Post Processing: Set Log apply on on Standby" become: true become_user: "{{ oracle_user_name }}" ansible.builtin.shell: dgmgrl / as sysdba @secondary_log_apply_on.dgmgrl register: secondary_log_apply_on_results failed_when: secondary_log_apply_on_results.rc > 0 args: creates: /etc/sap_deployment_automation/dgscripts/secondary_log_apply_on.txt chdir: /etc/sap_deployment_automation/dgscripts executable: /bin/csh - name: "Oracle Data Guard - Post Processing: Set Log apply off on Standby (Debug)" ansible.builtin.debug: var: secondary_log_apply_off_results.stdout_lines verbosity: 2 - name: "Oracle Data Guard - Post Processing: Restart lsnrctl on Primary (save output)" ansible.builtin.copy: dest: /etc/sap_deployment_automation/secondary_log_apply_on.log content: "{{ secondary_log_apply_on_results.stdout }}" mode: '0777' when: secondary_log_apply_on_results.stdout is defined - name: "Oracle Data Guard - Post Processing: Create secondary_log_apply_on.txt" become: true become_user: "{{ oracle_user_name }}" ansible.builtin.file: path: /etc/sap_deployment_automation/dgscripts/secondary_log_apply_on.txt state: touch mode: '0755' when: secondary_log_apply_off_results.rc == 0 # Stop the Secondary Database. - name: "Oracle Data Guard - Setup Secondary: Stop secondary DB for oracle clusterware configuration." become: true become_user: "{{ oracle_user_name }}" ansible.builtin.shell: | set -o pipefail sqlplus / as sysdba @shutdownsecondary.sql | tee /etc/sap_deployment_automation/dgscripts/secondary_shutdown.log register: secondary_shutdown_cfg_results failed_when: secondary_shutdown_cfg_results.rc > 0 args: creates: /etc/sap_deployment_automation/dgscripts/secondary_shutdown_cfg.txt chdir: /etc/sap_deployment_automation/dgscripts executable: /bin/csh when: - current_host == ora_secondary - name: "Oracle Data Guard - Setup Secondary: Create secondary_shutdown.txt" become: true become_user: "root" ansible.builtin.file: path: /etc/sap_deployment_automation/dgscripts/secondary_shutdown_cfg.txt state: touch mode: '0755' owner: oracle group: oinstall when: - secondary_shutdown_cfg_results.rc == 0 - current_host == ora_secondary # Start the Secondary Database for non-ASM. - name: "Oracle Data Guard - Setup Secondary: Start secondary DB after HA Service configuration on non-ASM." become: true become_user: "{{ oracle_user_name }}" ansible.builtin.shell: | set -o pipefail sqlplus / as sysdba @orasecondarystartup.sql | tee /etc/sap_deployment_automation/dgscripts/secondary_startup.log register: secondary_startup_cfg_results failed_when: secondary_startup_cfg_results.rc > 0 args: creates: /etc/sap_deployment_automation/dgscripts/secondary_startup_cfg.txt chdir: /etc/sap_deployment_automation/dgscripts executable: /bin/csh when: - node_tier == "oracle" - current_host == ora_secondary - name: "Oracle Data Guard - Setup Secondary: Create secondary_startup_cfg.txt" become: true become_user: "root" ansible.builtin.file: path: /etc/sap_deployment_automation/dgscripts/secondary_startup_cfg.txt state: touch mode: '0755' owner: oracle group: oinstall when: - node_tier == "oracle" - secondary_startup_cfg_results.rc == 0 - current_host == ora_secondary - name: "Oracle CLusterware Restart Configuration" become: true become_user: "{{ oracle_user_name }}" ansible.builtin.shell: | srvctl add database -db {{ db_sid | upper }}_STDBY -oraclehome /oracle/{{ db_sid | upper }}/{{ ora_release }} -spfile +DATA/{{ db_sid | upper }}_STDBY/PARAMETERFILE/spfile{{ db_sid | lower }}.ora -role PHYSICAL_STANDBY -instance {{ db_sid | upper }} -startoption mount -diskgroup "ARCH,DATA,RECO" srvctl start database -db {{ db_sid | upper }}_STDBY register: oracle_clusterware_register failed_when: oracle_clusterware_register.rc > 0 args: creates: /etc/sap_deployment_automation/dgscripts/oracle_clusterware_registered.txt chdir: /etc/sap_deployment_automation/dgscripts executable: /bin/csh when: - node_tier == "oracle-asm" - name: "Create oracle_clusterware_registered on secondary" become: true become_user: root ansible.builtin.file: path: /etc/sap_deployment_automation/dgscripts/oracle_clusterware_registered.txt state: touch mode: '0755' owner: oracle group: oinstall when: - node_tier == "oracle-asm" - oracle_clusterware_register.rc == 0 - name: "Create post processing completed on secondary" become: true become_user: root ansible.builtin.file: path: /usr/sap/install/downloads/{{ db_sid | upper }}/post_processing_secondary_completed.txt state: touch mode: '0755' owner: oracle group: oinstall # Create User for SIDADM on Secondary Node. - name: "2.5.1 SAP Users: - Create Oracle ASM Users Assignment" ansible.builtin.user: name: "{{sap_sid | lower }}adm" uid: "{{ sidadm_uid }}" group: "sapsys" groups: asmoper,asmdba,dba,oper,oinstall append: true shell: /bin/csh # when: node_tier == "oracle-asm" # Update the tnsnames.ora for SAP application servers - name: "Oracle Data Guard - Update tnsnames.ora for SAP application servers" become: true become_user: "root" ansible.builtin.copy: src: /etc/sap_deployment_automation/dgscripts/tnsnames.ora dest: /sapmnt/{{ sap_sid |upper }}/profile/oracle/tnsnames.ora remote_src: true owner: '{{sap_sid |lower }}adm' group: sapsys mode: "{{ '0777' | int - (custom_umask | default('022') | int) }}" when: - primary_post_processing_completed.stat.exists ... # /*---------------------------------------------------------------------------8 # | END | # +------------------------------------4--------------------------------------*/