powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать индекс локальным на секционированной таблице
8 сообщений из 8, страница 1 из 1
Как сделать индекс локальным на секционированной таблице
    #40085607
stil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просмотрел синтаксис - получается модифицировать из обычного в локальный нельзя? Только удалить и создать заново? Или я пропустил где то чтото?

v12
...
Рейтинг: 0 / 0
Как сделать индекс локальным на секционированной таблице
    #40085608
stil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть кляуза UPDATE INDEXES

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ALTER TABLE t1 MODIFY
  PARTITION BY RANGE (created_date) (
    PARTITION t1_part_2015 VALUES LESS THAN (TO_DATE('01-JAN-2016','DD-MON-YYYY')),
    PARTITION t1_part_2016 VALUES LESS THAN (TO_DATE('01-JAN-2017','DD-MON-YYYY')),
    PARTITION t1_part_2017 VALUES LESS THAN (TO_DATE('01-JAN-2018','DD-MON-YYYY'))
  ) ONLINE
  UPDATE INDEXES
  (
    t1_pk GLOBAL,
    t1_created_date_idx GLOBAL
  )



но мне бы не хотелось указывать список партиций (зачем?), я просто хотел сделать только индекс локальным
...
Рейтинг: 0 / 0
Как сделать индекс локальным на секционированной таблице
    #40085610
stil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сработало вот так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
ALTER TABLE CONTRACT_DATA MODIFY
PARTITION BY RANGE (REPORT_DATE) INTERVAL (INTERVAL '1' MONTH) (
    PARTITION VALUES LESS THAN (TO_DATE('2017-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'))
  ) ONLINE
  UPDATE INDEXES
  (
   IDX_CONTRACT_DATA_REPORT_DATE LOCAL
  )



Но вопросов меньше не стало:
1) если не указывать интервальное секционирование - нужно перечислять все секции - зачем?
2) если секционирование интервальное - но после этого секции перерезались через SPLIT, то как? Секции снова перережутся? Перенесутся данные между ними соответственно?

Может есть все таки более простой путь?
...
Рейтинг: 0 / 0
Как сделать индекс локальным на секционированной таблице
    #40085796
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stil
Но вопросов меньше не стало:
1) если не указывать интервальное секционирование - нужно перечислять все секции - зачем?
2) если секционирование интервальное - но после этого секции перерезались через SPLIT, то как? Секции снова перережутся? Перенесутся данные между ними соответственно?

Может есть все таки более простой путь?


1. не интервальное секционирование при range partitioning произвольное - какие именно секции создать: имена, верхняя граница, все по пожеланию трудящихся, посему трудящиеся путем свободного волеизъявления должны передать свои требования oracle.

2. "перерезалились через SPLIT это как? Насколько я помню, интервальные секции не splitаются - нужно отключить interval чтобы все существующие интервальные секции стали не интервальными, сделать split и затем включить interval опять.

SY.
P.S. Имел ввиду интервальные секции не splitаются пользователем. Системно oracle автоматом разобьет интервальную секцию если более ранние данные пришли позже более поздних.
...
Рейтинг: 0 / 0
Как сделать индекс локальным на секционированной таблице
    #40085838
stil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

Да нет. Прекрасно режутся пользователем. Правда последствия странные (но не факт что это связано со сплитом)
...
Рейтинг: 0 / 0
Как сделать индекс локальным на секционированной таблице
    #40085840
PuM256
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для 12c:

Create index new_idx ... local invisible;
Alter index old_idx invisible;
Alter index new_idx visible;
Тестируем
Drop index old_idx;
Alter index new_idx rename to old_idx;
...
Рейтинг: 0 / 0
Как сделать индекс локальным на секционированной таблице
    #40085845
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PuM256
Для 12c:

Код: plsql
1.
2.
3.
Create index new_idx ... local invisible;
Alter index old_idx invisible;
Alter index new_idx visible;


Тестируем
Код: plsql
1.
2.
Drop index old_idx;
Alter index new_idx rename to old_idx;

...
Рейтинг: 0 / 0
Как сделать индекс локальным на секционированной таблице
    #40085869
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stil
SY,

Да нет. Прекрасно режутся пользователем. Правда последствия странные (но не факт что это связано со сплитом)



Пример можно?

Код: 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.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
DROP TABLE INTERVAL_TAB
/
CREATE TABLE INTERVAL_TAB(
                          ID NUMBER,
                          DT DATE
                         )
  PARTITION BY RANGE(DT)
    INTERVAL (INTERVAL '1' MONTH)
    (
     PARTITION P1 VALUES LESS THAN(DATE '2021-05-01')
    )
/
INSERT
  INTO INTERVAL_TAB
  VALUES(1,SYSDATE)
/
COMMIT
/
SET LINESIZE 132
SET LONG 100
SET LONGCHU 100
COLUMN PARTITION_NAME FORMAT A14
COLUN HIGH_VALUE FORMAT A83
SELECT  PARTITION_NAME,
        HIGH_VALUE,
        INTERVAL
  FROM  USER_TAB_PARTITIONS
  WHERE TABLE_NAME = 'INTERVAL_TAB'
/

PARTITION_NAME HIGH_VALUE                                                                          INT
-------------- ----------------------------------------------------------------------------------- ---
P1             TO_DATE(' 2021-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') NO
SYS_P23203     TO_DATE(' 2021-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') YES

SQL> ALTER TABLE INTERVAL_TAB
  2    SPLIT PARTITION SYS_P23203
  3      AT (DATE '2021-06-01')
  4  /
  SPLIT PARTITION SYS_P23203
                  *
ERROR at line 2:
ORA-14080: partition cannot be split along the specified high bound


SQL> ALTER TABLE INTERVAL_TAB SET INTERVAL ()
  2  /

Table altered.

SQL> ALTER TABLE INTERVAL_TAB
  2    SPLIT PARTITION SYS_P23203
  3      AT (DATE '2021-06-01')
  4  /

Table altered.

SQL> ALTER TABLE INTERVAL_TAB
  2    SPLIT PARTITION SYS_P23203
  3      AT (DATE '2021-06-01')
  4  /

Table altered.

SQL> SELECT  PARTITION_NAME,
  2          HIGH_VALUE,
  3          INTERVAL
  4    FROM  USER_TAB_PARTITIONS
  5    WHERE TABLE_NAME = 'INTERVAL_TAB'
  6  /

PARTITION_NAME HIGH_VALUE                                                                          INT
-------------- ----------------------------------------------------------------------------------- ---
P1             TO_DATE(' 2021-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') NO
SYS_P23204     TO_DATE(' 2021-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') NO
SYS_P23205     TO_DATE(' 2021-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') NO

SQL> INSERT
  2    INTO INTERVAL_TAB
  3    VALUES(1,SYSDATE + 10)
  4  /

1 row created.

SQL> SELECT  PARTITION_NAME,
  2          HIGH_VALUE,
  3          INTERVAL
  4    FROM  USER_TAB_PARTITIONS
  5    WHERE TABLE_NAME = 'INTERVAL_TAB'
  6  /

PARTITION_NAME HIGH_VALUE                                                                          INT
-------------- ----------------------------------------------------------------------------------- ---
P1             TO_DATE(' 2021-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') NO
SYS_P23204     TO_DATE(' 2021-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') NO
SYS_P23205     TO_DATE(' 2021-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') NO
SYS_P23206     TO_DATE(' 2021-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') YES

SQL>



SY.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать индекс локальным на секционированной таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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