Note, in preparing next entry, I reviewed the results from previous entries and found that although extracts were being transferred successfully they had all failed to load; I should have noticed they had status 4 (IMPORT_FAILED), in the load metadata table.
Reviewing dbms_scheduler_job_run_details of the load task revealed the following error:
"move error: ORA-20105: Unable to move AWR data to SYS 1852644603 1_4CB614B101EE2E5EE0530401A8C066F0_1852644603_12_37.dmp 1 DGA oracle_database 1852644603"
I removed both databases from ARWR, and playing around with the internal functions used to register and un-register the databases revealed that the partitions had got in a mess.
SQL> exec dbms_swrf_internal.unregister_database(1852644603); SQL> exec dbms_swrf_internal.register_database(1852644603); BEGIN dbms_swrf_internal.register_database(1852644603); END; * ERROR at line 1: ORA-13509: error encountered during updates to a AWR table ORA-14012: resulting partition name conflicts with that of an existing partition ORA-06512: at "SYS.DBMS_SWRF_INTERNAL", line 105 ORA-06512: at "SYS.DBMS_SWRF_INTERNAL", line 184 ORA-06512: at line 1
To resolve this, I unregistered the database again using the internal function, then identified the ‘orphan’ partitions causing problems using the following SQL (1852644603 is the DBID of the problem database):
SELECT * FROM DBA_TAB_PARTITIONS WHERE PARTITION_NAME LIKE '%1852644603%'
Partitions for the unregistered database still existed for the following tables:
I then dropped these problem partitions (this is just a play database, that is why I am able to be so reckless modifying internal Oracle tables, do you own research and testing before making such changes, and make sure you understand the risks.)
After I did this, I was able re-add DGA to ARWR and upload some snapshots successfully; this time I actually checked the records existed in AWRW using the following query:
SQL> SELECT DISTINCT DBID FROM DBA_HIST_SNAPSHOT; 1585153544 1852644603 SQL>
I performed the same steps as before (backup extract metadata table, add DGB to AWRW, switchover to DGB, change the mapping record for DGA, restore the extract record, Upload Snapshots Now, then restore the mapping record for DGA). Snapshots from DGB also uploaded successfully with the original DBID>
It distinctly possible that I messed up the partitioning of the AWR tables by my hacks however there are a few things that make me think this is not the case. The original upload from DGA failed (this was before I had made any non-standard changes). Also repeating my steps after manually fixing the partitions, everything worked fine. It is also worth noting that the tables causing the problem are all new in 12.2 (DGA and DGB are fresh installed 12.2 instances, the AWR Warehouse repository is 12.2 upgraded from 12.1). We also had some similar issues on our production AWR Warehouse after we upgraded it from 12.1 to 12.2 (a different error, but also related to AWRW partitions). So I suspect some bug where AWRW is not properly handling partitions on new 12.2 AWR tables.
Messing around with the register/un-register functions also reminds me of another thing to be aware of regards my ‘hack’ on the CAW_DBID_MAPPING table. If you subsequently remove the either database from AWRW (via the GUI) it will also remove all records from AWR history from both databases. This may or may not be what you want, you should be aware of it.
1 thought on “AWR Warehouse and Data Guard (Interlude)”
Pingback: AWR Warehouse and Dataguard (Part Four) | hkpatora