Oracleはほとんど知らないので、とりあえず備忘。
-bash-3.2$ sqlplus / as sysdba SQL> SELECT username FROM dba_users; USERNAME ------------------------------ SYS XDB ~ 割愛 x行が選択されました。 SQL>
SQL Plusなどで該当スキーマのユーザでログインして以下のSQLを実行。
select CONSTRAINT_NAME,TABLE_NAME,STATUS from USER_CONSTRAINTS where CONSTRAINT_TYPE = 'R'
テーブル名とFK名、それが有効状態かを確認できます。
SQL> select count(*) from USER_CONSTRAINTS where
CONSTRAINT_TYPE = 'R' and status='ENABLED';
COUNT(*)
----------
0
SQL> select count(*) from USER_CONSTRAINTS where
CONSTRAINT_TYPE = 'R' and status='DISABLED';
COUNT(*)
----------
39
こんな感じです。
ちなみに
Unique Key
select CONSTRAINT_NAME,TABLE_NAME,STATUS from USER_CONSTRAINTS where CONSTRAINT_TYPE = 'U'
Primary Key
select CONSTRAINT_NAME,TABLE_NAME,STATUS from USER_CONSTRAINTS where CONSTRAINT_TYPE = 'P'
Foreign Key
select CONSTRAINT_NAME,TABLE_NAME,STATUS from USER_CONSTRAINTS where CONSTRAINT_TYPE = 'R'
purge user_recyclebin;
-bash-3.2$ sqlplus hoge/pass@192.168.10.100:1521/xe
などでOK!
sqlplus user/pass @hogehoge.sql
でhogehoge.sqlのSQLが実行できる
set linesize 9999で横にどーんと広い表示になる。。
set pagesize 10000とかでヘッダを挿入しないようにする
spool result.txt SQL文。 spool off exitとすると出力結果をファイルに書き出すみたい。
DBの文字コードをJA16SJISTILDEとしているとき、TerraTermでselectしてみるとが文字化けしてた。。
export NLS_LANG=Japanese_Japan.JA16SJISTILDE
として環境変数を設定し、さらにTeraTermをSJISにしておけばOKです。
SQL> drop user hogehoge cascade;
DBサーバにoracleユーザでログインし、下記コマンドを実行
exp hoge/fuga@xe owner=hoge file=hoge.20070709.dmp statistics=none
意味は「hogeユーザでスキーマhogeのテーブルを全てダンプ*1」。
exp userid=hoge/fuga tables=TABLE1 file=hoge_TABLE1.20070709.dmp statistics=none
てテーブル指定も可能です。
importは以下の通り
imp userid=hoge2/fuga2 tables=TABLE1 fromuser=hoge touser=hoge2 file=hoge_TABLE1.20070709.dmp ignore=y fromuser:元のユーザ touser:なんてスキーマに入れるか。
ORACLE/オラクルSQLリファレンス(DBMS_METADATA.GET_DDL)
この記事は
現在のアクセス:40700