powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / shrink datafiles
23 сообщений из 48, страница 2 из 2
shrink datafiles
    #39393019
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровУ тебя есть такой опыт или ты просто так думаешь?
Сразу скажу -- у меня есть. Причем еще до того, как UNUSABLE стал освобождать место. В крайнем случае одна-две таблички переносятся повторно. Я ведь подчеркнул -- главное правильно выбрать порядок, это не очень сложно, особенно когда таблиц много
Я пробовал так делать, у меня это толка не давало. Ну, возможно, не доработал, надо будет при случае еще потренироваться.
...
Рейтинг: 0 / 0
shrink datafiles
    #39393024
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paradox_addict2В STD не работает ONLINE.ONLINE чего?
ALTER TABLE MOVE ONLINE и так не работает (по крайней мере до 12c) на обычных таблицах
А ALTER INDEX REBUILD ONLINE уже не так критично, когда был большой простой из-за MOVE таблицы
paradox_addict2Т.е. если у человека 24/7 на STD, я бы предложил ( если нет триггеров, конечно) смотреть в сторону ALTER TABLE SHRINK SPACEОно не перенесет все экстенты в новое место. И если там в конце файла табличка из одного экстента -- как ни верти ее надо мувить.

Можно еще поговорить про DBMS_REDEFINITION (не знаю, работает ли он в стандарте), но это все как-то не то. В 24/7 такими проблемами никто не страдает обычно
...
Рейтинг: 0 / 0
shrink datafiles
    #39393042
paradox_addict2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,
Просто вы советуете, а может это ПРОД, какой-нибудь уважаемой конторы.
У меня просто был случай, когда новому сисадмину сказали в рабочее время батарейки в УПСе заменить. Он послушался....
...
Рейтинг: 0 / 0
shrink datafiles
    #39393048
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paradox_addict2,

Там всё просто
я меняю много лет батареи в рабочее время
...
Рейтинг: 0 / 0
shrink datafiles
    #39393057
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paradox_addict2Просто вы советуете, а может это ПРОД, какой-нибудь уважаемой конторы.Я не советую, я описываю еще один способ, который может сработать в условиях ТС
И стоит тебе темку прочитать с самого начала
Ты, кстати, SHRINK TABLE советуешь , а известно ли тебе сколько там багов (особенно до 11g), там ведь целиком данные потерять можно.

Да и вообще, мож у него там засилье LONG-ов и тут остается либо их в лобы преобразовывать, либо юзать таки exp[dp]/imp[dp]
...
Рейтинг: 0 / 0
shrink datafiles
    #39393062
paradox_addict2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba123,
Я не большой знаток в УПСах, но подозреваю, что при определенном желании, можно резервную линию питания, сделать дополнительной, так как основная не тянет.
Срабатывание автомата по любой из линий вызовет срабатывание второго автомата и в результате обесточенная стойка.
...
Рейтинг: 0 / 0
shrink datafiles
    #39393068
paradox_addict2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,
Способов много.
Может до ТС, кто-то специально выделил заранее всё имеющееся пространство и сознательно не использует AUTOEXTEND.
Если это DEV база, я полностью согласен лучше способа, чем EXP(EXPDP)/IMP(IMPDP)
...
Рейтинг: 0 / 0
shrink datafiles
    #39393116
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровПолтерабайта?
У него 8 гиг свободного места под файлы БД. Не думаю, что если бы у него где-то на системном разделе завалялось полтерабайта он бы так переживал.

Думаю, что полтерабайта - это пессимистично. Запущу-ка я на выходные экспортироваться 4Tb схемку, думаю, дамп без компрессии будет около 600Гб. В понедельник расскажу.
...
Рейтинг: 0 / 0
shrink datafiles
    #39393606
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал такой генератор скрипта

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select 
case segment_type
    when 'TABLE' then 'alter table '||owner||'.'||segment_name||' move tablespace ' || dummy.tbs || ';' || chr(13) || chr(10) || '/' 
    when 'TABLE PARTITION' then 'alter table '||owner||'.'||segment_name||' move tablespace ' || dummy.tbs || ';' || chr(13) || chr(10) || '/' 
    when 'INDEX' then 'alter index '||owner||'.'||segment_name||' rebuild tablespace ' || dummy.tbs || ';' || chr(13) || chr(10) || '/' 
end 
from DBA_EXTENTS_TMP, (select 'movetemp' tbs from dual) dummy
where segment_type in ('TABLE', 'TABLE PARTITION', 'INDEX')
group by owner, dummy.tbs, segment_type, segment_name;
/



но оказалось там ещё объекты других типов segment_type находятся. Как их переносить ?
...
Рейтинг: 0 / 0
shrink datafiles
    #39393607
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточню, это DBA_EXTENTS_TMP
таблица куда я перекинул все записи относящиеся к одному датафайлу из вьюхи DBA_EXTENTS
иначе эта вьюха DBA_EXTENTS огромна, и очень долго из неё получать результаты
...
Рейтинг: 0 / 0
shrink datafiles
    #39393618
veep_in_office
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xsergeУточню, это DBA_EXTENTS_TMP
таблица куда я перекинул все записи относящиеся к одному датафайлу из вьюхи DBA_EXTENTS
иначе эта вьюха DBA_EXTENTS огромна, и очень долго из неё получать результаты
Объекты могут быть размазаны по нескольким датафайлам, не вижу смысл делать перенос по файлово. Тогда уж лучше по алфавиту или группировать по сайзу( от большего к малому)
...
Рейтинг: 0 / 0
shrink datafiles
    #39393623
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xserge, еще стоит объекты из корзины в ТП для начала удалить.
...
Рейтинг: 0 / 0
shrink datafiles
    #39393628
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
veep_in_office,

мне нужно хотя бы один из 50 датафайл уменьшить в размере. Этого достаточно, и как раз смысл в этом есть.
...
Рейтинг: 0 / 0
shrink datafiles
    #39393629
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понятно какими командами переносить объекты следующих типов
LOBINDEX
INDEX PARTITION
LOB PARTITION
LOBSEGMENT
...
Рейтинг: 0 / 0
shrink datafiles
    #39393638
veep_in_office
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xsergeНе понятно какими командами переносить объекты следующих типов
LOBINDEX
INDEX PARTITION
LOB PARTITION
LOBSEGMENT
lob index и partition пересоздаются сами при переносе lob

С index partition тоже самое (после ребилда индекса)
...
Рейтинг: 0 / 0
shrink datafiles
    #39393658
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объяснять все механику очень долго, а вот прямо готового скрипта нет.
Пара наметок:
-- ты не озвучил версию -- от этого много зависит
-- DBA_EXTENTS -- это здорово, но очень много. DBA_SEGMENTS намного легче
-- LOBSEGMENT, LOBINDEX (на него можно не обращать внимания отдельно, он живет только в паре с LOBSEGMENT) -- через DBA_LOBS определяешь таблицу и столбец (надо выделить сразу все LOB-столбцы и соответствующие им LOBSEGMENT) и одной командой ALTER TABLE ... MOVE LOB(список_LOB_столбцов) STORE AS (TABLESPACE ...)
-- LOB PARTITION -- все тоже, только DBA_LOB_PARTITIONS и ALTER TABLE ... MOVE PARTITION ... LOB ...
-- INDEX_PARTITION -- ALTER INDEX ... REBUILD PARTITION ...

На самом деле, обрати еще внимания на таблички с LONG [RAW] столбцами -- они через MOVE не умеют ездить, тут только или преобразование их в BLOB/CLOB (как правило, приложение и не заметит подмены) или через exp/imp

Ну и прочитай внимательно весь топик
...
Рейтинг: 0 / 0
shrink datafiles
    #39394520
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

>>-- DBA_EXTENTS -- это здорово, но очень много. DBA_SEGMENTS намного легче

Скажите если использовать DBA_SEGMENTS вместо DBA_EXTENTS, то ID дата файла будет определяться полем HEADER_FILE ?

В документации по DBA_SEGMENTS пишут:
HEADER_FILE NUMBER ID of the file containing the segment header

Когда в DBA_EXTENTS
FILE_ID NUMBER File identifier number of the file containing the extent

Меня настораживает отличие в описании "в файле содержится заголовок сегмента" и "файл содержащий экстенд"
...
Рейтинг: 0 / 0
shrink datafiles
    #39394557
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nobody1111Запущу-ка я на выходные экспортироваться 4Tb схемку, думаю, дамп без компрессии будет около 600Гб. В понедельник расскажу.

Хм, свалился экспорт с ORA-600 [kupfioReqBuffer], [No buffer],[EOV]. PARALLEL зря задал. Ну вообще-то, похоже, с размером дампа я сильно ошибался.
...
Рейтинг: 0 / 0
shrink datafiles
    #39395015
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказалась утопической идея переноса во временное табличное пространство всех объектов, фрагменты которого в одном датафайле 30гб.
временного табличного пространства 150гигов не хватило и на треть. Вернул всё назад.
Теперь проблема удалить временное табличное пространство

alter tablespace movetemp offline immediate

21:20:35 ORA-01145: offline immediate disallowed unless media recovery enabled

или вот такой командой
DROP TABLESPACE movetemp INCLUDING CONTENTS;

получаю
21:25:05 ORA-00604: error occurred at recursive SQL level 1
21:25:05 ORA-02429: cannot drop index used for enforcement of unique/primary key
...
Рейтинг: 0 / 0
shrink datafiles
    #39395049
xsergeфрагменты которого в одном датафайле 30гб.
150гигов не хватило и на третьНемного бреда вам в ленту? :)

ORA-02429 В гугле забанили? Значит перенёс, да не всё...
...
Рейтинг: 0 / 0
shrink datafiles
    #39395108
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотри в OEM вкладку зависимости, там есть такое, что ты перенес объекты, но они пустые, места не заняли, но они числятся за этим табличным пространством, но на них ссылаются другие объекты из внешних табличных пространств.
И не делай INCLUDING CONTENTS, грохнешь объекты, хоть и пустые.
...
Рейтинг: 0 / 0
shrink datafiles
    #39395134
Al_vrn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищите упоминание вашего ts в dba_segments, dba_constraints, dba_tables, dba_part_tables, dba_tab_partitions, dba_tab_subpartitions, dba_indexes, dba_ind_partitions, dba_users, database_properties..
...
Рейтинг: 0 / 0
shrink datafiles
    #39395139
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был такой вопрос у меня, брала из трассировки скрипт

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
SELECT 'ROLLBACK SEGMENT' segment_name , u.name, NULL, 'HARD', 'STORAGE', NULL   
  FROM  SYS.UNDO$ u, sys.ts$ ts WHERE ts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and u.ts#=ts.ts#  
  and  u.status$ != 1 and substr(u.name,1,7) != '_SYSSMU'  UNION   SELECT 'USER',   
  u.name, NULL, 'SOFT', 'DEF_TABLESPACE', NULL FROM sys.user$ u, sys.ts$ dts  
  WHERE   dts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and u.datats# = dts.ts#  
  and u.tempts# != u.datats# and  u.type# = 1  UNION   SELECT 'USER',   
  u.name, NULL, 'SOFT', 'TEMP_TABLESPACE', NULL FROM sys.user$ u, sys.ts$ tts  
  WHERE   tts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and u.tempts# = tts.ts#  and u.tempts# != u.datats# and  u.type# = 1   
  UNION   
  SELECT 'USER',   u.name, NULL, 'SOFT', 'DEF_AND_TEMP_TABLESPACE', NULL 
  FROM sys.user$ u,  sys.ts$ tts WHERE   tts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and u.tempts# = tts.ts#  and u.tempts# = u.datats# and  u.type# = 1     
  UNION       
  SELECT 'USER',   username, NULL, 'SOFT', 'TABLESPACE_QUOTA', NULL 
  FROM SYS.DBA_TS_QUOTAS   WHERE tablespace_name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'   
  UNION   
  SELECT 'CLUSTER', o.name, u.name,   'HARD', 'STORAGE', NULL 
  FROM  sys.ts$ ts, sys.clu$ clu, sys.obj$ o, sys.user$ u 
  WHERE   ts.name =  'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and clu.ts# = ts.ts# and o.obj# = clu.obj# and u.user# =  o.owner#      
  UNION   
  SELECT 'TABLE',DECODE(t.iot_type,'IOT_OVERFLOW', t.iot_name,  p.table_name),DECODE(t.iot_type,'IOT_OVERFLOW', t.owner,p.table_owner),  
  'HARD',     DECODE(t.iot_type,  'IOT_OVERFLOW','IOT_OVERFLOW_STORAGE','PARTITION_STORAGE'),  partition_name 
  FROM sys.dba_tab_partitions p, sys.dba_tables t 
  WHERE  p.tablespace_name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' 
  AND p.table_name = t.table_name AND  p.table_owner = t.owner   
  UNION  
  SELECT 'INDEX', decode(i.index_type,'IOT-TOP',i.table_name,p.index_name),  decode(i.index_type,'IOT_TOP',i.table_owner,p.index_owner),  
  'HARD', 'PARTITION_STORAGE', PARTITION_NAME FROM SYS.DBA_IND_PARTITIONS p, SYS.DBA_INDEXES i 
  WHERE p.tablespace_name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' 
  AND p.index_name =  i.index_name AND p.index_owner = i.owner AND i.index_type != 'LOB'  
  UNION 
  SELECT 'TABLE', pt.table_name, pt.owner, 'HARD', 'DEF_TABLESPACE', NULL 
  FROM   SYS.DBA_PART_TABLES pt, SYS.DBA_TABLES t 
  WHERE pt.def_tablespace_name =   'ТАБЛИЧНОЕ ПРОСТРАНСТВО' 
  AND pt.table_name = t.table_name AND pt.owner = t.owner 
  AND  (t.iot_type != 'IOT_OVERFLOW' OR t.iot_type IS NULL)  UNION  SELECT 'INDEX',  i.index_name, i.owner, 
  'HARD', 'DEF_TABLESPACE', NULL FROM  SYS.DBA_PART_INDEXES pi, SYS.DBA_INDEXES i 
  WHERE i.partitioned = 'YES' AND  i.index_type != 'LOB' AND i.index_name = pi.index_name AND i.owner =  pi.owner 
  AND pi.def_tablespace_name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'  
  UNION   
  SELECT 'TABLE',   table_name, table_owner, 'HARD', 'PARTITION_STORAGE', PARTITION_NAME 
  FROM   SYS.DBA_TAB_SUBPARTITIONS WHERE tablespace_name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'     
  UNION   
  SELECT   DECODE( i.type#, 8, 'TABLE', 4, 'TABLE', 'INDEX'),   DECODE( i.type#, 8, io.name, 4, io.name, o.name),     
  DECODE( i.type#, 8, iu.name,4, iu.name, u.name),   'HARD',  DECODE( i.type#, 8, 'LOB_INDEX_STORAGE', 'STORAGE'), NULL   
  FROM sys.ts$ ts, sys.ind$ i, sys.user$ u, sys.user$ iu, sys.obj$ o, sys.obj$  io 
  WHERE   ts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and i.ts# = ts.ts#   and bitand(i.flags, 4096) = 0   and bitand(i.property, 34) = 0   
  and i.type# != 9   and u.user# = o.owner#  and o.obj# = i.obj#   and i.bo# = io.obj#   and io.owner# = iu.user#   
  UNION   
  select 'TABLE',o.name, u.name,  'HARD','LOB_STORAGE',decode(bitand(c.property, 1), 1, ac.name, c.name)  
  from sys.obj$ o, sys.col$ c, sys.attrcol$ ac, sys.tab$ ta,       sys.lob$ l, sys.obj$ lo, sys.obj$ io, sys.user$ u, sys.ts$ ts  
  where   ts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'   and o.owner# = u.user#  and o.obj# = c.obj#   and c.obj# = l.obj#   and c.intcol# = l.intcol#    
  and l.lobj# = lo.obj#    and l.ind# = io.obj#   and l.ts# = ts.ts#   and c.obj# = ac.obj#(+)   
  and c.intcol# = ac.intcol#(+)   and bitand(c.property,32768) != 32768          
  /* not unused column */   and o.obj# = ta.obj#   and bitand(ta.property, 32) != 32          
  /* not partitioned table */  
  union all
  select 'TABLE',o.name, u.name, 'HARD','LOB_STORAGE',decode(bitand(c.property,  1), 1, ac.name, c.name)   
  from sys.obj$ o, sys.col$ c, sys.attrcol$ ac, sys.partlob$ plob,       sys.lob$ l, sys.obj$ lo, sys.obj$ io, sys.ts$ ts1, sys.tab$ ta,       
  sys.partobj$ po, sys.ts$ ts2, sys.user$ u  where     ts1.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'   and o.owner# = u.user#   and o.obj# = c.obj#   
  and c.obj# = l.obj#   and c.intcol# = l.intcol#   and l.lobj# = lo.obj#   and l.ind# = io.obj#   and l.lobj# = plob.lobj#   and plob.defts# = ts1.ts# (+)   
  and c.obj# = ac.obj#(+)   and c.intcol# = ac.intcol#(+)   and bitand(c.property,32768) != 32768          
  /* not unused column */   and o.obj# = ta.obj#   and bitand(ta.property, 32) = 32                
  /* partitioned table */   and o.obj# = po.obj#   and po.defts# = ts2.ts#    
  UNION   
  select 'TABLE',  decode((bitand(t.property, 512)+bitand(t.flags,  536870912)),0, o.name, co.name),               
  u.name, 'HARD', decode((bitand(t.property, 512)+bitand(t.flags,  536870912)),0, 'STORAGE','IOT_OVERFLOW_STORAGE'), NULL     
  FROM     sys.ts$ ts, sys.tab$ t, sys.seg$ s ,sys.user$ u, sys.obj$ co, sys.obj$ o,       
  sys.obj$ cx, sys.user$ cu  where   ts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'     and t.ts# = ts.ts#   and bitand(t.property, 4194400) = 0   
  and bitand(t.property, 1) = 0     and t.file# = s.file# (+)   and t.block# = s.block# (+)   and t.ts# = s.ts# (+)   and o.owner# = u.user#   
  and o.obj# = t.obj#   and t.bobj# = co.obj# (+)   and t.dataobj# = cx.obj# (+)    and cx.owner# = cu.user# (+)      and cx.owner# = cu.user# (+) 
...
Рейтинг: 0 / 0
23 сообщений из 48, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / shrink datafiles
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]