web-dev-qa-db-fra.com

Comment créer une base de données petite et simple à l'aide d'Oracle 11 g et de SQL Developer?

Comment créer une base de données petite et simple à l'aide d'Oracle 11 g et de SQL Developer? Je vois trop d'erreurs et je ne trouve aucun moyen de créer une base de données simple. Par exemple

create database company; 

Causé l'erreur suivante:

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.

EDIT- Ceci est complètement différent de MySQL et MS-SQL que je connais bien. Pas aussi intuitif que je m'y attendais.

13
sweet dreams

Tout d'abord, ce que Oracle appelle une "base de données" est généralement différent de ce que la plupart des autres produits de base de données appellent une "base de données". Une "base de données" dans MySQL ou SQL Server est beaucoup plus proche de ce que Oracle appelle un "schéma" qui est l'ensemble d'objets appartenant à un utilisateur particulier. Dans Oracle, vous ne disposez généralement que d’une seule base de données par serveur (un grand serveur peut contenir une poignée de bases de données), chaque base de données contenant de nombreux schémas différents. Si vous utilisez l'édition Express d'Oracle, vous ne pouvez disposer que d'une base de données par serveur. Si vous êtes connecté à Oracle via SQL Developer, cela signifie que vous avez déjà créé la base de données Oracle.

En supposant que vous souhaitiez réellement créer un schéma et non une base de données (à l'aide de la terminologie Oracle), vous créeriez l'utilisateur.

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

Vous pouvez ensuite attribuer à l'utilisateur les privilèges souhaités.

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

Ceci fait, vous pouvez vous connecter à la base de données (existante) en tant que COMPANY et créer des objets dans le schéma COMPANY.

28
Justin Cave

D'après votre description de la question, je pense que vous deviez créer un schéma de base de données, pas une instance de base de données. Dans la terminologie Oracle, une instance de base de données est un ensemble de fichiers du système de fichiers. Cela ressemble plus à des fichiers de données dans MySQL. Considérant que la base de données dans MySQL est quelque peu équivalente au schéma d’Oracle.

Pour créer un schéma dans Oracle: https://docs.Oracle.com/cd/B19306_01/server.102/b14200/statements_6014.htm

Pour créer une instance de base de données dans Oracle (je préfère personnellement CDBA): https://docs.Oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN11068

Notez que l'édition Oracle Express ne prend pas en charge le montage de plusieurs instances de base de données à la fois.

1
William

En réalité, la réponse de Justin ci-dessus ne pourrait pas être plus incorrecte. SQL Server et MySQL sont destinés aux bases de données de petite taille. Oracle est destiné aux grandes bases de données d'entreprise, d'où la différence de structure. De plus, il est courant d'avoir plusieurs bases de données Oracle sur un serveur, à condition que celui-ci soit suffisamment robuste pour gérer la charge. Si vous avez reçu l'erreur signalée ci-dessus, vous essayez évidemment de créer une nouvelle base de données Oracle. Si vous le faites, vous avez probablement déjà compris la structure d'une base de données Oracle. Le scénario probable est que vous avez tenté de créer une base de données à l'aide de dbca. Cela a initialement échoué, mais les fichiers binaires ont été créés. Vous avez ensuite ajusté vos paramètres initiaux et essayé à nouveau de créer la base de données à l'aide de dbca. Cependant, l'utilitaire voit les fichiers binaires et la structure de dossiers de la base de données que vous créez. Il pense donc que la base de données existe déjà mais n'est pas montée. La suppression de la base de données, la suppression des fichiers binaires et des dossiers, ainsi que tout autre nettoyage de la tentative initiale doivent être effectués en premier, puis réessayez.

0
Richard