【发布时间】:2013-05-16 13:08:20
【问题描述】:
我正在使用 Oracle 11g 和 SQL Developer。
在我的数据库中,我有 2 个模式:模式 A(与系统非常相似)和模式 B。 在架构 A 中,我创建了另一个用户:架构 C。在这里,我想在创建后立即添加一个表空间。
我想要的:创建一个脚本,通过模式 A 在模式 C 中创建表空间。
我在模式 A 中,我尝试下一个代码:
CREATE TABLESPACE schemaC.tableSpace_DATA DATAFILE
'/u01/app/oracle/oradata/Test/fileName_DATA.DBF' SIZE 10M
AUTOEXTEND ON
NEXT 56K MAXSIZE UNLIMITED
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT MANUAL;
但我收到错误 ORA-02180:“CREATE TABLESPACE 的选项无效”。问题出在这里:schemaC.tableSpace_DATA 因为如果我删除 schemaC,则创建表空间,但在 schemaA 中,而不是在 schemaC 中。
有什么建议吗?:D
【问题讨论】:
-
架构不能为任何人所有。它是不同模式(用户)拥有的段的逻辑容器。请参阅数据库概念指南中的"Overview of Tablespaces" 部分。因此你不能说
CREATE TABLESPACE somechema.tablespace_name...,因为正确的语法是CREATE TABLESPACE tablespace_name... -
“在模式 A 中我创建了另一个用户:模式 C”,这是无意义的。您不会创建“在模式中”的模式。用户/模式对于 Oracle 实例来说是全局的。表空间也是如此。它们不是“在”模式中创建的。同样,它们对于 Oracle 实例来说是全局的。
-
a_horse_with_no_name:我不想将 schemaA 添加到 schemaC。我想从 schemaC 创建它。我没有与系统用户连接,因为 schemaC 具有几乎相同的许可。
标签: oracle tablespace