gpt4 book ai didi

oracle - Oracle 中的架构、用户和功能 ID

转载 作者:行者123 更新时间:2023-12-04 22:50:29 25 4
gpt4 key购买 nike

我在 oracle 中对架构、用户和功能 id 感到困惑。让我们考虑我的两种不同情况

案例一:

让我们考虑 SCOTT@ORCL。如果我们认为 SCOTT 是用户。单独创建用户时,它将创建一个模式。纠正我如果我错了。在这种情况下,当我们单独创建 SCOTT 用户时,创建了 SCOTT 模式。假设如果我们创建另一个模式说 X 。 SCOTT 用户是否可以拥有 X 架构?

案例二:

让我们考虑 SCOTT@ORCL。如果我们认为 SCOTT 是单独的模式,即它是由模式命令单独创建的。如果是这样,那么在没有任何将要拥有它的用户的情况下使用模式有什么用。

我听说 oracle 函数 ID 是一种将多个用户/模式(我不知道我是否可以将模式/用户放在此处)连接到数据库中的函数 ID。 oracle 功能 ID 与用户/模式有区别吗?

最佳答案

许多人觉得这个话题令人困惑,因为我们倾向于交替使用 USER 和 SCHEMA,而实际上它们是独立的,如果相关实体。

模式是用户拥有的数据库对象的集合。当我们创建一个用户时,我们同时创建了他们的架构。最初他们的架构是空的。

很容易证明 USER 和 SCHEMA 是不同的,因为我们在 session 中更改了当前模式。这只是意味着我们可以引用另一个用户模式中的对象,而无需在它们前面加上所有者的名字。

SQL> desc t1
Name Null? Type
----------------------------------------- -------- -------------
ID NUMBER

SQL> alter session set current_schema=APC
2 /

Session altered.

SQL> desc t1
ERROR:
ORA-04043: object t1 does not exist

SQL> sho user
USER is "X"
SQL>

在这种情况下,要么 APC 没有名为 T1 的表,要么他没有将它授予 X。 X 可以看到她自己的表的唯一方法是用她自己的名字作为前缀,或者将当前模式切换回她自己.

要回答您的第一个问题,架构始终与用户同名。所以SCOTT不可能拥有模式X;模式 X 归用户 X 所有。

要回答您的第二个问题,在没有用户的情况下创建架构是不可能的。

确实,有一个 CREATE SCHEMA 命令,但这需要事先创建用户。它实际上不是创建模式,而是创建多个数据库对象。实际上,它更像是一个 ADD OBJECTS TO SCHEMA 命令。
SQL> conn sys as sysdba
Enter password:
Connected.

SQL> create user x identified by x
2 default tablespace users quota 10m on users
3 /

User created.

SQL> grant create session, create table to x
2 /

Grant succeeded.

SQL> conn x/x
Connected.

SQL> create schema authorization x
2 create table t1 (id number)
3 create table t2 (id number)
4 /

Schema created.

SQL> select table_name from user_tables
2 /

TABLE_NAME
------------------------------
T1
T2

SQL>

CREATE SCHEMA 命令非常有限:我们可以创建表、 View 和索引,并授予对象权限。它的优点很简单,我们可以在一个事务中创建多个对象,这样如果一个失败,所有的创建都会回滚。当我们单独运行每个 create 语句时,这是不可能的。

当您提到“功能 ID”时,不确定您在想什么。它不是 Oracle 功能的标准部分。

关于oracle - Oracle 中的架构、用户和功能 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6941128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com