ついにこんなページを作る日がやってきてしまいました。
個人的にはこんな使いにくいDB使いたくはないのですが、
あまりに普及してしまったのでもはや避けて通ることが出来なくなってきました。
幸い評価版やマニュアルは無料でダウンロードできるので
試しに使ってみました。今回使用したのはバージョンはOracle9.2です。
Oracleをインストールすると、システム環境変数PATHの値が書き換えられてしまいます。
ここにはOracleが使用するjava.exe(しかも1.3.1)などが入っているので
今まで使っていたJDKが使用されなくなる可能性があります。
必要に応じて自分でPATHを書き換えましょう。
Oracle全体の管理をするアプリケーションとして「Oracle Enterprise Manager」があります。
SQL文の実行には「SQL*Plus Worksheet」、
さらにQUEST SOFTWARE社の「TOAD」フリー版を使うことにします。
まずはテスト用のユーザを追加することにします。
ユーザ作成にはシステム権限の「CREATE USER」が必要なので、
デフォルトで用意されているSYSユーザで以下のSQLを実行します。
小文字の部分は各自変更して下さい。
CREATE USER user IDENTIFIED BY password;
ユーザは作成されましたが、まだこのままだとログインすら出来ません。
CONNECT権限を持たせる必要があるようです。
GRANT connect TO user;
これでとりあえずログインは出来るようになりました。
せっかくなのでもう一つ権限を持たせてみます。
GRANT select any table TO user;
これは、全ユーザのテーブルを参照(READ)することが出来る権限です。
他にも権限は山ほどあるのですが、その辺の紹介は他の記事に譲ります。
ユーザには、デフォルト表領域と一時表領域が設定されています。
標準のデフォルト表領域は「SYSTEM」という表領域が割り当てられていますが、
この表領域を使用することは好ましくないので変更しましょう。
まずは新規で表領域を作成します。
次のSQL文を実行します。
例によって小文字の部分は各自変更して下さい。
CREATE TABLESPACE tablespace_name DATAFILE 'datafile-path' SIZE size;
datafile-path には絶対パスもしくは相対パスが利用できます。
相対パスの場合、基準ディレクトリは %ORACLE_HOME%\database になるようです。size の記述方法は「40M」等が利用できます。
続いて、先程作成したユーザのデフォルト表領域を変更します。
ALTER USER user DEFAULT TABLESPACE tablespace_name;
ただし、これだけでは user はこの表領域を利用できません。
全ての表領域を利用できるようにするには以下を入力します。
GRANT UNLIMITED TABLESPACE TO user;
これで、今後 user で作成するテーブルは全て新しい表領域を利用するようになります。
ユーザを作成すると、それに対応するオブジェクトが生成されます。
これがスキーマ・オブジェクト(通称スキーマ)と呼ばれるものです。
全ての権限が無い状態では、ユーザは自分のスキーマにしかアクセスできません。
様々な権限を付けることで、他人のスキーマにアクセスすることが可能になります。
Oracleを使ってると必ずといっていい程出てくる単語がこれです。
要はテーブル等に別名(エイリアス)を付けるというもの。
例えば user1 で接続した場合、scott ユーザ(スキーマ)のテーブルにアクセスするためには
SELECT * from scott.emp;
のように「スキーマ名.テーブル名」という形式を使う必要があります。
ここでシノニムを定義してみましょう。user1 で接続して以下のSQL文を実行します。
CREATE SYNONYM emp FOR scott.emp;
これで scott.emp に対応する別名 emp が定義されました。以下のSQL文が実行できます。
SELECT * from emp;