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 ГБ мне бы не хотелось, значит о компрессии даже можно и не думать?
получается что так.
как альтернатива - попроси оптимайзера собрать данные в кучу. не то же самое, но близко по смыслу
Часовой пояс GMT +3, время: 15:06.

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