ユーザーのデフォルト表領域を変更し、テーブルを移動し、新しい表領域へのインデックス

ここで私たちは、一度に複数のユーザのテーブルとインデックスを移動したいときに使用する単純なクエリを提示します。

その一つ一つにするには:

表XXXXXX MOVE TABLESPACEのTESTを改変すること。
ALTER INDEXは、TABLESPACEのTESTを再構築XXXXXX。

'ALTER INDEX' を選択|| OWNER || '' || INDEX_NAME || 'TABLESPACEをREBUILD' || TABLESPACE_NAME || ';' OWNER IN( 'オーナ1'、 'オーナ2')DBA_INDEXESから。

SELECT 'のALTER TABLE' || OWNER || '' || TABLE_NAME || 'MOVEのTABLESPACE' || TABLESPACE_NAME || ';' OWNER IN( 'オーナ1'、 'オーナ2')DBA_TABLESから。

 

テストケース:


1.createテストユーザー、テーブル、インデックス

SQL >  作成し たユーザ識別テストテストを。

SQL >  作成 テーブル T(int型); 

SQL >  作成し たインデックス my_indexをトン(A);

ユーザーテストが所有2.selectオブジェクト

A33用SQL> COLのOBJECT_NAME 
A33用SQL> COL所有者
A33のためのSQL> COLのOBJECT_TYPE 
SQL>選択所有者、object_nameの、OBJECT_TYPE、所有者= 'TEST' DBA_OBJECTSからのステータス。
OWNER OBJECT_NAME OBJECT_TYPEのSTATUS 
---------------------- ---------------------- - ------------------------------- ------- 
TESTのMY_INDEXのINDEX VALID 
有効なテストT表

別の表領域への移動テーブルの3.example

SQL >  を選択し TABLE_NAME、TABLESPACE_NAME から DBA_TABLES 所有者は= ' TEST ' ; 
TABLE_NAME TABLESPACE_NAME - ---------------------------------------------- -------------------------------------------------- ------------------------------ -------------------- ---------- Tのユーザー
SQL > 変更テーブルは、表領域TESTを移動test.t。テーブル


  

変更されました。

SQL >  を選択し TABLE_NAME、TABLESPACE_NAME から DBA_TABLES 所有者は= ' TEST ' ; 
TABLE_NAME TABLESPACE_NAME - ---------------------------------------------- -------------------------------------------------- ------------------------------ -------------------- ---------- 
T TEST

別の表領域への移動インデックスの4.example

SQL >  設定ライン222 
SQL > COLのINDEX_NAME A33 
SQL > COLのTABLE_NAME A33 

SQL >  選択 INDEX_NAME、TABLE_NAME、TABLESPACE_NAME から DBA_INDEXES 所有者は= ' TEST ' 
INDEX_NAME TABLE_NAME TABLESPACE_NAME -

------------------------------- ------------------- -------------------------------------------------- -------------------------------------------------- --------- ------------------------------ 
MY_INDEX Tユーザー

SQL >  変更 インデックスを再構築しtest.MY_INDEX表領域TEST; 

インデックスが変更されました。

SQL >  を選択し INDEX_NAME、TABLE_NAME、TABLESPACE_NAME から DBA_INDEXES どこ OWNER = ' TEST ' ;

INDEX_NAME TABLE_NAME TABLESPACE_NAME 
- ------------------------------- -------------- -------------------------------------------------- -------------------------------------------------- -------------- ------------------------------ 
MY_INDEX T TEST

5.transferユーザーのデフォルト表

SQL >  セットライン222 
SQL >コルのユーザー名のためのA33 
SQL >コルDEFAULT_TABLESPACE A33 
SQL >  を選択し、ユーザー名を、DEFAULT_TABLESPACE から DBA_USERS USERNAME = ' TEST ' ; 
SQL > を選択し、ユーザー名、DEFAULT_TABLESPACE から DBA_USERS USERNAME = ' TEST ' ;
 

USERNAME DEFAULT_TABLESPACE 
- ---------------------------------------------- -------------------------------------------------- ------------------------------ -------------------- ---------- 
テストユーザーの

SQL >  変更する ユーザーテストのデフォルトの表領域TESTを、

ユーザが変更されました。

SQL >  を選択し、ユーザー名、DEFAULT_TABLESPACE から DBA_USERS USERNAME =' TEST ' ; 

USERNAME DEFAULT_TABLESPACE 
- ---------------------------------------------- -------------------------------------------------- ------------------------------ -------------------- ---------- 
TESTテスト

 

おすすめ

転載: www.cnblogs.com/43945616b/p/11579831.html