powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DDL и транзакции
9 сообщений из 9, страница 1 из 1
DDL и транзакции
    #32052449
Um
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сделать так, чтобы команда DDL не завершала
транзакцию?
Есть большая таблица, надо делать truncate т.к. delete
работает медленно, но нужна возможность откатиться на до
truncate-ное состояние. Это возможно?
...
Рейтинг: 0 / 0
DDL и транзакции
    #32052458
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет
...
Рейтинг: 0 / 0
DDL и транзакции
    #32052509
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я на этом деле залез в Managing Partitioned Tables and Indexes:

http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/server.920/a96521/partiti.htm#20590

А если поизвращаться, если у тебя Enterprise Edition:

Код: plaintext
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.
 
 -- "Боевая" таблица с данными в одной партиции.
 
create table test(
    test_id integer
  , actual integer not null
  , constraint pk_test primary key (test_id)
)
partition by range (actual) (
  partition test_actual_1 values less than ( 1 )
)
/

begin
  for i in  1 .. 10000  loop
    insert into test (test_id, actual) values (i,  0 );
  end loop;
  commit;
end;
/

 -- "Временная" таблица.
 
create table tmp_test(
    tmp_test_id integer
  , actual integer not null
  , constraint pk_tmp_test primary key (tmp_test_id)
)
/

 -- Чистим временую.
 
truncate table tmp_test reuse storage; 

 -- Переносим партицию. 
 
alter table test exchange partition test_actual_1 with table tmp_test without validation;

 -- Если все нормально- чистим временную таблицу...
 
truncate table tmp_test reuse storage; 

 -- .. а если передумали- возвращаем все взад
 

alter index pk_tmp_test rebuild;
alter table test exchange partition test_actual_1 with table tmp_test without validation;
alter index pk_test rebuild;
...
Рейтинг: 0 / 0
DDL и транзакции
    #32052594
Um
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно замутили :-))
Я сделал тоже через временную таблицу, только воспользовался create table .. as select..
...
Рейтинг: 0 / 0
DDL и транзакции
    #32052601
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый подход лучше, поскольку нет DML
...
Рейтинг: 0 / 0
DDL и транзакции
    #32052615
Um
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем лучше?
насчет быстродействия я сомневаюсь. Если таблица большая и индексов в ней много то rebuild занимает прилично времени.
...
Рейтинг: 0 / 0
DDL и транзакции
    #32052623
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле DDL? Я тоже так думаю. Кроме того, мне партиции нравятся тем, что ты не _дублируешь_ данные, как в случае create table ... as select - ты их просто временно перекладываешь в другое место. Если таблица большая- это может быть принципиально. По поводу rebuild'а индексов- может, можно и без них, стоит почитать, к примеру:

http://www.jlcomp.demon.co.uk/ch_12.html

ну и саму оракловую доку. Единственное- скрипт проверял на Oracle 9.2 Enterprise Edition. Кроме того, что уже на Oracle 9.2 Standard Edition ты получишь:

ORA-00439: feature not enabled: Partitioning

следует посмотреть на реализацию этих фич на более ранних версиях Oracle, если у тебя не 9i.
...
Рейтинг: 0 / 0
DDL и транзакции
    #32052640
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 8i это работает.
Как вариант
http://oradba.com.ru/misc/articles/a1_archiving.shtml
...
Рейтинг: 0 / 0
DDL и транзакции
    #32052642
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и ребилда индексов можно избежать, если я правильно помню.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DDL и транзакции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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