Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DDL и транзакции / 9 сообщений из 9, страница 1 из 1
23.09.2002, 17:30
    #32052449
Um
Um
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL и транзакции
Можно сделать так, чтобы команда DDL не завершала
транзакцию?
Есть большая таблица, надо делать truncate т.к. delete
работает медленно, но нужна возможность откатиться на до
truncate-ное состояние. Это возможно?
...
Рейтинг: 0 / 0
23.09.2002, 17:53
    #32052458
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL и транзакции
нет
...
Рейтинг: 0 / 0
23.09.2002, 20:11
    #32052509
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL и транзакции
Я на этом деле залез в 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
24.09.2002, 11:22
    #32052594
Um
Um
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL и транзакции
Интересно замутили :-))
Я сделал тоже через временную таблицу, только воспользовался create table .. as select..
...
Рейтинг: 0 / 0
24.09.2002, 11:37
    #32052601
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL и транзакции
Первый подход лучше, поскольку нет DML
...
Рейтинг: 0 / 0
24.09.2002, 12:09
    #32052615
Um
Um
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL и транзакции
А чем лучше?
насчет быстродействия я сомневаюсь. Если таблица большая и индексов в ней много то rebuild занимает прилично времени.
...
Рейтинг: 0 / 0
24.09.2002, 12:16
    #32052623
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL и транзакции
В смысле 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
24.09.2002, 12:50
    #32052640
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL и транзакции
в 8i это работает.
Как вариант
http://oradba.com.ru/misc/articles/a1_archiving.shtml
...
Рейтинг: 0 / 0
24.09.2002, 12:52
    #32052642
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL и транзакции
Да, и ребилда индексов можно избежать, если я правильно помню.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DDL и транзакции / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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