oracle表项不存在

oracle表项不存在,oracle,installation,hp-ux,sap-basis,Oracle,Installation,Hp Ux,Sap Basis,在3层体系结构上安装sap时,我需要安装数据库实例(oracle)和中央实例(sap)以及两台不同的计算机。 完成数据库安装并继续中央实例安装后,安装程序正在尝试访问一个表,但由于以下错误而失败 SELECT USERID, PASSWD FROM SAPUSER WHERE USERID IN (:A0, :A1) OCI呼叫失败,原因是 -1=OCI_错误SQL错误942:'ORA-00942:表或视图不存在' ***错误=>ORA-942当 访问SAPUSER表 所以我查了一下,发现有两

在3层体系结构上安装sap时,我需要安装数据库实例(oracle)和中央实例(sap)以及两台不同的计算机。 完成数据库安装并继续中央实例安装后,安装程序正在尝试访问一个表,但由于以下错误而失败

SELECT USERID, PASSWD FROM
SAPUSER WHERE USERID IN (:A0, :A1)
OCI呼叫失败,原因是 -1=OCI_错误SQL错误942:'ORA-00942:表或视图不存在'

***错误=>ORA-942当 访问SAPUSER表

所以我查了一下,发现有两种情况是可能的

  • 表不存在或不存在
  • 用户对此表没有访问权限
  • 接下来我检查了表,在dba_表中找到了一个条目

    SQL> select owner from dba_tables where table_name='SAPUSER';
    
    OWNER
    ------------------------------
    OPS$E64ADM
    
    但当尝试使用select查询从中获取数据时

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

    现在我很困惑,这张桌子有没有空。原因是什么?如何解决?您是以谁的身份登录的?除非是表的所有者,否则您需要更改代码以包含所有者ie

    select * from OPS$E64ADM.SAPUSER
    

    这取决于您从何处访问对象

    检查以查看您作为哪个用户登录

    SQL> SHOW USER
    
    这将显示您作为哪个用户登录, 如果您在OPS$E64ADM中,则直接使用

    SQL> select * from SAPUSER;
    
    如果show user show anyother user您需要从其他用户访问它的权限,可以询问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
    

    SAPUSER表是保存实际数据库登录信息的表。在您的E64ADM中,它通常只能由adm用户读取。通常,ADM用户由外部标识(即由操作系统标识)。由于您的中心实例与数据库实例不在同一台计算机上,您可能需要检查E64ADM在数据库上的标识方式。只有该用户应该有权访问该表,出于安全原因,不建议授予其他用户访问权限。有关OPS$-mechanism的详细信息,请参见注释50088和400241。谢谢@DirkTrilsbeek,但正如我所提到的,它是一个三层体系结构,其中数据库实例和中央实例预期安装在单独的机器上。我没有偏离标准安装过程,因此不确定现在是否需要进行任何更改。。