WindowsにOracle Databaseの環境構築 Part2 (SQL実行まで)
この記事では、Oracle DBわからん!な初心者の私が、WindowsにインストールしたOracle DBの起動・ユーザー作成、SQL実行の手順を記載します。
※とりあえず勉強用に動けばいい人向けです。
はじめに
WindowsでのOracle DB環境構築のPart2です。(最終回)
起動、ユーザー作成、SQL PlusでのSQL文の実行までを取り上げて終わります。
作業の流れ
- 起動・ログイン
- ユーザー作成
- SQL文実行
環境
目標
Windowsローカル環境にインストールしたOracle DBの起動、ユーザー作成、SQL文実行
1. 起動・ログイン
インストールが成功していれば、スタートメニューにOracle DBのフォルダが作成され、「SQL Plus」が実行できるようになっています。
Win + S を押して「cmd」と入力し、コマンドプロンプトを起動します。
コマンドプロンプトで以下実行します。
sqlplus sys/[インストール時に設定したパスワード] as sysdba
インストール後は、管理用アカウントしか作成されていないようなのでいったんこれでログインします。
2. ユーザー作成
ユーザー作成
SQL Plusにて、以下を実行します。
CREATE USER [ユーザー名] IDENTIFIED BY "[パスワード]" TEMPORARY TABLESPACE TEMP;
続いて接続の権限を付与します。
Oracle DBでは非常に細かい権限のコントロールができるようなのですが、とにかく動く環境を求めている初心者からすると、複雑で面倒でもあります。
ひとまず今回は最低限の権限を付与します。
以下を実行し、CONNECTロール(※ロール:権限をまとめたもの)とRESOURCEロールを付与します。 また、表領域(使用できる容量)を無制限に使えるようにしておきます。
GRANT CONNECT TO [ユーザー名]; GRANT RESOURCE TO [ユーザー名]; ALTER USER [ユーザー名] QUOTA UNLIMITED ON USERS;
これで作成したユーザーで、ログインや表作成が行えるようになりました。
以下を実行し、接続を閉じます。
exit
作成したユーザーでログイン
以下を実行し、作成したユーザーでログインします。
sqlplus [ユーザー名]/[パスワード]
ログインできたら、以下を入力し、ログインしているユーザー名が作成したユーザー名と同じであることを確認します。
SHOW USER
3. SQL文実行
それでは、表作成(CREATE TABLE)とデータ追加(INSERT)、抽出(SELECT)、削除(DELETE)を実行してみます。
実にてきとーな表を作ります。
CREATE TABLE TABLE_01 ( COLUMN1 NUMBER(4,0), COLUMN2 VARCHAR2(100), COLUMN3 VARCHAR2(100) );
※VERCHAR2の数値はデフォルトでバイト単位になるようなので要注意です。(文字数で指定するときは、VARCHER2(100 CHAR)と指定するようです。)
何も設定が変わっていなければ、このテーブルは[ユーザー名と同名のスキーマ].[テーブル名]に作成されるはずです。
適当なデータを挿入します。
INSERT INTO TABLE_01 VALUES ( 1234,'あいうえお','sqlplusでデータ挿入' );
抽出してみます。
SELECT * FROM TABLE_01;
最後に削除します。
DELETE FROM TABLE_01 WHERE COLUMN1 = 1234;
おわりに
無事、SQL文をSQL Plusで実行することができました。
SQL Plusに限らず、ここで作成したユーザー名/パスワードで、GUIのツールからなどもログインすることができるようになります。
デフォルト設定であれば、接続設定は以下の通り。
- Host(ホスト名) → localhost
- Database(データベース) → orcl(※サービス名)
- Port(ポート番号) → 1521
また、今回権限は少なめに設定しているため、できない操作があればその都度権限を追加してみてください。
感想など
Oracleのスキーマ名とユーザー名が同じになる。という仕様を知らずに作業していたため、詰まったことがあった。スキーマを跨いで操作する場合は権限の設定も必要な模様。このあたりがOracle独特な気がするのは私だけだろうか。(PostgreSQLとMySQLしか触ったことなかった人の感想)
権限周りが初心者にとってむずい。とりあえず動かせる環境がほしいだけなのに!!ユーザー作成→接続権限がありません、表作成→権限が足りませんみたいなのを繰り返した。
面倒ならDBAアカウントで全部動かしても良かったが、前述の通りスキーマを分けるにはユーザーが必要そうだったので、結局ユーザーの権限設定も実施した。
そもそもDBAって何から調べる必要があった。インストール時にはパスワードしか指定していないので、ユーザー名は何でログインしたら良いのか分からず詰まった。