powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SPLIT PARTITION
7 сообщений из 7, страница 1 из 1
SPLIT PARTITION
    #39395635
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть секционированная таблица X. В ней есть с десяток секций и секция P_MAX для максимальных значений. Также в таблице есть 5 локальных индексов.
После того как делаю SPLIT секции P_MAX на другие мелкие секции + ребилд индексов, все проходит успешно. Но единственно, судя по таблице all_ind_partitions, все индексы которые были на P_MAX сбрасывают названия партиций.

Код: plsql
1.
2.
3.
select x.index_name, x.partition_name, x.status from all_ind_partitions x
where x.index_name in (select a.index_name from all_part_indexes a where a.TABLE_NAME = 'X')
;



До сплита

index_name partition_name statusind_1 P_MAX USABLEind_2 P_MAX USABLEind_3 P_MAX USABLE

а после становится вот так

index_name partition_name statusind_1 SYS_P1 USABLEind_2 SYS_P2 USABLEind_3 SYS_P3 USABLE

Все это дело лечится через команду
Код: plsql
1.
ALTER INDEX ind_1 RENAME PARTITION SYS_P1 TO P_MAX;



Но хотелось бы знать, может можно этот лишний шаг заранее предотвратить, и еще не понятно, не аукнется ли это вмешательство ручное потом, когда дело до этой секции если дойдет.
...
Рейтинг: 0 / 0
SPLIT PARTITION
    #39395818
dimyaz, оно?
Код: plsql
1.
2.
3.
4.
5.
ALTER TABLE SPLIT PARTITION p0 INTO 
  (PARTITION p01 VALUES LESS THAN (25),
   PARTITION p02 VALUES LESS THAN (50), 
   PARTITION p03 VALUES LESS THAN (75),
   PARTITION p04);
...
Рейтинг: 0 / 0
SPLIT PARTITION
    #39395825
У Тома всё ОК с названиями.
...
Рейтинг: 0 / 0
SPLIT PARTITION
    #39395974
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тудыма-сюдымаdimyaz, оно?
Код: plsql
1.
2.
3.
4.
5.
ALTER TABLE SPLIT PARTITION p0 INTO 
  (PARTITION p01 VALUES LESS THAN (25),
   PARTITION p02 VALUES LESS THAN (50), 
   PARTITION p03 VALUES LESS THAN (75),
   PARTITION p04);



Да, именно с этой статьи брал скрипт.
...
Рейтинг: 0 / 0
SPLIT PARTITION
    #39396001
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimyaz,

dimyazНо хотелось бы знать, может можно этот лишний шаг заранее предотвратить


update_all_indexes_clause

Код: plsql
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.
71.
72.
73.
74.
75.
76.
77.
78.
79.
SQL> create table t(n int, c1 int, c2 int, c3 int)
  2    partition by range(n)
  3    (
  4    partition p_max values less than(maxvalue)
  5    )
  6  /

Table created.

SQL> 
SQL> create index t_c1_i on t(c1) local;

Index created.

SQL> create index t_c2_i on t(c2) local;

Index created.

SQL> create index t_c3_i on t(c3) local;

Index created.

SQL> 
SQL> select index_name, partition_name, high_value, status
  2    from user_ind_partitions
  3   where index_name like 'T_C__I'
  4   order by index_name, partition_position;

INDEX_NAME PARTITION_NAME	HIGH_VALUE STATUS
---------- -------------------- ---------- ------------------------
T_C1_I	   P_MAX		MAXVALUE   USABLE
T_C2_I	   P_MAX		MAXVALUE   USABLE
T_C3_I	   P_MAX		MAXVALUE   USABLE

SQL> 
SQL> alter table t
  2    split partition p_max into
  3    (
  4    partition p1 values less than(25),
  5    partition p2 values less than(50),
  6    partition p_max
  7    )
  8    update indexes
  9    (
 10  	 t_c1_i
 11  	 (
 12  	   partition p1,
 13  	   partition p2,
 14  	   partition p_max
 15  	 ),
 16  	 t_c2_i
 17  	 (
 18  	   partition p1,
 19  	   partition p2,
 20  	   partition p_max
 21  	 )
 22    );

Table altered.

SQL> 
SQL> select index_name, partition_name, high_value, status
  2    from user_ind_partitions
  3   where index_name like 'T_C__I'
  4   order by index_name, partition_position;

INDEX_NAME PARTITION_NAME	HIGH_VALUE STATUS
---------- -------------------- ---------- ------------------------
T_C1_I	   P1			25	   USABLE
T_C1_I	   P2			50	   USABLE
T_C1_I	   P_MAX		MAXVALUE   USABLE
T_C2_I	   P1			25	   USABLE
T_C2_I	   P2			50	   USABLE
T_C2_I	   P_MAX		MAXVALUE   USABLE
T_C3_I	   P1			25	   USABLE
T_C3_I	   P2			50	   USABLE
T_C3_I	   SYS_P23128		MAXVALUE   USABLE

9 rows selected.

...
Рейтинг: 0 / 0
SPLIT PARTITION
    #39396190
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimyazтудыма-сюдымаdimyaz, оно?
Код: plsql
1.
2.
3.
4.
5.
ALTER TABLE SPLIT PARTITION p0 INTO 
  (PARTITION p01 VALUES LESS THAN (25),
   PARTITION p02 VALUES LESS THAN (50), 
   PARTITION p03 VALUES LESS THAN (75),
   PARTITION p04);



Да, именно с этой статьи брал скрипт.

Вообщем пока вот, что нашел
Если делать split из одной секции в другую ОДНУ секцию ( Как у Кайта ), то это название секции в индексе не сбрасывается.
А если ты секцию сплитишь на несколько секции, то названия сбрасываются. версия - 12.1.0.2.0
...
Рейтинг: 0 / 0
SPLIT PARTITION
    #39396217
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeaGate,

Да, это ответ на вопрос "этот лишний шаг заранее предотвратить"
но, если я буду 10-20 секций добавлять, то легче просто в конце по этим 5-ти индексам пробежаться и переименовать их секции :)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SPLIT PARTITION
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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