web-dev-qa-db-ja.com

Oracle SQL Developer-テーブルが見えない

私はSQL Developer 1.1を使用していました。最近、SQL Developer 3にアップグレードしました。アップグレード後、接続の一部にテーブルが表示されないことに気付きました。テーブルを選択すると、データが表示されます。ビューなどの他のオブジェクトを見ることができます。以前のバージョンを引き続き使用でき、同じスキーマのすべてのテーブルが正常に表示されます。しかし、うまく表示される他の接続があります。

これに関する情報を見つけることができないようです。フィルターを削除しようとしましたが、機能しませんでした。

誰かがこれに遭遇しましたか?助けてください。

28
sammy

探しているテーブルは、おそらく異なるスキーマにあります。いくつかのオプションがあります。接続の下のツリーで[他のユーザー]をクリックするか、接続を右クリックして[スキーマブラウザー]を選択し、目的のスキーマを選択します。

45
Michael Munsey

Michael Munseyが提案した両方のオプションを試してみましたが、私のために働いています。

フィルターされたテーブルを表示する別のオプションを提供したかった。マウスをテーブルツリーノードで右クリックし、[フィルタの適用]を選択して、[同義語を含める]チェックボックスをオンにし、[OK]をクリックします。それだけです。すぐにテーブルを表示できるはずです。わたしにはできる。

礼儀: http://www.thatjeffsmith.com/archive/2013/03/why-cant-i-see-my-tables-in-Oracle-sql-developer/

21
Thayz

から[その他のユーザー]を選択し、ユーザー(スキーマ)を選択します。この下で、テーブルとビューを表示できます。

Screenshot

16
Vinay s.c.

SqlDeveloper64-3.0.4.34とsqlDeveloper64-3.1.07.42にも同じ問題があります。

https://forums.Oracle.com/forums/thread.jspa?threadID=2202388 によれば、「Out Of Band Breaks」に関係するJDBCドライバーにバグがあるようです-基本的に低レベルTCPの問題。

回避策は、JVMプロパティ-Doracle.net.disableOob = trueを使用してSQL開発者を起動することです。このソリューションを3.0および3.1で試しましたが、動作します。

だから私はちょうどフォーラムからソリューションをここに引用します:


私は、一部のユーザーではなくこれらの問題の原因を特定したと考えています。 JDBCドライバーに「帯域外ブレーク」に関係するバグがあるようです-基本的には低レベルのTCP問題です。このバグはさまざまな形で現れているようです。これまでのところ、共有接続(特にVistaまたはWindows 7)を使用し、一般的なシナリオとしてVPN(任意のOS)経由で接続することを特定しました。すべての場合において、DBAアクセスがないことも問題です。

最初に、DBAアクセスが違いを生む理由を説明します。特定のデータディクショナリビューに最初にアクセスするとき、ビューのDBAバージョン(または場合によってはtab $など)にアクセスできるかどうかを最初に確認します。これらのビューは、通常のUSERバージョンよりもはるかに効率的であるため、可能であれば使用したいと考えています。各DBAビューはセッションごとに1回だけ確認します(必要な場合のみ)が、多数のビューへのアクセスを確認することになります。

このチェックを行うと、OOBのバグは頭を抱えているようです。データベースから素敵でシンプルな応答が返されるはずです。ただし、バグが発生しているシナリオでは、この低レベルのネットワークバグが原因で、接続が使用できない状態になるエラーが発生しています。これにより、すべてのConnection Closedエラーが発生します。回避策があるようです-JDBCドライバーはOOBの無効化をサポートしています。ただし、そうすると実行中のステートメントをキャンセルする機能に影響するため、一般的な回避策の使用はお勧めしませんが、ユーザーがこの特定の問題に直面している状況では問題を解決する必要があります。

回避策を有効にするには、Javaシステムプロパティを設定する必要があります-Oracle.net.disableOob = true。これは2つの方法で設定できます。 1つ目は、コマンドラインでsqldeveloper-J-Doracle.net.disableOob = trueとして渡すことです。もちろん、通常はコマンドラインから実行している場合にのみ機能します。 sqldeveloper.confファイル(+ sqldeveloper\bin +にある)に行を追加することもできます。行はAddVMOption -Doracle.net.disableOob = trueになります

追加の解決策を検討していますが、現時点では、回避策によりSQL Developerを使用できるようになります。

-ジョン

SQL Developer Team

8
Mikhail K

おそらく、SQL Developer 3がクエリしているメタテーブルの1つにアクセスできません。適切なクエリを選択すると、次の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は、おそらくアクセス権で機能するより単純なクエリを使用していました。

3
Codo

「他のユーザー」の下に行くことについての答えは近かったが、ほとんど明確ではなかったので、この答えを下に追加する必要があると感じた。

Oracleでは、ログインしているアカウントが所有するスキーマ(MS SQL Serverのデータベース)に属するテーブルのみが表示されます。アカウントが何も所有していない/作成していない場合、データベース内のすべてに対する権限/許可を持っている場合でも、何も表示されません! (これはMS SQL Server Management Studioに反しており、権限があるものは何でも見ることができ、所有者は常に「dbo」であり、一部の管理者が予期せぬ理由で変更することを禁止しています。)

ツリーの「テーブル」の下にこれらのテーブルが表示されるのは、所有者だけです。所有者ではないために表示されない場合は、「他のユーザー」の下に移動し、そのスキーマを作成/所有しているユーザーを確認するまで各ユーザーを展開する必要があります。アカウントにテーブルへのアクセス許可があるかどうかは関係ありませんが、「その他のユーザー」の下に移動し、それを所有するユーザーを見つけて「テーブル」の下に表示する必要があります。

あなたを助けることができる一つのこと:あなたがクエリを書くとき、あなたは実際にその所有者が誰であるかを命名法で指定します。

Select * from admin.mytable

は、「admin」がそれを所有するユーザーであることを示しているので、「Other Users> Admin」の下に移動して「Tables」を展開します。

2
vapcguy

Macでこの問題が発生しました。アンインストールし、/ Users/aa77686/.sqldeveloperフォルダーを削除することで修正しました。そのフォルダーを削除せずにアンインストールしても、修正されませんでした。
その後、再ダウンロードして再インストールしました。
起動して接続を追加すると、正常に機能しました。
それを終了し、数回再起動すると、これまでにテーブルなどが正しく表示されます。

1
Bill Blazek

sys.external_tab $のselectを[myUser]に付与します。私のために働いた。サンクスコド

1
HyNeck

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

ただし、それでも機能せず、まだテーブルがないため、許可されたもののように見えます。

1
James

接続の作成に使用されるIDは、Oracleで表示できるテーブルを定義します。新しいバージョンの接続を設定するときに、異なる資格情報を提供しましたか?

0
Cos Callis

SQL Developer 3.1ではこの問題が修正されています。ただし、現時点では早期導入者向けのリリースです。

0
sammy

私にとって、これはパーミッションの問題でした。

スーパーユーザーの役割(CREATE ROLE root WITH SUPERUSER LOGIN PASSWORD 'XXXXX';)そして、そのスーパーユーザーアカウントを使用してデータベースに接続します。

これはすべての状況で実行可能な解決策ではないことは明らかです。

0
Daniel Cannon