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はどうも一カラムあたりの幅が狭く、すぐに折り返しちゃう。
    set linesize 9999
    で横にどーんと広い表示になる。。
  • SQL*Plusはすぐにヘッダ(カラム名)を挿入しちゃう。
    set pagesize 10000
    とかでヘッダを挿入しないようにする
  • ファイルに書き出す方法。どうもhogehoge.sqlで
    spool result.txt
    SQL文。
    spool off
    exit
    とすると出力結果をファイルに書き出すみたい。

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  
  • linesizeは行すべてが間延びします。特定列のみのサイズ変更は column <column_name> format a10 などとします -- KY? 2007-10-12 (金) 19:00:47

Top / Oracle / TIPS集

現在のアクセス:35223


*1 インスタンスはxe

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-05-14 (火) 16:58:04 (1533d)