Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как создать индекс с партицией  [new]
x17.mstu
Member

Откуда:
Сообщений: 311
v_alter_table_stmt02 := 'ALTER TABLE ' || v_table_owner || '.' || v_table_name || ' ADD CONSTRAINT '||v_Constraint||' PRIMARY KEY (FEED_SRC, AGRMT_ID, NETTCOL_ID, CRXM_ID, COMP_CODE, CRXMCNTRY, BRANCH_ID, PRODUCT_ID, DOX_TYPE, CP_BRANCH, IFRS_NET_IND, RELATIONSHIP_TYPE, AGREEMENT_TEMPLATE) USING INDEX TABLESPACE MOUSETRAP_DATA';
	  EXECUTE IMMEDIATE v_alter_table_stmt02;


Создаю PK. При этом индекс unique создается автоматически, но не партицированный.
Таблица партицирована была до этого.

Как сделать индекс партицированный?
19 окт 18, 12:40    [21708936]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1489
x17.mstu,

ключ секционирования является префиксом в составе полей вашего PK?
19 окт 18, 12:48    [21708960]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
x17.mstu
Member

Откуда:
Сообщений: 311
Щукина Анна,

PARTITION BY LIST ("FEED_SRC") в sql таблицы
19 окт 18, 12:54    [21708977]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1489
x17.mstu,

1) для начала создайте соответствующий глобально-секционированный индекс с префиксом.
2) после - создайте PK с фразой using index <тут имя вашего индекса с шага 1>
19 окт 18, 13:41    [21709078]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
USING INDEX LOCAL [PARTITION p1 TABLESPACE ...]
Не срабатывает ?
19 окт 18, 14:05    [21709113]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
x17.mstu
Member

Откуда:
Сообщений: 311
Вячеслав Любомудров,

неа
19 окт 18, 14:25    [21709173]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
x17.mstu
Member

Откуда:
Сообщений: 311
Щукина Анна,

Спасибо, работает
19 окт 18, 14:42    [21709201]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10042
Щукина Анна
1) для начала создайте соответствующий глобально-секционированный индекс с префиксом.
2) после - создайте PK с фразой using index <тут имя вашего индекса с шага 1>


Все прекрсно работает в одном флаконе:

SQL> CREATE TABLE TBL(
  2                   ID NUMBER,
  3                   VAL VARCHAR2(10)
  4                  )
  5  /

Table created.

SQL> ALTER TABLE TBL
  2    ADD CONSTRAINT PK_TBL
  3      PRIMARY KEY(ID)
  4      USING INDEX
  5      GLOBAL
  6      PARTITION BY RANGE(ID)
  7      (
  8       PARTITION P_ALL VALUES LESS THAN(MAXVALUE)
  9      )
 10  /

Table altered.

SQL> 


SY.
19 окт 18, 15:01    [21709230]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10042
И на секционированной таблице:

SQL> DROP TABLE TBL PURGE
  2  /

Table dropped.

SQL> CREATE TABLE TBL(
  2                   ID NUMBER,
  3                   VAL VARCHAR2(10)
  4                  )
  5    PARTITION BY RANGE(ID)
  6    INTERVAL(10)
  7    (
  8     PARTITION P0 VALUES LESS THAN(11)
  9    )
 10  /

Table created.

SQL> ALTER TABLE TBL
  2    ADD CONSTRAINT PK_TBL
  3      PRIMARY KEY(ID)
  4      USING INDEX
  5      LOCAL
  6  /

Table altered.

SQL> 


SY.
19 окт 18, 15:05    [21709236]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
x17.mstu
Member

Откуда:
Сообщений: 311
SY,
Получилось, только статус индекса перешел в n/a.
19 окт 18, 15:18    [21709249]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
x17.mstu
Member

Откуда:
Сообщений: 311
x17.mstu,

Select status from dba_ind_partitions
where index_name ='MST_DOX_STAGEME_PK'

status -> usable
19 окт 18, 15:24    [21709255]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
x17.mstu
Member

Откуда:
Сообщений: 311
ALTER INDEX MST_DOX_STAGEME_PK REBUILD PARTITION DOX

не помогло
19 окт 18, 15:31    [21709259]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10042
x17.mstu
Получилось, только статус индекса перешел в n/a.


Естественно, теперь каждая секция имеет свой статус а среднюю по больнице Oracle не считaет.

SY.
19 окт 18, 15:33    [21709262]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1489
x17.mstu
ALTER INDEX MST_DOX_STAGEME_PK REBUILD PARTITION DOX

не помогло
и не поможет. если индекс/таблица секционированы, то подробности о их самочувствии нужно искать в %partitions-вьюхах. ибо сама таблица/индекс в случае секционирования - не более чем "обобщающая" логическая обертка для физических секций/подсекций.
19 окт 18, 16:53    [21709363]     Ответить | Цитировать Сообщить модератору
 Re: Как создать индекс с партицией  [new]
x17.mstu
Member

Откуда:
Сообщений: 311
SY,
Спасибо)
19 окт 18, 17:39    [21709397]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить