Подтвердить что ты не робот

Oracle SQL Developer - таблицы не видны

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

Screenshot

Ответ 4

У меня такая же проблема в 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 (или в некоторых случаях 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

Ответ 5

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

Ответ 6

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

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

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

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

Select * from admin.mytable

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

Ответ 7

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

Это не работает, хотя, тем не менее, нет таблиц, поэтому это похоже на что-то с разрешением.

Ответ 8

выберите select в sys.external_tab $в [myUser]; работал на меня. thanx Codo

Ответ 9

У меня была эта проблема на моем Mac. Исправлено, удалив его и удалив папку /Users/aa 77686/.sqldeveloper. Удаление без удаления этой папки не исправить.
Затем перезагрузите и переустановите.
Начал работу, добавил подключения, и он работал нормально.
Выйдите из него, перезапустите его несколько раз, и он показывает таблицы и т.д. Правильно каждый раз до сих пор.

Ответ 10

Идентификатор, используемый для создания соединения, определяет, какие таблицы вы можете увидеть в Oracle. Предоставляли ли вы разные учетные данные при настройке соединения для новой версии?

Ответ 11

SQL Developer 3.1 устраняет эту проблему. Его ранний выпуск усыновителя в настоящий момент, хотя.

Ответ 12

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

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

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

Ответ 13

Запустите SQL Developer как администратор

Ответ 14

Вам нужно выбрать привилегии в представлении All_users