Top/Oracle/TIPS集

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;

SQL*PlusのTIPS

別サーバのOracleに接続する

-bash-3.2$ sqlplus hoge/pass@192.168.10.100:1521/xe

などでOK!

外部ファイルからSQL実行

sqlplus user/pass @hogehoge.sql

でhogehoge.sqlのSQLが実行できる

hogehoge.sqlの文法

SQL*PlusとTeraTermでなどが文字化けする

DBの文字コードをJA16SJISTILDEとしているとき、TerraTermでselectしてみるとが文字化けしてた。。

export NLS_LANG=Japanese_Japan.JA16SJISTILDE

として環境変数を設定し、さらにTeraTermをSJISにしておけばOKです。

ユーザの削除

SQL> drop user hogehoge cascade;

DBのExport,Import

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:なんてスキーマに入れるか。

DDLを取得する。

ORACLE/オラクルSQLリファレンス(DBMS_METADATA.GET_DDL)


この記事は

選択肢 投票
おもしろかった 18  
そうでもない 4  
Top/Oracle/TIPS集

現在のアクセス:40700


*1 インスタンスはxe

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2026-07-15 (水) 00:03:24