метадані oracle

[The version of the article in English can be found here.]

  • DDL - data definition language - мова визначення даних;
  • DML - data manipulation language - мова маніпулювання даними.

Мова DML необхідний для зміни вмісту таблиць. Його оператори - це всім відомі insert, update, delete. Для того, щоб зміни стали видні всім користувачам бази даних, слід дотримуватися оператора commit, а для повернення в попередній стан (ще говорять для відкату змін) - оператора rollback.

У більш ранніх версіях Oracle метадані можна було отримати за допомогою SQL-запитів і різних утиліт для експорту. Ці способи мають свої обмеження і недоліки. Відповіддю на всі ці незручності став пакет DBMS_METADATA з набором функцій для роботи з метаданими. Пакет DBMS_METADATA з'явився у версії Oracle9i. Тепер визначення даних доступні як в форматі XML, так і у вигляді звичних нам DDL-виразів.

Основна функція, яка нам знадобиться для отримання метаданих - це get_ddl. Викликати її можна як з двома (тип об'єкту, ім'я об'єкта), там і з трьома (на додаток ще й ім'я схеми) параметрами. Наприклад, для отримання метаданих тригера TRIGGER1 зі схеми SCHEMA1 можна використовувати такий вислів:

Якщо користувач працює зі своєю власною схемою, третій параметр можна не вказувати. Доступні типи об'єктів очевидні - PROCEDURE, TABLE, CONSTRAINT, INDEX, PACKAGE і так далі.

Стоп, а що ж таке dual? Таблиця dual - це допоміжна таблиця Oracle. Вона складається рівно з однієї колонки з ім'ям DUMMY і запису - "X" (спробуйте виконати "select * from dual"). Власник цієї таблиці - SYS, але доступитися до неї може будь-який користувач бази даних. При виконанні select над таблицею dual з використанням констант, ми гарантовано матимемо рівно один запис. Можна звичайно вручну підправити таблицю dual, але робити цього я вам не раджу.

Для отримання метаданих об'єкта звичайно ж необхідно знати його ім'я. Список об'єктів поточної схеми можна отримати, наприклад, так:

Це запити для таблиць, колонок та індексів відповідно.

Дані по інших об'єктах бази даних знаходяться в таких таблицях:

  • USER_VIEWS - дані за поданнями (або як ще їх ласкаво називають - вьюха);
  • USER_CONSTRAINTS - дані по первинним і вторинним ключам і перевірок типу not null;
  • USER_SEQUENCES - дані за послідовностей-генераторів;
  • USER_TRIGGERS - дані по триггерам;
  • USER_SOURCE - дані по PL / SQL об'єктів, таким як процедури, функції, пакети.

Ну ось і все: метадані у нас в руках. Використовуйте їх для своїх потреб. Хай щастить.

Схожі статті