У меня есть таблица user_synonyms, в которой я могу видеть имя, таблицу и владельца таблицы. Есть ли способ убедиться, что этот синоним все еще действителен i, e. если ссылочная таблица все еще существует, не пытаясь ее вручную?Как проверить все недействительные синонимы в Oracle
ответ
Вы можете проверить, существует ли таблица, присоединившись к ALL_TABLES (синоним может быть не в таблице в той же схеме).
select *
from all_synonyms s
left outer join all_tables t
on s.table_owner = t.owner
and s.table_name = t.table_name
where s.owner = user
Добавить условие and t.table_name is null
если вы хотите, чтобы эти синонимы, если таблица не существует.
Если вы хотите проверить, является ли синоним VALID-запросом ALL_OBJECTS.
select *
from all_synonyms s
join all_objects o
on s.owner = o.owner
and s.synonym_name = o.object_name
where o.object_type = 'SYNONYM'
and s.owner = user
and o.status <> 'VALID'
Как a_horse_with_no_name указывает в комментариях нет никакого требования синонимом быть на столе, представления, последовательности даже пакеты корректными.
Таким образом, вы можете захотеть изменить первый запрос, чтобы искать их, а также:
select *
from all_synonyms s
join all_objects o
on s.table_owner = o.owner
and s.table_name = o.object_name
where s.owner = user
Используйте приведенный ниже запрос:
select s.table_owner, s.table_name
from all_synonyms s, all_tables t
where s.table_owner = t.owner(+)
and s.table_name = t.table_name(+)
and t.owner is null
--s.owner = 'SCHEMA_NAME'
;
Как @a_horse_with_no_name сказал в другом ответе, синоним не обязательно для таблицы. Таким образом, первый запрос может вызвать ложные негативы, если точки синонима, например. к просмотру или процедуре. – Krumia
select distinct os.*
from all_objects os
,all_synonyms s
where 1 = 1
and os.object_type = 'SYNONYM'
and os.STATUS = 'INVALID'
and os.object_name = s.synonym_name
and not exists (select unique(1)
from all_objects o1
where o1.object_name = s.TABLE_NAME
and o1.owner = s.TABLE_OWNER)
order by 2;
Вы должны дать некоторое описание –
- 1. Изменить синонимы в oracle
- 2. Все синонимы для слова в python?
- 3. Как сохранить синонимы в базе данных (текст Oracle)
- 4. ловли все недействительные URL-адреса
- 5. Как удалить синонимы?
- 6. данных соблюдать помечает все поля как недействительные
- 7. Можно ли использовать синонимы Oracle Database в средстве Eclipse JPA
- 8. Пул соединений OLEDB Oracle и недействительные подключения
- 9. изменить все синонимы с другой базой данных
- 10. Как найти недействительные часы
- 11. Почему все рекурсивные синонимы шаблонов отвергаются?
- 12. Как определить недействительные (испорченные) значения, сохраненные в DATE столбцах Oracle
- 13. Elasticsearch найти входное слово и все синонимы
- 14. Отбросить все синонимы с помощью курсора
- 15. Создать публичные синонимы для таблицы и последовательности в oracle
- 16. Сбой проверки схемы спящего режима в таблице Oracle Синонимы
- 17. Являются ли синонимы Oracle поддерживаемыми в платформе Entity Framework?
- 18. Как проверить индекс в Oracle
- 19. Синонимы, вызывающие дорогостоящий план
- 20. Как получить синонимы в Lucene.Net
- 21. Как проверить последовательности Oracle
- 22. Как проверить версию Oracle
- 23. Как получить арабские синонимы?
- 24. Как скомпилировать все недействительные объекты в PL/SQL?
- 25. .htaccess ловить все недействительные URL-адреса
- 26. Существительное Синонимы в WordNet
- 27. Синонимы Перевод в .NET
- 28. Как сохранить недействительные данные?
- 29. Как недействительные адреса с UrlFetch
- 30. Как сделать solr синонимы работы
Чтобы завершить картину: синоним не обязательно для таблицы. Таким образом, первый запрос может вызвать ложные негативы, если точки синонима, например. на вид или процедуру. –
True @a_horse_with_no_name, сконцентрированный слишком много на вопросе. Я обновил свой ответ; Благодарю. – Ben