ausgewählte pl/sql packages (1)

43
Ausgewählte PL/SQL Packages (Teil 1) DBMS_XDB_CONFIG DBMS_COMPRESSION DBMS_REDEFINITION DBMS_REDEFINITION DBMS_SQL_MONITOR DBMS_PARALLEL_EXECUTE Ulrike Schwinn (Follow @uschwinn) Business Unit Database ORACLE Deutschland B.V. & Co. KG.

Upload: ulrike-schwinn

Post on 30-Jun-2015

360 views

Category:

Technology


2 download

DESCRIPTION

Einige ausgewählte Oracle PL/SQL Packages aus Version 11g und 12c werden kurz beschrieben und an Beispielen erklärt. In Teil 1 handelt es sich dabei um folgende Packages: DBMS_XDB_CONFIG DBMS_COMPRESSION DBMS_REDEFINITION DBMS_SQL_MONITOR DBMS_PARALLEL_EXECUTE

TRANSCRIPT

Page 1: Ausgewählte PL/SQL Packages (1)

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.

Page 2: Ausgewählte PL/SQL Packages (1)

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

Page 3: Ausgewählte PL/SQL Packages (1)

3 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Das Package DBMS_XDB_CONFIG

Page 4: Ausgewählte PL/SQL Packages (1)

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)

Page 5: Ausgewählte PL/SQL Packages (1)

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

Page 6: Ausgewählte PL/SQL Packages (1)

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).

Page 7: Ausgewählte PL/SQL Packages (1)

Alternative: Konfiguration über Cloud Control

7 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Page 8: Ausgewählte PL/SQL Packages (1)

� 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> ….

Page 9: Ausgewählte PL/SQL Packages (1)

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

Page 10: Ausgewählte PL/SQL Packages (1)

Beispiel - http://sccloud006:2223/em

10 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Page 11: Ausgewählte PL/SQL Packages (1)

11 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Das Package DBMS_COMPRESSION

Page 12: Ausgewählte PL/SQL Packages (1)

� 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

Page 13: Ausgewählte PL/SQL Packages (1)

� 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

Page 14: Ausgewählte PL/SQL Packages (1)

Compression Konstanten Release2

14 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Table 36-1 Constants - Compression Types

Page 15: Ausgewählte PL/SQL Packages (1)

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);

:

Page 16: Ausgewählte PL/SQL Packages (1)

:

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“

:

Page 17: Ausgewählte PL/SQL Packages (1)

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,

...

Page 18: Ausgewählte PL/SQL Packages (1)

Compression Konstanten in 12c

18 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Page 19: Ausgewählte PL/SQL Packages (1)

Compression Advisor in Cloud Control

19 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Page 20: Ausgewählte PL/SQL Packages (1)

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

Page 21: Ausgewählte PL/SQL Packages (1)

21 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Das Package DBMS_REDEFINITION

Page 22: Ausgewählte PL/SQL Packages (1)

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 ...

Page 23: Ausgewählte PL/SQL Packages (1)

� 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 ...)

Page 24: Ausgewählte PL/SQL Packages (1)

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

Page 25: Ausgewählte PL/SQL Packages (1)

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

Page 26: Ausgewählte PL/SQL Packages (1)

Reorganize Wizard in Cloud Control

26 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Page 27: Ausgewählte PL/SQL Packages (1)

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);

Page 28: Ausgewählte PL/SQL Packages (1)

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');

Page 29: Ausgewählte PL/SQL Packages (1)

29 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Das Package DBMS_SQL_MONITOR

Page 30: Ausgewählte PL/SQL Packages (1)

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

Page 31: Ausgewählte PL/SQL Packages (1)

Real Time Monitoring in Cloud Control

31 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Page 32: Ausgewählte PL/SQL Packages (1)

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

Page 33: Ausgewählte PL/SQL Packages (1)

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;

Page 34: Ausgewählte PL/SQL Packages (1)

Active Report

34 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Page 35: Ausgewählte PL/SQL Packages (1)

� 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.

Page 36: Ausgewählte PL/SQL Packages (1)

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;

Page 37: Ausgewählte PL/SQL Packages (1)

37 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Das Package DBMS_PARALLEL_EXECUTE

Page 38: Ausgewählte PL/SQL Packages (1)

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

Page 39: Ausgewählte PL/SQL Packages (1)

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);

Page 40: Ausgewählte PL/SQL Packages (1)

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;

Page 41: Ausgewählte PL/SQL Packages (1)

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

Page 42: Ausgewählte PL/SQL Packages (1)

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

Page 43: Ausgewählte PL/SQL Packages (1)

� 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