Метаданыя Oracle

З Вікіпедыі, свабоднай энцыклапедыі

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

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

Заўвагі[правіць | правіць зыходнік]

Спасылкі[правіць | правіць зыходнік]