Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओरेकल स्कीमा (स्क्रिप्ट करने योग्य) का संपूर्ण डीडीएल कैसे उत्पन्न करें?

आप SQL*Plus और dbms_metadata पैकेज के माध्यम से स्कीमा को फ़ाइल में स्पूल कर सकते हैं। फिर स्कीमा नाम को sed के माध्यम से दूसरे के साथ बदलें। यह Oracle 10 और उच्चतर के लिए कार्य करता है।

sqlplus<<EOF
set long 100000
set head off
set echo off
set pagesize 0
set verify off
set feedback off
spool schema.out

select dbms_metadata.get_ddl(object_type, object_name, owner)
from
(
    --Convert DBA_OBJECTS.OBJECT_TYPE to DBMS_METADATA object type:
    select
        owner,
        --Java object names may need to be converted with DBMS_JAVA.LONGNAME.
        --That code is not included since many database don't have Java installed.
        object_name,
        decode(object_type,
            'DATABASE LINK',      'DB_LINK',
            'JOB',                'PROCOBJ',
            'RULE SET',           'PROCOBJ',
            'RULE',               'PROCOBJ',
            'EVALUATION CONTEXT', 'PROCOBJ',
            'CREDENTIAL',         'PROCOBJ',
            'CHAIN',              'PROCOBJ',
            'PROGRAM',            'PROCOBJ',
            'PACKAGE',            'PACKAGE_SPEC',
            'PACKAGE BODY',       'PACKAGE_BODY',
            'TYPE',               'TYPE_SPEC',
            'TYPE BODY',          'TYPE_BODY',
            'MATERIALIZED VIEW',  'MATERIALIZED_VIEW',
            'QUEUE',              'AQ_QUEUE',
            'JAVA CLASS',         'JAVA_CLASS',
            'JAVA TYPE',          'JAVA_TYPE',
            'JAVA SOURCE',        'JAVA_SOURCE',
            'JAVA RESOURCE',      'JAVA_RESOURCE',
            'XML SCHEMA',         'XMLSCHEMA',
            object_type
        ) object_type
    from dba_objects 
    where owner in ('OWNER1')
        --These objects are included with other object types.
        and object_type not in ('INDEX PARTITION','INDEX SUBPARTITION',
           'LOB','LOB PARTITION','TABLE PARTITION','TABLE SUBPARTITION')
        --Ignore system-generated types that support collection processing.
        and not (object_type = 'TYPE' and object_name like 'SYS_PLSQL_%')
        --Exclude nested tables, their DDL is part of their parent table.
        and (owner, object_name) not in (select owner, table_name from dba_nested_tables)
        --Exclude overflow segments, their DDL is part of their parent table.
        and (owner, object_name) not in (select owner, table_name from dba_tables where iot_type = 'IOT_OVERFLOW')
)
order by owner, object_type, object_name;

spool off
quit
EOF

cat schema.out|sed 's/OWNER1/MYOWNER/g'>schema.out.change.sql

सब कुछ एक स्क्रिप्ट में रखें और इसे क्रॉन (अनुसूचक) के माध्यम से चलाएं। उन्नत सुविधाओं का उपयोग करने पर वस्तुओं का निर्यात करना मुश्किल हो सकता है। यदि आपको उपरोक्त कोड में कुछ और अपवाद जोड़ने की आवश्यकता है तो आश्चर्यचकित न हों।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle किसी टेक्स्ट/सीएसवी फ़ाइल में क्वेरी कैसे निर्यात करें

  2. OracleDataSource बनाम Oracle UCP PoolDataSource

  3. मैं Oracle में अल्पविराम-सीमांकित सूची में एकाधिक पंक्तियों को कैसे जोड़ सकता हूँ?

  4. जावा - अपवाद का पहला कारण खोजें

  5. Oracle:CSV फ़ाइल आयात करें