4

既存のテーブルにクラスターを追加することはできますか? たとえば...
私はテーブルを持っています:

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); 

接続されているすべてのテーブルを削除することは、私が実際にやりたいことではありません。
ありがとう

4

1 に答える 1

-1

クラスターが実際に何であるかを本当に理解する必要があります。ドキュメントから:

「クラスターは、共通の列を共有し、一緒に使用されることが多いため、物理的に一緒に格納された1 つ以上のテーブルのグループです。関連する行が物理的に一緒に格納されるため、ディスク アクセス時間が改善されます。」(私のものを強調)

ポイントは、クラスター内のテーブルが同じ場所に配置されていることです。これは物理的な配置です。したがって、データベースが既存のテーブルをクラスター化するには、それらを削除して再作成する必要があります。

クラスター化されたテーブルを別の名前で作成することにより、ダウンタイムを最小限に抑えることができます。スワップの準備が整うまで、データをライブ テーブルと同期しておく必要があります。データの損失を防ぐために、これを行っている間はデータベースへのアクセスを制限する必要があります。次に、古いテーブルの名前を変更し、クラスター化されたテーブルの名前を適切な名前に変更し、必要な許可を実行して、無効なプロシージャ、シノニムなどを再コンパイルします。

于 2011-10-09T08:10:50.663 に答える