如何在oracle中创建新架构并列出所有架构名称

时间:2013-04-17 07:46:35

标签: oracle schema authorization database-schema

我想在oracle中创建一个新架构,我使用了示例代码,可用here

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;

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

请帮助我!!

2 个答案:

答案 0 :(得分:13)

来自oracle documentation

  

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

因此,首先需要使用架构名称{/ 3> create a User

至于你的查询,没关系,因为用户名列表等于架构名称不可用


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

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;

答案 1 :(得分: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')

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