Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 exp/imp type oid  [new]
AlexanderKz
Member

Откуда:
Сообщений: 385
Необходимо с нескольких баз (когда-то скопированных с одной) выполнять переливку данных на одну базу в разные схемы. При переливке будут возникать ошибки из-за одинаковых OID для типов. Версия 9.2, поэтому использовать impdp нельзя. Можно ли в базах у типов изменить OID без явного drop/create? (Типы не используются в таблицах, а только в процедурах, поэтому проблем с изменением OID быть не должно.)
19 янв 11, 11:00    [10095015]     Ответить | Цитировать Сообщить модератору
 Re: exp/imp type oid  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
AlexanderKz,

можно OID убирать в самом дампе. хекс едитором.
19 янв 11, 11:01    [10095023]     Ответить | Цитировать Сообщить модератору
 Re: exp/imp type oid  [new]
AlexanderKz
Member

Откуда:
Сообщений: 385
comphead,

Можно. Только это должен делать автомат каждую ночь. Писать на AWK скрипт удаления OID из дампа - не слишком правильный и надежный метод.
19 янв 11, 11:24    [10095230]     Ответить | Цитировать Сообщить модератору
 Re: exp/imp type oid  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
AlexanderKz,

формируйте динамически ДДЛ типов и накатывайте после импорта.
19 янв 11, 11:26    [10095249]     Ответить | Цитировать Сообщить модератору
 Re: exp/imp type oid  [new]
AlexanderKz
Member

Откуда:
Сообщений: 385
comphead
AlexanderKz,

формируйте динамически ДДЛ типов и накатывайте после импорта.

Все-таки хотелось бы изменить OID типов в исходных базах до первого экспорта и больше не думать об этом.
19 янв 11, 11:47    [10095422]     Ответить | Цитировать Сообщить модератору
 Re: exp/imp type oid  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
AlexanderKz,

не знаю правильно ли вас понял..... можете попробовать так.


select sys_op_guid()
from dual;

create or replace type t1 oid 'то что получили в запросе' 
as object (attr number .... )
19 янв 11, 11:54    [10095488]     Ответить | Цитировать Сообщить модератору
 Re: exp/imp type oid  [new]
AlexanderKz
Member

Откуда:
Сообщений: 385
comphead
AlexanderKz,

не знаю правильно ли вас понял..... можете попробовать так.


select sys_op_guid()
from dual;

create or replace type t1 oid 'то что получили в запросе' 
as object (attr number .... )


Да, именно это. Только хотелось бы (если есть возможность) не drop/create, а что-то вроде
alter type t1 OID =  'то что получили в запросе' 
. Но прямо так, к сожалению, синтаксисом не поддерживается.
19 янв 11, 12:16    [10095728]     Ответить | Цитировать Сообщить модератору
 Re: exp/imp type oid  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
AlexanderKz
comphead
AlexanderKz,

не знаю правильно ли вас понял..... можете попробовать так.


select sys_op_guid()
from dual;

create or replace type t1 oid 'то что получили в запросе' 
as object (attr number .... )


Да, именно это. Только хотелось бы (если есть возможность) не drop/create, а что-то вроде
alter type t1 OID =  'то что получили в запросе' 
. Но прямо так, к сожалению, синтаксисом не поддерживается.


именно такого нет, но думаю зависимые объекты все равно развалились бы, так что тут вопрос именно синтаксиса при одинаковой функциональности
19 янв 11, 12:17    [10095750]     Ответить | Цитировать Сообщить модератору
 Re: exp/imp type oid  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10764
AlexanderKz, зачем все эти сложности???
Лично я слегка модифицировал найденный на этом форуме скрип для перекомпиляции инвалидов.
Никаких проблем, особенно с учётом того, что импорт одного дампа в разные схемы одной базы - (скорее всего) начальный этап большого пути.
19 янв 11, 18:44    [10099311]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить