Monday, July 20, 2009

Getting a Create statement of Object, Tablespace & User

for Object: -
set heading off;
set echo off;
set pages 999;
set long 90000;
spool ddl_file_name.sql
select dbms_metadata.get_ddl('OBJECT_TYPE','OBJECT_NAME','USER_NAME') from dual;
spool off
/

for Tablespace: -
set heading off;
set echo off;
set pages 999;
set long 90000;
spool ddl_file_name.sql
select dbms_metadata.get_ddl('TABLESPACE','TABLESPACE_NAME') from dual;
spool off
/

for User: -
set heading off;
set echo off;
set pages 999;
set long 90000;
spool ddl_file_name.sql
select dbms_metadata.get_ddl('USER','USER_NAME') from dual;
spool off
/

for Database link: -

SELECT 'create '||DECODE(U.NAME,'PUBLIC','public ')||'database link '||CHR(10)
||DECODE(U.NAME,'PUBLIC',Null, U.NAME||'.')|| L.NAME||chr(10)
||'connect to ' || L.USERID || ' identified by '
||L.PASSWORD||' using ''' || L.host || ''''
||chr(10)||';' TEXT
FROM sys.link$ L, sys.user$ U
WHERE L.OWNER# = U.USER#;

(or)

set heading off;
set echo off;
set pages 999;
set long 90000;
spool db_link_name.sql
select dbms_metadata.get_ddl('DB_LINK','DB_LINK_NAME','USER_NAME') from dual;
spool off
/

*get the db_like name from the below v$dblink view.


Get the privileges from the below views: -
dba_sys_privs
dba_role_privs
dba_tab_privs
dba_ts_quotas

&

set pages 500
set lines 200
set long 100000
select dbms_metadata.get_ddl('USER','USER_NAME') from dual
UNION ALL
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','USER_NAME') from dual
UNION ALL
select dbms_metadata.get_granted_ddl('OBJECT_GRANT','USER_NAME') from dual
UNION ALL
select dbms_metadata.get_granted_ddl('ROLE_GRANT','USER_NAME') from dual;