7

我想在 oracle 中创建一个新模式,我使用了示例代码,可在此处获得

CREATE SCHEMA AUTHORIZATION oe
   CREATE TABLE new_product
      (color VARCHAR2(10)  PRIMARY KEY, quantity NUMBER)
   CREATE VIEW new_product_view
      AS SELECT color, quantity FROM new_product WHERE color = 'RED'
   GRANT select ON new_product_view TO scott
/

但是,得到错误

ERROR at line 1:
ORA-02421: missing or invalid schema authorization identifier

另外,请帮助我如何列出所有可用架构的名称。我在用

 select username from dba_users;

列出架构,但我认为这不是正确的方法,因为用户和架构具有多对多关系,这意味着我无法在这里获取所有架构名称。

请帮我 !!

4

2 回答 2

13

来自 oracle文档

此语句实际上并不创建模式。Oracle 数据库在您创建用户时自动创建模式

因此,您首先需要使用架构名称创建一个用户

至于您的查询,这很好,因为用户名列表等于架构名称不可用


更新:我现在无法真正测试它,但应该是这样的:

CREATE USER oe IDENTIFIED BY oePSWRD;

CREATE SCHEMA AUTHORIZATION oe
   CREATE TABLE new_product
      (color VARCHAR2(10)  PRIMARY KEY, quantity NUMBER)
   CREATE VIEW new_product_view
      AS SELECT color, quantity FROM new_product WHERE color = 'RED'
   GRANT select ON new_product_view TO scott;
于 2013-04-17T08:19:32.707 回答
2

来自文档:http ://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6014.htm

模式名称必须与您的 Oracle 数据库用户名相同。

您要查找所有用户,还是查找存在表(例如)的所有用户?如果是后者那么...

select distinct
  owner
from
  dba_tables
where
  owner not in ('SYS','SYSTEM')

根据需要添加您不想列出的其他用户名。

于 2013-04-17T08:18:03.387 回答