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

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

Заранее большое спасибо.
...
Рейтинг: 0 / 0
08.08.2017, 18:12
    #39502043
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование таблицы в Oracle 12с
...
Рейтинг: 0 / 0
08.08.2017, 23:37
    #39502233
Maxim Demenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование таблицы в Oracle 12с
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
09.08.2017, 09:12
    #39502313
Elina_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование таблицы в Oracle 12с
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
09.08.2017, 09:16
    #39502319
Elina_C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование таблицы в Oracle 12с
Vadim Lejninэто?
Дока "Updating Global Indexes: Example"
"Updating Partitioned Indexes: Example"


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

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


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

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


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

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

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


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