SYSDBA的一些权限问题

本文探讨了在Oracle数据库中使用SYSDBA角色时遇到的一个常见误解:即使用SYSDBA角色连接数据库时,默认连接到的schema是sys,而不是当前用户的同名schema。通过实例说明了这一点,并解释了为何会出现表不存在的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相对于开发人员用的角色和权限,我更喜欢用SYSDBA这个角色,通常连接数据库的时候会用 sqlplus “/as sysdba",这是一种操作系统认证的方式,这里需要注意的是,你用sysdba连接的时候,是自动连接到默认数据库schema的,这里的sysdba默认schema是sys,sysoper的默认schema是public。这点需要特别注意,举个有意思的例子:
 
我们之前新建了一个用户,用户名是:tony,密码是:tony。授予用户sysdba的权限。
 
CONNECT tony/tony
CREATE TABLE admin_test(name VARCHAR2(20));
Later, user oe issues these statements:
CONNECT tony/tony AS SYSDBA
SELECT * FROM admin_test;
 
此时,会报错ORA-00942: table or view does not exist
这个例子恰好证明了,即使我们用的是tony用户登录的数据库,但是却并没有登录到数据库自动给该用户分配的同名schema--tony中,而是连接到sys的默认schema中,这正是sysdba权限的问题。登录的是sys默认的schema--sys中。所以会报错:表不存在。
 
补充一下schema的概念,这是oracle的术语,不建议翻译,首先明确这是一个逻辑集合,oracle的官方解释就是:schema是一组逻辑数据结构,或者schema objects的集合,schema是属于数据库的和其同名的用户,每个用户都有一个schema。比如例子中的tony用户就有一个tony的schema和其对应。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16969562/viewspace-756661/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16969562/viewspace-756661/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值