SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
Ausgewählte PL/SQL 
Packages (Teil 2) 
DBMS_QOPATCH 
DBMS_SPACE 
DBMS_SERVICE 
DBMS_FLASHBACK_ARCHIVE 
Ulrike Schwinn (Follow @uschwinn) 
Business Unit Database 
ORACLE Deutschland B.V. & Co. KG.
In Teil 1 ... 
1. DBMS_XDB_CONFIG – XDB Port Konfiguration 
2. DBMS_COMPRESSION – Compression Ratio, Komprimierte Zeilen 
3. DBMS_REDEFINITION – Online Neudefinition von Tabellen 
4. DBMS_SQL_MONITOR – Real Time Monitoring 
5. DBMS_PARALLEL_EXECUTE – Manuelle Parallellisierung 
Folien dazu unter 
http://apex.oracle.com/folien 
Schlüsselwort: webinar_packages1 
2 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Heutige Agenda 
1. DBMS_QOPATCH – Informationen zu Patches mit PL/SQL 
2. DBMS_SPACE – Platzverbrauch abschätzen 
3. DBMS_SERVICE – Services anlegen, löschen, ändern 
4. DBMS_FLASHBACK_ARCHIVE – Flashback Data Archive 
Funktionen 
3 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Etwas Grundsätzliches 
4 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Wie findet man obsolete Packages? 
 Upgrade Guide 12c Release 1 (12.1) in Kapitel 8 “Deprecated and 
Desupported Features for Oracle Database 12c” 
5 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Wie findet man obsolete Packages? 
SELECT name FROM 
(SELECT synonym_name name FROM dba_synonyms@system11g 
WHERE table_name in 
(SELECT object_name name FROM dba_objects@system11g 
WHERE object_type = 'PACKAGE') 
MINUS 
SELECT synonym_name name FROM dba_synonyms 
WHERE table_name IN 
(SELECT object_name name FROM dba_objects 
WHERE object_type = 'PACKAGE')) 
DBMS_DBLINK 
DBMS_EXPFIL 
DBMS_RLMGR 
STATSPACK … 
6 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Wie findet man PL/SQL Objekte überhaupt? 
 Data Dictionary 
– ALL_OBJECTS mit 
object_type=PACKAGE|PACKAGE_BODY|FUNCTION|PROCEDURE 
– ALL_SOURCE mit 
type=PACKAGE|PACKAGE_BODY|FUNCTION|PROCEDURE 
Mit SQL Developer 4.0 
 – Funktion Find Database Objects 
7 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Im SQL Developer 
8 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Im SQL Developer 
9 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Das Package DBMS_QOPATCH 
10 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Aufgaben und Funktionen 
 Patch Informationen über OPATCH abfragen 
opatch lsinventory -XML 
 In 12c nun auch in PL/SQL mit DBMS_QOPATCH 
 Einige wichtige Funktionen: 
– GET_OPATCH_BUGS: Bug Liste für bestimmmte Patch Nummer 
– GET_OPATCH_ LIST: Patch Liste installierter Patches 
– GET_OPATCH_LSINVENTORY: Gesamte opatch Inventory 
– IS_PATCH_INSTALLED: Abfrage auf einzelne Patches 
 Ausgabe in XML 
11 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Gesamtes Inventory in XML Format 
SQL set long 2000000000 pagesize 0 linesize 32000 
SQL SELECT DBMS_QOPATCH.GET_OPATCH_LSINVENTORY FROM dual; 
GET_OPATCH_LSINVENTORY 
------------------------------------------------------------ 
?xml version=1.0 encoding=CP850 standalone='yes'? 
InventoryInstance 
oracleHome UIdOracleHome-75909c1d-7269-45d1-802e- 
75deb9104053/UId targetTypeIdoracle_home/targetTypeId 
patchingModeloneoff/patchingModel 
path/opt/oracle/product/12.1.0/db/path 
targetTypeIdoracle_home/targetTypeId 
inventoryLocation/opt/oraInventory/inventoryLocation … 
12 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Formatierte Ausgabe von Einzelpatches 
http://sql-plsql-de.blogspot.co.uk/2014/02/sql-anstatt-opatch-lsinventory-mit.html 
SQL set long 2000000000 pagesize 0 linesize 32000 
SQL SELECT patch_id, apply_time, rollbackable 
FROM xmltable 
('//patch' passing DBMS_QOPATCH.GET_OPATCH_LSINVENTORY 
COLUMNS 
patch_id number PATH 'patchID', 
apply_time timestamp with time zone PATH 'appliedDate', 
rollbackable varchar2(10) PATH 'rollbackable') 
PATCH_ID APPLY_TIME ROLLBACKAB 
---------- ----------------------------------- ---------- 
16527374 08.11.13 14:02:02,000000 +01:00 true 
17027533 08.11.13 10:24:12,000000 +01:00 true 
13 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Abfrage auf einzelne Patches 
SQL SELECT DBMS_QOPATCH.IS_PATCH_INSTALLED(17027533) FROM dual; 
DBMS_QOPATCH.IS_PATCH_INSTALLED(17027533) 
----------------------------------------- 
patchInfopatchID xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance 
17027533/patchIDappliedDate 
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance2013-10- 
22T14:00:51+02:00/appliedDatesqlPatch 
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance 
true/sqlPatchsqlPatchDatabaseStartupMode 
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance 
normal/sqlPatchDatabaseStartupMode/patchInfo 
14 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Das Package DBMS_SPACE 
15 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Aufgaben und Funktionen 
Über DBA_SEGMENTS hinaus ... 
– Informiert detailliert über den Speicherplatz von Segmenten 
– Auch für genaue Analyse von Securefiles geeignet 
– Schnittstelle für automatischen Segment Advisor 
– Trendberechnungen 
– Anzeige der abhängigen Objekte 
Anwendungsbeispiele 
– Compression Tests zur Analyse des genauen 
Platzverbrauchs 
– Unterstützung bei SQL Statement Analyse 
16 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Wichtige Komponenten im Einzelnen 
Genaue Speicheranalyse (im ASSM) SPACE_USAGE 
Freier Platz (im ASSM) UNUSED_SPACE 
Kosten für Index/Tabellen Create CREATE_[INDEX/TABLE]_COST 
Abhängige Objekte OBJECT_DEPENDENT_SEGMENTS 
Objekt Wachstum OBJECT_GROWTH_TREND 
Segment Advisor automatisch 
Segment Advisor Empfehlungen 
17 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 
AUTO_SPACE_ADVISOR_JOB_PROC 
ASA_RECOMMENDATIONS
Automatic Segment Space Management (ASSM) 
 Freier und genutzter Platz liegt als Bitmap vor. 
 Ein Bitmap beschreibt wie voll ein Block ist wie z.B. 
(0-25, 25-50, 50-75, 75-100%) 
 Die Funktion SPACE_USAGE bestimmt den genauen Platzverbrauch 
 Geignet für 
– TABLE, TABLE PARTITION, 
BMB 
BMB BMB BMB BMB 
TABLE SUBPARTITION,INDEX, 
INDEX PARTITION/SUBPARTITION 
CLUSTER, LOBs 
18 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 
BMB 
BMB 
BLOCK
SPACE_USAGE für Tabellen 
set serveroutput on 
declare 
. 
v_unformatted_blocks number; 
v_unformatted_bytes number; 
v_fs1_blocks number; 
v_fs1_bytes number; 
v_fs2_blocks number; 
v_fs2_bytes number; 
v_fs3_blocks number; 
v_fs3_bytes number; 
v_fs4_blocks number; 
v_fs4_bytes number; 
v_full_blocks number; 
v_full_bytes number; 
begin 
dbms_space.space_usage('SCOTT','EMPLOYEE','table', 
v_unformatted_blocks,v_unformatted_bytes,v_fs1_blocks,v_fs1_bytes,v_fs2_blocks, 
v_fs2_bytes,v_fs3_blocks,v_fs3_bytes,v_fs4_blocks,v_fs4_bytes, v_full_blocks,v_full_bytes); 
dbms_output.put_line('Unformatted Blocks = ' || v_unformatted_blocks); 
dbms_output.put_line('Unformatted Bytes = ' || v_unformatted_bytes); 
dbms_output.put_line('FS1 Bytes (at least 0 to 25% free space) = ' || v_fs1_bytes); 
dbms_output.put_line('FS1 Blocks(at least 0 to 25% free space) = ' || v_fs1_blocks); 
dbms_output.put_line('FS2 Bytes (at least 25 to 50% free space)= ' || v_fs2_bytes); 
dbms_output.put_line('FS2 Blocks(at least 25 to 50% free space)= ' || v_fs2_blocks); 
dbms_output.put_line('FS3 Bytes (at least 50 to 75% free space) = ' || v_fs3_bytes); 
dbms_output.put_line('FS3 Blocks(at least 50 to 75% free space) = ' || v_fs3_blocks); 
dbms_output.put_line('FS4 Bytes (at least 75 to 100% free space) = ' || v_fs4_bytes); 
dbms_output.put_line('FS4 Blocks(at least 75 to 100% free space)= ' || v_fs4_blocks); 
dbms_output.put_line('Full Blocks in segment = ' || v_full_blocks); 
dbms_output.put_line('Full Bytes in segment = ' || v_full_bytes); 
end; 
19 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Ergebnis 
Unformatted Blocks = 0 
Unformatted Bytes = 0 
FS1 Bytes (at least 0 to 25% free space) = 8192 
FS1 Blocks(at least 0 to 25% free space) = 1 
FS2 Bytes (at least 25 to 50% free space)= 0 
FS2 Blocks(at least 25 to 50% free space)= 0 
FS3 Bytes (at least 50 to 75% free space) = 0 
FS3 Blocks(at least 50 to 75% free space) = 0 
FS4 Bytes (at least 75 to 100% free space) = 425984 
FS4 Blocks(at least 75 to 100% free space)= 52 
. 
Full Blocks in segment = 11070 
Full Bytes in segment = 90685440 
PL/SQL procedure successfully completed. 
20 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
DBMS_SPACE für SecureFiles 
DBMS_SPACE.SPACE_USAGE(segment_owner IN VARCHAR2, 
segment_name IN VARCHAR2, 
segment_type IN VARCHAR2, 
segment_size_blocks OUT NUMBER, 
segment_size_bytes OUT NUMBER, 
used_blocks OUT NUMBER, 
used_bytes OUT NUMBER, 
expired_blocks OUT NUMBER, 
expired_bytes OUT NUMBER, 
 Unbedingt separates LOB Segment mitberücksichtigen! 
 SHRINK Kommando gibt es nicht mit SecureFiles! 
21 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 
unexpired_blocks OUT NUMBER, 
unexpired_bytes OUT NUMBER, 
partition_name IN VARCHAR2 DEFAULT NULL);
Wie groß ist eine Tabelle? 
 Umfangreiches Beispiel, das alle möglichen Segmentarten 
berücksichtigt 
 http://sql-plsql-de.blogspot.co.uk/2009/01/wie-gro-ist-eigentlich-eine-tabelle. 
html 
– Funktioniert in 11g 
– Man muß als Eigentümer angemeldet sein 
SQL SELECT * FROM table(get_space_info('SECURE_LOB')); 
SQL SELECT * FROM table (get_space_info('SALES')); 
22 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Welche Segmente sind abhängig? 
 Angabe von Segmenttypen als Zahl (1=Tabelle, 2=Nested Table usw.) 
SQL SELECT * FROM table(DBMS_SPACE.OBJECT_DEPENDENT_SEGMENTS 
(objowner = 'SH', 
objname = 'CUSTOMERS', 
partname = null, 
objtype = 1)); 
SEGMENT_OWNER SEGMENT_NAME SEGMENT_TYPE 
-------------------- ---------------------------- -------------------- 
TABLESPACE_NAME PARTITION_NAME LOB_COLUMN_NAME 
--------------- ------------------------- -------------------- 
SH CUSTOMERS TABLE 
USERS 
SH CUSTOMERS_PK INDEX 
EXAMPLE 
SH CUSTOMERS_GENDER_BIX INDEX 
23 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Im SQL Developer 
24 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Größenprognose für Tabellen und Indizes 
SQL exec DBMS_SPACE.CREATE_TABLE_COST( 
tablespace_name ='USERS', 
colinfos = create_table_cost_columns(create_table_cost_colinfo('NUMBER',4), 
create_table_cost_colinfo('VARCHAR2',30), 
create_table_cost_colinfo('NUMBER',6), 
create_table_cost_colinfo('NUMBER',4)), 
row_count = 221184, 
pct_free = 10, 
used_bytes = :used_bytes, 
alloc_bytes = :alloc_bytes); 
SQL SELECT :used_bytes, :alloc_bytes FROM dual; 
:USED_BYTES :ALLOC_BYTES 
----------- ------------ 
11771904 12582912 
 Größenprognose auch für Indizes möglich (über DDL Angabe) 
25 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Im EM 
26 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Segment Advisor 
 2 verschiedene Funktionsweisen: 
– Automatic Segment Advisor (in der Automated Maintenance Task) 
– Segment Advisor manuell (im EM oder DBMS_ADVISOR) 
 Dabei werden berücksichtigt ... 
– Tablespaces, Tabellen, Partitionen, zug. Indizes und Large Objects 
Was ist anders bei Automatic Segment Advisor? 
 – Segmente mit hoher Wachstumsrate und hoher Aktivität in einem 
Tablespace, der das Critical oder Warning Threshold überschreitet. 
– Zusätzlich: OLTP Compression Empfehlungen für ausreichend 
große Tabellen mit mindestens 3 Indizes 
28 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Segment Advisor nutzen 
 Automatic Segment Advisor in Automated Maintenance Task oder mit 
SQL execute DBMS_SPACE.AUTO_SPACE_ADVISOR_JOB_PROC; 
 Segment Advisor (manuell) mit DBMS_ADVISOR 
declare … 
begin 
-- Erzeugen einer Task 
DBMS_ADVISOR.CREATE_TASK (…); 
-- Angabe von Advisortyp (Segment,Access etc) und Objekttyp 
DBMS_ADVISOR.CREATE_OBJECT (…); 
-- zusätzliche Parameter 
DBMS_ADVISOR.SET_TASK_PARAMETER(…); 
-- Ausführung 
DBMS_ADVISOR.EXECUTE_TASK(…); 
end; 
29 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Segment Advisor - Ergebnisse 
 EM Homepage und Drill Down oder 
SQL SELECT tablespace_name, segment_owner, segment_name, 
recommendations, C1 Kommando 
FROM TABLE (DBMS_SPACE.ASA_RECOMMENDATIONS(all_runs = 'TRUE', 
show_manual = 'TRUE', show_findings = 'FALSE')); 
TABLESPACE_NAME SEGMENT_OWNE SEGMENT_NAME 
------------------------------ ------------ ---------------------- 
RECOMMENDATIONS 
----------------------------------------------------------------- 
KOMMANDO 
------------------------------------------------------------------ 
EXAMPLE SH CUST_BIG 
Enable row movement of the table SH.CUST_BIG and perform shrink, estimated 
savings is 247990931 bytes. 
alter table SH.CUST_BIG shrink space 
... 
30 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Segment Advisor im EM 
31 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Das Package DBMS_SERVICE 
32 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Datenbank Services 
 Services beschreiben Anwendungen/spezielle Funktionen 
 Jede Datenbank verfügt über einen oder mehrere Services, die im 
Datenbank Repository gespeichert sind. 
 Wenn eine Instanz startet, registriert sie sich mit einem Listener, indem 
sie einen Service oder mehrere Services nutzt. 
 Der Listener wird über die dynamische Registrierung des PMONs 
informiert und leitet dann die Verbindungen zwischen Client und 
Instanz weiter. 
33 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Einsatz von Services 
 Unabdingbar in RAC und Data Guard Umgebungen 
 Wichtige Informationsquelle beim Monitoren und Tunen 
– V$ Views wie v$session, 
v$service_event etc. 
– AWR Report 
– SQL Monitoring etc. 
– Scheduler Jobs 
 Wichtiger Bestandteil des Database Resource Managers 
 Unabdingbar in 12c mit Multitenant Architektur! 
– Zugriff über Datenbank Service (nicht Instancename) 
– Name der PDB als Service 
34 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Erzeugen von Services 
 Graphisch mit Net Configuration Assistant/Net Manager 
– Einträge in tnsnames.ora, listener.ora, sqlnet.ora 
 DBMS_SERVICE (meist im Single Instance Umfeld) 
– Keine graphische Implementierung 
 srvctl (für Oracle Clusterware, Restart, Oracle Global Data Services) 
35 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Aufgaben im Einzelnen 
Erzeugen CREATE_SERVICE (*) 
Löschen DELETE_SERVICE (ab 12c (*)) 
Disconnect aller Sessions bzgl Service DISCONNECT_SESSION 
Attribute Ändern MODIFY_SERVICE (*) 
Starten START_SERVICE (*) 
Stoppen STOP_SERVICE (*) 
(*) Obsolet im Oracle Clusterware, Oracle Restart und Oracle Global 
Data Services.Umfeld (12c) 
36 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Services in DBA_SERVICES 
SQL SELECT name, network_name FROM dba_services; 
NAME NETWORK_NAME 
------------------------- ------------------------------ 
SYS$BACKGROUND 
SYS$USERS 
orclXDB orclXDB 
orcl orcl 
highprio highprio.de.oracle.com 
 orcl: Default Service Name = globale Datenbank Name 
 SYS$BACKGROUND und SYS$USERS: interne Services 
 orclXDB: Service zur Nutzung der XDB 
 highprio: user definierter Service 
37 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Einfaches Monitoring 
 Views: dba_services, v$services, v$service_stats und v$session 
SQL SELECT service_name, stat_name, value FROM v$service_stats 
WHERE service_name IN ('orcl','TEST','XYZ'); 
SERVICE_NAME STAT_NAME VALUE 
-------------- ----------------- ---------- 
XYZ logons cumulative 1 
orcl logons cumulative 201 
TEST logons cumulative 1 
XYZ user calls 17 
orcl user calls 588456 
TEST user calls 17 
XYZ DB time 56341 
orcl DB time 881701076 
TEST DB time 60114 
XYZ DB CPU 16000 ... 
38 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Verwendung 
 Service anlegen (auch mit weiteren Parametern) 
SQL exec DBMS_SERVICE.CREATE_SERVICE( 
SERVICE_NAME = 'highprio', -- intern 
NETWORK_NAME = 'highprio.de.oracle.com'); -- zur Verbindung 
 Service starten (z.B. auch Trigger after startup on database) 
exec DBMS_SERVICE.START_SERVICE('highprio'); 
 Connect (z.B mit Easy Connect) 
sqlplus benutzer/passwort@host:port/highprio.de.oracle.com 
 Verbindungsabbau der Sessions 
exec DBMS_SERVICE.DISCONNECT_SESSION ( 
service_name = 'highprio', 
disconnect_option = DBMS_SERVICE.POST_TRANSACTION); 
39 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Das Package DBMS_FLASHBACK_ARCHIVE 
40 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Aufgaben und Funktionen 
 Wozu überhaupt all diese Flashback Technologien? 
– Abfragen um Informationen aus der Vergangenheit zu selektieren 
– Rollback von Transaktionen 
– Wiederherstellen von gelöschten Tabellen 
– Zurücksetzen der gesamten Datenbank ohne Point-in-Time Recovery 
Zusätzlich seit Oracle 11g: Versionierung der Daten und Schutz vor 
 Zugriff mit Flashback Data Archive 
 Seit 11.2.0.4 steht die Verwendung von Flashback Data Archive 
ohne Optimierung in allen Editionen oder mit Optimierung mit 
Advanced Compression Option zur Verfügung! 
41 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Flashback Data Archive Einrichten 
 Archive einrichten 
CREATE FLASHBACK ARCHIVE fla_10y TABLESPACE tbs1 
QUOTA 100G RETENTION 10 YEAR; 
ALTER FLASHBACK DATA ARCHIVE archiv1 SET DEFAULT; … 
 Aktivierung über einzelne Tabellen 
CREATE TABLE test(ang_nr NUMBER,… ) FLASHBACK ARCHIVE fla_10y 
ALTER TABLE emp FLASHBACK ARCHIVE; 
 Zugriff 
SELECT * FROM emp AS OF TIMESTAMP 
TO_TIMESTAMP('29.10.07 14:01', 'dd.mm.yy hh24:mi') 
WHERE ename = 'KING' 
42 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Monitoren 
SQL SELECT * FROM user_flashback_archive_tables; 
TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NA 
------------------------------ ---------- -------------------- 
ARCHIVE_TABLE_NAME STATUS 
----------------------------------------------------- --------- 
CUSTOMERS SH FLA_10Y 
SYS_FBA_HIST_110158 ENABLED 
COUNTRIES SH FLA_10Y 
SYS_FBA_HIST_92375 ENABLED 
43 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Hintergrund 
 Basis der Archive sind Undo-Informationen 
– Datenbank muß automatisches Undo-Management nutzen 
 Undo-Informationen werden nicht gelöscht, bis diese archiviert worden 
sind 
 Daten werden asynchron von einem eigenen Hintergrundprozess 
(fbda) erfasst 
– Default Capture Intervall 5 Minuten 
– Capture Intervall wird in Abhängigkeit von der Systemauslastung 
automatisch geändert 
– Der Prozess versucht, die Undo-Informationen aus dem Buffer Cache zu 
lesen 
44 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Wichtig zu wissen 
 Nicht alle Änderungen werden unterstützt – allerdings 
– ADD, DROP, RENAME, MODIFY Column 
– ADD, DROP, RENAME Constraint 
– DROP, TRUNCATE Partition 
– RENAME, TRUNCATE Table 
 Alle anderen Änderungen möglich mit 
– DBMS_FLASHBACK_ARCHIVE.DISASSOCIATE_FBA 
– DBMS_FLASHBACK_ARCHIVE.REASSOCIATE_FBA 
 Abfragen auch über DDL Änderungen hinweg 
45 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
12c: Ein Kommando für mehrere Tabellen 
 FDA auf logischer Applikationsebene 
execute DBMS_FLASHBACK_ARCHIVE.REGISTER_APPLICATION( 
application_name ='APP1', flashback_archive_name ='FLA_10Y') 
execute DBMS_FLASHBACK_ARCHIVE.ADD_TABLE_TO_APPLICATION 
(application_name='APP1', table_name='T1', schema_name='SH') 
execute DBMS_FLASHBACK_ARCHIVE.ADD_TABLE_TO_APPLICATION 
(application_name='APP1', table_name='T2', schema_name='SH') 
execute DBMS_FLASHBACK_ARCHIVE.ENABLE_APPLICATION( 
46 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 
application_name='APP1')
12c: Sogar Locking möglich 
 Falls FDA eingeschaltet ist auch ein Locking möglich 
execute DBMS_FLASHBACK_ARCHIVE.LOCK_DOWN_APPLICATION( 
application_name = 'APP1') 
SQL update t1 set country_id=100 …. 
* 
ERROR at line 1: 
ORA-55622: DML, ALTER and CREATE UNIQUE INDEX operations are 
not allowed on table SH.COPY_COUNTRIES 
47 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
12c: Temporal Validity und FDA 
 Die Gültigkeit einer Tabellenzeile wird über 
zusätzliche Spalten wie “Gültig Von und Gültig Bis“ definiert 
 SQL Abfrage zu einem Zeitpunkt mit gültigen Rows möglich 
 Nützlich für ILM oder Flashback Abfragen 
Bei Änderungen 
werden Spalten 
Gültig Von und Gültig Bis 
48 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 
geschrieben Abfragen erfassen nur 
gültige Zeilen
12c: Valid Time Temporal 
 Hinzufügen von “hidden Spalten” durch CREATE/ALTER 
ALTER TABLE emp_neu ADD PERIOD FOR emp_valid; 
Table created. 
SELECT column_name, hidden_column, data_type 
FROM user_tab_cols WHERE table_name='EMP_NEU'; 
COLUMN_NAME HID DATA_TYPE 
--------------------------- --- -------------------------- 
EMP_VALID YES NUMBER 
EMP_VALID_START YES TIMESTAMP(6) WITH TIME 
ZONE 
EMP_VALID_END YES TIMESTAMP(6) WITH TIME 
ZONE 
... 
EMPNO NO NUMBER 
49 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Valid Time Temporal mit FDA 
 Mit DBMS_FLASHBACK_ARCHIVE für alle Queries in der Session 
execute DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME( 
LEVEL = 'ASOF', 
QUERY_TIME = TO_DATE('20-JAN-2007', 'DD-MON-YYYY')) 
execute DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME( 
LEVEL = 'ALL') 
 Kein AS OF beim SELECT mehr erforderlich … 
SELECT * from emp_neu WHERE ename = 'Miller'; 
50 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Weitere Neuigkeiten in 12c 
 Import von weiteren zusätzlichen Historien Informationen mit einer 
temporären Hilfstabelle 
– CREATE_HISTORY_TEMP_TABLE 
– IMPORT_HISTORY 
 User Kontext Informationen tracken über 
– SET_SYS_CONTEXT 
– GET_SYS_CONTEXT 
51 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Zusammenfassung 
Package Einsatz 
DBMS_QOPATCH Patch Informationen mit PL/SQL 
DBMS_SPACE Segment Speicherplatz ausgeben 
DBMS_SERVICE DB Services anlegen und verwalten 
DBMS_FLASHBACK_ARCHIVE Flashback Data Archive nutzen 
52 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Nützliche Informationen und Links 
 Alle Veranstaltungen und Links unter 
– tinyurl.com/oraclebudb 
 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 PL/SQL 
Packages am 05. Juni 
 Download: apex.oracle.com/folien 
Schlüsselwort: webinar_packages2 
53 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (6)

Oracle Old Features DOAG 2011
Oracle Old Features DOAG 2011Oracle Old Features DOAG 2011
Oracle Old Features DOAG 2011
 
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12c
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12cMarek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12c
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12c
 
Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...
Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...
Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...
 
Daos
DaosDaos
Daos
 
JBoss AS / EAP Clustering
JBoss AS / EAP  ClusteringJBoss AS / EAP  Clustering
JBoss AS / EAP Clustering
 
SQL Server 2012 070-462 prüfung deutsch
SQL Server 2012 070-462 prüfung deutschSQL Server 2012 070-462 prüfung deutsch
SQL Server 2012 070-462 prüfung deutsch
 

Andere mochten auch

Exposicion 2 videojuegos
Exposicion 2 videojuegosExposicion 2 videojuegos
Exposicion 2 videojuegos
saluba
 
Practica califica de informatica juridica
Practica califica de informatica juridicaPractica califica de informatica juridica
Practica califica de informatica juridica
alaydahuanca
 
Propuesta umas web
Propuesta umas webPropuesta umas web
Propuesta umas web
jevb88
 
Mis dibujos animados favoritos
Mis dibujos animados favoritosMis dibujos animados favoritos
Mis dibujos animados favoritos
lolacorazon
 
Las tic´s financiera
Las tic´s financieraLas tic´s financiera
Las tic´s financiera
CKLEBER
 
Asi hicimos nuestro blog 6° A
Asi  hicimos  nuestro  blog 6° AAsi  hicimos  nuestro  blog 6° A
Asi hicimos nuestro blog 6° A
Edwil Aguilar
 

Andere mochten auch (20)

Implementierbare Sicherheitsregeln im Enterprise Manager
Implementierbare Sicherheitsregeln im Enterprise ManagerImplementierbare Sicherheitsregeln im Enterprise Manager
Implementierbare Sicherheitsregeln im Enterprise Manager
 
Marcos de referencia
Marcos de referenciaMarcos de referencia
Marcos de referencia
 
eqm fotos del común
eqm fotos del común eqm fotos del común
eqm fotos del común
 
Seguimiento de autoaprendizaje
Seguimiento de autoaprendizajeSeguimiento de autoaprendizaje
Seguimiento de autoaprendizaje
 
Introducción a la informática
Introducción a la informáticaIntroducción a la informática
Introducción a la informática
 
Exposicion 2 videojuegos
Exposicion 2 videojuegosExposicion 2 videojuegos
Exposicion 2 videojuegos
 
Producto final
Producto finalProducto final
Producto final
 
Practica califica de informatica juridica
Practica califica de informatica juridicaPractica califica de informatica juridica
Practica califica de informatica juridica
 
Propuesta umas web
Propuesta umas webPropuesta umas web
Propuesta umas web
 
LIBRO INTELIGENCIAS MULTIPLES
LIBRO  INTELIGENCIAS   MULTIPLESLIBRO  INTELIGENCIAS   MULTIPLES
LIBRO INTELIGENCIAS MULTIPLES
 
Mis dibujos animados favoritos
Mis dibujos animados favoritosMis dibujos animados favoritos
Mis dibujos animados favoritos
 
Egipto Historia
Egipto HistoriaEgipto Historia
Egipto Historia
 
Poolias Kandidatenbroschüre
Poolias KandidatenbroschürePoolias Kandidatenbroschüre
Poolias Kandidatenbroschüre
 
Art & The Natural Environment
Art & The Natural EnvironmentArt & The Natural Environment
Art & The Natural Environment
 
Las tic´s financiera
Las tic´s financieraLas tic´s financiera
Las tic´s financiera
 
Asi hicimos nuestro blog 6° A
Asi  hicimos  nuestro  blog 6° AAsi  hicimos  nuestro  blog 6° A
Asi hicimos nuestro blog 6° A
 
HTML
HTMLHTML
HTML
 
Revolverblatt | März - Mai 2015
 Revolverblatt | März - Mai 2015 Revolverblatt | März - Mai 2015
Revolverblatt | März - Mai 2015
 
Joan miró 2
Joan miró 2Joan miró 2
Joan miró 2
 
Balanced scorecard
Balanced scorecardBalanced scorecard
Balanced scorecard
 

Ähnlich wie Ausgewählte PL/SQL Packages (2)

Oracle workshop sessiontracing
Oracle workshop sessiontracingOracle workshop sessiontracing
Oracle workshop sessiontracing
ciganek
 

Ähnlich wie Ausgewählte PL/SQL Packages (2) (20)

Oracle Text 12c New Features
Oracle Text 12c New FeaturesOracle Text 12c New Features
Oracle Text 12c New Features
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
 
Datenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerDatenbank-Hausputz für Einsteiger
Datenbank-Hausputz für Einsteiger
 
X$Tabellen und SgaScanner, DOAG 2009
X$Tabellen und SgaScanner, DOAG 2009X$Tabellen und SgaScanner, DOAG 2009
X$Tabellen und SgaScanner, DOAG 2009
 
Real Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
Real Application Testing - DOAG SIG Database 2010 - Simon DickmeißReal Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
Real Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
 
Automatisiertes disaster recovery testing mit der oracle cloud
Automatisiertes disaster recovery testing mit der oracle cloudAutomatisiertes disaster recovery testing mit der oracle cloud
Automatisiertes disaster recovery testing mit der oracle cloud
 
Oracle workshop sessiontracing
Oracle workshop sessiontracingOracle workshop sessiontracing
Oracle workshop sessiontracing
 
APEX 5.1 - Architektur, Installation & Betrieb
APEX 5.1 - Architektur, Installation & BetriebAPEX 5.1 - Architektur, Installation & Betrieb
APEX 5.1 - Architektur, Installation & Betrieb
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
Hybrid Partitioned Tables in Oracle Database 19c
Hybrid Partitioned Tables in Oracle Database 19cHybrid Partitioned Tables in Oracle Database 19c
Hybrid Partitioned Tables in Oracle Database 19c
 
MT AG: Sesam oeffne Dich
MT AG: Sesam oeffne DichMT AG: Sesam oeffne Dich
MT AG: Sesam oeffne Dich
 
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 
01 sqlplus
01 sqlplus01 sqlplus
01 sqlplus
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2
 
PureSQL APEX Connect
PureSQL APEX ConnectPureSQL APEX Connect
PureSQL APEX Connect
 
Pure SQL for batch processing
Pure SQL for batch processingPure SQL for batch processing
Pure SQL for batch processing
 

Ausgewählte PL/SQL Packages (2)

  • 1. Ausgewählte PL/SQL Packages (Teil 2) DBMS_QOPATCH DBMS_SPACE DBMS_SERVICE DBMS_FLASHBACK_ARCHIVE Ulrike Schwinn (Follow @uschwinn) Business Unit Database ORACLE Deutschland B.V. & Co. KG.
  • 2. In Teil 1 ... 1. DBMS_XDB_CONFIG – XDB Port Konfiguration 2. DBMS_COMPRESSION – Compression Ratio, Komprimierte Zeilen 3. DBMS_REDEFINITION – Online Neudefinition von Tabellen 4. DBMS_SQL_MONITOR – Real Time Monitoring 5. DBMS_PARALLEL_EXECUTE – Manuelle Parallellisierung Folien dazu unter http://apex.oracle.com/folien Schlüsselwort: webinar_packages1 2 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 3. Heutige Agenda 1. DBMS_QOPATCH – Informationen zu Patches mit PL/SQL 2. DBMS_SPACE – Platzverbrauch abschätzen 3. DBMS_SERVICE – Services anlegen, löschen, ändern 4. DBMS_FLASHBACK_ARCHIVE – Flashback Data Archive Funktionen 3 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 4. Etwas Grundsätzliches 4 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 5. Wie findet man obsolete Packages? Upgrade Guide 12c Release 1 (12.1) in Kapitel 8 “Deprecated and Desupported Features for Oracle Database 12c” 5 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 6. Wie findet man obsolete Packages? SELECT name FROM (SELECT synonym_name name FROM dba_synonyms@system11g WHERE table_name in (SELECT object_name name FROM dba_objects@system11g WHERE object_type = 'PACKAGE') MINUS SELECT synonym_name name FROM dba_synonyms WHERE table_name IN (SELECT object_name name FROM dba_objects WHERE object_type = 'PACKAGE')) DBMS_DBLINK DBMS_EXPFIL DBMS_RLMGR STATSPACK … 6 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 7. Wie findet man PL/SQL Objekte überhaupt? Data Dictionary – ALL_OBJECTS mit object_type=PACKAGE|PACKAGE_BODY|FUNCTION|PROCEDURE – ALL_SOURCE mit type=PACKAGE|PACKAGE_BODY|FUNCTION|PROCEDURE Mit SQL Developer 4.0 – Funktion Find Database Objects 7 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 8. Im SQL Developer 8 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 9. Im SQL Developer 9 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 10. Das Package DBMS_QOPATCH 10 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 11. Aufgaben und Funktionen Patch Informationen über OPATCH abfragen opatch lsinventory -XML In 12c nun auch in PL/SQL mit DBMS_QOPATCH Einige wichtige Funktionen: – GET_OPATCH_BUGS: Bug Liste für bestimmmte Patch Nummer – GET_OPATCH_ LIST: Patch Liste installierter Patches – GET_OPATCH_LSINVENTORY: Gesamte opatch Inventory – IS_PATCH_INSTALLED: Abfrage auf einzelne Patches Ausgabe in XML 11 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 12. Gesamtes Inventory in XML Format SQL set long 2000000000 pagesize 0 linesize 32000 SQL SELECT DBMS_QOPATCH.GET_OPATCH_LSINVENTORY FROM dual; GET_OPATCH_LSINVENTORY ------------------------------------------------------------ ?xml version=1.0 encoding=CP850 standalone='yes'? InventoryInstance oracleHome UIdOracleHome-75909c1d-7269-45d1-802e- 75deb9104053/UId targetTypeIdoracle_home/targetTypeId patchingModeloneoff/patchingModel path/opt/oracle/product/12.1.0/db/path targetTypeIdoracle_home/targetTypeId inventoryLocation/opt/oraInventory/inventoryLocation … 12 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 13. Formatierte Ausgabe von Einzelpatches http://sql-plsql-de.blogspot.co.uk/2014/02/sql-anstatt-opatch-lsinventory-mit.html SQL set long 2000000000 pagesize 0 linesize 32000 SQL SELECT patch_id, apply_time, rollbackable FROM xmltable ('//patch' passing DBMS_QOPATCH.GET_OPATCH_LSINVENTORY COLUMNS patch_id number PATH 'patchID', apply_time timestamp with time zone PATH 'appliedDate', rollbackable varchar2(10) PATH 'rollbackable') PATCH_ID APPLY_TIME ROLLBACKAB ---------- ----------------------------------- ---------- 16527374 08.11.13 14:02:02,000000 +01:00 true 17027533 08.11.13 10:24:12,000000 +01:00 true 13 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 14. Abfrage auf einzelne Patches SQL SELECT DBMS_QOPATCH.IS_PATCH_INSTALLED(17027533) FROM dual; DBMS_QOPATCH.IS_PATCH_INSTALLED(17027533) ----------------------------------------- patchInfopatchID xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance 17027533/patchIDappliedDate xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance2013-10- 22T14:00:51+02:00/appliedDatesqlPatch xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance true/sqlPatchsqlPatchDatabaseStartupMode xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance normal/sqlPatchDatabaseStartupMode/patchInfo 14 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 15. Das Package DBMS_SPACE 15 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 16. Aufgaben und Funktionen Über DBA_SEGMENTS hinaus ... – Informiert detailliert über den Speicherplatz von Segmenten – Auch für genaue Analyse von Securefiles geeignet – Schnittstelle für automatischen Segment Advisor – Trendberechnungen – Anzeige der abhängigen Objekte Anwendungsbeispiele – Compression Tests zur Analyse des genauen Platzverbrauchs – Unterstützung bei SQL Statement Analyse 16 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 17. Wichtige Komponenten im Einzelnen Genaue Speicheranalyse (im ASSM) SPACE_USAGE Freier Platz (im ASSM) UNUSED_SPACE Kosten für Index/Tabellen Create CREATE_[INDEX/TABLE]_COST Abhängige Objekte OBJECT_DEPENDENT_SEGMENTS Objekt Wachstum OBJECT_GROWTH_TREND Segment Advisor automatisch Segment Advisor Empfehlungen 17 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. AUTO_SPACE_ADVISOR_JOB_PROC ASA_RECOMMENDATIONS
  • 18. Automatic Segment Space Management (ASSM) Freier und genutzter Platz liegt als Bitmap vor. Ein Bitmap beschreibt wie voll ein Block ist wie z.B. (0-25, 25-50, 50-75, 75-100%) Die Funktion SPACE_USAGE bestimmt den genauen Platzverbrauch Geignet für – TABLE, TABLE PARTITION, BMB BMB BMB BMB BMB TABLE SUBPARTITION,INDEX, INDEX PARTITION/SUBPARTITION CLUSTER, LOBs 18 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. BMB BMB BLOCK
  • 19. SPACE_USAGE für Tabellen set serveroutput on declare . v_unformatted_blocks number; v_unformatted_bytes number; v_fs1_blocks number; v_fs1_bytes number; v_fs2_blocks number; v_fs2_bytes number; v_fs3_blocks number; v_fs3_bytes number; v_fs4_blocks number; v_fs4_bytes number; v_full_blocks number; v_full_bytes number; begin dbms_space.space_usage('SCOTT','EMPLOYEE','table', v_unformatted_blocks,v_unformatted_bytes,v_fs1_blocks,v_fs1_bytes,v_fs2_blocks, v_fs2_bytes,v_fs3_blocks,v_fs3_bytes,v_fs4_blocks,v_fs4_bytes, v_full_blocks,v_full_bytes); dbms_output.put_line('Unformatted Blocks = ' || v_unformatted_blocks); dbms_output.put_line('Unformatted Bytes = ' || v_unformatted_bytes); dbms_output.put_line('FS1 Bytes (at least 0 to 25% free space) = ' || v_fs1_bytes); dbms_output.put_line('FS1 Blocks(at least 0 to 25% free space) = ' || v_fs1_blocks); dbms_output.put_line('FS2 Bytes (at least 25 to 50% free space)= ' || v_fs2_bytes); dbms_output.put_line('FS2 Blocks(at least 25 to 50% free space)= ' || v_fs2_blocks); dbms_output.put_line('FS3 Bytes (at least 50 to 75% free space) = ' || v_fs3_bytes); dbms_output.put_line('FS3 Blocks(at least 50 to 75% free space) = ' || v_fs3_blocks); dbms_output.put_line('FS4 Bytes (at least 75 to 100% free space) = ' || v_fs4_bytes); dbms_output.put_line('FS4 Blocks(at least 75 to 100% free space)= ' || v_fs4_blocks); dbms_output.put_line('Full Blocks in segment = ' || v_full_blocks); dbms_output.put_line('Full Bytes in segment = ' || v_full_bytes); end; 19 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 20. Ergebnis Unformatted Blocks = 0 Unformatted Bytes = 0 FS1 Bytes (at least 0 to 25% free space) = 8192 FS1 Blocks(at least 0 to 25% free space) = 1 FS2 Bytes (at least 25 to 50% free space)= 0 FS2 Blocks(at least 25 to 50% free space)= 0 FS3 Bytes (at least 50 to 75% free space) = 0 FS3 Blocks(at least 50 to 75% free space) = 0 FS4 Bytes (at least 75 to 100% free space) = 425984 FS4 Blocks(at least 75 to 100% free space)= 52 . Full Blocks in segment = 11070 Full Bytes in segment = 90685440 PL/SQL procedure successfully completed. 20 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 21. DBMS_SPACE für SecureFiles DBMS_SPACE.SPACE_USAGE(segment_owner IN VARCHAR2, segment_name IN VARCHAR2, segment_type IN VARCHAR2, segment_size_blocks OUT NUMBER, segment_size_bytes OUT NUMBER, used_blocks OUT NUMBER, used_bytes OUT NUMBER, expired_blocks OUT NUMBER, expired_bytes OUT NUMBER, Unbedingt separates LOB Segment mitberücksichtigen! SHRINK Kommando gibt es nicht mit SecureFiles! 21 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. unexpired_blocks OUT NUMBER, unexpired_bytes OUT NUMBER, partition_name IN VARCHAR2 DEFAULT NULL);
  • 22. Wie groß ist eine Tabelle? Umfangreiches Beispiel, das alle möglichen Segmentarten berücksichtigt http://sql-plsql-de.blogspot.co.uk/2009/01/wie-gro-ist-eigentlich-eine-tabelle. html – Funktioniert in 11g – Man muß als Eigentümer angemeldet sein SQL SELECT * FROM table(get_space_info('SECURE_LOB')); SQL SELECT * FROM table (get_space_info('SALES')); 22 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 23. Welche Segmente sind abhängig? Angabe von Segmenttypen als Zahl (1=Tabelle, 2=Nested Table usw.) SQL SELECT * FROM table(DBMS_SPACE.OBJECT_DEPENDENT_SEGMENTS (objowner = 'SH', objname = 'CUSTOMERS', partname = null, objtype = 1)); SEGMENT_OWNER SEGMENT_NAME SEGMENT_TYPE -------------------- ---------------------------- -------------------- TABLESPACE_NAME PARTITION_NAME LOB_COLUMN_NAME --------------- ------------------------- -------------------- SH CUSTOMERS TABLE USERS SH CUSTOMERS_PK INDEX EXAMPLE SH CUSTOMERS_GENDER_BIX INDEX 23 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 24. Im SQL Developer 24 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 25. Größenprognose für Tabellen und Indizes SQL exec DBMS_SPACE.CREATE_TABLE_COST( tablespace_name ='USERS', colinfos = create_table_cost_columns(create_table_cost_colinfo('NUMBER',4), create_table_cost_colinfo('VARCHAR2',30), create_table_cost_colinfo('NUMBER',6), create_table_cost_colinfo('NUMBER',4)), row_count = 221184, pct_free = 10, used_bytes = :used_bytes, alloc_bytes = :alloc_bytes); SQL SELECT :used_bytes, :alloc_bytes FROM dual; :USED_BYTES :ALLOC_BYTES ----------- ------------ 11771904 12582912 Größenprognose auch für Indizes möglich (über DDL Angabe) 25 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 26. Im EM 26 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 27. Segment Advisor 2 verschiedene Funktionsweisen: – Automatic Segment Advisor (in der Automated Maintenance Task) – Segment Advisor manuell (im EM oder DBMS_ADVISOR) Dabei werden berücksichtigt ... – Tablespaces, Tabellen, Partitionen, zug. Indizes und Large Objects Was ist anders bei Automatic Segment Advisor? – Segmente mit hoher Wachstumsrate und hoher Aktivität in einem Tablespace, der das Critical oder Warning Threshold überschreitet. – Zusätzlich: OLTP Compression Empfehlungen für ausreichend große Tabellen mit mindestens 3 Indizes 28 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 28. Segment Advisor nutzen Automatic Segment Advisor in Automated Maintenance Task oder mit SQL execute DBMS_SPACE.AUTO_SPACE_ADVISOR_JOB_PROC; Segment Advisor (manuell) mit DBMS_ADVISOR declare … begin -- Erzeugen einer Task DBMS_ADVISOR.CREATE_TASK (…); -- Angabe von Advisortyp (Segment,Access etc) und Objekttyp DBMS_ADVISOR.CREATE_OBJECT (…); -- zusätzliche Parameter DBMS_ADVISOR.SET_TASK_PARAMETER(…); -- Ausführung DBMS_ADVISOR.EXECUTE_TASK(…); end; 29 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 29. Segment Advisor - Ergebnisse EM Homepage und Drill Down oder SQL SELECT tablespace_name, segment_owner, segment_name, recommendations, C1 Kommando FROM TABLE (DBMS_SPACE.ASA_RECOMMENDATIONS(all_runs = 'TRUE', show_manual = 'TRUE', show_findings = 'FALSE')); TABLESPACE_NAME SEGMENT_OWNE SEGMENT_NAME ------------------------------ ------------ ---------------------- RECOMMENDATIONS ----------------------------------------------------------------- KOMMANDO ------------------------------------------------------------------ EXAMPLE SH CUST_BIG Enable row movement of the table SH.CUST_BIG and perform shrink, estimated savings is 247990931 bytes. alter table SH.CUST_BIG shrink space ... 30 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 30. Segment Advisor im EM 31 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 31. Das Package DBMS_SERVICE 32 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 32. Datenbank Services Services beschreiben Anwendungen/spezielle Funktionen Jede Datenbank verfügt über einen oder mehrere Services, die im Datenbank Repository gespeichert sind. Wenn eine Instanz startet, registriert sie sich mit einem Listener, indem sie einen Service oder mehrere Services nutzt. Der Listener wird über die dynamische Registrierung des PMONs informiert und leitet dann die Verbindungen zwischen Client und Instanz weiter. 33 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 33. Einsatz von Services Unabdingbar in RAC und Data Guard Umgebungen Wichtige Informationsquelle beim Monitoren und Tunen – V$ Views wie v$session, v$service_event etc. – AWR Report – SQL Monitoring etc. – Scheduler Jobs Wichtiger Bestandteil des Database Resource Managers Unabdingbar in 12c mit Multitenant Architektur! – Zugriff über Datenbank Service (nicht Instancename) – Name der PDB als Service 34 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 34. Erzeugen von Services Graphisch mit Net Configuration Assistant/Net Manager – Einträge in tnsnames.ora, listener.ora, sqlnet.ora DBMS_SERVICE (meist im Single Instance Umfeld) – Keine graphische Implementierung srvctl (für Oracle Clusterware, Restart, Oracle Global Data Services) 35 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 35. Aufgaben im Einzelnen Erzeugen CREATE_SERVICE (*) Löschen DELETE_SERVICE (ab 12c (*)) Disconnect aller Sessions bzgl Service DISCONNECT_SESSION Attribute Ändern MODIFY_SERVICE (*) Starten START_SERVICE (*) Stoppen STOP_SERVICE (*) (*) Obsolet im Oracle Clusterware, Oracle Restart und Oracle Global Data Services.Umfeld (12c) 36 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 36. Services in DBA_SERVICES SQL SELECT name, network_name FROM dba_services; NAME NETWORK_NAME ------------------------- ------------------------------ SYS$BACKGROUND SYS$USERS orclXDB orclXDB orcl orcl highprio highprio.de.oracle.com orcl: Default Service Name = globale Datenbank Name SYS$BACKGROUND und SYS$USERS: interne Services orclXDB: Service zur Nutzung der XDB highprio: user definierter Service 37 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 37. Einfaches Monitoring Views: dba_services, v$services, v$service_stats und v$session SQL SELECT service_name, stat_name, value FROM v$service_stats WHERE service_name IN ('orcl','TEST','XYZ'); SERVICE_NAME STAT_NAME VALUE -------------- ----------------- ---------- XYZ logons cumulative 1 orcl logons cumulative 201 TEST logons cumulative 1 XYZ user calls 17 orcl user calls 588456 TEST user calls 17 XYZ DB time 56341 orcl DB time 881701076 TEST DB time 60114 XYZ DB CPU 16000 ... 38 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 38. Verwendung Service anlegen (auch mit weiteren Parametern) SQL exec DBMS_SERVICE.CREATE_SERVICE( SERVICE_NAME = 'highprio', -- intern NETWORK_NAME = 'highprio.de.oracle.com'); -- zur Verbindung Service starten (z.B. auch Trigger after startup on database) exec DBMS_SERVICE.START_SERVICE('highprio'); Connect (z.B mit Easy Connect) sqlplus benutzer/passwort@host:port/highprio.de.oracle.com Verbindungsabbau der Sessions exec DBMS_SERVICE.DISCONNECT_SESSION ( service_name = 'highprio', disconnect_option = DBMS_SERVICE.POST_TRANSACTION); 39 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 39. Das Package DBMS_FLASHBACK_ARCHIVE 40 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 40. Aufgaben und Funktionen Wozu überhaupt all diese Flashback Technologien? – Abfragen um Informationen aus der Vergangenheit zu selektieren – Rollback von Transaktionen – Wiederherstellen von gelöschten Tabellen – Zurücksetzen der gesamten Datenbank ohne Point-in-Time Recovery Zusätzlich seit Oracle 11g: Versionierung der Daten und Schutz vor Zugriff mit Flashback Data Archive Seit 11.2.0.4 steht die Verwendung von Flashback Data Archive ohne Optimierung in allen Editionen oder mit Optimierung mit Advanced Compression Option zur Verfügung! 41 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 41. Flashback Data Archive Einrichten Archive einrichten CREATE FLASHBACK ARCHIVE fla_10y TABLESPACE tbs1 QUOTA 100G RETENTION 10 YEAR; ALTER FLASHBACK DATA ARCHIVE archiv1 SET DEFAULT; … Aktivierung über einzelne Tabellen CREATE TABLE test(ang_nr NUMBER,… ) FLASHBACK ARCHIVE fla_10y ALTER TABLE emp FLASHBACK ARCHIVE; Zugriff SELECT * FROM emp AS OF TIMESTAMP TO_TIMESTAMP('29.10.07 14:01', 'dd.mm.yy hh24:mi') WHERE ename = 'KING' 42 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 42. Monitoren SQL SELECT * FROM user_flashback_archive_tables; TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NA ------------------------------ ---------- -------------------- ARCHIVE_TABLE_NAME STATUS ----------------------------------------------------- --------- CUSTOMERS SH FLA_10Y SYS_FBA_HIST_110158 ENABLED COUNTRIES SH FLA_10Y SYS_FBA_HIST_92375 ENABLED 43 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 43. Hintergrund Basis der Archive sind Undo-Informationen – Datenbank muß automatisches Undo-Management nutzen Undo-Informationen werden nicht gelöscht, bis diese archiviert worden sind Daten werden asynchron von einem eigenen Hintergrundprozess (fbda) erfasst – Default Capture Intervall 5 Minuten – Capture Intervall wird in Abhängigkeit von der Systemauslastung automatisch geändert – Der Prozess versucht, die Undo-Informationen aus dem Buffer Cache zu lesen 44 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 44. Wichtig zu wissen Nicht alle Änderungen werden unterstützt – allerdings – ADD, DROP, RENAME, MODIFY Column – ADD, DROP, RENAME Constraint – DROP, TRUNCATE Partition – RENAME, TRUNCATE Table Alle anderen Änderungen möglich mit – DBMS_FLASHBACK_ARCHIVE.DISASSOCIATE_FBA – DBMS_FLASHBACK_ARCHIVE.REASSOCIATE_FBA Abfragen auch über DDL Änderungen hinweg 45 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 45. 12c: Ein Kommando für mehrere Tabellen FDA auf logischer Applikationsebene execute DBMS_FLASHBACK_ARCHIVE.REGISTER_APPLICATION( application_name ='APP1', flashback_archive_name ='FLA_10Y') execute DBMS_FLASHBACK_ARCHIVE.ADD_TABLE_TO_APPLICATION (application_name='APP1', table_name='T1', schema_name='SH') execute DBMS_FLASHBACK_ARCHIVE.ADD_TABLE_TO_APPLICATION (application_name='APP1', table_name='T2', schema_name='SH') execute DBMS_FLASHBACK_ARCHIVE.ENABLE_APPLICATION( 46 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. application_name='APP1')
  • 46. 12c: Sogar Locking möglich Falls FDA eingeschaltet ist auch ein Locking möglich execute DBMS_FLASHBACK_ARCHIVE.LOCK_DOWN_APPLICATION( application_name = 'APP1') SQL update t1 set country_id=100 …. * ERROR at line 1: ORA-55622: DML, ALTER and CREATE UNIQUE INDEX operations are not allowed on table SH.COPY_COUNTRIES 47 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 47. 12c: Temporal Validity und FDA Die Gültigkeit einer Tabellenzeile wird über zusätzliche Spalten wie “Gültig Von und Gültig Bis“ definiert SQL Abfrage zu einem Zeitpunkt mit gültigen Rows möglich Nützlich für ILM oder Flashback Abfragen Bei Änderungen werden Spalten Gültig Von und Gültig Bis 48 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. geschrieben Abfragen erfassen nur gültige Zeilen
  • 48. 12c: Valid Time Temporal Hinzufügen von “hidden Spalten” durch CREATE/ALTER ALTER TABLE emp_neu ADD PERIOD FOR emp_valid; Table created. SELECT column_name, hidden_column, data_type FROM user_tab_cols WHERE table_name='EMP_NEU'; COLUMN_NAME HID DATA_TYPE --------------------------- --- -------------------------- EMP_VALID YES NUMBER EMP_VALID_START YES TIMESTAMP(6) WITH TIME ZONE EMP_VALID_END YES TIMESTAMP(6) WITH TIME ZONE ... EMPNO NO NUMBER 49 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 49. Valid Time Temporal mit FDA Mit DBMS_FLASHBACK_ARCHIVE für alle Queries in der Session execute DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME( LEVEL = 'ASOF', QUERY_TIME = TO_DATE('20-JAN-2007', 'DD-MON-YYYY')) execute DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME( LEVEL = 'ALL') Kein AS OF beim SELECT mehr erforderlich … SELECT * from emp_neu WHERE ename = 'Miller'; 50 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 50. Weitere Neuigkeiten in 12c Import von weiteren zusätzlichen Historien Informationen mit einer temporären Hilfstabelle – CREATE_HISTORY_TEMP_TABLE – IMPORT_HISTORY User Kontext Informationen tracken über – SET_SYS_CONTEXT – GET_SYS_CONTEXT 51 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 51. Zusammenfassung Package Einsatz DBMS_QOPATCH Patch Informationen mit PL/SQL DBMS_SPACE Segment Speicherplatz ausgeben DBMS_SERVICE DB Services anlegen und verwalten DBMS_FLASHBACK_ARCHIVE Flashback Data Archive nutzen 52 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
  • 52. Nützliche Informationen und Links Alle Veranstaltungen und Links unter – tinyurl.com/oraclebudb 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 PL/SQL Packages am 05. Juni Download: apex.oracle.com/folien Schlüsselwort: webinar_packages2 53 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.