Есть ли способ поиска в Oracle с использованием строки, если вы не знаете, является ли строка схемой / таблицей / и т. Д.? - PullRequest
1 голос
/ 22 апреля 2019

Я пытаюсь найти что-то конкретное в базе данных Oracle, но я не знаю, таблица ли это, или схема, или пользователь, и т. Д ...

Есть ли какая-либо команда, котораяпозволяет выполнить поиск строки, если ее тип неизвестен?

Например: SQL> SHOW STRING 'the_string'

Ответы [ 3 ]

4 голосов
/ 22 апреля 2019

Попробуйте:

select * from all_objects where object_name like '%your object name%'

Обратите внимание, что

  • ALL_OBJECTS описывает все объекты, доступные текущему пользователю.
  • DBA_OBJECTS описывает все объекты вбаза данных.

Вам потребуются надлежащие права доступа, назначенные вашему пользователю.

2 голосов
/ 22 апреля 2019

Вот унифицированный запрос, который должен помочь:

SELECT 'User/Schema' match_type,
        username
FROM dba_users -- if you have access to dba_users uses all_users instead
WHERE UPPER(username) LIKE '%THE_STRING%'
UNION
SELECT object_type,
       owner || '.' || object_name object_name
FROM dba_objects  -- or all_objects if no access to dba_objects
WHERE UPPER ( owner || '.' || object_name ) LIKE '%THE_STRING%'
ORDER BY 1, 2
/

Обратите внимание, что представления dba_ будут отображать все (что соответствует), представления all_ будут отображать совпадения только для объектов, к которым у вас есть доступ.

0 голосов
/ 22 апреля 2019

В дополнение к ответу OldProgrammer, если этот запрос не возвращает никакой информации, чтобы определить, является ли имя идентификатором пользователя (который в основном синонимичен со схемами), вам необходимо запросить ALL_USERS или DBA_USERS:

select username from all_users where lower(username) like '%your_name_to_find%';
...