Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как получить из базы описание все внешних ключей?  [new]
verter
Member

Откуда: Санкт-Петербург
Сообщений: 1018
Мне нужно пересоздать все внешние ключи во всех таблицах базы.
Вручную делать это очень долго.
Как получить описание внешних ключей из базы?

например:

alter table T1
  add constraint FK_T1_T2 foreign key (C1)
  references T2 (C1) on delete cascade;
15 фев 13, 11:03    [13930438]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
dba_constraints
dba_cons_columns
15 фев 13, 11:06    [13930456]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
verter
Member

Откуда: Санкт-Петербург
Сообщений: 1018
Стоит задача увеличения производительности базы.
База была из дампа залита на другой сервер.
Сделал следующие вещи:

1. Пересоздал индексы
2. Удалил все внешние ключи
3. Удалил все первичные ключи
4. Создал все первичные ключи
5. Создал все внешние ключи
6. Собрал статистику

Верна ли последовательность моих действий в рамках задачи? И что ещё нужно или желательно сделать?
15 фев 13, 15:51    [13932654]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18343
verter
Стоит задача увеличения производительности базы.
...
Верна ли последовательность моих действий в рамках задачи?
И что ещё нужно или желательно сделать?


Еще можно постучать по колесам, протереть стекло, выйти и войти.
Желательно, конечно, поменять прокладку, но можно обойтись и просто новой exadata.
15 фев 13, 15:58    [13932704]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
verter,
и зачем были пункты со 2 по 5. как они связаны с производительностью базы? что значит тормозит? опять гадание на кофейной гуще настроек и камлание с вызыванием духа базы...
15 фев 13, 15:59    [13932712]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Vint
verter,
и зачем были пункты со 2 по 5. как они связаны с производительностью базы? что значит тормозит? опять гадание на кофейной гуще настроек и камлание с вызыванием духа базы...

во, во.
я тоже хотел спросить - а протер ли фары тряпочкой?
15 фев 13, 16:09    [13932803]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
orawish,
ну я то точно знаю зачем водители дальнобоев стучат по колёсам))) но зачем оно автору....
15 фев 13, 16:17    [13932871]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
verter
Стоит задача увеличения производительности базы.
База была из дампа залита на другой сервер.
Сделал следующие вещи:

2. Удалил все внешние ключи
3. Удалил все первичные ключи
4. Создал все первичные ключи
5. Создал все внешние ключи



Какой в этом смысл?
15 фев 13, 16:19    [13932892]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
verter
Member

Откуда: Санкт-Петербург
Сообщений: 1018
Я просто подумал, что ведь на первичные и вторичные ключи тоже индексы создаются и поэтому их тоже нужно пересоздать.
15 фев 13, 16:19    [13932898]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
verter,
а как мухи с котлетами связаны? ну кроме того что первые на вторые садятся....
15 фев 13, 16:20    [13932902]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
verter
Member

Откуда: Санкт-Петербург
Сообщений: 1018
Vint
verter,
а как мухи с котлетами связаны? ну кроме того что первые на вторые садятся....


нет, ну можно конечно издеваться над убогим, у меня просто мало опыта в этом деле, поэтому решил спросить.
т.е. не нужно первичные и внешние ключи пересоздавать? Достаточно индексы перегенерить и собрать статистику, так?
у меня Oracle 9.
15 фев 13, 16:22    [13932921]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
verter
Достаточно индексы перегенерить и собрать статистику, так?
у меня Oracle 9.

Индексы тоже под вопросом
15 фев 13, 16:24    [13932935]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18343
tru55
verter
Достаточно индексы перегенерить и собрать статистику, так?
у меня Oracle 9.

Индексы тоже под вопросом

...да и статистика, в общем-то, тоже...
15 фев 13, 16:25    [13932948]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51768

verter
Я просто подумал, что ведь на первичные и вторичные ключи тоже индексы
создаются

Когда-то я думал так же. А потом неожиданно обнаружил, что это не совсем так.

Posted via ActualForum NNTP Server 1.5

15 фев 13, 16:27    [13932965]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34630
verter,

-- SYS.USER_CONSTRAINTS 
select '-- ' || owner || '.' ||table_name || '.' || constraint_name || '(' || status || ')' || '
' || 'alter table "' || owner || '"."' || table_name || '" drop constraint "' || constraint_name || '"' 
from all_constraints
where r_owner = 'OWNER'
and constraint_type = 'R'
and r_constraint_name in
 (
   select constraint_name from all_constraints
   where constraint_type in ('P', 'U')
   and table_name = 'TABLE'
   and owner = 'OWNER'
 )
order by table_name, constraint_name



select 'alter table '||fk.table_name||' drop constraint '||fk.constraint_name||';' as cmd
from USER_CONSTRAINTS fk
join USER_CONSTRAINTS p on p.owner = fk.r_owner and p.constraint_name = fk.r_constraint_name 
join USER_CONS_COLUMNS fkc on fkc.owner = fk.owner and fkc.constraint_name = fk.constraint_name and fkc.position = 1
where fk.constraint_type = 'R'
  and p.table_name = 'TABLE';
    


что то типа этого.
15 фев 13, 16:28    [13932983]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
MasterZiv,
и зачем тут это?) или думать не научили? поэтому отвечаем на любой вопрос как бы криво он не стоял?))

verter
для начала необходимо понять что значит "увеличения производительности базы". с чего вы решили что производительности базы недостаточно.
15 фев 13, 16:34    [13933026]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18343
Vint
для начала необходимо понять что значит "увеличения производительности базы".


Без разницы с какой стороны начинать ковырять оракель.
Главное - не ориентироваться на "простые рецепты".
В случае ТС книжка Миллсапа и Хольта - ничем не хуже любого другого пути.
15 фев 13, 16:38    [13933056]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34630
Vint
MasterZiv,
и зачем тут это?)


Мне нужно пересоздать все внешние ключи во всех таблицах базы.
Вручную делать это очень долго.
Как получить описание внешних ключей из базы?
15 фев 13, 16:56    [13933208]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
MasterZiv,

кстати, код ваш - зело низкого замеса.
брр..
15 фев 13, 17:00    [13933227]     Ответить | Цитировать Сообщить модератору
 Re: Как получить из базы описание все внешних ключей?  [new]
-2-
Member

Откуда:
Сообщений: 15330
MasterZiv
Как получить описание внешних ключей из базы?
очевидно, выполнив ваши команды, вопроса с получением описания констрейнтов не останется.
15 фев 13, 17:09    [13933288]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить