powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Партиционирование таблицы в Oracle 12с
7 сообщений из 7, страница 1 из 1
Партиционирование таблицы в Oracle 12с
    #39501964
Elina_C
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем день добрый!

В Oracle 12c появилась возможность секционировать таблицу с помощью конструкции alter table ... modify partition ... online ... update indexes.
При этом локальные индексы создаются в том же табличном пространстве, где и партиция таблицы.
А у меня таблица и индексы находятся в разных табличных пространствах, и мне нужно все так и осталось после секционирования.
Подскажите, пожалуйста, как в этой конструкции указать табличное пространство для локальных индексов. Согласно документации такая возможность есть.

Заранее большое спасибо.
...
Рейтинг: 0 / 0
Партиционирование таблицы в Oracle 12с
    #39502043
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Партиционирование таблицы в Oracle 12с
    #39502233
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elina_C,


Насколько я понимаю, tablespace можно указать только на уровне partition.
Код: 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.
SQL> create table bla (id number, code number, date_created date, name varchar2(42));

Table created.

SQL>
SQL> insert into bla
  2  select
  3  rownum, mod(rownum,10), sysdate - mod(rownum,500), 'BLA'
  4  from dual
  5  connect by level <= 2000;

2000 rows created.

SQL>
SQL> commit;

Commit complete.

SQL>
SQL>
SQL> create index bla_code_idx on bla(code);

Index created.

SQL>
SQL> create unique index bla_id_idx on bla(id);

Index created.

SQL>
SQL> alter table bla
  2  modify partition by range (date_created)
  3  (partition p1 values less than (date '2016-01-01') tablespace test,
  4   partition p2 values less than (date '2017-01-01'),
  5   partition p3 values less than (maxvalue)) online
  6  update indexes
  7  (
  8    bla_code_idx LOCAL
  9    (
 10      partition p1 tablespace test,
 11      partition p2 tablespace users,
 12      partition p3 tablespace test
 13    ),
 14    bla_id_idx global partition by range (id)
 15    (
 16      partition id01 values less than (maxvalue) tablespace test
 17    )
 18  )
 19  ;

Table altered.



Regards

Maxim
...
Рейтинг: 0 / 0
Партиционирование таблицы в Oracle 12с
    #39502313
Elina_C
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Demenko[spoiler Насколько я понимаю, tablespace можно указать только на уровне partition.][src oracle]

Позволю себе усомниться, т.к. в документации Oracle сказано следующее:

If you do not specify the tablespace for any of the indexes , then the following tablespace defaults apply.
Local indexes after the conversion collocate with the table partition.
Global indexes after the conversion reside in the same tablespace of the original global index on the non-partitioned table.

Т.е. эти правила распределения индексов по табличным пространствам действуют, если не указано конкретное.
Но примеров найти в инете как это сделать не могу...
...
Рейтинг: 0 / 0
Партиционирование таблицы в Oracle 12с
    #39502319
Elina_C
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejninэто?
Дока "Updating Global Indexes: Example"
"Updating Partitioned Indexes: Example"


Вадим, спасибо.

Но в этих примерах нет того, как при секционировании таблицы онлайн указать табличные пространства для самой таблицы и каждого ее индекса.
...
Рейтинг: 0 / 0
Партиционирование таблицы в Oracle 12с
    #39502387
Elina_C
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elina_CVadim Lejninэто?
пропущено...


Вадим, спасибо.

Но в этих примерах нет того, как при секционировании таблицы онлайн указать табличные пространства для самой таблицы и каждого ее индекса.
Хотела пояснить, что нужна возможность указать табличное пространство для индекса в целом, не перечисляя все партиции, т.к. данные секционируются за 10 лет и секций будет...очень много.
...
Рейтинг: 0 / 0
Партиционирование таблицы в Oracle 12с
    #39502406
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elina_CElina_Cпропущено...


Вадим, спасибо.

Но в этих примерах нет того, как при секционировании таблицы онлайн указать табличные пространства для самой таблицы и каждого ее индекса.
Хотела пояснить, что нужна возможность указать табличное пространство для индекса в целом, не перечисляя все партиции, т.к. данные секционируются за 10 лет и секций будет...очень много.

Зачем это делать руками?
Жваневский (С)Одно неловкое движение и Вы...
CODE generator Вам в помощь
Пишите запрос и формируете нужный синтаксис для каждой партиции
не обязательно весь оператор, только самую нудную его часть, далее copy/paste
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Партиционирование таблицы в Oracle 12с
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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