Mac OSXにOracleをインストールしてみた(データベース作成?編)
前回に引き続き、Oracleデータベース構築をやっていきます。
色々調べてみた結果、Oracle公式の入門資料が大変参考になりました!
今さら聞けない!? Oracle入門 概要編
http://www.oracle.com/technetwork/jp/ondemand/db-basic/0413-1330-oracle-beginner-overview-366289-ja.pdf
今さら聞けない!? Oracle入門 ~アーキテクチャ編~
http://www.oracle.com/technetwork/jp/ondemand/db-basic/0413-1330-oracle-beginner-overview-366289-ja.pdf
意外と簡単!? Oracle Database 11g Release 2 - データベース構築から運用まで - 「データベース構築編」
http://www.oracle.com/technetwork/jp/articles/selfstudy-win-11-131931-ja.pdf
Oracleのアーキテクチャ
Oracleは、内部アーキテクチャとしてサーバー
とストレージ
という概念がある。
サーバー
がSQLの問い合わせに応じてストレージ
からデータを取り出し、問い合わせ元に返すというイメージ。
サーバー
はインスタンス
(プロセスとメモリ)単位で動作し、同時に動くインスタンスには制限がかけられる。
サーバー
でデータベース
をマウント
することで初めてSQLで問い合わせが出来るようになる。
ざっと書いているけど、まだあんまりイメージは沸かない。
ちなみに自分的にMySQLのアーキテクチャはこんなイメージ。
もしかしたら違うかもしれない。また調べてみよう。
データベース構築
Oracleのデータベース構築方法は、CUIでSQLを使って作成する方法、DBCAなどのGUIツールを使って作成する方法がある。
今回は、CUIで作ってみる。
ここを参考に、環境変数や初期パラメータなどを作成する。
Oracle Databaseの作成および構成
そしてSTARTUP UNMOUNTでマウント無しでインスタンスを作成してみる、しかし・・・ッ!
SQL> STARTUP NOMOUNT ORA-44410 XE edition single instance violation error
XEエディションのシングルインスタンスエラー。
どういうことだろうとググッてみると、XEエディションのライセンスに単一のインスタンスのみに制限
、とある。
(下記リンクの権利許諾を参照)
Oracle Database Express Editionライセンス情報
えーと、つまり、もう何かインスタンスが起動しているってこと?
すでに起動しているインスタンスを探すコマンドを打つもエラー。八方塞がりでVMを試しに再起動してみて、
再度SQL PLUS
を起動してCONNECTして再びSTARTUPしてみると・・・
SQL> STARTUP NOMOUNT ORA-01081: cannot start already-running ORACLE - shut it down first
現象が変わった。
オラクルが起動できないというエラー。メッセージの通りSHUTDOWN NORMAL
でシャットダウンしてみると、
SQL> shutdown normal Database closed. Database dismounted. ORACLE instance shut down.
なんかデータベースが閉じた。
とりあえずSTART UP NOMOUNTしてみる。
SQL> startup nomount ORACLE instance started. Total System Global Area 204591104 bytes Fixed Size 2225032 bytes Variable Size 142609528 bytes Database Buffers 54525952 bytes Redo Buffers 5230592 bytes
次はちゃんとインスタンスが作成できました。
そしてデータベースを構築するためにCREATE DATABASE
で作成してみる。
SQL> CREATE DATABASE mynewdb 2 ; CREATE DATABASE mynewdb * ERROR at line 1: ORA-01501: CREATE DATABASE failed ORA-01504: database name 'MYNEWDB' does not match parameter db_name 'XE'
db_name XE
と名前が違うよ!というエラーが発生。
もしかして・・・すでにXEというデータベースがある?
再度SHUTDOWNしてXEデータベースをマウントしてみると、
SQL> shutdown normal ORA-01507: database not mounted ORACLE instance shut down. SQL> STARTUP mount xe ORACLE instance started. Total System Global Area 204591104 bytes Fixed Size 2225032 bytes Variable Size 142609528 bytes Database Buffers 54525952 bytes Redo Buffers 5230592 bytes Database mounted.
マウントできました。
XEというデータベース、環境変数にもどこにもなかったような・・・。
とりあえず、データベースをオープンして、当初の目的であるテーブルを作成してみると、無事できました。
SQL> alter database open; Database altered. SQL> CREATE TABLE tbl_hello 2 (id VARCHAR(4) NOT NULL); Table created.
まとめ
どうやら、XEエディションは基本的にWebUIでデータベースを制御するみたいです。
Oracle® Database Express Editionスタート・ガイド
最初から会ったと思われるXEデータベースの件についても、改めて調査してみたいところです。
とりあえず、ブログだけじゃなくてちゃんと公式ガイド見ような、俺!
お後がよろしいようで。ちゃんちゃん。