2026-06-28 19:28:39
This commit is contained in:
@@ -76,7 +76,7 @@
|
||||
. oraenv <<< {{ oracle_sid }} >/dev/null 2>&1
|
||||
$ORACLE_HOME/bin/sqlplus -s / as sysdba <<'SQL'
|
||||
set heading off feedback off verify off pagesize 0
|
||||
select name||':'||open_mode from v$pdbs where name!='PDB$SEED';
|
||||
select name||':'||open_mode||':'||restricted from v$pdbs where name!='PDB$SEED';
|
||||
exit
|
||||
SQL
|
||||
register: pdb_list
|
||||
@@ -91,15 +91,19 @@
|
||||
|
||||
- name: Show PDB list (if multitenant)
|
||||
debug:
|
||||
var: pdb_list.stdout_lines
|
||||
msg: |
|
||||
PDB, OPEN, RESTRICTED
|
||||
{% for pdb in pdb_list.stdout_lines %}
|
||||
{{ pdb }}
|
||||
{% endfor %}
|
||||
when: oracle_sid is defined and is_multitenant
|
||||
|
||||
- name: Check for non-OPEN PDBs
|
||||
- name: Check for non-OPEN PDBs or RESTRICTED PDBs
|
||||
shell: |
|
||||
. oraenv <<< {{ oracle_sid }} >/dev/null 2>&1
|
||||
$ORACLE_HOME/bin/sqlplus -s / as sysdba <<'SQL'
|
||||
set heading off feedback off verify off pagesize 0
|
||||
select name||':'||open_mode from v$pdbs where name!='PDB$SEED' and upper(open_mode) not like '%READ WRITE%';
|
||||
select name||':'||open_mode||':'||restricted from v$pdbs where name!='PDB$SEED' and (upper(open_mode) not like '%READ WRITE%' or upper(restricted) = 'YES');
|
||||
exit
|
||||
SQL
|
||||
register: pdb_not_open
|
||||
@@ -117,3 +121,173 @@
|
||||
msg: "PDB(s) not OPEN: {{ pdb_not_open_filtered }}"
|
||||
when: oracle_sid is defined and is_multitenant and (pdb_not_open_filtered | length) > 0
|
||||
|
||||
- name: Execute datapatch
|
||||
shell: |
|
||||
. oraenv <<< {{ oracle_sid }} >/dev/null 2>&1
|
||||
$ORACLE_HOME/OPatch/datapatch
|
||||
register: datapatch_output
|
||||
changed_when: false
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Show datapatch output
|
||||
debug:
|
||||
var: datapatch_output.stdout_lines
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Remove temporary SQL files from remote host
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
loop:
|
||||
- /tmp/dba_invalid_objects.sql
|
||||
- /tmp/dba_registry.sql
|
||||
when: oracle_sid is defined
|
||||
|
||||
|
||||
- name: Execute utlrp.sql in CDB$ROOT
|
||||
shell: |
|
||||
. oraenv <<< {{ oracle_sid }} >/dev/null 2>&1
|
||||
$ORACLE_HOME/bin/sqlplus -s / as sysdba <<'SQL'
|
||||
@$ORACLE_HOME/rdbms/admin/utlrp.sql
|
||||
exit
|
||||
SQL
|
||||
register: utlrp_root
|
||||
changed_when: false
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Get list of PDBs for utlrp execution
|
||||
shell: |
|
||||
. oraenv <<< {{ oracle_sid }} >/dev/null 2>&1
|
||||
$ORACLE_HOME/bin/sqlplus -s / as sysdba <<'SQL'
|
||||
set heading off feedback off verify off pagesize 0
|
||||
select name from v$pdbs where name!='PDB$SEED' and open_mode like '%READ WRITE%' and restricted='NO';
|
||||
exit
|
||||
SQL
|
||||
register: pdb_names
|
||||
failed_when: false
|
||||
changed_when: false
|
||||
when: oracle_sid is defined and is_multitenant
|
||||
|
||||
- name: Execute utlrp.sql in each PDB
|
||||
shell: |
|
||||
. oraenv <<< {{ oracle_sid }} >/dev/null 2>&1
|
||||
$ORACLE_HOME/bin/sqlplus -s / as sysdba <<'SQL'
|
||||
alter session set container={{ item | trim }};
|
||||
@$ORACLE_HOME/rdbms/admin/utlrp.sql
|
||||
exit
|
||||
SQL
|
||||
loop: "{{ pdb_names.stdout_lines | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
register: utlrp_pdb_results
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
when: oracle_sid is defined and is_multitenant and (pdb_names.stdout_lines | default([]) | length) > 0
|
||||
|
||||
- name: Copy dba_invalid_objects.sql to remote host
|
||||
copy:
|
||||
src: ../files/scripts/sql/dba_invalid_objects.sql
|
||||
dest: /tmp/dba_invalid_objects.sql
|
||||
mode: '0644'
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Copy dba_registry.sql to remote host
|
||||
copy:
|
||||
src: ../files/scripts/sql/dba_registry.sql
|
||||
dest: /tmp/dba_registry.sql
|
||||
mode: '0644'
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Execute dba_invalid_objects.sql in CDB$ROOT
|
||||
shell: |
|
||||
. oraenv <<< {{ oracle_sid }} >/dev/null 2>&1
|
||||
$ORACLE_HOME/bin/sqlplus -s / as sysdba <<'SQL'
|
||||
@/tmp/dba_invalid_objects.sql
|
||||
exit
|
||||
SQL
|
||||
register: dba_invalid_root
|
||||
changed_when: false
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Show dba_invalid_objects.sql results in CDB$ROOT
|
||||
debug:
|
||||
var: dba_invalid_root.stdout_lines
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Execute dba_registry.sql in CDB$ROOT
|
||||
shell: |
|
||||
. oraenv <<< {{ oracle_sid }} >/dev/null 2>&1
|
||||
$ORACLE_HOME/bin/sqlplus -s / as sysdba <<'SQL'
|
||||
@/tmp/dba_registry.sql
|
||||
exit
|
||||
SQL
|
||||
register: dba_registry_root
|
||||
changed_when: false
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Show dba_registry.sql results in CDB$ROOT
|
||||
debug:
|
||||
var: dba_registry_root.stdout_lines
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Execute dba_invalid_objects.sql in each PDB
|
||||
shell: |
|
||||
. oraenv <<< {{ oracle_sid }} >/dev/null 2>&1
|
||||
$ORACLE_HOME/bin/sqlplus -s / as sysdba <<'SQL'
|
||||
alter session set container={{ item | trim }};
|
||||
@/tmp/dba_invalid_objects.sql
|
||||
exit
|
||||
SQL
|
||||
loop: "{{ pdb_names.stdout_lines | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
register: dba_invalid_pdb_results
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
when: oracle_sid is defined and is_multitenant and (pdb_names.stdout_lines | default([]) | length) > 0
|
||||
|
||||
- name: Show dba_invalid_objects.sql results in PDBs
|
||||
debug:
|
||||
msg: |
|
||||
dba_invalid_objects.sql output for PDB: {{ item }}
|
||||
{{ dba_invalid_pdb_results.results[pdb_names.stdout_lines.index(item)].stdout }}
|
||||
loop: "{{ pdb_names.stdout_lines | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
when: oracle_sid is defined and is_multitenant and (pdb_names.stdout_lines | default([]) | length) > 0
|
||||
|
||||
- name: Execute dba_registry.sql in each PDB
|
||||
shell: |
|
||||
. oraenv <<< {{ oracle_sid }} >/dev/null 2>&1
|
||||
$ORACLE_HOME/bin/sqlplus -s / as sysdba <<'SQL'
|
||||
alter session set container={{ item | trim }};
|
||||
@/tmp/dba_registry.sql
|
||||
exit
|
||||
SQL
|
||||
loop: "{{ pdb_names.stdout_lines | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
register: dba_registry_pdb_results
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
when: oracle_sid is defined and is_multitenant and (pdb_names.stdout_lines | default([]) | length) > 0
|
||||
|
||||
- name: Show dba_registry.sql results in PDBs
|
||||
debug:
|
||||
msg: |
|
||||
dba_registry.sql output for PDB: {{ item }}
|
||||
{{ dba_registry_pdb_results.results[pdb_names.stdout_lines.index(item)].stdout }}
|
||||
loop: "{{ pdb_names.stdout_lines | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
when: oracle_sid is defined and is_multitenant and (pdb_names.stdout_lines | default([]) | length) > 0
|
||||
|
||||
- name: Remove temporary SQL files from remote host
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
loop:
|
||||
- /tmp/dba_invalid_objects.sql
|
||||
- /tmp/dba_registry.sql
|
||||
when: oracle_sid is defined
|
||||
|
||||
|
||||
@@ -125,17 +125,6 @@
|
||||
state: absent
|
||||
when: opatch_zip is defined
|
||||
|
||||
- name: Source oraenv and display OPatch informations
|
||||
shell: |
|
||||
. oraenv <<< {{ oracle_sid }} && $ORACLE_HOME/OPatch/opatch version && echo && echo && $ORACLE_HOME/OPatch/opatch lspatches
|
||||
register: opatch_output
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Display OPatch output
|
||||
debug:
|
||||
var: opatch_output.stdout_lines
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Remove /app/oracle/staging_area if present
|
||||
file:
|
||||
path: /app/oracle/staging_area
|
||||
@@ -255,3 +244,14 @@
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
- name: Source oraenv and display OPatch informations (after OH patch)
|
||||
shell: |
|
||||
. oraenv <<< {{ oracle_sid }} && $ORACLE_HOME/OPatch/opatch version && echo && echo && $ORACLE_HOME/OPatch/opatch lspatches
|
||||
register: opatch_output
|
||||
when: oracle_sid is defined
|
||||
|
||||
- name: Display OPatch output (after OH patch)
|
||||
debug:
|
||||
var: opatch_output.stdout_lines
|
||||
when: oracle_sid is defined
|
||||
|
||||
|
||||
Reference in New Issue
Block a user