このページではoracleのインストール後に必要になる作業用環境について触れてます。
LinuxへのORACLEインストールが完了しました。「よし、テーブルでも作成してみよう。」、そのテーブルはどこの領域に作成しますか・・・? この時点ではシステム領域しか存在せず、作成するオブジェクトは全てシステム領域内に生成されてしまいます。自分の作業領域は自分で作成するしかありません。
例えばCREATE TABLE文を作ったとしましょう。その「CREATE TABLE文」で指定する表領域はどこを指定してますか?
指定する場所は現時点ではシステム領域しかありません。省略してもエラーにはなりませんが、省略するとシステム領域に生成されてしまいます。この領域内にオブジェクトを追加したり削除したりする訳なので、操作ミスでシステム領域内のオブジェクトを削除してしまったり書き換えてしまったり・・・。個人用であれば再インストールで済むかも知れませんが、職場環境となると100%元に戻さなければなりません。
面倒に感じる方もいるとは思いますが、ORACLE環境で色々試すのであれば必須の作業です。一度準備してしまえば、その領域内であれば、テーブル追加したりデータ登録したり削除してみたりと、システム領域に影響を与えず自由に操作が行えます。
このページでは、「自分用の環境作成手順」を前準備として記載しました。下記に必要と思われる作業を①~⑥にまとめてみましたが、その中で大事な作業は「自分用の表領域を作成すること」「自分用のユーザを作成すること」「作成したユーザにSELECTしたりCREATEしたりDROPしたりできる権限を登録すること」です。これからORACLEを学ばれる方は是非参考にして下さい。
表領域を作成します。この領域が作業領域になるので、作業で作成するテーブル等のオブジェクトもこの表領域内に作成します。
この領域内で作業している分には他に影響はありません。
表領域の作成にはcreate tablespace文を使います。sizeは後から増やせるので最初は小さめで良いです。segment space managementは、データ容量がsizeの値を超えたらどうするか?を設定します。今回は一般的なautoを指定します。autoは自動拡張なのでsizeを超えてもエラーにせず容量を拡張してくれます。そのため容量を気にせずデータを追加できますが、当然ながらLinuxで割り当てたディレクトリ容量は気にしなくてはなりません。
表領域作成
表領域確認
profileは、セッション数を制限したり、ログインの失敗回数を制限したり、パスワードの有効期間を管理したりと、何らかの制限を加えたり管理したりします。
failed_login_attemptsはログイン失敗回数です。今回は1で設定してますが、一般的には3が多いかと思います。ココの値は、後から変更できるので一旦登録して適宜変更して下さい。
プロファイル作成
プロファイルの確認
ユーザIDをstudyという名称で作成してます。
default tablespaceはユーザの作成先なので、先ほど生成した領域であるstudy_01を指定します。指定し忘れるとシステム領域に生成されてしまいますので注意してください。
quota 13M on study_01の意味は、このユーザに13Mの領域を与え、それ以上は使えなくする設定です。生成したstudy_01表領域が13Mで生成したので、その範囲内にしてます。quota容量は後から変更できます。また、profileを指定してユーザ管理情報を与えて下さい。
ユーザ作成
ユーザの確認
create sessionは作成したユーザstudyにログイン権限を与えてます。これをしないと例えばsqlplusからログインできません。
default roleは今回は付与しないnoneを指定してます。後から変更できるので、roleを使用する場合にはnoneをallなどに変更できます。
create tableは、ユーザstudyで新規にテーブル作成ができる権限です。既存テーブルのselectやupdateが出来ても、この権限がないとcreate tableできません。同様に、例えばcreate view権限がないと、新規にビューを作成することができないので、権限は適宜与えて下さい。
権限の付与
権限の確認
作業領域とユーザが作成できました。これでテーブル作成したり削除したりデータ投入したり、色々試せる環境が整ったので新規に作成したユーザIDでログインしてから始めます。
ログアウト
新規に作成したユーザIDでログインします。
ログイン
作成したばかりのユーザなので、現時点でオブジェクトは何も無いですが、ユーザが持っているオブジェクトに何があるかを確認するには、このuser_objectを確認すると良いでしょう。
ちなみに、ココで言っているオブジェクトとは作成したもの全てになるので、テーブルだけに限らず、インデックスを作成すればココにインデックスも表示されます。トリガーを作成すればトリガーも、その他シーケンス、シノニム、プロシジャー・・・など。所有するオブジェクト全てが表示されることになります。
オブジェクトを確認
大事なことですが、tablespaceで自分の領域であるstudy_01を忘れずに指定して下さい。忘れるとシステム領域に作成されてしまいます。
職場などの失敗の許されない大事な本番環境でも、業務用テーブルがシステム領域に生成されているのを良く見かけます。業務で使用するテーブルを意図的にシステム領域内に生成する事はありえません。テーブル生成時に「指定忘れ」してるのです。
テーブル作成
テーブル確認
ログアウト
自分用の作業環境を構築して1テーブル作成してみました。
自分のユーザIDで自分の表領域内を操作してる分には他に影響ありません。本番前のテスト環境としても十分使用できます。
oracle初めの一歩をご覧いただきありがとうございました。