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

オラクルのドキュメント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 に答える