【问题标题】:create tablespace for other user oracle [closed]为其他用户 oracle 创建表空间 [关闭]
【发布时间】: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


【解决方案1】:

我认为你需要反过来做:

  1. 创建表空间
  2. 创建新架构并将默认表空间设置为新创建的表空间。

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_8003.htm

【讨论】:

  • 感谢 Robe 和 Yasir。我对结构感到困惑。我认为表空间是架构中的一个元素,而不是数据库的单个元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
相关资源
最近更新 更多