Добавить кластер в существующую таблицу в Oracle - PullRequest
3 голосов
/ 09 октября 2011

Можно ли добавить кластер в существующую таблицу? Например ...
У меня есть таблица:

CREATE TABLE table_name(  
t_id number PRIMARY KEY,  
t_name varchar2(50));   

Кластер:

CREATE CLUSTER my_cluster
(c_id NUMBER) SIZE 100;

Есть такая команда: ALTER TABLE t_name ADD CLUSTER my_cluster(t_id); или что-то подобное?
Потому что я хочу, чтобы таблица выглядела примерно так:

CREATE TABLE table_name(  
t_id number PRIMARY KEY,  
t_name varchar2(50))  
CLUSTER my_cluster(t_id); 

И удаление всех подключенных таблиц не совсем то, что я хочу сделать.
Спасибо

1 Ответ

0 голосов
/ 09 октября 2011

Вам действительно нужно понять, что такое кластер. От Документы :

"Кластеры - это группы из одной или нескольких таблиц физически сохраненные вместе , потому что они имеют общие столбцы и часто используются все вместе. Поскольку связанные строки физически хранятся вместе, диск время доступа улучшается. "(выделено мной)

Дело в том, что таблицы в кластере располагаются в одном месте . Это физическое устройство. Таким образом, для того, чтобы база данных могла кластеризовать существующие таблицы, мы должны удалить их и заново создать.

Можно минимизировать время простоя, создав кластеризованную таблицу под другим именем. Вам нужно будет синхронизировать данные с оперативной таблицей, пока вы не будете готовы к обмену. Во время этого вам нужно будет ограничить доступ к базе данных, чтобы предотвратить потерю данных. Затем вы переименовываете старую таблицу, переименовываете кластеризованную таблицу с правильным именем, запускаете необходимые разрешения и перекомпилируете недопустимые процедуры, синонимы и т. Д.

...