0

我以普通用户的身份创建了一些表,当我将权限更改为 sysdba 时,我没有找到我的表!
我收到这条消息:table or view does not exist

这就是我所做
的:首先,我以普通用户的权限创建tab1

create table tab1 …;

我插入一些值,当我

select * from tab1;

我的所有行都显示了,但是当我以 sysdba 连接时;使用此当前用户,不显示任何行!

4

2 回答 2

1

当您以 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 身份登录的习惯。

于 2016-12-13T14:27:37.533 回答
0

从 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

您需要与其他用户一起查看您的表格:

grant select on *normal_user*.table1 to *your_sysdba_user*

并为每张桌子重复

或者你可以去酒吧开

grant select any table to *your_sysdba_user*

但请注意,选择任何表格包括所有人的所有内容,包括数据字典视图,这可能超出您真正希望允许的范围

我会假设您的 sysdba 用户将接近数据库之神,如 sys 这样就可以了,但是免责声明在那里,所以您知道

于 2016-12-12T19:51:11.770 回答