استخراج DDL آبجکت‌ها در Oracle با استفاده از DBMS_METADATA

در بسیاری از سناریوهای مدیریت پایگاه داده Oracle، لازم است تعریف کامل یک آبجکت (DDL) را استخراج کنیم. این کار برای اهداف مختلفی انجام می‌شود؛ مانند مستندسازی ساختار دیتابیس، انتقال آبجکت‌ها به محیط دیگر، بررسی تغییرات (Diff)، یا بازسازی یک آبجکت.

در Oracle بهترین و استانداردترین روش برای دریافت DDL آبجکت‌ها استفاده از پکیج داخلی DBMS_METADATA است. این پکیج امکان استخراج تعریف کامل انواع مختلف آبجکت‌ها را فراهم می‌کند.

SELECT DBMS_METADATA.GET_DDL(
  'VIEW',
  'V_CUSTOMER_SUMMARY',
  'APP_SCHEMA'
)
FROM DUAL;

خروجی این دستور شامل دستور کامل CREATE VIEW خواهد بود.

اگر کاربر فعلی مالک View باشد، می‌توان نام اسکیما را حذف کرد:

SELECT DBMS_METADATA.GET_DDL(
  'VIEW',
  'V_CUSTOMER_SUMMARY'
)
FROM DUAL;

تنظیمات لازم برای نمایش کامل خروجی

در برخی ابزارها مانند SQL*Plus، طول خروجی به صورت پیش‌فرض محدود است. برای مشاهده کامل DDL بهتر است قبل از اجرای کوئری تنظیمات زیر اعمال شود:

SET LONG 100000
SET LONGCHUNKSIZE 100000
SET PAGESIZE 0

گرفتن DDL یک Table

برای استخراج تعریف یک جدول می‌توان از همان تابع استفاده کرد و نوع آبجکت را TABLE قرار داد:

SELECT DBMS_METADATA.GET_DDL(
  'TABLE',
  'CUSTOMERS',
  'APP_SCHEMA'
)
FROM DUAL;

خروجی شامل دستور کامل CREATE TABLE به همراه ستون‌ها، نوع داده‌ها و سایر تنظیمات جدول خواهد بود.

پکیج DBMS_METADATA در Oracle ابزار قدرتمندی برای استخراج ساختار آبجکت‌های دیتابیس است. با استفاده از تابع GET_DDL می‌توان تعریف کامل انواع مختلف آبجکت‌ها مانند Table، View، Index، Sequence، Procedure و Trigger را دریافت کرد. این قابلیت به ویژه در فرآیندهای مهاجرت دیتابیس، مستندسازی و مدیریت تغییرات بسیار کاربردی است.