Oracle 中的 SCHEMA 和 USER 是一回事吗?
Posted
技术标签:
【中文标题】Oracle 中的 SCHEMA 和 USER 是一回事吗?【英文标题】:Are SCHEMA and USER the same thing in Oracle? 【发布时间】:2017-09-26 05:20:51 【问题描述】:在 Oracle 中 SCHEMA 和 USER 是一回事吗?是否存在单个用户可以拥有两个或多个架构的情况?
【问题讨论】:
这里已经有了很好的答案:) enter link description here Difference between a user and a schema in Oracle?的可能重复 【参考方案1】:严格来说,SCHEMA 是 USER 拥有的一组对象。但是,一个 USER 只能有一个 SCHEMA,因此人们经常可以互换使用这些术语。
这是 USER 和 SCHEMA 之间的区别。用户“A”已将其 PRODUCT 表的权限授予用户“B”。用户“B”没有该名称的表。
SQL> show user
USER is "B"
SQL> select count(*) from products
2 /
select count(*) from products
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select count(*) from a.product
2 /
COUNT(*)
----------
2
SQL>
如果没有同义词“B”,则需要为架构添加前缀以引用 PRODUCT 表。除非他们选择更改当前架构:
SQL> alter session set current_schema = "A"
2 /
Session altered.
SQL> select count(*) from product
2 /
COUNT(*)
----------
2
SQL> show user
USER is "B"
SQL>
现在用户是“B”,但当前(默认)架构是“A”。在引用自己的表时,他们需要在架构前添加哪些menas!
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
YOUR_TABLE
SQL> select count(*) from your_table;
select count(*) from your_table
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select count(*) from b.your_table;
COUNT(*)
----------
6
SQL>
“是否可以在没有任何用户的情况下单独创建模式。”
没有。 SCHEMA 必须属于 USER。当我们create user
Oracle 会自动创建一个空模式。
令人困惑的是create schema
语法,但这只是在一个语句中创建多个表(和索引)的简写。 Find out more。
【讨论】:
感谢您的回复。但是我有一个进一步的说明,是否可以在没有任何用户的情况下单独创建模式。如果是这样,请告诉我创建 Schema 的语法。 @JLP 不,不能单独创建模式。如果您愿意,您可以创建一个用户并锁定该帐户而不授予CREATE SESSION
权限,因此存在架构但用户无法访问它;但是,仍然必须有用户。以上是关于Oracle 中的 SCHEMA 和 USER 是一回事吗?的主要内容,如果未能解决你的问题,请参考以下文章
oracle导出数据库的时候提示:这些对象由***导出,而不是当前用户
oracle中的表空间(tablespace)方案(schema)段(segment)区(extent)块(block)