{"id":4179,"date":"2025-06-08T10:55:00","date_gmt":"2025-06-08T10:55:00","guid":{"rendered":"https:\/\/w3buddy.com\/?post_type=cposts&#038;p=4179"},"modified":"2025-06-10T16:13:10","modified_gmt":"2025-06-10T16:13:10","slug":"extract-ddl-for-oracle-objects","status":"publish","type":"cposts","link":"https:\/\/w3buddy.com\/blog\/notes\/oracle-dba-d2d-tasks\/extract-ddl-for-oracle-objects\/","title":{"rendered":"Extract DDL for Oracle Objects"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This guide shows how to extract the CREATE statements (DDL) for common Oracle objects such as <code>TABLE<\/code>, <code>VIEW<\/code>, <code>PROCEDURE<\/code>, <code>FUNCTION<\/code>, <code>PACKAGE<\/code>, <code>TRIGGER<\/code>, <code>DATABASE LINK<\/code>, <code>INDEX<\/code>, <code>SEQUENCE<\/code>, <code>SYNONYM<\/code>, <code>JOB<\/code>, <code>LOB<\/code>, and <code>MATERIALIZED VIEW<\/code>, with proper formatting using built-in Oracle packages.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 <strong>DDL for Any Object Using <code>DBMS_METADATA.GET_DDL<\/code><\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udd04 Replace <code>'HR'<\/code> and <code>'TABLE_NAME'<\/code> with your schema and object name.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SET LONG 100000;\nSET PAGESIZE 0;\nSET LINESIZE 200;\nSET FEEDBACK OFF;\nSET ECHO OFF;\n\nSELECT DBMS_METADATA.GET_DDL('TABLE', 'TABLE_NAME', 'HR') FROM DUAL;<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccc <strong>Note:<\/strong> You can change <code>'TABLE'<\/code> to any of the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>'VIEW'<\/code><\/li>\n\n\n\n<li><code>'PROCEDURE'<\/code><\/li>\n\n\n\n<li><code>'FUNCTION'<\/code><\/li>\n\n\n\n<li><code>'PACKAGE'<\/code><\/li>\n\n\n\n<li><code>'PACKAGE BODY'<\/code><\/li>\n\n\n\n<li><code>'TRIGGER'<\/code><\/li>\n\n\n\n<li><code>'DATABASE LINK'<\/code><\/li>\n\n\n\n<li><code>'INDEX'<\/code><\/li>\n\n\n\n<li><code>'SEQUENCE'<\/code><\/li>\n\n\n\n<li><code>'SYNONYM'<\/code><\/li>\n\n\n\n<li><code>'MATERIALIZED VIEW'<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 <strong>DDL for JOBs (DBMS_JOB)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Oracle doesn&#8217;t support direct DDL via <code>DBMS_METADATA<\/code> for jobs. Use this query to inspect scheduled jobs.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SELECT * FROM DBA_JOBS WHERE SCHEMA_USER = 'HR';<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccc <strong>Tip:<\/strong> For DBMS_SCHEDULER jobs, use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SELECT DBMS_METADATA.GET_DDL('PROCOBJ', 'JOB_NAME', 'HR') FROM DUAL;<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 <strong>DDL for LOBs (Inside Tables)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">LOBs are part of tables. Use this to extract LOB info as part of table DDL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SELECT DBMS_METADATA.GET_DDL('TABLE', 'TABLE_WITH_LOB', 'HR') FROM DUAL;<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccc <strong>Note:<\/strong> The output includes <code>LOB STORAGE<\/code>, <code>TABLESPACE<\/code>, and <code>CHUNK<\/code> settings if they exist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udce4 Exporting All Object DDLs from a Schema<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To export DDLs for <strong>all objects of a specific type<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SELECT DBMS_METADATA.GET_DDL(object_type, object_name, owner)\nFROM dba_objects\nWHERE owner = 'HR'\nAND object_type IN (\n  'TABLE', 'VIEW', 'PROCEDURE', 'FUNCTION', 'PACKAGE',\n  'TRIGGER', 'DATABASE LINK', 'INDEX', 'SEQUENCE',\n  'SYNONYM', 'MATERIALIZED VIEW'\n);<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udccc <strong>Note:<\/strong> Filter by <code>object_type<\/code> as needed. <code>JOB<\/code> and <code>LOB<\/code> need special handling.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83e\uddfe Final Tip<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Always run this in <strong>SQL*Plus or SQL Developer<\/strong> for proper formatting.<\/li>\n\n\n\n<li>Use <code>SET LONG<\/code> to avoid truncated DDL output.<\/li>\n\n\n\n<li>Wrap output in a spool file to save for backup or migration purposes.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This guide shows how to extract the CREATE statements (DDL) for common Oracle objects such as TABLE, VIEW, PROCEDURE, FUNCTION, PACKAGE, TRIGGER, DATABASE LINK, INDEX, SEQUENCE, SYNONYM, JOB, LOB, and MATERIALIZED VIEW, with proper formatting using built-in Oracle packages. \u2705 DDL for Any Object Using DBMS_METADATA.GET_DDL \ud83d\udd04 Replace &#8216;HR&#8217; and &#8216;TABLE_NAME&#8217; with your schema and [&hellip;]<\/p>\n","protected":false},"template":"","meta":{"googlesitekit_rrm_CAowu461DA:productID":""},"categories":[952,984],"class_list":["post-4179","cposts","type-cposts","status-publish","hentry","category-notes","category-oracle-dba-d2d-tasks"],"_links":{"self":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/cposts\/4179","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/cposts"}],"about":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/types\/cposts"}],"wp:attachment":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/media?parent=4179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/categories?post=4179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}