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 у назве табліцы:

```
  SELECT Owner AS Schema_Name, Table_Name
  FROM   All_Tables
  WHERE  Table_Name LIKE '%PATTERN%'
  ORDER  BY Owner, Table_Name;
```

### Прыклад 2: пошук слупкоў

Знайсці ўсе табліцы, якія маюць хаця б адзін слупок, які адпавядае пэўнаму PATTERN у назве слупка:

```
  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):

```
  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 запісвае колькасць радкоў, якія былі ў табліцы, калі яна была прааналізавана ў апошні раз. Гэта, хутчэй за ўсё, будзе адрознівацца ад фактычнай колькасці радкоў у табліцы.

Заўвагі
-------

1. ↑  Communications Data Model Implementation and Operations Guide (англ.). *docs.oracle.com*.

Спасылкі
--------

* артыкул пра метаданыя Oracle