Oracle metadata
Oracle Database ger information om alla tabeller , vyer , kolumner och procedurer i en databas. Denna information om information kallas metadata . Den lagras på två platser: dataordbokstabeller (åtkomst via inbyggda vyer) och ett metadataregister.
Andra relationsdatabashanteringssystem stöder en ANSI -standardmotsvarighet som kallas informationsschema .
Visningar för metadata
Det totala antalet av dessa visningar beror på Oracle-versionen, men ligger inom ett intervall på 1000.
De huvudsakliga inbyggda vyerna som får åtkomst till Oracle RDBMS- datalexikonstabeller är få och är följande:
- ALL_OBJECTS – lista över alla objekt i den aktuella databasen som är tillgängliga för den aktuella användaren;
- ALL_TABLES – lista över alla tabeller i den aktuella databasen som är tillgängliga för den aktuella användaren;
- ALL_VIEWS – lista över alla vyer i den aktuella databasen som är tillgängliga för den aktuella användaren;
- ALL_TAB_COLUMNS – lista över alla kolumner i databasen som är tillgängliga för den aktuella användaren;
- ALL_ARGUMENTS – listar argumenten för funktioner och procedurer som är tillgängliga för den aktuella användaren;
- ALL_ERRORS – listar beskrivningar av fel på alla lagrade objekt (vyer, procedurer, funktioner, paket och paketkroppar) som är tillgängliga för den aktuella användaren;
- ALL_OBJECT_SIZE – ingår för bakåtkompatibilitet med Oracle version 5;
- ALL_PROCEDURES – (från Oracle 9 och framåt) listar alla funktioner och procedurer (tillsammans med tillhörande egenskaper) som är tillgängliga för den aktuella användaren;
- ALL_SOURCE – beskriver textkällan (dvs. PL/SQL) för de lagrade objekten som är tillgängliga för den aktuella användaren;
- ALL_TRIGGERS – lista alla triggers som är tillgängliga för den aktuella användaren.
Dessutom finns det motsvarande vyer med prefixet "USER_" som endast visar de objekt som ägs av den aktuella användaren (dvs. en mer begränsad vy av metadata) och prefixet "DBA_" som visar alla objekt i databasen (dvs. en obegränsad global vy av metadata för databasinstansen). Naturligtvis kräver åtkomst till "DBA_" metadatavyer specifika privilegier.
Exempel 1: hitta tabeller
Hitta alla tabeller som har PATTERN i tabellnamnet
SELECT Owner AS Schema_Name , Table_Name FROM All_Tables WHERE Table_Name LIKE '%PATTERN%' ORDER BY Owner , Table_Name ;
Exempel 2: hitta kolumner
Hitta alla tabeller som har minst en kolumn som matchar ett specifikt MÖNSTER i kolumnnamnet
SELECT Owner AS Schema_Name , Table_Name , Column_Name FROM All_Tab_Columns WHERE Column_Name LIKE '%PATTERN%' BESTÄLLNING AV 1 , 2 , 3 ;
Exempel 3: räkna rader med kolumner
Uppskatta ett totalt antal rader i alla tabeller som innehåller ett kolumnnamn som matchar PATTERN (detta är SQL*Plus- specifikt skript)
KOLUMN DUMMY NOPRINT BERÄKNA SUMMA AV NUM_RADER PÅ DUMMY BREAK ON DUMMY VÄLJ NULL DUMMY , T. _ TABLE_NAME , C . COLUMN_NAME , T . NUM_ROWS FRÅN ALLA_TABLER T , ALLA_TAB_COLUMNS C WHERE T . TABLE_NAME = C . TABLE_NAME OCH C . COLUMN_NAME SOM "%PATTERN%" OCH T . ÄGARE = C . ÄGARE BESTÄLLNING AV T . TABLE_NAME ;
Observera att NUM_ROWS registrerar antalet rader som fanns i en tabell när (och om) den senast analyserades. Detta kommer med största sannolikhet att avvika från det faktiska antalet rader för närvarande i tabellen.
Exempel 4: hitta vykolumner
Hitta vykolumner
0
0
SELECT TABLE_NAME , column_name , decode ( c . DATA_TYPE , 'VARCHAR2' , c . DATA_TYPE || ' (' || c . DATA_LENGTH || ')' , 'NUMBER' , DECODE ( c . data_precision , NULL , c . DATA_TYPE , c . DATA_TYPE , c . DATA_TYPE || '(' || c . data_precision || DECODE ( c . data_scale , NULL , ')' , , ')' , ', ' || c . data_scale || ')' )), c . DATA_TYPE ) data_type FROM kol. c , obj o WHERE c . TABLE_NAME = o . objektnamn OCH o . object_type = 'VISA' OCH c . table_name LIKE '%PATTERN%' BESTÄLLNING AV c . tabellnamn , c . kolumn-id ;
Varning: Detta är ofullständigt med avseende på flera datatyper inklusive char, varchar och tidsstämpel och använder extremt gamla, föråldrade ordboksvyer, tillbaka till oracle 5.
Användning av understreck i tabell- och kolumnnamn
Understrecket är en speciell SQL- mönstermatchning till ett enstaka tecken och bör escapes om du faktiskt letar efter ett understreckstecken i LIKE-satsen i en fråga.
Lägg bara till följande efter ett LIKE-påstående:
ESCAPE '_'
Och sedan ska varje bokstavligt understreck vara ett dubbelt understreck: __
Exempel
GILLA '%__G' ESCAPE '_'
Oracle Metadata Registry
Oracle-produkten Oracle Enterprise Metadata Manager (EMM) är ett ISO/IEC 11179- kompatibelt metadataregister . Den lagrar administrerad metadata i ett konsekvent format som kan användas för metadatapublicering . I januari 2006 var EMM endast tillgängligt via Oracles konsulttjänster.