用户id oracle设置,Oracle中的架构,用户和功能ID

许多人发现这个话题令人困惑,因为我们倾向于互相围绕USER和SCHEMA,当它们实际上是相互关联的实体时.

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

很容易证明USER和SCHEMA是不同的,因为我们更改了会话中的当前模式.这只意味着我们可以在另一个用户的模式中引用对象,而不必使用所有者的名称作为前缀.

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命令非常有限:我们可以创建表,视图和索引,并授予对象权限.它的优点就是我们可以在单个事务中创建多个对象,以便在失败时回滚所有创建.当我们单独运行每个create语句时,这是不可能的.

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值