oracleまめちしき

Oracleインスタンスの起動

PFILE

テキストファイル形式のパラメータファイル。 ファイル名は「initSID.ora」となります。

SPFILE

バイナリ形式のサーバパラメータファイル。 ファイル名は「spfileSID.ora」となります。 サービスの開始の「需要」は何かよくわからない。 後でわかったが、DBCAを使えば、気にしなくても動いた。 本当に気にしなくてもよいのかは謎だけど。

sqlplusを使って接続

面倒だけど、コマンドラインからも接続できた。

sqlplus user/password@service

とコマンドラインで実行すると起動できる。 serviceのところは標準だと「ORCL」になるはず。 たぶん「ORCL」に接続するときは@以降を省略していいっぽい。 そもそも、インストールした直後にログインするときは、こちらのコマンドを使う。

sqlplus / AS SYSDBA

知らないと操作できないというオラクルの恐ろしさを垣間見た感じがします。

Oracleは1インスタンスに1データベースしか作れない

PostgreSQLやSQL Serverなどの他のデータベースだとインスタンス内に複数のデータベースを持たせることができるけど、Oracleの場合は1インスタンスには1データベースしか作成することができない。これは不便だと思うのだが、ありがたいと思って使うしかない。

接続したデータベースは何が入っているの?

つまり、テーブル名の一覧をリスト表示したいのです。 ちょっと探したらみつかりました。

sqlplus / AS SYSDBA

でいいみたいです。 ただ、見事に意味不明なテーブルが出てきました。 システム管理用のテーブルなんだろうなとは思います。

データベースを新規作成

データベースの作成は、DBCAというプログラムから行う必要がある。 細かい設定はあるが、面倒なので規定値のままでやった。 データベース名は「test」としてパスワードは「password」という簡単設定にした。 これで安心だろう。 このデータベースに接続するときは

sqlplus SYSDBA/TRY@test

というコマンドを実行する必要がある。 SYSDBAというのは、作った記憶はないが、DBCAが作ってくれるらしい。

ユーザーを新規作成

永遠にSYSDBAを使っていても問題はないみたい。 いや、セキュリティ的な問題は山積しているけど。 とりあえず、testデータベースにユーザを新規作成してみます。

create user TRY identified by TRY;

これでTRYユーザが作成できる。大文字と小文字は区別されるので注意! 困ったことに、このままではログインすることができない。 なぜ、初期状態でログインできるようにしてくれないのかは謎。 こんな面倒なコマンドを叩いているというのに。特にidentifiedのあたり。 ログインできるようにするためには

grant CREATE SESSION to TRY;

を実行する必要がある。 これだけだと、SELECTくらいしかできない。 テーブルを作成しないと始まらないのでテーブル作成権限を与える。 ちなみにgrantというのは権限を与えるためのSQLコマンドになる。 これは、他のデータベースでも同じなので覚えておこう。

grant CREATE TABLE to TRY;

よし、ここまでできたら、SYSDBAユーザとはいったんお別れしよう。

quit

を実行して、sqlplusを一度終わらせてみる。 今度は

sqlplus TRY/TRY@test

でログインする。

create table TBL1 (col1 number, col2 varchar2(100));
select TABLE_NAME from USER_TABLES;

の順でSQLを実行してみよう。 TBL1テーブルが作成されているはず。 長かった。本当に長かった。とりあえずは大丈夫そうだ。 このあたりのことは、Oracleのコンテンツを参考にしている。 http://www.oracle.com/technetwork/jp/database/articles/shibacho/dba02-1598280-ja.html

システム開発

Posted by @erestage