Ausgewählte PL/SQL Packages (Teil 1)DBMS_XDB_CONFIGDBMS_COMPRESSIONDBMS_REDEFINITIONDBMS_REDEFINITIONDBMS_SQL_MONITORDBMS_PARALLEL_EXECUTE
Ulrike Schwinn (Follow @uschwinn)Business Unit Database
ORACLE Deutschland B.V. & Co. KG.
1. DBMS_XDB_CONFIG – XDB Port Konfiguration
2. DBMS_COMPRESSION – Compression Ratio, Komprimierte Zeilen
3. DBMS_REDEFINITION – Online Neudefinition von Tabellen
Für jeden etwas ... Eine Auswahl an Packages
2 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
4. DBMS_SQL_MONITOR – Real Time Monitoring
5. DBMS_PARALLEL_EXECUTE – Manuelle Parallellisierung
3 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Das Package DBMS_XDB_CONFIG
Aufgaben und Funktionen
� Generell: Ist ein Interface um die Oracle XML DB zu konfigurieren
� Wieso ist das interessant für den DBA?– FTP in ASM
– ACLs auf Packages wie UTL_HTTP, UTL_TCP, UTL_MAIL usw.
4 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
– Native Web Services in PL/SQL
– 12c: Konfigration des neuen Werkzeugs EM Database Express
� Manuelle Konfiguration der HTTP(S) und FTP Listener Ports – Ports setzen
– Ports überprüfen
– Ports aller pluggable Databases überprüfen (neu in 12c)
Handhabung
� Port setzen
analog für SETHTTPSPORT oder SETFTPPORT
� Sofort aktiviert im laufenden Betrieb
exec DBMS_XDB_CONFIG.SETHTTPPORT(5500);
5 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Sofort aktiviert im laufenden Betrieb
� Überprüfung mit GET- Funktionen wie select DBMS_XDB_CONFIG.GETHTTPPORT, DBMS_XDB_CONFIG.GETHTTPSPORT
FROM dual;
GETHTTPPORT GETHTTPSPORT
----------- ------------
1234 5500
Alternative: Überprüfung mit lsnrctl statusListener Parameter File
/opt/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
Listener Log File
/opt/oracle/diag/tnslsnr/sccloud006/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sccloud006.de.oracle.com)(PORT=1521)))
6 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sccloud006.de.oracle.com)(PORT=1234))
(Presentation=HTTP)(Session=RAW))
...
Services Summary...
Service "orcl.de.oracle.com" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.de.oracle.com" has 1 instance(s).
Alternative: Konfiguration über Cloud Control
7 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
� Neues Werkzeug mit Oracle Database 12c zum Monitoring und Management einer einzelnen Datenbank (Container, PDB, Non CDB)
� Separate URL für Container und PDBs– http(s)://<server>:<port>/em
Verwendung im neuen EM Database Express
8 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
� Welcher Port wird von welcher PDB verwendet?
SQL> select DBMS_XDB_CONFIG.USEDPORT from dual;
USEDPORT
----------------------------------------------------------
<portlist>
<port>
<pdbid>1</pdbid>
<httpport>1234</httpport>
</port> ….
Formatierte Ausgabe
SQL> SELECT pdbid, c.name, httpport
FROM v$containers c, xmltable ('//port'
PASSING DBMS_XDB_CONFIG.USEDPORT
COLUMNS
pdbid NUMBER PATH 'pdbid',
httpport NUMBER PATH 'httpport')
WHERE pdbid = c.con_id;
9 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
WHERE pdbid = c.con_id;
PDBID NAME HTTPPORT
---------- ------------------------------ ----------
1 CDB$ROOT 1234
3 PDBORCL 2224
4 PDB1 2223
Beispiel - http://sccloud006:2223/em
10 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
11 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Das Package DBMS_COMPRESSION
� Einsatz des Package DBMS_COMPRESSION ab 11gR2
� Vor 11gR2: Download DBMS_COMP_ADVISOR von OTN
� Funktionen:– Berechnet Komprimierungsratio für Tabellen und Partitionen
Aufgaben und Funktionen
12 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
– Berechnet Komprimierungsratio für Tabellen und Partitionen
– Analysiert Zeilen auf Komprimierungstyp
– Einsatz auch für HCC Komprimierung (Mindestanzahl von Zeilen!)
– Ab 12c: Berechnet LOB Komprimierung und Graphische Implementierung in Cloud Control
� Mit Tabellenname und ROWID
select
DBMS_COMPRESSION.GET_COMPRESSION_TYPE(
ownname => 'SH',
tabname => 'SALESTEST',
Komprimierung Feststellen
13 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
� Ergebnis Werte in Table 36-1 Constants - Compression Types
tabname => 'SALESTEST',
row_id => 'AAASOVAAEAAADDoAB8') Rate
FROM dual;
RATE
----
1
Compression Konstanten Release2
14 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Table 36-1 Constants - Compression Types
declare
b_cmp PLS_INTEGER;
:
begin
DBMS_COMPRESSION.GET_COMPRESSION_RATIO (
scratchtbsname => 'USERS',
ownname => 'SH',
tabname => 'SALES',
partname => 'SALES_Q1_1999',
comptype => 2,
blkcnt_cmp => b_cmp,
Compression Ratio Release2
15 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
blkcnt_cmp => b_cmp,
blkcnt_uncmp => b_uncmp,
row_cmp => row_cmp,
row_uncmp => row_uncmp,
cmp_ratio => cmp_ratio,
comptype_str => cmp_str);
:
dbms_output.put_line('RATIO => '|| cmp_ratio);
dbms_output.put_line('CMPTYPE => '|| cmp_str);
:
:
BLKCNT_CMP => 115
BLKCNT_UNCMP => 306
DBMS_COMPRESSIONRelease2
16 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
BLKCNT_UNCMP => 306
RATIO => 2,6
CMPTYPE => „Compress For OLTP“
:
Compression Advisor in 12c
� Änderungen der Argumente in COMPRESSION_GET_RATIO
DBMS_COMPRESSION.GET_COMPRESSION_RATIO (
scratchtbsname => 'USERS',
ownname => 'SH',
objname => 'COSTS',
subobjname => 'COSTS_Q1_1998',
17 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
� Änderungen bzw. Erweiterung der Compression Konstanten
subobjname => 'COSTS_Q1_1998',
comptype => 2,
...
Compression Konstanten in 12c
18 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Compression Advisor in Cloud Control
19 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
begin
DBMS_COMPRESSION.GET_COMPRESSION_RATIO (
SCRATCHTBSNAME => 'USERS',
TABOWNER => 'SH',
TABNAME => 'BASIC_LOB',
LOBNAME => 'TEXT',
PARTNAME => '',
COMPTYPE => 128,
BLKCNT_CMP => b_cmp,
Compression Ratio für LOBs
20 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
BLKCNT_UNCMP => b_uncmp,
LOBCNT => lob_cnt,
CMP_RATIO => cmp_ratio,
COMPTYPE_STR => cmp_str);
...
Sampling percent: 2.5
Uncomp blocks: 1246 Comp blocks: 638
Number of lobs sampled: 4980
compression ratio: 1.9
21 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Das Package DBMS_REDEFINITION
Aufgaben und Funktionen
� Warum Tabellen reorganisieren?– Hinzufügen/Löschen/Modifizieren von Spalten
– Veränderung an Storage Parametern
– Transformation der Tabelle : Heap Tabelle, Objekt Tabelle, Partitionierung
22 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
– Transformation der Tabelle : Heap Tabelle, Objekt Tabelle, Partitionierung
– Transformation der Datentypen: BASICFILE/SECUREFILE
– Transformation der Daten: Komprimierung
� Alternativen: OFFLINE SQL Kommandos, Export/Import, CREATE TABLE AS SELECT ...
� Löschen eines Index (DROP INDEX ... ONLINE)
� Index als UNUSABLE markieren (ALTER INDEX ... UNUSABLE ONLINE)
� Spalte als UNUSED markieren (ALTER TABLE ... SET UNUSED COLUMN ... ONLINE)
Mehr Online Operationen in 12c
23 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
COLUMN ... ONLINE)
� Löschen eines Constraints (ALTER TABLE ... DROP CONSTRAINT ... ONLINE)
� MOVE einer Tabellen Partition/Subpartition (ALTER TABLE ... MOVE PARTITION ... ONLINE)
� DATAFILE MOVE (ALTER DATABASE MOVE DATAFILE ...)
Prozedere
� (optional) ROW Movement/Parallelisierung
� Tabellen Verifikation mit CAN_REDEF_TABLE
� Erzeuge Interims Tabelle mit CREATE TABLE
� Starte Redefinition mit START_REDEF_TABLE
24 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
� Starte Redefinition mit START_REDEF_TABLE
� Kopiere manuell oder automatisch abhängige Objekte mitCOPY_TABLE_DEPENDENTS
� Beende die Redefinition mit FINISH_REDEF_TABLE
� Löschen der Tabelle
Weitere Funktionen
� Abbrechen der Online Redefinition mitABORT_REDEF_TABLE
� Registrieren von vorhanden Objekten der Interimstabelle mitREGISTER_DEPENDENT_OBJECT
25 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
REGISTER_DEPENDENT_OBJECT
� Synchronisierung der Interims Tabelle mitSYNC_INTERIM_TABLE
Reorganize Wizard in Cloud Control
26 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Neuerungen in 12c
� Unterstützung von mehreren Partitionen im Batch
� Erweiterungen in CAN_REDEF_TABLE, START_REDEF_TABLE, SYNC_INTERIM_TABLE, FINISH_REDEF_TABLE
DBMS_REDEFINITION.FINISH_REDEF_TABLE(
uname => 'SH',
27 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
� Beim Beenden der Redefinition kann mit DML_LOCK_TIMEOUT das Warten auf Pending DML zeitlich begrenzt werden.
uname => 'SH',
orig_table => 'salestable',
int_table => 'int_salestb1, int_salestb2',
part_name => 'sal10q1, sal10q2',
continue_after_errors => TRUE);
DBMS_REDEFINTION in 12c
� Ein (1) Schritt Verfahren sind bei folgenden Änderungen möglich– Tablespaces für Tabellen, alle Partitionen/Indizes/LOBs einer Tabelle
– Compression Typ
– SECUREFILE oder BASICFILE
DBMS_REDEFINITION.REDEF_TABLE(
28 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
DBMS_REDEFINITION.REDEF_TABLE(
uname => 'SH',
tname => 'PROD_COPY',
table_compression_type => 'ROW STORE COMPRESS BASIC',
index_key_compression_type => 'COMPRESS 1');
29 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Das Package DBMS_SQL_MONITOR
Aufgaben und Funktionen
� Automatisches Überwachen (Real Time) von langlaufenden SQL bzw. PL/SQL Ausführungen
– Kriterien: Dauer, Hint MONITOR, Parallele Verarbeitung
� Beugt unnötigem Tracing vor
� Listet globale SQL und PL/SQL Statistiken
30 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
� Listet globale SQL und PL/SQL Statistiken
� Ohne Performance Overhead
� Implementierung: Cloud Control oder dbms_sql_monitor
� Lizenzierung: Tuning Pack erforderlich
Real Time Monitoring in Cloud Control
31 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Real Time Monitoring in Cloud Control
Status Dauer Parallel Info DB Time IO Requests Start/End
Queued
RunningError
PX Downgrade
SQL Text
32 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Completed Parallel Degree
Die Funktion REPORT_SQL_MONITOR
� Gesammelte Daten: V$SQL_MONITOR, V$SQL_PLAN_MONITOR
� REPORT_SQL_MONITOR(_LIST): detaillierter Report als CLOB
� Filterung über SESSION_ID, SQL_ID, SQL_EXEC_START usw.
� Parameter TYPE für Art des Reports (Empfehlung ACTIVE)
33 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
set long 10000000 longchunksize 1000000000
select DBMS_SQL_MONITOR.REPORT_SQL_MONITOR()
from dual;
select DBMS_SQL_MONITOR.REPORT_SQL_MONITOR (type=>'HTML')
from dual;
select DBMS_SQL_MONITOR.REPORT_SQL_MONITOR (type=>'ACTIVE') from dual;
Active Report
34 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
� Monitoring von komplexen Operationen (Gruppieren von SQL, PL/SQL Operationen)
� Szenarien: ETL Operationen, Quartalsende etc.
� Implementiert über Applikationsspezifisches Tagging
DBMS_SQL_MONITOR in 12c
35 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Monitoring komplexer Operationen in 12c
� Tagging von Operationen einer Session mit BEGIN_OPERATION und END_OPERATION
� Monitoring in Cloud Control oder über REPORT_SQL_MONITORüber DBOP_NAME und DBOP_EXEC_ID
execute compid.id: = DBMS_SQL_MONITOR.BEGIN_OPERATION(
36 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
execute compid.id: = DBMS_SQL_MONITOR.BEGIN_OPERATION(dbop_name => 'sales_job1');
... Statements ...
execute DBMS_SQL_MONITOR.END_OPERATION(dbop_name => 'sales_job1', dbop_eid => compid.id );
set long 10000000 longchunksize 1000000000
select DBMS_SQL_MONITOR.REPORT_SQL_MONITOR
(dbop_name =>'sales_job1') from dual;
37 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Das Package DBMS_PARALLEL_EXECUTE
Aufgaben und Funktionen
� Seit 11g R2
� Parallelisierung von Operationen bei großen Datenmengen– Gruppieren der Daten in einzelne Abschnitte (Chunks)
– Ausführen eines user definierten Statements parallel auf den einzelnenAbschnitten
38 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Abschnitten
� Implementiert über Scheduler Job Prozesse (job_queue_processes)
� Eigenschaften – COMMIT nach erfolgreicher Abarbeitung eines Chunks (weniger Locking)
– Eigenes Fehlerhandling möglich
– Auch geeignet für PL/SQL Procedures
Grundsätzliche Vorgehensweise
1. Erzeuge Task
2. Unterteilung in Chunks (3 verschiedene Methoden wie SELECT, Spaltenwert und ROWID (hier ROWID))
execute DBMS_PARALLEL_EXECUTE.CREATE_TASK(
task_name => 'test1');
39 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Spaltenwert und ROWID (hier ROWID))execute DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_ROWID(
task_name => 'test1',
table_owner => 'SCOTT',
table_name => 'TEST_TAB',
by_row => TRUE,
chunk_size => 10000);
Grundsätzliche Vorgehensweise
� Ausführung der TasksDECLARE
l_sql_stmt VARCHAR2(32767);
BEGIN
l_sql_stmt := 'UPDATE test_tab t SET t.num_col = t.num_col + 10
40 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
� http://www.oracle-base.com/articles/11g/dbms_parallel_execute_11gR2.php
SET t.num_col = t.num_col + 10WHERE rowid BETWEEN :start_id AND :end_id';
DBMS_PARALLEL_EXECUTE.RUN_TASK(task_name => 'test1',sql_stmt => l_sql_stmt,language_flag => DBMS_SQL.NATIVE,parallel_level => 10);
END;
Monitoring
� Überwachung über USER_PARALLEL_EXECUTE_TASKSund USER_PARALLEL_EXECUTE_CHUNKS
und user_parallel_execute_chunks
JOB_NAME START_ROWID END_ROWID STATUS
------------------ ------------------ ------------------ -----------
TASK$_183664_1 AAAdhuAAGAAAAjQAAA AAAdhuAAGAAAAjXCcP PROCESSED
TASK$_183664_1 AAAdhuAAGAACHuAAAA AAAdhuAAGAACHuxCcP PROCESSED
41 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
TASK$_183664_1 AAAdhuAAGAACHuAAAA AAAdhuAAGAACHuxCcP PROCESSED
TASK$_183664_1 AAAdhuAAGAACH2yAAA AAAdhuAAGAACH3jCcP ASSIGNED
...
TASK$_183664_10 AAAdhuAAGAACH2AAAA AAAdhuAAGAACH2xCcP ASSIGNED
TASK$_183664_10 AAAdhuAAGAAAAj4AAA AAAdhuAAGAAAAj/CcP PROCESSED
...
TASK$_183664_4 AAAdhuAAGAACHzkAAA AAAdhuAAGAACHz/CcP PROCESSED
AAAdhuAAGAACH3kAAA AAAdhuAAGAACH3/CcP UNASSIGNED
Zusammenfassung
Package Einsatz
DBMS_COMPRESSION Komprimierung testen
DBMS_REDEFINITION Online Table Operationen
42 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
DBMS_XDB_CONFIG Konfiguration der XMLDB Ports
DBMS_SQL_MONITOR (Real Time) SQL Monitoring
DBMS_EXECUTE_PARALLEL Manuelle Parallelisierung
� Homepage der deutschsprachigen DBA Tipps: blogs.oracle.com/dbacommunity_deutsch
� Dojos: tinyurl.com/dojoonline
� Alles auf einen Blick: tinyurl.com/oraclebudb
� Nächstes Webseminar zum Thema Packages
Nützliche Informationen und Links
43 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
� Nächstes Webseminar zum Thema Packages am 29. April
� Download: apex.oracle.com/folienSchlüsselwort: webinar_packages1