2016-12-12 2 views
0

Я создал некоторые таблицы как обычный пользователь, и когда я меняю привилегию на sysdba, я не собирал свои таблицы!
я получаю сообщение: table or view does not existПользователь таблицы доступа в привилегии sysdba

Это то, что я делаю:
Прежде всего, с привилегиями обычного пользователя создать tab1:

create table tab1 …; 

и вставить некоторые значения, когда я

select * from tab1; 

все мои строки отображаются, но когда я подключаюсь как sysdba; с этим текущим пользователем ни одна строка не отображается!

ответ

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, если вы на самом деле не нужны те, привилегии более высокого уровня для этого сеанса.

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, так что было бы хорошо, но отказ от ответственности там, так что вы знаете

+0

Спасибо за ваш ответ, но, возможно, вы не понимаете мой вопрос ... Прежде всего, с привилегией обычного пользователя я создаю tab1 create table tab1 ...; , и я вставляю некоторые значения, когда я выбираю * из tab1; все мои строки отображаются, но когда я устанавливаю connect как sysdba; с этим текущим пользователем, а не с номером! –

+0

Хорошо, я, возможно, неправильно понял. Вы зафиксировали вставку, сделанную вашим обычным пользователем привилегий? Поскольку внутри вашей сессии, если вы добавляете строку в таблицу, а затем выбираете из этой таблицы, вы увидите свои добавленные строки, но пока вы не зафиксируете изменения, они останутся невидимыми для других пользователей/сеансов – Mike

Смежные вопросы