首页 > 解决方案 > Oracle:在我知道存在的架构中找不到任何表

问题描述

首先,我对 Oracle 几乎一无所知。我与 SQL Server 打交道多年,所以我对 SQL 很熟悉。

我有一个 Schema(我认为它相当于 SQL Server 中的数据库?),它下面有表。我知道这些表存在。我有一个从 SQL Server 到它们的链接服务器连接,我看到了表和数据。我之前可以在 SQLPlus 和 SQL Developer 中使用该ALTER SESSION SET CURRENT_SCHEMA MySchema命令访问这些表。

现在,当我尝试查询这些表时,我得到 ORA-00942: table or view does not exist 00942. 00000 - "table or view does not exist".

我使用系统帐户登录,这与我的链接服务器使用的帐户相同,我的理解是系统应该有权访问所有模式和表。

我担心我以某种方式弄乱了对System的权限,它再也看不到架构了。那可能吗?

标签: oracle

解决方案


您需要考虑名称解析以及访问权限。

您已连接到具有神一般权力的帐户(顺便说一下,通常不建议使用,就像在 Linux中登录一样root),但这本身无助于解决对EMPLOYEES何时是HR模式中的表的引用(例如)。为此,您需要

  • 参考HR.EMPLOYEES, 或
  • 创建一个属于您将使用的帐户的私有同义词,定义EMPLOYEES(或任何您想要的)作为对 的引用HR.EMPLOYEES,或
  • 创建公共同义词,或
  • alter session set current_schema = HR.

推荐阅读