Edited at

OracleのdumpファイルからDDLを抜き出す

More than 1 year has passed since last update.


参考サイト

export した dump から DDL を作成する方法 with Perl ワンライナー


前提

Oracleのダンプファイルは事前に取得済みの状態


DDLをダンプから抜き出し

imp system/{パスワード} file=oracle.dmp show=y log=imp.log FULL=y


実行可能なDDLに整形

perl -ple '/^ "/ or s/.*//;s/^ "(.+)"$/$1/;s/^(CREATE|ALTER|ANALYZE|GRANT|COMMENT|AUDIT)/\/\n\n$1/i;END{print "\/"}' imp.log > ddl.sql


おまけ


表領域の確認.sql

col OWNER   format A20

col s_bytes format 999,999,999,999
select TABLESPACE_NAME,OWNER,sum(BYTES) s_bytes from dba_segments group by OWNER,TABLESPACE_NAME order by TABLESPACE_NAME,OWNER;


ユーザーのパスワード忘れちゃったら.sql

--DBA_USERSを参照し、ユーザ名とパスワードを取得します

--例としてSYSを使用します

SELECT USERNAME,PASSWORD FROM DBA_USERS;

USERNAME PASSWORD
------------------------------ ------------------------------
SYS hogehoge (←適当な値にしてます)



--SYSのパスワードをここでは「test」に変更します
ALTER USER SYS IDENTIFIED BY test;

--SYSでログインします
CONNECT SYS/test@&接続文字列 AS SYSDBA

--何らかの作業を行う

--DBA_USERSを参照して取得していたパスワードに戻します。
ALTER USER SYS IDENTIFIED BY VALUES 'hogehoge';

--参考
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=305