запись в таблице оракула не существует

при установке sap на трехуровневую архитектуру мне нужно установить экземпляр базы данных (oracle) и центральный экземпляр (sap) и две разные машины. после завершения установки базы данных и продолжения установки центрального экземпляра программа установки пытается получить доступ к таблице и завершается с ошибкой

SELECT USERID, PASSWD FROM
SAPUSER WHERE USERID IN (:A0, :A1)

OCI-вызов завершился неудачно с -1 = OCI_ERROR Ошибка SQL 942: «ORA-00942: таблица или представление не существует»

*** ОШИБКА => ORA-942 при доступе к таблице SAPUSER

поэтому я проверил и выяснил, что возможны два случая

  1. Таблица не существует или
  2. У пользователя нет прав доступа к этой таблице

Затем я проверил таблицу и нашел запись в dba_tables,

SQL> select owner from dba_tables where table_name='SAPUSER';

OWNER
------------------------------
OPS$E64ADM

но при попытке получить из него данные с помощью запроса выбора

SQL> select * from SAPUSER;
select * from SAPUSER
              *
ERROR at line 1:
ORA-00942: table or view does not exist

теперь я не понимаю, доступна таблица или нет. в чем причина этого и как ее решить?


person Himanshu Sourav    schedule 01.05.2015    source источник
comment
Таблица SAPUSER - это таблица, в которой хранится информация для входа в фактическую базу данных. Обычно он доступен для чтения только пользователем ADM. ‹SID›, в вашем случае E64ADM. Обычно пользователь ADM идентифицируется извне (то есть идентифицируется операционной системой). Поскольку ваш центральный экземпляр не находится на том же компьютере, что и экземпляр базы данных, вам, возможно, придется проверить, как E64ADM идентифицируется в базе данных. Только этот пользователь должен иметь доступ к этой таблице, предоставление доступа другим пользователям не рекомендуется по соображениям безопасности. См. Примечания 50088 и 400241 для получения подробной информации о механизме OPS $.   -  person Dirk Trilsbeek    schedule 01.05.2015
comment
спасибо @DirkTrilsbeek, но, как я уже упоминал, это трехуровневая архитектура, где ожидается, что экземпляр базы данных и центральный экземпляр будут установлены на отдельных машинах ... и я не отклонялся от стандартного процесса установки, поэтому не уверен, нужно ли мне вносить какие-либо изменения Теперь..   -  person Himanshu Sourav    schedule 02.05.2015


Ответы (2)


Это зависит от того, откуда вы получаете доступ к объекту,

проверьте, под каким пользователем вы вошли

SQL> SHOW USER

Это покажет, под каким пользователем вы вошли в систему, если вы находитесь в OPS $ E64ADM, прямой запрос с использованием

SQL> select * from SAPUSER;

если показать пользователя, показать любого другого пользователя, которому вам нужны права для доступа к нему от других пользователей, вы можете спросить dba или, если у вас есть доступ, запустите,

SQL>  grant select on OPS$E64ADM.SAPUSER to username;  -- the username from which you want to access the table;

затем вы можете получить доступ от другого пользователя, используя,

SQL> select * from OPS$E64ADM.SAPUSER
person anudeepks    schedule 01.05.2015

под кем вы вошли? если это не владелец таблицы, вам нужно будет изменить свой код, чтобы включить владельца, т.е.

select * from OPS$E64ADM.SAPUSER
person davegreen100    schedule 01.05.2015