我使用的是SQL Developer 1.1。我最近升级到SQL Developer 3.升级后,我注意到我的一些连接没有显示他们的表。我可以对表格进行选择,并显示数据。我可以看到其他对象,如视图等。我仍然可以使用我的旧版本,并且可以看到所有表格都适用于相同的模式。还有其他连接显示正常。
似乎无法找到相关信息。我尝试删除过滤器,但它没有用。
有没有人碰到这个?请帮忙。
答案 0 :(得分:44)
您要查找的表可能位于不同的架构中。有几种选择。您可以单击连接下树中的其他用户,也可以右键单击连接并选择模式浏览器,然后选择所需的模式。
答案 1 :(得分:20)
我尝试了Michael Munsey建议的两个选项并为我工作。
我想提供另一个选项来查看过滤后的表格。鼠标右键单击表树节点并选择"应用过滤器"并检查"包含同义词"复选框,然后单击“确定”。就是这样,你应该能够在那里查看表格。这个对我有用。
礼貌:http://www.thatjeffsmith.com/archive/2013/03/why-cant-i-see-my-tables-in-oracle-sql-developer/
答案 2 :(得分:15)
从中选择“其他用户”,然后选择您的用户(架构),在该用户(架构)下,您将能够看到您的表和视图。
答案 3 :(得分:7)
我在sqlDeveloper64-3.0.4.34和sqlDeveloper64-3.1.07.42中遇到同样的问题。
根据https://forums.oracle.com/forums/thread.jspa?threadID=2202388,似乎JDBC驱动程序中存在一个与“Out of Band Breaks”有关的错误 - 基本上是一个低级TCP问题。
解决方法是使用JVM属性启动sql developer -Doracle.net.disableOob = true 我试过这个3.0和3.1的解决方案,它可以工作。
所以我在这里引用论坛的解决方案:
我相信我已经确定了某些用户而不是其他用户导致这些问题的原因。看来JDBC驱动程序中存在一个与“Out of Band Breaks”有关的错误 - 基本上是一个低级TCP问题。这个错误似乎以多种方式表现出来。到目前为止,我已经确定使用共享连接(特别是Vista或Windows 7)和通过VPN(任何操作系统)连接作为常见方案。在所有情况下,没有DBA访问权限也是一个问题。
首先,让我解释为什么DBA访问会产生影响。当我们第一次访问任何特定的数据字典视图时,我们首先尝试查看是否可以访问视图的DBA版本(或者某些情况是tab $等)。这些视图比普通的USER版本更有效,因此我们希望尽可能使用它们。我们每个会话只检查一次DBA视图(并且仅在需要时),但我们最终可以检查对一堆视图的访问。
当我们进行此检查时,OOB错误似乎已经发生了变化。我们应该从数据库中获得一个很好的,简单的响应。但是,在发生错误的情况下,此低级别网络错误会导致发生错误,从而导致连接进入不可用状态。然后,这会导致所有连接已关闭错误。 似乎有一种解决方法 - JDBC驱动程序支持禁用OOB。但是,这样做会影响取消执行语句的能力,因此我不建议一般使用解决方法,但它应解决用户遇到此特定问题的情况。
要启用变通方法,需要设置Java系统属性 - oracle.net.disableOob = true 。您可以通过两种方式设置此项。第一种是在命令行中将其传递为sqldeveloper -J-Doracle.net.disableOob = true 。当然,只有在通常从命令行运行时才有效。您还可以在sqldeveloper.conf文件中添加一行(位于+ sqldeveloper \ bin +下)。该行将 AddVMOption -Doracle.net.disableOob = true
我们正在研究其他解决方案,但目前解决方法应该可以让您使用SQL Developer。
- 约翰
SQL Developer Team
答案 4 :(得分:3)
您可能无法访问SQL Developer 3正在查询的其中一个元表。如果我选择了正确的查询,它将运行以下SELECT语句:
select * from (
SELECT o.OBJECT_NAME, o.OBJECT_ID ,'' short_name, decode(bitand(t.property, 32), 32, 'YES', 'NO') partitioned,
decode(bitand(t.property, 64), 64, 'IOT',
decode(bitand(t.property, 512), 512, 'IOT_OVERFLOW',
decode(bitand(t.flags, 536870912), 536870912, 'IOT_MAPPING', null))) iot_type,
o.OWNER OBJECT_OWNER, o.CREATED, o.LAST_DDL_TIME, O.GENERATED, O.TEMPORARY, case when xt.obj# is null then 'N' else 'Y' end EXTERNAL
FROM SYS.Dba_OBJECTS O ,sys.tab$ t, sys.external_tab$ xt
WHERE O.OWNER = :SCHEMA
and o.object_id = t.obj#(+)
and o.object_id = xt.obj#(+)
AND O.OBJECT_TYPE = 'TABLE'
union all
SELECT OBJECT_NAME, OBJECT_ID , syn.SYNONYM_NAME short_NAME, decode(bitand(t.property, 32), 32, 'YES', 'NO') partitioned,
decode(bitand(t.property, 64), 64, 'IOT',
decode(bitand(t.property, 512), 512, 'IOT_OVERFLOW',
decode(bitand(t.flags, 536870912), 536870912, 'IOT_MAPPING', null))) iot_type,
SYN.TABLE_OWNER OBJECT_OWNER, o.CREATED, o.LAST_DDL_TIME, O.GENERATED, O.TEMPORARY, case when xt.obj# is null then 'N' else 'Y' end EXTERNAL
FROM SYS.Dba_OBJECTS O, sys.user_synonyms syn,sys.tab$ t, sys.external_tab$ xt
WHERE syn.table_owner = o.owner
and syn.TABLE_NAME = o.object_NAME
and o.object_id = t.obj#
and o.object_id = xt.obj#(+)
and o.object_type = 'TABLE'
and :INCLUDE_SYNS = 1
)
where /**/object_name not in (select object_name from recyclebin)
AND not object_name like 'BIN$%'
尝试运行此语句以获取指示哪个表不存在的完整错误消息(这相当于“由于缺少访问权限而不可见”)。 SQL Developer将询问SCHEMA
和INCLUDE_SYNS
的值。将SCHEMA
设置为您的用户名,将INCLUDE_SYNS
设置为0。
SQL Developer 1.1可能使用了一个更符合您访问权限的简单查询。
答案 5 :(得分:2)
关于进入“其他用户”的答案很接近,但不够明确,所以我觉得有必要在下面添加这个答案。
在Oracle中,它只显示属于您登录的帐户所拥有的模式(MS SQL Server中的数据库)的表。如果帐户拥有/没有创建任何内容,即使您拥有数据库中所有内容的权限/权限,您也不会看到任何内容! (这与MS SQL Server Management Studio相反,在那里你可以看到你拥有的任何权利,而且所有者总是“dbo”,禁止某些管理员进入并因某些不可预见的原因进行更改。)
所有者将是唯一一个将在树中的“表”下看到这些表的人。如果您没有看到它们,因为您不是它们的所有者,则必须在“其他用户”下展开并展开每个用户,直到找到谁创建/拥有该模式(如果您还不知道)。如果您的帐户具有表格权限,则无关紧要,您仍然必须在“其他用户”下找到拥有它的用户才能看到它,在“表格”下!
有一件事可以帮到你:当你编写查询时,你实际上在命名法中指明了所有者是谁,例如
Select * from admin.mytable
表示“admin”是拥有它的用户,因此您在“其他用户>管理员”下展开并展开“表格”,就在那里。
答案 6 :(得分:1)
3.1对我来说无关紧要。
我花了一段时间,但我设法找到2.1版本试试这里: http://www.oracle.com/technetwork/testcontent/index21-ea1-095147.html
1.2 http://www.oracle.com/technetwork/testcontent/index-archive12-101280.html
虽然不起作用,但仍然没有表,所以看起来像是有权限的东西。
答案 7 :(得分:1)
将sys.external_tab $上的select赋予[myUser];为我工作。 thanx Codo
答案 8 :(得分:1)
我的Mac上出现了这个问题。
通过卸载并删除/Users/aa77686/.sqldeveloper文件夹来修复它。
卸载而不删除该文件夹没有修复它
然后重新下载并重新安装。
启动它,添加连接,它工作正常
退出它,重新启动它几次,并且每次都正确地显示表格等。
答案 9 :(得分:0)
用于创建连接的标识定义了您可以在Oracle中看到的表。在为新版本设置连接时,您是否提供了不同的凭据?
答案 10 :(得分:0)
SQL Developer 3.1修复了这个问题。它是目前的早期采用者版本。
答案 11 :(得分:0)
对我来说,这最终是一个权限问题。
我通过创建超级用户角色(CREATE ROLE root WITH SUPERUSER LOGIN PASSWORD 'XXXXX';
)然后使用该超级用户帐户连接到数据库来解决问题。
在所有情况下,这显然都不是一个可行的解决方案。
答案 12 :(得分:-2)
您需要在All_users视图
上选择权限答案 13 :(得分:-3)
以管理员身份启动SQL Developer