12 Facts zu Oracle 12.2 die das Leben erleichtern
ANALYTICS ON OLTP DATAREPORTS AUF OLTP DATEN
Koordinaten
Alain Fuhrer
Head IT Database Services@Die Mobiliar
2
https://twitter.com/AlainFuhrer
https://www.linkedin.com/in/alain-fuhrer-718883b5
https://mobiliar.ch/db-blog
3
22.11.2018 4
5
22.11.2018Präsentationstitel 6
Open Source
7
Es war ein Mal die DB
Infrastruktur der Mobiliar
im 2017……
18 CDB’S
300 non-CDB
Database
644 Apps
400 PDB’s
µServices
t
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
Typical evolution
9
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µServices (microServices)
11
DB Infrastruktur per Ende
2018……
134 CDB’S
16 non-CDB
Database
+1000 Apps
1350 PDB’s
Ablösung der Schemakonsolidierung mit MT 12.2
13
Probleme mit Schemakonsolidierung Lösungen mit Multitenant 12.2
PDB cloning is now possible also onlineRMAN cloning is not possible
Flashback on database level Flashback now possible on PDB level
AWR on database level AWR now available on PDB level
Backup / Restore on PDB level with RMANBackup / Restore only with datapump
Memory management on PDB levelOnly limited resource manager
22.11.2018 14
22.11.2018 15
16
17
Patchen Sie die 12.1 Homes
vor einem Grid Upgrade auf
12.2
18
srvctl add database -db my12db1_01 \
-oraclehome /u01/<…>/product/12102_1 \
-dbname MY12DB1 -instance my12db1 \
–spfile /u01/<…>/dbs/spfilemy12db1.ora
PRCD-1095 : Failed to retrieve databases for version 11.1 and
earlier
PRKC-1137 : Unable to find Version object with string value
12.2.0.1.0
19
Nach dem Upgrade von Grid Infrastructure
auf die Version 12.2 können keine 12.1 Ressourcen mehr
registriert werden! (Bug 20007009)
Lösung
Um dieses Problem zu verhindern, ist es notwendig, dass auf
den 12.1 Homes mindestens das OCW Patchset von Januar
2017 installiert ist.
20
21
Grid Infrastructure 12.2
löscht Einträge aus
/etc/oratab
22
Jeder Eintrag im Oratab <= 12.2 und dem Zusatz
«# line added by agent» wird automatisch aus dem Oratab File
gelöscht. (Doc ID 2329359.1)
With the introduction of the flex ASM (asm may not run on all nodes)
and policy managed databases (no instances is tied to a server), the
mapping of the asm and RAC database instances to a specific node is
no longer guaranteed to be valid,so this is the reason that the oratab
entries are being removed.
23
Gratis Tipp
Oracle erstellt vor jeder Mutation des Oratab files ein
Backup unter:
$ORACLE_HOME/srvm/admin/oratab.bak.<Hostname>
Lösung
Manuelles Entfernen des Zusatzes
«# line added by agent» aus dem Oratab
24
25
RMAN Register / Sync von
12.1 CDB mit 12.2 Catalog
funktioniert nicht immer
26
RMAN> connect target /
RMAN> connect catalog rcat/rcat@rmancat
RMAN> register database;
RMAN-03008: error while performing automatic
resync of recovery catalog
ORA-20110: set stamp set count conflict
27
Lösung
Es muss mindestens das Database Bundle Patch
12.1.0.2.180117 installiert sein (Jan. 2018)
Beim Einsatz von Oracle MT 12.1 können unter
gewissen Umständen keine Interaktionen mehr
mit dem RMAN Catalog gemacht werden, nachdem dieser
auf 12.2 aktualisiert wurde (Bug 26385473)
28
29
Doppelte Einträge in DBA_SOURCE
nach Konvertierung von non CDB
to PDB
30
Bei der Konvertierung einer non CDB Datenbank zu einer PDB
wird nach dem Plug-In das Script noncdb_to_pdb.sql durchgeführt
Dieses Script räumt das Data Dictionary der neuen PDB nicht richtig auf,
wodurch doppelte Einträge in der DBA_SOURCE entstehen. (Bug 28026023)
select line, text, origin_con_id from dba_source where name ='DBMS_STATS' and type = 'PACKAGE'
order by line fetch first 10 rows only;
LINE TEXT ORIGIN_CON_ID
-------- ------------------------------------------------------------------------------------ -------------
1 package dbms_stats authid current_user is 3
1 package dbms_stats authid current_user is 1
4 -- This package provides a mechanism for users to view and modify 3
4 -- This package provides a mechanism for users to view and modify 1
5 -- optimizer statistics gathered for database objects. 3
5 -- optimizer statistics gathered for database objects. 1
31
Lösung
Bis heute existiert keine Lösung zum entfernen der
doppelten Einträge und gemäss Oracle Support dürfen im
Data Dictionary manuel keine Anpassungen vorgenommen
werden!
32
33
Lange PDB Namen führen
zu Abbruch des CDB in
Place Upgrade
34
Die länge des Namens einer PDB ist begrenzt auf
30 Bytes
Hat es jedoch in der CDB eine PDB bei welcher der Name länger ist
als 25 Bytes bricht das Upgrade auf 12.2 bei dieser PDB ab
(Bug 26024601)
Serial Phase #:109 [DOVVNZ_VVN_VERKENTSCHAEDIG] Files:1 wait_for_completion:
unexpected error in next_proc()
catconExec: unexpected error in wait_for_completions
Unexpected error encountered in catctlMain; Error Stack Below; exiting
Died at catctl.pl line 7822.
main::catctlDie("\x{a}Unexpected error encountered in catconExec; exiting\x{a} 2")
called at catctl.pl line 4556
35
Lösung
Patch 26024601: CHARACTER STRING BUFFER TOO
SMALL FOR TIMESTAMP STRING SIZE IN PRVTCR.SQL
36
37
SEC_CASE_SENSITIVE_LOGON
Parameter kann nach Upgrade
zum aussperren aus der DB
führen
38
Wenn der SEC_CASE_SENSITIVE_LOGON = FALSE steht, und
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 12 (Default in 12.2) ist
nach dem Upgrade ein Anmelden auf der Datenbank nicht mehr möglich
SQL> connect user/pwd
ERROR: ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.
Ensure that the SEC_CASE_SENSITIVE_LOGON parameter is not set to FALSE if the
SQLNET.ALLOWED_LOGON_VERSION_SERVER parameter is set to 12 or 12a. This is because
the more secure password versions used for this mode only support case-sensitive password
checking. For compatibility reasons, Oracle Database does not prevent the use of FALSE for
SEC_CASE_SENSITIVE_LOGON when SQLNET.ALLOWED_LOGON_VERSION_SERVER is set
to 12 or 12a. Setting SEC_CASE_SENSITIVE_LOGON to FALSE when
SQLNET.ALLOWED_LOGON_VERSION_SERVER is set to 12 or 12a causes all accounts to
become inaccessible.”
39
Lösung Anpassen von SQLNET.ALLOWED_LOGON_VERSION_SERVER auf einen Wert < 12
Listener Restart reicht jedoch in diesem Fall nicht aus und ein Login ist immer noch nicht möglich
Da bei Password Version der 10G Eintrag fehlt ist ein Login nicht möglich. Es muss für jeden User in der
Datenbank das Passwort neu gesetzt werden
SQL> select username, password_versions from DBA_USERS where username='SYSTEM';
USERNAME PASSWORD_VERSIONS
------------- ---------------------
SYSTEM 11G 12C
SQL> alter user system identified by manager;
User altered
SQL> select username, password_versions from DBA_USERS where username='SYSTEM';
USERNAME PASSWORD_VERSIONS
------------- ---------------------
SYSTEM 10G 11G 12C
40
Sind jedoch die Hürden einmal
überwunden, kann sich das
Resultat durchaus sehen
lassen….
In Place Upgrade von 50 PDB’s
41
$ORACLE_HOME/perl/bin/perl catctl.pl -n xx -l $upgrade_base/upgrade catupgrd.sql
Upgrade Steps (parallel degree: -n 32) Duration
Execution of preupgrade.jar
2h 46 min
Execution of pre upgrade fixup scripts
All in one Upgrade of CDB$ROOT and all PDB’s
Recompile of CDB$ROOT and all PDB’s after upgrade to 12.2
Enable local undo mode for container database
Immediate create level 0 backup of container database
Create guarantee restore point and change oracle home to 12.2
Drop guarantee restore point after successful upgrade
PRE TASKS (online)
Upgrade TASKS (offline)
POST TASKS (online)
5 min
32 min
6 min
8 min
13 min
5 min
3h 29 min
10 min
1 min
11 min
Total Upgrade Time 3h 53 min
Oracle Multitenant
Die fast perfekte Architektur…
44
45
Wie sperre ich mich erfolgreich
aus einer Pluggable Database
aus?
46
Oracle empfiehlt, denn PDB Default Service nicht zu benützen
sondern einen eigenen Service für die Applikation zu erstellen
Mithilfe des dbms_service Package kann der Service nicht nur gestoppt
sondern auch gelöscht werden. Falls der Service gelöscht / gestoppt wird, ist es
nicht mehr möglich ein «alter session set container» in diese PDB zu machen
SQL> alter session set container=pdb1;
ERROR:
ORA-44787: Service cannot be switched into.
47
Lösung
Wenn der Service gestoppt wurde, ist nach einem Restart der PDB
ein login wider möglich
Wurde der Service gelöscht, hilft nur noch ein unplug / plug in eine
neue CDB, da beim einpluggen einer PDB der Service per Default
neu erstellt wird
48
49
Restore Point Management in
Pluggable Databases
50
Seit der Einführung von Local Undo mit Oracle 12.2
kann Flashback auf PDB Ebene durchgeführt werden
Per Default ist es trotzdem nicht möglich ein Tablespace oder
Datafile einer PDB zu löschen wenn auf einer anderen PDB im
Container ein garantierter Restore Point existiert (Bug 14163359)
PDB2 SQL> create restore point RP1 guarantee flashback database;
Restore point created.
PDB1 SQL> drop tablespace table_data including contents and datafiles;
ERROR at line 1:
ORA-38881: Cannot drop tablespace TABLE_DATA on primary database due to
guaranteed restore points.
51
Lösung
Setzen des Parameter "_allow_drop_ts_with_grp"=true
zur Laufzeit im root Container
cdb$root SQL> alter system set "_allow_drop_ts_with_grp"=true;
System altered.
cdb$root SQL> alter session set container=pdb1;
System altered.
PDB1 SQL> drop tablespace table_data including contents and datafiles;
Tablespace dropped
52
53
Pluggable Database Sessions die
aus Jobs gestartet werden laufen
in CDB$ROOT
54
Eine PDB Session welche von einem Job gestartet
wurde führt dazu, dass dieser in der PDB nicht mehr
gestoppt werden kann
Die Jobsteuerung passiert immer in CDB$ROOT, egal von wo der
Job gestartet wurde
PDB2 SQL> alter system kill session ‘855,33041’ immediate;
ERROR at line 1:
ORA-00026: missing or invalid session ID
55
Lösung
Die Session muss in CDB$ROOT gekillt werden, danach
lässt sich die PDB stoppen
CDB$ROOT SQL> alter system kill session ‘855,33041’ immediate;
56
57
PDB’s mit unterschiedlichen
Character Sets in gleicher CDB
kann zu ORA-0600 führen
58
Mit Oracle 12.2 sind PDB’s mit unterschiedlichem Character Set
in der gleichen CDB unterstützt, wenn das Character Set des Containers
AL32UTF8 ist
Eine neue PDB wird jedoch immer das Set des Containers erhalten. Eine
Angabe des gewünschten Sets beim erstellen einer PDB ist nicht möglich
Unter folgenden Bedingungen traten bei uns ORA-0600 Meldungen auf:
Drei oder mehr PDB’s mit unterschiedlichem Characterset
Eine der beteiligten Tabellen in der Abfrage enthält eine CLOB Spalte
59
Lösung
Wir haben entschieden, dass für uns dieses Feature zu wenig
ausgereift ist und verwenden es mit Version 12.2 nicht
60
61
Wieso habe ich mehrere GB
MMON Tracefile in Oracle 12.2?
62
Die MMON Trace Files unter 12.2 können pro Tag
mehrere GB gross werden
Entwickler hat leider vergessen ein Trace Event auszuschalten,
deshalb ist dieser Event per Default aktiviert (Bug 25415713)
2018-05-23 09:37:43.282 : [ CSSCLNT][ CSSCLNT]clsssinit: initialized context: (0x7f49099890f0) flags 0x115
AUTO SGA: kmgs_parameter_update_timeout gen0 0 mmon alive 1
2018-05-23 09:37:43.638*:KRB:krbm.c@5709:krbmabac(): ; waitsofar=0 delay=300
*** 2018-05-23T09:37:46.245772+02:00 (CDB$ROOT(1))
AUTO SGA: kmgs_parameter_update_timeout gen0 0 mmon alive 1
AUTO SGA: kmgs_parameter_update_timeout gen0 0 mmon alive 1
*** 2018-05-23T09:37:49.246383+02:00 (CDB$ROOT(1))
AUTO SGA: kmgs_parameter_update_timeout gen0 0 mmon alive 1
63
Lösung
Patch 25415713: MMON TRACE FILE GROWS WHEN NO
TRACES ARE ENABLED
64
65
Data Guard Konfiguration im
Multitenant Umfeld….
66
67
MRP0: Background Media Recovery terminated with error 1274
2018-03-15T10:14:31.364720+01:00
Errors in file /<…>/diag/rdbms/do10mm98_01/do10mm98/trace/do10mm98_pr00_2938.trc:
ORA-01274: cannot add data file that was originally created as
'+DATAFS/DO10MM99_01/4AC25F1C7F721BA3E0534EC10B0A18D3/DATAFILE/system.3065.938686469'
Managed Standby Recovery not using Real Time Apply
Recovery interrupted!
2018-15T10:14:31.531186+01:00
Errors in file /<…>/diag/rdbms/do10mm98_01/do10mm98/trace/do10mm98_m000_8847.trc:
file 1: '+DATAFS/DO10MM98_01/DATAFILE/system.1693.938075093'
Recovery ORA-01110: data stopped due to failure in applying recovery marker (opcode 17.34).
Datafiles are recovered to a consistent state at change 112084723719 but controlfile could
be ahead of datafiles.
68
69
Jeder online PDB Klon in einer Data Guard Umgebung führt
ohne Massnahmen zu einer korrupten Standby Database
Bei einem online Klon muss Oracle den REDO Stream des PDB Klones, sowie
den zur Standby DB managen. Dies funktioniert (noch) nicht.
Oracle kann von sich aus eine PDB nur an die Standby übermitteln, wenn der
Klon Read Only erstellt wurde
70
71
Es gibt verschieden Arten sich dem Problem anzunehmen, jedoch weisen
alle einen hohen Automatisierungsaufwand auf
Master Note «Data Guard Impact on Oracle Multitenant Environments (Doc ID 2049127.1)»
1. Making Use of the STANDBYS=NONE Feature with Oracle Multitenant Document 1916648.1
2. Reusing the Source Standby Database Files When Plugging a PDB into the Primary Database of a Data GuardConfiguration Document 2273829.1
3. Using standby_pdb_source_file_dblink and standby_pdb_source_file_directory to Maintain Standby Databases when Performing PDB Remote Clones or Plugins Document 2274735.1
Da bei der Mobiliar die Automatisierung von Prozessen einen hohen Stellenwert einnimmt,
haben wir uns für den Workaround 3 entschieden.
DB-Link von Standby nach Primary für File Copy
72
Zuerst muss der Interim Patch (21252050) installiert werden, welcher einen neuen DB
Parameter hinzufügt
standby_pdb_source_file_dblink
Danach muss folgende Konfiguration muss vorgenommen werden:
Es gibt jedoch noch ein Problem beim kopieren der Files via DB-Link. Wer sieht es
PRIM_CDB SQL> create database link copy_from_prim connect to system identified by xxx using ’prim_db’;
PRIM_CDB SQL> alter system archive log current;
STBY_CDB SQL> alter system set standby_pdb_source_file_dblink=’copy_from_prim’;
73
Da ein DB-Link nur verwendet werden kann wenn sich die
Standby DB im OPEN Mode befindet, wäre per Definition von
Oracle für diese Lösung eine Active DG Lizenz notwendig!
“Because these operations require init parameters to be set and the physical standby
to be opened read only, licensing and feature usage tracking have been modified not
to incur Active Data Guard licensing costs/usage tracking when the CDB$ROOT
standby is open read only. ADG licensing will only occur and be tracked when a PDB
on the standby is opened read only. Licensing documentation will be updated to
reflect this change.”
Ablauf für online Klon einer PDB (1)
74
Container Database
Primary CDB
APP 2 TMP1
CDB1 SQL> create pluggable database tmp1 from app1 standby=none;
CDB1 SQL> alter pluggable database tmp open;
CDB1 SQL> alter pluggable database tmp close;
CDB1 SQL> alter pluggable database tmp open read only;
Container Database (RO)
APP 1 APP 2APP 1
Standby CDB
kein File copy
PDB online clone in a Data Guard Environment – Step 2
75
Container Database
Primary CDB
APP 2 TMP1(RO)
CDB1 SQL> create pluggable database app1_copy from temp1;
CDB1 SQL> alter pluggable database app1_copy open;
Container Database (RO)
APP 1 APP 2APP 1
Standby CDB
APP1_COPY APP1_COPY
DB-LINKREDO
Ablauf für online Klon einer PDB (3)
76
Container Database
Primary CDB
APP 2 TMP1(RO)
CDB1 SQL> alter pluggable database tmp1 close immediate;
CDB1 SQL> drop pluggable database tmp1 including datafiles;
Container Database (RO)
APP 1 APP 2APP 1
Standby CDB
APP1_COPY APP1_COPY
REDO
77
78
Nach einem Jahr intensiver Arbeit mit Oracle Multitenant ziehen wir im
grossen und Ganzen ein positives Feedback
Wir finden bei der neuen Architektur immer wieder Kinderkrankheiten, jedoch ist auch die non
CDB Architektur nicht perfekt
Mit Oracle 12.2 MT kriegt man die Ressourcenoptimierung welche mit Schemakonsolidierung
erreicht wurde ohne Einschränkungen im DB Betrieb oder dass man auf Features verzichten
muss
Tipp
Schauen sie sich die neue Oracle Default Architektur an und setzten Sie sich früh genug damit
auseinander um für die Zukunft gerüstet zu sein
22.11.2018 79
Geschafft!
Vielen Dank für Ihre
Aufmerksamkeit