我想在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;
列出架构,但我认为,它不是一种正确的方法,因为用户和架构具有多对多关系,这意味着我无法在此处获得所有架构名称。
请帮助我!!
答案 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')
根据需要添加您不想列出的其他用户名。