Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> impdp 
:(
    Опции темы
setnull
Дата 29.10.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: 1
Всего: 1



и можно ли это реализовать batником, и чтоб как в expdp сразу для нескольких схем?
просто с sqlplus практичекси не работал...(
PM MAIL   Вверх
setnull
Дата 29.10.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: 1
Всего: 1



вот, если у меня есть такой код

Код

for ddl_row in 
(
SELECT
TO_CHAR(
DBMS_METADATA.GET_DDL(all_objects.object_type, all_objects.object_name, all_objects.owner) as ddl
)
FROM all_objects 
WHERE all_objects .object_type = 'TRIGGER'
loop
end loop;


 как мне сделать, чтоб
1) вывести содержимое в какой-нибудь файл? есть что-то типа DBMS_FILE_IO? чего-то не нахожу ничего..
2) указанный код выполнялся через бат-файл?

или это вообще можно сделать как-то гараздо проще?
И еще хочу оточнить в чем конкретно глюк в empdp/impdp? Некорректно формируется сам дамп-файл, или ошибки именно этапа импорта? Т.е. если поставить патч, уже имеющиеся дампы будут импортироваться?

Спасибо!!!

Это сообщение отредактировал(а) setnull - 29.10.2009, 15:34
PM MAIL   Вверх
setnull
Дата 29.10.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: 1
Всего: 1



Код

declare
  l_file       UTL_FILE.FILE_TYPE;
BEGIN
  l_file := utl_file.fopen('ORA_DUMP_DIR', 'test.sql', 'w');
  
  for ddl_row in 
  (
SELECT
all_objects.object_name,
all_objects.owner
FROM all_objects 
WHERE all_objects .object_type = 'TRIGGER'
and all_objects.owner in ('MY', 'SCHEME', 'LIST')
)loop
  dbms_output.put_line(ddl_row.object_name);
 UTL_FILE.PUT_LINE(l_file, TO_CHAR(
DBMS_METADATA.GET_DDL('TRIGGER', ddl_row.object_name, ddl_row.owner)));
  UTL_FILE.PUT_LINE(l_file, '/');
null;
end loop;

  IF UTL_FILE.IS_OPEN(l_file) THEN
    UTL_FILE.FCLOSE(l_file);
  END IF;
END;



Вот. Как теперь его через бытник запустить?
PM MAIL   Вверх
setnull
Дата 29.10.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: 1
Всего: 1



Блин!!! Этот скрипт вязывает ту же самую ошибку!!!!

Код

Error report:
ORA-06502: PL/SQL: 
LPX-00225: end-element tag "ROW" does not match start-element tag "BODY" ошибка числа или значения
ORA-06512: на  "SYS.UTL_XML", line 168
ORA-06512: на  "SYS.DBMS_METADATA_INT", line 9462
ORA-06512: на  "SYS.DBMS_METADATA", line 1919
ORA-06512: на  "SYS.DBMS_METADATA", line 2792
ORA-06512: на  "SYS.DBMS_METADATA", line 4333
ORA-06512: на  line 20
06502. 00000 -  "PL/SQL: numeric or value error%s"

PM MAIL   Вверх
Zloxa
Дата 29.10.2009, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Похоже на баг.
У тебя что вернет:
Код

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 
 
SQL> 
SQL> select sum(dbms_lob.getlength(dbms_metadata.get_ddl(object_type
  2                                                     ,object_name
  3                                                     ,owner)))
  4    from all_objects
  5   where object_type = 'TRIGGER'
  6  /
 
SUM(DBMS_LOB.GETLENGTH(DBMS_ME
------------------------------
                         56308






--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
ToshaCh
Дата 29.10.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 555
Регистрация: 10.11.2005
Где: Москва, РФ

Репутация: 12
Всего: 26



Цитата(Zloxa @  29.10.2009,  16:52 Найти цитируемый пост)
Похоже на баг.У тебя что вернет:

Это именно баг. Я выше писал об этом. Нужно патч ставить, т.к. dbms_metadata не пашет. Либо ставить патч, либо раскручивать dba_source


--------------------
Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 
--
Oracle это не только способ отмывания денег, но и вполне себе преличная база данных.
PM MAIL Jabber   Вверх
setnull
Дата 30.10.2009, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: 1
Всего: 1



Так да. у меня ошибку швыряет именно dbms_metadata.get_ddl. И, собственно, предложенный запрос также.
Причем, только на отдельных триггерах. Сильно не анализировал, но навскидку на тех, которые отличаются большими размерами, но тоже не факт. (Может, это ассоциативное мнение из-за  предложенного
Код

select sum(dbms_lob.getlength(

smile
)
И тут вот еще что у меня вчера всплыло  блин. Это тот же баг?

Вот захожу в свои схемы - там все замечательно (с таблицами).
Если же заходить через sys в эти же схемы, то кроме нормальных таблиц там также присутствуют таблицы с именами такого вида 
BIN$/FTzNt4HSwaArTixM/7I7Q==$0 
и со структурами оригинальных таблиц (оригинальные также присутствуют в нормальном виде).
Также и с такими же иероглифическими именами эти таблицы имеют и соответствующие оригиналу триггеры.
Так вот при попытке metadata построить ddl для таких триггеров, говорит, что не может найти такой объект.
Но все равно, если ставишь фильтр
     and (object_name not like 'BIN%')     
в запросе на множество трггеров, и работая только с оригиналами
LPX-00225 вылетает именно на нормальных  объектах.
Также отмечу, что не смотря на отсутствие BIN$таблиц в оригинальных схеммах, поведение же все запросов вокруг all_objects и dbms_metadata не меняется, если вызывать их под этими схемами. Т.е. тоже на может найти BIN$/FTzNt4HSwaArTixM/7I7Q==$0 
и все то же LPX-00225.

Что это вообще за BIN$ы? Уж очень они мне не нравятся?

Ну а возвращаясь к ddl, сейчас буду разбираться с dba_source.

Спасибо!!!.

PM MAIL   Вверх
setnull
Дата 30.10.2009, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: 1
Всего: 1



так, с dba_source, вроде, все понятно.
Единственное уточню:
Там все начинается со строк
"TRIGGER "SCHEME"."TRIGGER_NAME". 
Если же я хочу получиь DDL, то нужно просто добавиь CREATE OR REPLACE? Или есть еще какие-то нюансы?

И, все-таки, как же потом выполнение моего скрипта реализовать через бат-файл?

И все еще переживаю за BIN$-глюки. Насколько это серьезно? Что это? Или это проявление той же дыры?

P.S. Так а в чем собственно этот баг, который патчить нужно, выражается? Какой его характер? Может быть, что сейчас проблема с триггерами, а потом возникнет и с пакетами или еще с чем? Или, обойдя, эту ситуацию с триггерами, в дельнейшем к ней не вернусь?

Спасибо!!!

Это сообщение отредактировал(а) setnull - 30.10.2009, 11:30
PM MAIL   Вверх
ToshaCh
Дата 30.10.2009, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 555
Регистрация: 10.11.2005
Где: Москва, РФ

Репутация: 12
Всего: 26



setnull,  

BIN$ это оракловая мегамысль (чтоб юзвери чувтствовали себя в базе как в родном вантузе). Это называется Oracle Resicle Bin. В принципе почисти корзину, может быть поможет и не придётся тогда ковырять dba_source.


--------------------
Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 
--
Oracle это не только способ отмывания денег, но и вполне себе преличная база данных.
PM MAIL Jabber   Вверх
setnull
Дата 3.11.2009, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: 1
Всего: 1



Странно, но я и сам догадывался, что BIN$ы связаны с корзиной, только искал почему-то более косвенную связь smile
Как бы там ни было, но очистка корзины никак не отобразилась на imp'е.

В общем у меня осталось три актуальных вопроса

1) Достаточно ли для формирования DDL отдельного трггеора просто сконкатенировать 'create or replace' с соответствующей последовательностью кода из dba_source
2) Как выполнить опеределенный PL код из командной строки, только невнесением последовательности команд, а типа бат-файл, чтоб прописать все, что необходимо, а оператор только запускал....
3) В полной ли мере решается проблема с этим багом при imp, если осуществить отдельнуюу выгрузку триггеров? Или следом может полететь выгрузка других объектов? В чем именно этот баг заключается?

Спасибо!!!

Добавлено через 4 минуты и 39 секунд
А, и еще, я могу как-то узнать, гуляя по all_objects и т.п., что объект Корзинный по более достоверному признаку, чем object_name like 'BIN$%'?
Приджойнить, может, что-то можно?
PM MAIL   Вверх
ToshaCh
Дата 3.11.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 555
Регистрация: 10.11.2005
Где: Москва, РФ

Репутация: 12
Всего: 26



1) Вроде да. Но нужно проверить. 
2) Вот здесь уже обсуждали.
3) Насколько я понимаю речь только о триггерах. Там при экспорте проскакивают null символы, на которых всё и падает. (за что купил называется, описалово бага у оракла не очень вразумительное).

Добавлено через 1 минуту и 23 секунды
Цитата(setnull @  3.11.2009,  12:03 Найти цитируемый пост)
А, и еще, я могу как-то узнать, гуляя по all_objects и т.п., что объект Корзинный по более достоверному признаку, чем object_name like 'BIN$%'?Приджойнить, может, что-то можно?

Код

select object_name, original_name, type, can_undrop as "UND", can_purge as "PUR", droptime  from recyclebin



--------------------
Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 
--
Oracle это не только способ отмывания денег, но и вполне себе преличная база данных.
PM MAIL Jabber   Вверх
setnull
Дата 4.11.2009, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: 1
Всего: 1



благодарю!!!

Добавлено через 14 минут и 15 секунд
P.S. а еще в dba_source нет информации касательно состояния триггера.
Как ее узнать?
PM MAIL   Вверх
ToshaCh
Дата 4.11.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 555
Регистрация: 10.11.2005
Где: Москва, РФ

Репутация: 12
Всего: 26



В смысле валидный/не валидный? dba_objects (ну или all_objects). 


--------------------
Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 
--
Oracle это не только способ отмывания денег, но и вполне себе преличная база данных.
PM MAIL Jabber   Вверх
setnull
Дата 4.11.2009, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: 1
Всего: 1



нет. Вот нашел

Код

select
enabled
from TRIGGER$

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.1599 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.