みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

create databaseがうまくいきません。。

databaseを新規に作成したいのですが
今使用しているDB(Oracle 10g Express Edition )は
インストール時にデフォルトでデータベースを
作成してしまうため、
「create databese」のsql文を実行すると以下のエラーが出てしまいます。
すでにマウントってどういうことなのでしょうか。

ORA-01501: CREATE DATABASE文でエラーが発生しました。
ORA-01100: データベースはすでにマウントされています。

今存在するDB名が分かれば「drop」コマンドで
削除を試みようと思っているのですが
DB名を参照する方法もよく分かりません。
どなたかご教授お願いします。

投稿日時 - 2006-03-21 20:07:55

QNo.2043137

困ってます

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

10g Expressは使ったことが無いのであくまで
EnterpriseやStandard Editionと基本的に同じうごきという仮定で書かせてもらいます。

>今存在するDB名が分かれば「drop」コマンドで
>削除を試みようと思っているのですが
>DB名を参照する方法もよく分かりません。

データベース名は
SYSTEMユーザなどでSQL*plusで繋いでいるのであれば
select value from v$parameter
where name ='db_name';
とすれば表示されるかと思います。

>すでにマウントってどういうことなのでしょうか。
という質問に対してですが
Oracleのデータベースには
クローズ(停止)
ノーマウント
マウント
オープン
という4つの状態があり、
おそらく10g Expressではインストール時に
データベースまで自動的に作成してしまって
オープン状態にまでなっているものと考えられます。
ですのでcreate database文内で(おそらく)
startup nomount(クローズ状態からノーマウント状態に変更する命令)
などが実行されると
「すでにマウントされています」
と表示されるのだと思います。

drop database {database_name};
でも良いですが、shutdown immediate;
として、データベースをオープン状態からクローズ
状態にまでしてあげてからデータベースの
ファイルを全て削除する方法でも良いかと思います。
(9iまではdrop database文が無かったのでこの方法
が本来のやり方でした)

投稿日時 - 2006-04-01 01:12:54

ANo.3

#1です。

実際にダウンロードしてちょっと調べてみたところ、10g Expressは
・1インスタンス
・4GB(管理モードで見てみると物理的な制限は5GBとなっているが・・・・?)までのディスク
・1GBまでのメモリ
となっているね。なので、TABLESPACEを作るのは速度とメンテナンス以外の目的では使えなさそう。

 以上から、create databaseは使えない(使えても意味が無い)と考えられまふ。

 結局表領域「USERS」と一時表領域「TEMP」を使う事になるので、それらを使うように一般ユーザを作って、適当にテーブルを作っていきましょう。
 DBに繋ぐ、DBをつつく、などの操作は従来のOracleと全く変わりは無いね(当たり前だが)。9iのEnterprise Manager Consoleでも繋がるし、ADO.NetのOracleProviderもばっちりでした。

投稿日時 - 2006-03-22 17:22:22

お使いのバージョン/エディション用のドキュメントを読んでください。
管理ガイド等に、データベースの作成手順が書かれているハズです。

多分、CREATE DATABASEだけでなく、その後の作業も躓くでしょうから、
管理者ガイドを一度は読んでおく必要があると思いますよ。

投稿日時 - 2006-03-22 10:59:36

ANo.1

 10g Expressの事はよく分からないが、Oracleには旧来よりcreate database文は無いよ。正確には存在するけど、人間が直でこのsql文を叩く事があまり無い。

 イメージとしては、Oracleは1「database」=1インスタンスだ。

 もし、SQL Serverのイメージでやろうとしているのであれば、create TableSpaceを使うと良いだろう。
 SQL Serverでは「database」というのは、1ファイルまたは1つのファイルセットの事だよね。Oracleでは1つの物理ファイルに当たるのはTableSpaceだ。

 多分私が何を言っているのかさっぱりわからないと思う。とにかく、Oracleの基本概念が今ひとつ理解できていないように見受けられる。SQL Server、PostgreSQL、MySQLとは(概念から)全く違う方法で管理しているので、簡単なチュートリアルからやってみるとどうだろう。

キーワード:
 Oracle、ホーム、インスタンス、スキーマ、テーブルスペース

投稿日時 - 2006-03-22 10:28:30

あなたにオススメの質問