以 sysdba 权限访问 table 用户
Access table user in sysdba privilege
我以普通用户身份创建了一些表,当我将权限更改为 sysdba 时,我没有找到我的表!
我收到此消息:table or view does not exist
我就是这样做的:
首先,我以普通用户的权限创建 tab1
:
create table tab1 …;
我插入一些值,当我
select * from tab1;
显示了我所有的行,但是当我以 sysdba 身份连接时;对于当前用户,没有显示任何行!!
从 oracle 文档 https://docs.oracle.com/database/121/ADMIN/dba.htm#ADMIN11048 中,以下是 sysdba 为您的用户提供的内容:
Perform STARTUP and SHUTDOWN operations
ALTER DATABASE: open, mount, back up, or change character set
CREATE DATABASE
DROP DATABASE
CREATE SPFILE
ALTER DATABASE ARCHIVELOG
ALTER DATABASE RECOVER
Includes the RESTRICTED SESSION privilege
要与其他用户一起查看您的 table,您需要做的是:
grant select on *normal_user*.table1 to *your_sysdba_user*
并为每个 table
重复
或者你可以用
打开酒吧
grant select any table to *your_sysdba_user*
但请注意,select 任何 table 包括来自所有人的所有内容,包括数据字典视图,这可能超出您真正希望允许的范围
我假设您的 sysdba 用户会像 sys 一样接近数据库之神,这样就可以了,但是有免责声明所以您知道
当您以 sysdba 身份登录时,您实际上成为了 sys 用户,因此,您连接到 sys 架构,而不是您自己的架构:
sqlplus kjohnston as sysdba
*connected*
SQL> show user;
USER is "SYS"
由于您在 sys 模式中,因此必须通过在表名前加上模式名称来引用模式中的表,如:
select * from kati_ais.tab1; //assuming kati_ais is your schema name
附带说明一下,您不应该养成以 sysdba 身份登录的习惯,除非您确实需要该会话的那些更高级别的权限。
我以普通用户身份创建了一些表,当我将权限更改为 sysdba 时,我没有找到我的表!
我收到此消息:table or view does not exist
我就是这样做的:
首先,我以普通用户的权限创建 tab1
:
create table tab1 …;
我插入一些值,当我
select * from tab1;
显示了我所有的行,但是当我以 sysdba 身份连接时;对于当前用户,没有显示任何行!!
从 oracle 文档 https://docs.oracle.com/database/121/ADMIN/dba.htm#ADMIN11048 中,以下是 sysdba 为您的用户提供的内容:
Perform STARTUP and SHUTDOWN operations
ALTER DATABASE: open, mount, back up, or change character set
CREATE DATABASE
DROP DATABASE
CREATE SPFILE
ALTER DATABASE ARCHIVELOG
ALTER DATABASE RECOVER
Includes the RESTRICTED SESSION privilege
要与其他用户一起查看您的 table,您需要做的是:
grant select on *normal_user*.table1 to *your_sysdba_user*
并为每个 table
重复或者你可以用
打开酒吧grant select any table to *your_sysdba_user*
但请注意,select 任何 table 包括来自所有人的所有内容,包括数据字典视图,这可能超出您真正希望允许的范围
我假设您的 sysdba 用户会像 sys 一样接近数据库之神,这样就可以了,但是有免责声明所以您知道
当您以 sysdba 身份登录时,您实际上成为了 sys 用户,因此,您连接到 sys 架构,而不是您自己的架构:
sqlplus kjohnston as sysdba
*connected*
SQL> show user;
USER is "SYS"
由于您在 sys 模式中,因此必须通过在表名前加上模式名称来引用模式中的表,如:
select * from kati_ais.tab1; //assuming kati_ais is your schema name
附带说明一下,您不应该养成以 sysdba 身份登录的习惯,除非您确实需要该会话的那些更高级别的权限。