Features sind meist keine große Sache, aber so manche" Kleinigkeit" hat schon die Welt verändert. Deswegen hier eine überschaubare Liste von kleinen, aber doch sehr praktischen und teils auch mächtigen Features:
Der neue Parameter PGA_AGGREGATE_LIMIT macht es nun endlich möglich, die PGA zu beschränken. Vor 12c war die PGA immer ein "irgendwie fest verdrahteter möglicher Memory-Leak", es war nicht möglich diesen wirklich zu beschränken. Abfragen lässt sich dieser Parameter wie jeder andere:
SQL> show parameter PGA_AGGREGATE_LIMIT
NAME TYPE VALUE
--------------------- -------------- -------
pga_aggregate_limit big integer 2G
Sie können die Grenze auf einem Testsystem mit folgendem kleinem PL/SQL-Block auch "austesten":
ACHTUNG: Dieser Block belegt viel Hauptspeicher, bitte nicht auf einem produktiven Server ausführen!
DECLARE
type array_t is table of varchar2(32767);
vieltext varchar2(32767) := 'x';
varray array_t := array_t();
BEGIN
for i in 1..32766 loop
vieltext := vieltext || 'x';
end loop;
for i in 1..40000 loop
varray.extend; -- Extend it
varray(i) := vieltext;
end loop;
END;
/
Falls in Ihrem System der Parameter höher gesetzt ist, kann es sein, dass Sie die zweite Loop vergrößern müssen.
Wenn die Grenze erreicht wurde erhalten Sie folgenden Fehler:
ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT
Klein aber fein, ist die Tatsache, dass man im RMAN seine SQL-Statements nicht mehr mit einer extra Syntax kennzeichnen muss:
oracle@s-tl-040 [asd]:~> rman
Recovery Manager: Release 12.2.0.1.0 - Production on Mon Mar 5 16:13:34 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: ASD (DBID=139029862)
RMAN> desc v$session
using target database control file instead of recovery catalog
Name Null? Type
----------------------------------------- -------- ----------------------------
SADDR RAW(8)
SID NUMBER
SERIAL# NUMBER
AUDSID NUMBER
PADDR RAW(8)
USER# NUMBER
USERNAME VARCHAR2(128)
...
ECID VARCHAR2(64)
SQL_TRANSLATION_PROFILE_ID NUMBER
PGA_TUNABLE_MEM NUMBER
SHARD_DDL_STATUS VARCHAR2(8)
CON_ID NUMBER
EXTERNAL_NAME VARCHAR2(1024)
PLSQL_DEBUGGER_CONNECTED VARCHAR2(5)
RMAN> select sid, serial#, username, PROGRAM from v$session where username is not null;
SID SERIAL# USERNAME PROGRAM
---------- ---------- ---------- ------------------------------
6 45620 SYS oracle@s-tl-040 (OFSD)
13 46736 SYS rman@s-tl-040 (TNS V1-V3)
15 39246 SYS rman@s-tl-040 (TNS V1-V3)
301 39376 SYS sqlplus@s-tl-040 (TNS V1-V3)
Vielleicht nicht wirklich für den alltäglichen Gebrauch, aber eine der praktischen Neuerungen ist die Möglichkeit für einen Import mit Datapump die Archivierung abzuschalten. Vor allem bei großen Imports spart man sich hier viel Zeit und auch Festplattenplatz, auch ohne die Archivierung für die ganze Datenbank abzuschalten.
Das ganze wird mit dem Import-Parameter transform=disable_archive_logging:y bewerkstelligt.
Mit Archivierung:
Import: Release 12.2.0.1.0 - Production on Tue Mar 6 10:39:38 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/******** DIRECTORY=DATA_PUMP_DIR DUMPFILE=asdf_schema.dmp
Processing object type SCHEMA_EXPORT/USER
ORA-31684: Object type USER:"ASDF" already exists
...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "ASDF"."BIG_T" 5.051 GB 45627392 rows
...
Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 1 error(s) at Tue Mar 6 10:53:43 2018 elapsed 0 00:13:56
Ohne Archivierung:
Import: Release 12.2.0.1.0 - Production on Tue Mar 6 11:17:52 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/******** DIRECTORY=DATA_PUMP_DIR DUMPFILE=asdf_schema.dmp transform=disable_archive_logging:y
Processing object type SCHEMA_EXPORT/USER
ORA-31684: Object type USER:"ASDF" already exists
...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "ASDF"."BIG_T" 5.051 GB 45627392 rows
...
Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 1 error(s) at Tue Mar 6 11:22:51 2018 elapsed 0 00:04:53
Sollte die Datenbank im "Force Logging Modus" sein, funktioniert es leider nicht.
Natürlich sollten Sie auch nach einer solchen Aktion (genauso wie beim Abschalten der Archivierung) am besten sofort im Anschluss ein Full-Backup der Datenbank durchführen, damit es nicht zu einem Datenverlust (!) kommt.
Mit dem Package DBMS_QOPATCH ist es jetzt möglich in der Datenbank Patches und Bugfixes abzufragen, die man vorher über das OPatch Utility abfragen musste:
SQL> exec dbms_qopatch.get_sqlpatch_status;
Patch Id : 19769486
Action : APPLY
Action Time : 13-OCT-2016 17:43:11
Description : bundle:PSU
Logfile : /u01/app/oracle/product/12.1.0.1/dbhome_1/sqlpatch/19769486/19769486_apply_ASD_2016Oct13_17_41_50.log
Status : SUCCESS
Patch Id : 20299016
Action : APPLY
Action Time : 13-OCT-2016 17:43:11
Description : bundle:PSU
Logfile : /u01/app/oracle/product/12.1.0.1/dbhome_1/sqlpatch/20299016/20299016_apply_ASD_2016Oct13_17_43_02.log
Status : SUCCESS
Patch Id : 20831107
Action : APPLY
Action Time : 13-OCT-2016 17:43:11
Description : bundle:PSU
Logfile : /u01/app/oracle/product/12.1.0.1/dbhome_1/sqlpatch/20831107/20831107_apply_ASD_2016Oct13_17_43_04.log
Status : SUCCESS
Patch Id : 21352619
Action : APPLY
Action Time : 13-OCT-2016 17:43:11
Description : bundle:PSU
Logfile : /u01/app/oracle/product/12.1.0.1/dbhome_1/sqlpatch/21352619/21352619_apply_ASD_2016Oct13_17_43_05.log
Status : SUCCESS
Patch Id : 21951844
Action : APPLY
Action Time : 13-OCT-2016 17:43:11
Description : bundle:PSU
Logfile : /u01/app/oracle/product/12.1.0.1/dbhome_1/sqlpatch/21951844/21951844_apply_ASD_2016Oct13_17_43_07.log
Status : SUCCESS
Patch Id : 22291141
Action : APPLY
Action Time : 13-OCT-2016 17:43:11
Description : bundle:PSU
Logfile : /u01/app/oracle/product/12.1.0.1/dbhome_1/sqlpatch/22291141/22291141_apply_ASD_2016Oct13_17_43_08.log
Status : SUCCESS
Patch Id : 23054354
Action : APPLY
Action Time : 13-OCT-2016 17:43:11
Description : bundle:PSU
Logfile : /u01/app/oracle/product/12.1.0.1/dbhome_1/sqlpatch/23054354/23054354_apply_ASD_2016Oct13_17_43_10.log
Status : SUCCESS
PL/SQL procedure successfully completed.
Das Package stellt auch noch weitere Funktionen zur Verfügung, zum Beispiel können Sie direkt abfragen, ob ein bestimmter Patch installiert ist:
SQL> select xmltransform(dbms_qopatch.is_patch_installed('23054354'), dbms_qopatch.get_opatch_xslt) from dual;
XMLTRANSFORM(DBMS_QOPATCH.IS_PATCH_INSTALLED('23054354'),DBMS_QOPATCH.GET_OPATCH_XSLT)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Patch Information:
23054354: applied on 2016-10-13T17:36:21+02:00
Ein nicht installierter Patch gibt keine Zeile zurück.
Nicht wirklich in diese Liste geschafft hat es der Table restore von RMAN, und das hat folgenden Grund:
Im ersten Moment liest es sich natürlich toll und ich habe mir gedacht:
"Endlich kann der RMAN die Blöcke, die zu einer Tabelle gehören aus einem Backup zusammensuchen und diese einzeln wiederherstellen, ohne extra Instanz und viel Platzverbrauch."
Leider ist es aber so, dass es sich nur um eine automatisierte Variante, der üblichen Verfahren zum Wiederherstellen von Tabellen vor 12c handelt. Und diese ist noch recht Zeit- und Ressourcen-intensiv. Deswegen gibt es ein Sternchen für den Versuch aber es sollte eigentlich noch einfacher gehen. Hoffen wir auf das nächste Release.
Diese wenigen Beispiele repräsentieren lediglich die Meinung des Autors.
Wir sollten die Liste erweitern, dann lassen Sie uns das wissen. mit.
In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den
Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.