[ТЕМА ЗАКРЫТА]
07.11.2006 13:05
reddevil
 
Цитата:
artyom Дело вот в чем: периодически возникающая проблема нехватки места например в табличном пространстве INDX заставила увеличить его размер до 6 Гб. Оptimizer показал что свободного места там 2.5 Гб. Перед импортом создаю INDX 4Гб и импортирую. Все нормально, размер базы стал на 2Гб меньше.
Имеет ли смысл производить такие действия?
Не имеет почти никогда
1. Индекс проще перестроить
2. Таблицу проше смувить
3. Чтоб не было фрагментации отделять FF от всего остального и FF и FF_ друг от друга.

PS обьясните что значит этот смайлег - *19
09.11.2006 00:00
YuraZ
 
Меня всегда спасал при Экспорте/Импорте следующий алгоритм:

==== Экспорт ====
set nls_lang=russian_cis.ru8pc866
exp.exe userid=sys/qqq@db2000 FULL=Y feedback=10000 consistent=y сompress=n file=db2000.dmp log=log_e.txt

=== Импорт ====
set nls_lang=russian_cis.ru8pc866
imp.exe userid=sys/qqq@db2000 full=y feedback=10000 ignore=y commit=y file=db2000.dmp log=log_i.txt

От имени SYS нужно запустить гранты

потом необходимо создать вьюху SVJOBS. Текст можно взять из журнала импорта.
Перекомпилировать все сбойные вьюхи, процедуры, функции и т.д.:

==== Начало ====
prompt ------------ Перекомпиляция представлений -----------;
begin
for c in (select object_name name from user_objects
where object_type = 'VIEW' and status='INVALID')
Loop
begin
execute immediate
'alter VIEW ' || c.name || ' compile';
exception when others then null;
end;
end loop;
end;
/

prompt ----- Перекомпиляция хранимых процедур, функций -----;
begin
for c in (select object_type type,object_name name
from user_objects
where object_type in ('FUNCTION','PROCEDURE')
and status='INVALID')
Loop
begin
execute immediate
'alter ' || c.type || ' ' || c.name || ' compile';
exception when others then null;
end;
end loop;
end;
/

prompt -------------- Перекомпиляция пакетов ---------------;
begin
for c in (select object_type type, object_name name from user_objects
where object_type in ('PACKAGE','PACKAGE BODY')
and status='INVALID')
Loop
begin
if (c.type='PACKAGE') then
execute immediate
'alter PACKAGE ' || c.name || ' compile PACKAGE';
else
execute immediate
'alter PACKAGE ' || c.name || ' compile BODY';
end if;
exception when others then null;
end;
end loop;
end;
/
prompt ----- Перекомпиляция триггеров -----;
begin
for c in (select object_type type,object_name name
from user_objects
where object_type = 'TRIGGER'
and status='INVALID')
Loop
begin
execute immediate
'alter ' || c.type || ' ' || c.name || ' compile';
exception when others then null;
end;
end loop;
end;
/

prompt ------------ Перекомпиляция нескомпилированных объектов -----------;
begin
for c in (select object_name name from user_objects
where object_type = 'VIEW' and status='INVALID')
Loop
begin execute immediate 'alter VIEW ' || c.name || ' compile';
exception when others then null;
end;
end loop;
end;
/

begin
for c in (select object_type type,object_name name
from user_objects
where object_type in ('FUNCTION','PROCEDURE')
and status='INVALID')
Loop
begin execute immediate 'alter ' || c.type || ' ' || c.name || ' compile';
exception when others then null;
end;
end loop;
end;
/

begin
for c in (select object_type type, object_name name from user_objects
where object_type in ('PACKAGE','PACKAGE BODY')
and status='INVALID')
Loop
begin
if (c.type='PACKAGE') then
execute immediate 'alter PACKAGE ' || c.name || ' compile PACKAGE';
else execute immediate 'alter PACKAGE ' || c.name || ' compile BODY';
end if;
exception when others then null;
end;
end loop;
end;
/
begin
for c in (select object_type type,object_name name from user_objects
where object_type = 'TRIGGER' and status='INVALID')
Loop
begin execute immediate 'alter ' || c.type || ' ' || c.name || ' compile';
exception when others then null;
end;
end loop;
end;
/

prompt ---------- Нескомпилированные представления -----------;
select 'VIEW' type,substr(object_name,1,90) name from user_objects
where object_type = 'VIEW' and status='INVALID'
ORDER BY 2;
prompt ---------- Нескомпилированные функции -----------------;
select 'FUNCTION' type,substr(object_name,1,90) name from user_objects
where object_type = 'FUNCTION' and status='INVALID'
ORDER BY 2;
prompt ---------- Нескомпилированные процедуры ---------------;
select 'PROCEDURE' type,substr(object_name,1,90) name from user_objects
where object_type = 'PROCEDURE' and status='INVALID'
ORDER BY 2;
prompt ----------- Нескомпилированные пакеты -----------------;
select substr(object_type,1,13) type,substr(object_name,1,85) name from user_objects
where object_type in ('PACKAGE','PACKAGE BODY') and status='INVALID'
ORDER BY 2,1;
prompt ----------- Нескомпилированные триггеры -----------------;
select 'TRIGGER' type,substr(object_name,1,90) name from user_objects
where object_type = 'TRIGGER' and status='INVALID'
ORDER BY 2;
commit;

==== Конец ====

Если перекомпиляция не прошла, то как правило, помогает ручная перекомпиляция инвалидных объектов из под SQL Navigator-а.
11.11.2006 02:09
vdm
 
Цитата:
olegon Т.е. по восьмерочной базе ругательств на размерность 22 нет? Сделай проще, чтобы не морочить голову - создай 9кой чистоую базу, проапгрейдь ее до своей версии и сделай шаблон. С ним и сравнивай.
В 8 ругательств нет.
А в 9 чистую базу вообще не получилось проинитить *11

Цитата:
SQL*Plus: Release 9.2.0.8.0 - Production on Sat Nov 11 01:42:51 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production


Table created.

.....................

Table created.


1 row created.

SP2-0734: unknown command beginning "Period num..." - rest of line ignored.
SP2-0734: unknown command beginning "constraint..." - rest of line ignored.
SP2-0734: unknown command beginning "primary ke..." - rest of line ignored.
SP2-0734: unknown command beginning "constraint..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
SP2-0734: unknown command beginning "foreign ke..." - rest of line ignored.
SP2-0734: unknown command beginning "references..." - rest of line ignored.
SP2-0734: unknown command beginning "on delete ..." - rest of line ignored.
SP2-0734: unknown command beginning "constraint..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
SP2-0734: unknown command beginning "check(Peri..." - rest of line ignored.
SP2-0734: unknown command beginning "constraint..." - rest of line ignored.
SP2-0734: unknown command beginning "check(Thre..." - rest of line ignored.
SP2-0042: unknown command ")" - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.

1 row created.

references SmLimitedDiscParam(TaskID)
*
ERROR at line 11:
ORA-00942: table or view does not exist


Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
11.11.2006 11:27
OlegON
 
Блин, только сейчас обратил внимание на твою версию СМ. Можешь расслабиться или апгрейдь СМ, в этой версии 9ка не поддерживалась.
11.11.2006 17:58
vdm
 
olegon,
Блин, а С+ (Завалишина) сказал - поддерживается...
11.11.2006 20:06
OlegON
 
Это, наверное, из-за программеров. Они в свое время кричали на каждом углу, что СМ на любой версии работает, включая 10ку. Я вот 10ку попробовал - волосы дыбом встали... Точнее, список того, что нужно сделать, чтобы СМ на ней заработал, ну очень длинный. А на твоей версии лучше не надо 9ку пробовать. Это как минимум один баг, что в генераторе новые базы не создавались, а там, кажется, еще с расчетом товародвижения что-то было... Не помню уже.
14.11.2006 15:59
artyom
 
Кто-нибудь делал экспорт с параметром compress=y ?
Я попробовал, но импорт завершился неудачно. В лог файле множество ошибок, первая из которых:

IMP-00017: following statement failed with ORACLE error 1658:
"CREATE TABLE "FFMAPREP" ("RECTYPE" NUMBER(10, 0) NOT NULL ENABLE, "ARTICLE""
" VARCHAR2(50) NOT NULL ENABLE, "SALETYPE" CHAR(2) NOT NULL ENABLE, "SALEID""
" VARCHAR2(50) NOT NULL ENABLE, "SALESPECITEM" NUMBER(10, 0) NOT NULL ENABLE"
", "SALELOCATIONFROM" NUMBER(10, 0), "SALELOCATIONTO" NUMBER(10, 0), "SALEDA"
"TE" DATE NOT NULL ENABLE, "SALEOP" NUMBER(5, 0) NOT NULL ENABLE, "SALEUSERO"
"P" NUMBER(5, 0), "SALEPAYCASH" CHAR(1) NOT NULL ENABLE, "SALECLIENTINDEX" N"
"UMBER(10, 0), "SALEQ" NUMBER(14, 3) NOT NULL ENABLE, "SALESUM" NUMBER(19, 4"
") NOT NULL ENABLE, "SALENOVAT" NUMBER(19, 4) NOT NULL ENABLE, "SALENOTAX" N"
"UMBER(19, 4) NOT NULL ENABLE, "SALECURTYPE" NUMBER(5, 0) NOT NULL ENABLE, ""
"SALESUMCUR" NUMBER(19, 4) NOT NULL ENABLE, "SALEVATRATE" NUMBER(8, 4) NOT N"
"ULL ENABLE, "PRIMECOST" NUMBER(19, 4) NOT NULL ENABLE, "PRIMECOSTNOVAT" NUM"
"BER(19, 4) NOT NULL ENABLE, "PRIMECOSTFORCED" CHAR(1) NOT NULL ENABLE, "FOR"
"CEDMAPPING" CHAR(1), "QUANTITY" NUMBER(14, 3) NOT NULL ENABLE, "INCOMEID" V"
"ARCHAR2(50), "INCOMETYPE" CHAR(2), "INCOMESPECITEM" NUMBER(10, 0), "INCOMEC"
"LIENTINDEX" NUMBER(10, 0), "GOODSOWNER" NUMBER(5, 0), "INCOMEQ" NUMBER(14, "
"3), "INCOMESUM" NUMBER(19, 4), "INCOMENOVAT" NUMBER(19, 4), "INCOMEVATRATE""
" NUMBER(8, 4), "INCOMECURTYPE" NUMBER(5, 0), "INCOMESUMCUR" NUMBER(19, 4), "
""INCOMEDATE" DATE) PCTFREE 0 PCTUSED 99 INITRANS 1 MAXTRANS 255 NOLOGGING "
"STORAGE(INITIAL 2147483646 NEXT 36257792 MINEXTENTS 1 MAXEXTENTS 4096 PCTIN"
"CREASE 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USE"
"RS""
IMP-00003: ORACLE error 1658 encountered
ORA-01658: unable to create INITIAL extent for segment in tablespace USERS.

Свободного места во всех табличных пространствах достаточно.
В результате экспорта получился слишком большой экстент?
14.11.2006 16:09
OlegON
 
Суть компресса в попытке составить каждый из сегментов одним экстентом. Для оптимизации IO - замечательно. Но если у тебя база из маленьких файлов - может не влезть, что и произошло. Если ты смирился с тем, что база большими файлами (больше 2Гб), увеличь их еще больше - влезет.
14.11.2006 16:46
artyom
 
Делать дата-файлы более 2 ГБ мне бы не хотелось, значит о компрессии даже можно и не думать?
14.11.2006 16:59
akonev
 
Цитата:
artyom Делать дата-файлы более 2 ГБ мне бы не хотелось, значит о компрессии даже можно и не думать?
получается что так.
как альтернатива - попроси оптимайзера собрать данные в кучу. не то же самое, но близко по смыслу
14.11.2006 17:37
OlegON
 
Как помню, оптимизатор не делает экстенты больше 1Гб.
09.09.2008 05:30
Vovantus
 
Теперь вот и мне нуна перепрыгнуть с 8 на 9 оракл. Экспорт из 8 я зделал без проблем. А вот импортировать в 9 сразу не стал. Можете ЕЩЁ_РАЗ разжевать последовательность импорта и какие условия должны соблюдаться при этом? Я, например, при установке 9 сразу чистую базу зделал с тем же именем что и рабочая. Но достаточно ли этого? Скорее всего нет, нужно ведь и табличное пространство такое же подготовить? Или нет? Короче, нехватает знаний. Сервак тестовый, можно издеваться по тяжёлой. Подскажите, с чего начать?
З.Ы. По поиску искал, информации масса, но всё с какими-то оговорками и нюансами.
09.09.2008 08:22
akonev
 
сделай для начала бэкап пустой базы (или, как вариант, потом ее убьешь и снова создашь), поставь СМ и прогони генератор.
из этой пустой базы в администраторе слей структуру, чтобы потом сравнивать результаты экспериментов с эталоном.
для этого придется на ночь украсть ключик от действующей базы. и лицензию не забудь захватить.

потом снова подложи пустую базу и двигай по алгоритму от YuraZ с предыдущей страницы.
12.09.2008 06:48
Vovantus
 
Табличное пространство пустой БД должно быть такое же как и на рабочей БД? Или в процессе импорта рабочей базы пустые таблички "сами" разростутся до нужного размера?
12.09.2008 08:16
kadr
 
Желательно чтобы были уже нужного или большего размера (на 50%), т.к. при импорте накладные затраты на "сами разрастутся" могут очень много времени занимать, да и будет потом кусками лежать всё.
18.09.2008 01:01
orekhov
 
Интересная картина. Экспортирую базу 9i. На кучу таблиц Оракл выдаёт предупреждение "Экспортируется недостоверная статистика". Любопытства ради прерываю экспорт, захожу в административный модуль СМ2000 и штатными средствами запускаю полный сбор статистики. Задание отрабатывает без сбоев. Затем снова делаю экспорт и получаю тот же набор предупреждений. Как недоумевал Жванецкий, "а почему собственно?"
18.09.2008 07:41
OlegON
 
про то, как выполняются задания в административном модуле говорит популярность моего оптимайзера... статистика для переноса тебе не нужна, не хочешь видеть такие сообщения - exp statistics=none
кое где кривая статистика, только и всего-то...
18.09.2008 16:35
orekhov
 
Да меня статистика не сильно волнует... больше интересует причина такого поведения
18.09.2008 17:48
OlegON
 
ну прогони что-нибудь вроде
Цитата:
select * from all_tables
посмотри колонку last_analyzed, прикинь...
07.10.2008 11:33
BR
 
начиталься тут всего, а интересно мне стало следующее почему никто не пишет про программки типа PL/SQL Developer, SQL Navigator, TOAD и подобные, они ведь могут экспортировать и импортировать БД.
В чем подводные камни и минусы этих программ. или просто никто не пробовал.
07.10.2008 14:55
OlegON
 
SQL Navigator, TOAD, какие-то еще утилиты от quest косячили созданием лишних индексов, создавая констрейнт и индекс по нему раздельно. На работе БД практически не отражается, но тот же почтовик начинает материться на несоответствие структур баз. Это было при сравнении, а не при экспорте, но доверие подорвали :) Поэтому лучше уж штатными средствами, под присмотром :)
07.10.2008 16:01
BR
 
понятно - родное лучше :) , а что на счет PL/SQL Developer ?

у кого еще какой опыт был?
17.10.2008 03:29
BR
 
в общем срочно понадобилось переехать на новый сервер, на нем уже готовый Оракл 9.2.0.8 и Супермаг, старый сервер мёрт - Бд крутиться на обычном компе.

Оракл 8.1.6, супермаг 1.026.1 SP2

Что я делал:
1. создал БД на Оракл 9, правда внес изменения в файлы вместо UNDOBS сделал RBS, в общем аналогичную БД-8 (НЕ генерил её средствами СМ)
2. прогнал оптимайзер, выставил параметры в ini*.ora
3. увеличил количество необходимых файлов и их размеры (размеры сделал с учетом оригинал+30% примерно)
4. снова прогнал оптимайзер и поправил параметры в ini*.ora
5. запустил экспорт через батник использую рекомендации YuraZ
6. сделал импорт опять же через батником, завершен без ошибок но с предупреждениями
7. выдал гранты указанные YuraZ и плюс еще парочка которые нашел на форуме
8. создал SVJOBS дал гранты перекомпилировал те, что инвалидные
9. хотел сделать генерацию СМ-ом он выдал ошибку "Код=800A0E7Ah" и все дальше ни чего пустота

Сервисы работают нормально, службы запустились, однако БД не активируеться и не принимает файл лицензий на все действия выходит ошибка из пункта 9 "Код=800A0E7Ah"

в результате немогу к ней супермагом подключиться и посмотреть, что там вышло. Народ работает на оракле-8, тачка не справляется, а менять на новом сервере 9-ку на 8-ку нехочеться.
Вложения
Тип файла: zip log_exp_imp.zip (57.1 Кб, 86 просмотров)
17.10.2008 12:37
kadr
 
Забываем пока про СуперМаг и пытаемся подключиться SQLplus`ом под именем supermag смотрим получилось не получилось, не получилось ищем по коду ошибки, лезем в алерт.лог и читаем там может что там интересного есть
17.10.2008 14:00
baggio
 
на 9
O7_DICTIONARY_ACCESSIBILITY=true ?
17.10.2008 16:17
orekhov
 
Давай попробуем ещё раз...
Насколько я понимаю, дамп из 8-ки у тебя есть. Причём экспорт, надеюсь, прошёл без предупреждений.
Двигаемся дальше. Через Database Configuration Assistant удаляй базу, которую ты создал в 9-ке. Затем создавай её заново.
Create Database -> New database -> имя базы -> снимай все галки, включая те, что за кнопкой "Standard database features" -> Dedicated Server Mode -> Shared Pool = 150, Buffer Cache = 600, PGA = 200, или на своё усмотрение если уверен в том, что меняешь. За кнопкой "All Initialization Parameters..." выставляй параметр O7_DICTIONARY_ACCESSIBILITY в значение TRUE, не забудь нажать <Enter>. Далее в окне "Database Storage" можно сразу увеличить размеры табличных пространств. Не нужно изменять названия файлов в табличных пространствах, если в 8-ке всё генерировалось "по умолчанию". После того, как база создана, не нужно трогать её оптимайзером, ты успеешь сделать это позднее если появится необходимость.
Попробуй подключиться к "чистой" базе через Enterprise Manager Console, ещё раз убедись, что соединение от имени SYS устанавливается и в табличных пространствах достаточно места.
Из локального каталога, где находится дамп базы, запускай процедуру импорта через cmd-файл следующего содержания (есть в приложении):
==
set nls_lang=russian_cis.ru8pc866
imp.exe userid=sys/qqq@db2000 full=y feedback=10000 ignore=y commit=y file=db2000.dmp log=log_i.txt
==
Вместо db2000 - разумеется, имя базы.
После окончания процедуры импорта убедись, что есть сообщение "импорт завершён успешно с предупреждениями".
Далее раздавай гранты от имени пользователя SYS (скрипт 1_grants в приложении). По завершении выдачи грантов нужно перекомпилировать сбойные процедуры, функции и т.д. Мы используем SQL Navigator. Запускай скрипт 3_rebuild (также в приложении).
Важно: запускать его нужно дважды, от имени SYS и от имени SUPERMAG. После каждого запуска просмотри закладки внизу и выясни, какие объекты не были скомпилированы. Их нужно докомпилировать вручную.
Как правило, после этого с базой можно работать.
Запускать генератор БД СМ2000 и подгружать файл лицензии, если одновременно не поднимается версия Супермага, не нужно. А если запускаешь - не забудь, что Сервер Супермага должен быть остановлен.
Вложения
Тип файла: rar expimp.rar (2.1 Кб, 138 просмотров)
19.10.2008 03:30
BR
 
в общем создал снова БД, O7_DICTIONARY_ACCESSIBILITY=TRUE как положено, подключаеться без проблем к свежей БД, пространство увеличил до нужных размеров, импорт прошел успешно с предупреждениями как и прежде.

Гранты дал, запустил 3_rebuild под SYS (как SYSDBA) и SUPERMAG (как NORMAL, по другому не дает - нет привилегий); после того и другого делал компиляцию.

из нескомилиных осталось 4 пункта и они никак не компилятся, при этом в окне сообщений ничего (может я что упустил или как):
_ALL_REPCOLUMN_GROUP VIEW
_ALL_REPCONFLICT VIEW
_ALL_REPPARAMETER_COLUMN VIEW
_ALL_REPRESOLUTION VIEW

при попытки запустить скрипт от SP (run_...sql) в SQLPlus он просто вылетает и я даже не успеваю прочитать, что там за сообщения появляются.

ошибка с кодом "800A0E7Ah" так и осталась.

в alert.log есть строка - replication_dependency_tracking turned off (no async multimaster replication found).
19.10.2008 15:51
baggio
 
в SQL я так пониаю ты заходишь нормально....
тогда попробуй на другой машине сервер супермага поднять... и с нее цепануться...
Соответсвенно на другой машине должен стоять Oracle клиент...
и правильно настроен TNSName.ora

Будем пытаться локализовать проблему... поскольку ошибку вываливает супермаг как я понимаю а не oracle... соответсвенно скорее всего кривая винда или еще чаго...
19.10.2008 16:15
orekhov
 
Попробуй после создания "чистой" базы Oracle вместо импорта данных из 8-ки выполнить генерацию новой БД СМ2000, загрузить лицензию и запустить Супермаг.
Возможно, причина вовсе не в импорте.
Да, подскажи ещё, какой программой запускал скрипты и делал вручную компиляцию объектов ?
Listener запущен ? В файлах listener.ora и tnsnames.ora всё прописано ?
Примеры файлов во вложении, вместо server - имя сервера, вместо db2000 - имя базы.
Ещё можно в sqlnet.ora поменять (NTS) на (NONE).
Вложения
Тип файла: rar tns.rar (558 байт, 85 просмотров)
19.10.2008 16:25
BR
 
Цитата:
orekhov Попробуй после создания "чистой" базы Oracle вместо импорта данных из 8-ки выполнить генерацию новой БД СМ2000, загрузить лицензию и запустить Супермаг.
Возможно, причина вовсе не в импорте.
щас попробую инициализацию остальное с утра, т.к. сервера далеко физически

Цитата:
orekhov Да, подскажи ещё, какой программой запускал скрипты и делал вручную компиляцию объектов ?
Listener запущен ? В файлах listener.ora и tnsnames.ora всё прописано ?
Примеры файлов во вложении, вместо server - имя сервера, вместо db2000 - имя базы.
Ещё можно в sqlnet.ora поменять (NTS) на (NONE).
PL/SQL Developer, сейчас поставил качаться с оффсайта SQL Navigator
Listener-запущен, отличие от втоего отсутвие в моем строк
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)),

в sqlnet.ora прописано NONE
tnsnames.ora - стандартно как положено и еще в нем по умолчанию прописывается HTTP хочу его убрать т.к. не нужен


Опции темы


Часовой пояс GMT +3, время: 13:19.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.