17

如何使用 Oracle 11g 和 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 完全不同。不像我预期的那么直观。

4

3 回答 3

34

首先,Oracle 所称的“数据库”通常不同于大多数其他数据库产品所称的“数据库”。MySQL 或 SQL Server 中的“数据库”更接近于 Oracle 所谓的“模式”,即特定用户拥有的对象集。在 Oracle 中,每台服务器通常只有一个数据库(大型服务器上可能有几个数据库),其中每个数据库都有许多不同的模式。如果您使用的是 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

于 2012-08-07T21:38:31.747 回答
1

根据您的问题描述,我认为您要创建数据库模式,而不是数据库实例。在 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 版本不支持一次挂载多个数据库实例。

于 2016-04-11T21:41:02.513 回答
0

实际上,上面贾斯汀的回答再正确不过了。SQL Server 和 MySQL 适用于小型数据库。Oracle是针对大型企业数据库的,因此它的结构有所不同。如果服务器足够健壮以处理负载,通常在服务器上拥有多个 Oracle 数据库。如果您收到上面发布的错误,那么您显然是在尝试创建一个新的 Oracle 数据库,如果您正在这样做,那么您可能已经了解了 Oracle 数据库的结构。可能的情况是您尝试使用 dbca 创建数据库,它最初失败,但已创建二进制文件。然后您调整了初始参数并重新尝试使用 dbca 创建数据库。然而,该实用程序会看到您正在创建的数据库的二进制文件和文件夹结构,因此它认为该数据库已经存在但未安装。应首先删除数据库并删除二进制文件和文件夹以及对初始尝试的任何其他清理,然后再试一次。

于 2016-10-03T16:18:08.037 回答