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

Se även

externa länkar