web-dev-qa-db-ja.com

Oracle 11 gとSQL Developerを使用して小さくシンプルなデータベースを作成する方法

Oracle 11 gとSQL Developerを使用して小さくシンプルなデータベースを作成する方法エラーが多すぎて、単純なデータベースを作成する方法が見つかりません。例えば

create database company; 

次のエラーが発生しました:

Error starting at line 1 in command:
create database company
Error at Command Line:1 Column:0
Error report:
SQL Error: ORA-01501: CREATE DATABASE failed
ORA-01100: database already mounted
01501. 00000 -  "CREATE DATABASE failed"
*Cause:    An error occurred during create database
*Action:   See accompanying errors.

編集-これは、私がよく知っているMySQLやMS-SQLとは完全に異なります。思っていたほど直感的ではありません。

14
sweet dreams

まず、Oracleが「データベース」と呼ぶものは、他のほとんどのデータベース製品が「データベース」と呼ぶものとは一般に異なります。 MySQLまたはSQL Serverの「データベース」は、特定のユーザーが所有するオブジェクトのセットである「スキーマ」と呼ばれるものに非常に近いものです。 Oracleでは、通常、サーバーごとに1つのデータベースしかありません(大規模なサーバーには少数のデータベースがある場合があります)。各データベースには多くの異なるスキーマがあります。 OracleのExpressエディションを使用している場合、サーバーごとに1つのデータベースのみが許可されます。 SQL Developerを介してOracleに接続している場合は、Oracleデータベースがすでに作成されていることを示しています。

データベースではなくスキーマを本当に作成したい場合(Oracleの用語を使用)、ユーザーを作成します。

CREATE USER company
  IDENTIFIED BY <<password>>
  DEFAULT TABLESPACE <<tablespace to use for objects by default>>
  TEMPORARY TABLESPACE <<temporary tablespace to use>>

次に、必要な特権をユーザーに割り当てます

GRANT CREATE SESSION TO company;
GRANT CREATE TABLE TO company;
GRANT CREATE VIEW TO company;
...

これが完了すると、COMPANYとして(既存の)データベースに接続し、COMPANYスキーマにオブジェクトを作成できます。

30
Justin Cave

質問の説明から、データベースインスタンスではなくデータベーススキーマを作成すると思います。 Oracleの用語では、データベースインスタンスはファイルシステム内の一連のファイルです。 MySQLのデータファイルに似ています。一方、MySQLのデータベースは、Oracleのスキーマといくらか同等です。

Oracleでスキーマを作成するには: https://docs.Oracle.com/cd/B19306_01/server.102/b14200/statements_6014.htm

Oracleでデータベースインスタンスを作成するには(個人的にはCDBAを好みます): https://docs.Oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN11068

Oracle Express Editionは、一度に複数のデータベース・インスタンスのマウントをサポートしていないことに注意してください。

1
William

実際、上記のジャスティンからの答えはこれ以上正確ではありません。 SQL ServerとMySQLは、小さめのデータベース用です。 Oracleは大規模なエンタープライズデータベースを対象としているため、その構造に違いがあります。また、サーバーが負荷を処理するのに十分な堅牢性を備えている場合、サーバー上に複数のOracleデータベースを配置するのが一般的です。上記のエラーが表示された場合は、明らかに新しいOracleデータベースを作成しようとしていることになります。そうしている場合は、おそらくOracleデータベースの構造をすでに理解しています。考えられるシナリオは、dbcaを使用してデータベースを作成しようとしたが、最初は失敗したが、バイナリが作成されたというものです。次に、初期パラメーターを調整し、dbcaを使用してデータベースの作成を再試行しました。ただし、ユーティリティは作成中のデータベースのバイナリとフォルダー構造を確認するため、データベースはすでに存在しているがマウントされていないと見なされます。データベースを削除し、バイナリとフォルダを削除し、最初の試行の他のクリーンアップを最初に実行してから、再試行してください。

0
Richard