12 Facts zu Oracle 12.2 die das Leben erleichtern · Ablösung der Schemakonsolidierung mit MT 12.2...

Post on 18-Aug-2019

213 views 0 download

Transcript of 12 Facts zu Oracle 12.2 die das Leben erleichtern · Ablösung der Schemakonsolidierung mit MT 12.2...

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

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