Метаданыя Oracle

Oracle Database дае інфармацыю аб усіх табліцах, прадстаўленнях, слупках і працэдурах у базе даных. Гэтая інфармацыя аб інфармацыі вядомая як метаданыя. Яны захоўваюцца ў двух месцах: табліцы слоўніка даных (доступ да якіх можна атрымаць праз убудаваныя прадстаўленні) і рэестры метаданых.

Іншыя сістэмы кіравання рэляцыйнымі базамі даных падтрымліваюць эквівалент стандарту ANSI, які называецца інфармацыйнай схемай.

## Прадстаўленні метаданых 
Агульная колькасць прадстаўленняў залежыць ад версіі Oracle, але знаходзіцца ў дыяпазоне 1000.

Асноўных убудаваных прадстаўленняў для доступу да табліц слоўніка даных Oracle RDBMS некалькі, і яны наступныя:

* ALL_OBJECTS — спіс усіх аб’ектаў бягучай базы даных, даступных бягучаму карыстальніку;
* ALL_TABLES — спіс усіх табліц бягучай базы даных, даступных бягучаму карыстальніку;
* ALL_VIEWS — спіс усіх прадстаўленняў у бягучай базе даных, даступных бягучаму карыстальніку;
* ALL_TAB_COLUMNS — спіс усіх калонак базы даных, даступных бягучаму карыстальніку;
* ALL_ARGUMENTS — спіс аргументаў функцый і працэдур, даступных бягучаму карыстальніку;
* ALL_ERRORS — пералічвае апісанні памылак на ўсіх захаваных аб’ектах (выглядах, працэдурах, функцыях, пакетах і целах пакетаў), якія даступныя бягучаму карыстальніку;
* ALL_OBJECT_SIZE — уключаны для зваротнай сумяшчальнасці з Oracle версіі 5;
* ALL_PROCEDURES — (ад Oracle 9 і далей) пералічвае ўсе функцыі і працэдуры (разам з звязанымі ўласцівасцямі), якія даступныя бягучаму карыстальніку;
* ALL_SOURCE — апісвае тэкставы (г.зн PL/SQL) зыходнік захаваных аб’ектаў, даступных для бягучага карыстальніка;
* ALL_TRIGGERS — спіс усіх трыгераў, даступных для бягучага карыстальніка.

Акрамя таго, ёсць эквівалентныя прадстаўленні з прэфіксам «USER_», якія паказваюць толькі аб’екты, якія належаць цяперашнему карыстальніку, і з прэфіксам «DBA_», якія паказваюць усе аб’екты ў базе даных. Натуральна, доступ да прадстаўленняў метаданых «DBA_» патрабуе пэўных правоў.

### Прыклад 1: пошук табліц 
Знайсці ўсе табліцы, якія маюць PATTERN у назве табліцы:
```oracle11
SELECT Owner AS Schema_Name, Table_Name
  FROM   All_Tables
  WHERE  Table_Name LIKE '%PATTERN%'
  ORDER  BY Owner, Table_Name;
```

### Прыклад 2: пошук слупкоў 
Знайсці ўсе табліцы, якія маюць хаця б адзін слупок, які адпавядае пэўнаму PATTERN у назве слупка:
```oracle11
SELECT Owner AS Schema_Name, Table_Name, Column_Name
  FROM   All_Tab_Columns
  WHERE  Column_Name LIKE '%PATTERN%'
  ORDER  BY 1,2,3;
```

### Прыклад 3: падлік радкоў слупкоў 
Ацаніць агульную колькасць радкоў ва ўсіх табліцах, якія змяшчаюць імя слупка, якое супадае з PATTERN (гэта спецыяльны скрыпт SQL*Plus):
```oracle11
COLUMN DUMMY NOPRINT
  COMPUTE SUM OF NUM_ROWS ON DUMMY
  BREAK ON DUMMY
  SELECT
   NULL DUMMY,
   T.TABLE_NAME,
   C.COLUMN_NAME,
   T.NUM_ROWS
  FROM
   ALL_TABLES T,
   ALL_TAB_COLUMNS C
  WHERE
   T.TABLE_NAME = C.TABLE_NAME
   AND C.COLUMN_NAME LIKE '%PATTERN%'
   AND T.OWNER = C.OWNER
  ORDER BY T.TABLE_NAME;
```
Звярніце ўвагу, што NUM_ROWS запісвае колькасць радкоў, якія былі ў табліцы, калі яна была прааналізавана ў апошні раз. Гэта, хутчэй за ўсё, будзе адрознівацца ад фактычнай колькасці радкоў у табліцы.

## Крыніцы 
## Спасылкі 
* артыкул пра метаданыя Oracle

Катэгорыя:Метаданыя
Катэгорыя:Oracle
Катэгорыя:SQL
Катэгорыя:Базы даных