Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Теоретические аспекты и практические реализации создания, внедрения и использования баз данных, СУБД, хранилищ.
  • Страница:
  • 1
  • 2
  • 3
  • 4

ТЕМА:

Re: Поиск по БД в Oracle 12 года 9 мес. назад #1636

Да именно, приходиться работать вслепую.
Мне необходимо найти связь между заказами и приходом на склад. Я перебираю select'ами с условием на ссылку на ключ заказа. Перебираю все таблицы. их больше 2000. я на букве "C" еще только)) помогите плиз кто знает как автоматизировать, то что я сейчас делаю - делаю против сердца прям. рутина и глупость по моему.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Поиск по БД в Oracle 12 года 9 мес. назад #1637

В Oracle 3 типа сист view:
1. user_.... - это "свои" объекты, т.е. те, хозяином которых являешься ты
2. all_... - это твои объекты + те, на которые тебе даны гранты
3. dba_... - это все объекты (обычно сюда имеют доступ только привилегированные пользователи)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Поиск по БД в Oracle 12 года 9 мес. назад #1638

в 1 пункте пусто, в 3й меня не пустит никто)
вот я и делаю
SELECT * FROM all_Tables

и потом смотря на TABLE_NAME делаю запросы вида
Код SQL
SELECT * FROM тут_имя_таблицы WHERE prn = тут_ключ_таблицы_для_которой_ищу_связь

ужасно долго.

и не правильно, ведь связь может быть и не по аттрибуту "PRN"...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Поиск по БД в Oracle 12 года 9 мес. назад #1639

Если работает запрос к таблице без указания схемы, то может быт ты имеешь доступ к ней через синоним, публичный или приватный. обрати внимание на значение поля ALL_TABLES.OWNER, если он не равен твоему текущему юзеру, то первоначальный запрос можно модифицировать, например, для пользователя SCOTT - владельца объектов.
SELECT table_name
     , column_name
     , dbms_xmlgen.getXmltype(
         'select count(*) cnt from '||owner||'.'||table_name||' where '||column_name||' like ''%A%'''
       ).extract('ROWSET/ROW/CNT/text()').getnumberval() cnt
FROM ALL_TAB_COLUMNS
WHERE owner = 'SCOTT'
  AND data_type LIKE '%CHAR%'
ORDER BY cnt DESC

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Поиск по БД в Oracle 12 года 9 мес. назад #1640

1. кроме all_tables есть еще all_tab_columns.
К тому же из all_constraints и all_cons_columns можно просмотреть связи между таблицами.

2. генерировать скрипты можно автоматом.
- в SQL*Plus включаешь spool
- формируешь скрипты типа
DECLARE
   CURSOR C1
   IS
   SELECT table_name
   FROM all_tables
   WHERE ...;
-- здесь показал только таблицы, имена и типы колонок - аналогично в all_tab_columns
BEGIN
   FOR R1 IN C1 loop
      dbms_output.put_line('SELECT * FROM '|| R1.table_name ||' WHERE ...');
   end loop;
END;

-- spool off

Потом запускаешь запросы из сформированного файла

3. Вообще конечно искать по всем полям какое-то значение - задача еще та. Если есть приложение, работающее с базой и использующее нужное значение - проще включить трассировку сессии (если потом есть возможность достать с сервера трассировочный файл). Если значение может использоваться в хранимых процедурах, то можно поискаиь с пом. LIKE в текстах (исходные тексты храняться в all_source)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Поиск по БД в Oracle 12 года 9 мес. назад #1641

Спасибо огромное!!! . И за all_constraints и all_cons_columns отдельное большущее спасибо!!!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3
  • 4
Время создания страницы: 0.352 секунд