More Related Content Similar to Ausgewählte PL/SQL Packages (2) (20) 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.
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.
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.
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.
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.
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.