Oracle SQL Developer - таблицы не видны - PullRequest
28 голосов
/ 22 апреля 2011

Я использовал SQL Developer 1.1. Я недавно обновился до SQL Developer 3. После обновления я заметил, что некоторые из моих соединений не показывают свои таблицы. Я могу сделать выбор в таблицах, и данные отображаются. Я могу видеть другие объекты, такие как представления и т. Д. Я все еще могу использовать мою старую версию и могу видеть все перечисленные таблицы в порядке для тех же схем. Есть и другие соединения, которые хорошо отображаются.

Не могу найти информацию об этом. Я пытался удалить фильтр, но он не работал.

Кто-нибудь сталкивался с этим? Пожалуйста, помогите.

Ответы [ 14 ]

44 голосов
/ 04 декабря 2012

Таблицы, которые вы ищете, вероятно, находятся в другой схеме.Есть несколько вариантов.Вы можете либо щелкнуть Другие пользователи в дереве под вашим соединением, либо щелкнуть правой кнопкой мыши по соединению и выбрать «Обозреватель схемы», а затем выбрать нужную схему.

21 голосов
/ 05 июня 2014

Я испробовал оба варианта, предложенные Майклом Манси, и работает для меня.

Я хотел предоставить другую опцию для просмотра отфильтрованных таблиц.Щелкните правой кнопкой мыши узел дерева таблиц, выберите «Применить фильтр», установите флажок «Включить синонимы» и нажмите «ОК».Вот и все, вы должны иметь возможность просматривать таблицы прямо там.Меня устраивает.

Предоставлено: http://www.thatjeffsmith.com/archive/2013/03/why-cant-i-see-my-tables-in-oracle-sql-developer/

16 голосов
/ 25 апреля 2016

Выберите «Другие пользователи» и выберите своего пользователя (схему), под которым вы сможете видеть свои таблицы и представления.

Screenshot

7 голосов
/ 11 апреля 2012

У меня такая же проблема в 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.

Обходной путь - запуск sql-разработчика со свойством JVM -Doracle.net.disableOob = true Я пробовал это решение для 3.0 и 3.1, и оно работает.

Так что я простопроцитируйте здесь решение с форума:


Я считаю, что я определил причины этих проблем для некоторых пользователей, а не для других.Похоже, что в драйвере JDBC есть ошибка, связанная с «Out of Band Breaks» - в основном проблема низкого уровня TCP.Ошибка, кажется, проявляется несколькими способами.До сих пор я определял использование общих подключений (особенно с Vista или Windows 7) и подключение через VPN (любую ОС) в качестве распространенных сценариев.Во всех случаях проблема отсутствия доступа к DBA также является проблемой.

Сначала позвольте мне объяснить, почему доступ к DBA имеет значение.Когда мы впервые обращаемся к какому-либо конкретному представлению словаря данных, мы сначала пытаемся выяснить, можем ли мы получить доступ к версии представления DBA (или есть в некоторых случаях вкладка $ и т. Д.).Эти представления гораздо более эффективны, чем обычные версии 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

3 голосов
/ 22 апреля 2011

У вас, вероятно, нет доступа к одной из мета таблиц, к которым обращается 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 запросит значения для SCHEMA и INCLUDE_SYNS. Установите SCHEMA на свое имя пользователя и INCLUDE_SYNS на 0.

SQL Developer 1.1, вероятно, использовал более простой запрос, который работал с вашими правами доступа.

2 голосов
/ 10 июня 2016

Ответ о переходе в раздел «Другие пользователи» был близок, но недостаточно ясен, поэтому я почувствовал необходимость добавить этот ответ ниже.

В Oracle будут отображаться только те таблицы, которые принадлежат схемам (базы данных в MS SQL Server) и принадлежат учетной записи, в которую вы вошли.Если учетная запись владеет / не создала ничего, вы ничего не увидите, даже если у вас есть права / разрешения на все в базе данных!(Это противоречит MS SQL Server Management Studio, где вы можете видеть все, на что у вас есть права, а владелец всегда "dbo", запрещая некоторым администраторам входить и менять его по какой-то непредвиденной причине.)

владелец будет единственным, кто увидит эти таблицы в разделе «Таблицы» в дереве.Если вы не видите их, потому что вы не являетесь их владельцем, вам придется перейти в раздел «Другие пользователи» и расширять каждого пользователя, пока вы не узнаете, кто создал / владеет этой схемой, если вы ее еще не знаете.Неважно, имеет ли ваша учетная запись права доступа к таблицам или нет, вам все равно нужно перейти в раздел «Другие пользователи» и найти того пользователя, которому он принадлежит, чтобы увидеть его, в разделе «Таблицы»!

Одна вещь, котораяможет помочь вам: когда вы пишете запросы, вы фактически указываете в номенклатуре, кто этот владелец, например.

Select * from admin.mytable

означает, что «admin» - это пользователь, которому он принадлежит, поэтому вы переходите в раздел «Другие пользователи».> Админ "и разверните" Таблицы "и вот оно.

1 голос
/ 26 апреля 2016

У меня была эта проблема на моем Mac. Исправлено путем удаления и удаления папки /Users/aa77686/.sqldeveloper. Удаление без удаления этой папки не устранило ее.
Затем перезагружается и переустанавливается.
Запустил, добавил соединения, и все заработало.
Закройте его, перезапустите несколько раз, и он покажет таблицы и т. Д. Каждый раз правильно.

1 голос
/ 16 мая 2013

предоставить выбор в sys.external_tab $ для [myUser];работал на меня.спасибо Кодо

1 голос
/ 01 апреля 2012

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

Это тоже не сработает, таблиц по-прежнему нет, поэтому выглядит как-то с разрешения.

0 голосов
/ 19 июня 2016

Для меня это оказалось проблемой с разрешениями.

Я решил проблему, создав роль суперпользователя (CREATE ROLE root WITH SUPERUSER LOGIN PASSWORD 'XXXXX';) и затем используя эту учетную запись суперпользователя для подключения к базе данных.

Это, очевидно, не будет жизнеспособным решением во всех ситуациях.

...