首页 > 其他 > 详细

change user default tablespace and move table,index to new tablespace

时间:2019-09-24 19:19:04      阅读:124      评论:0      收藏:0      [点我收藏+]

Here I present a simple query to use when we want to move the tables and indexes of several users at once.

To make it one by one:

ALTER TABLE xxxxxx MOVE TABLESPACE TEST;
ALTER INDEX xxxxxx REBUILD TABLESPACE TEST;

select ‘ALTER INDEX ‘ || OWNER || ‘.‘ || INDEX_NAME || ‘ REBUILD TABLESPACE ‘ || TABLESPACE_NAME || ‘;‘ from DBA_INDEXES WHERE OWNER IN (‘OWNER1‘,‘OWNER2‘);

select ‘ALTER TABLE ‘ || OWNER || ‘.‘ || TABLE_NAME || ‘ MOVE TABLESPACE ‘ || TABLESPACE_NAME || ‘;‘ from DBA_TABLES WHERE OWNER IN (‘OWNER1‘,‘OWNER2‘);

 

测试案例:


1.create test user,table,index

SQL> create user test identified by test;

SQL> create table t(a int);

SQL> create index my_index on t(A);

2.select object owned by user test

SQL> col object_name for a33
SQL> col owner for a33
SQL> col OBJECT_TYPE for a33
SQL> select owner,object_name,OBJECT_TYPE,status from dba_objects where owner=‘TEST‘;
OWNER                  OBJECT_NAME            OBJECT_TYPE                       STATUS
---------------------- ---------------------- --------------------------------- -------
TEST                   MY_INDEX               INDEX                             VALID
TEST                   T                      TABLE                             VALID

3.example for move table to another tablespace

SQL> select TABLE_NAME,TABLESPACE_NAME from dba_tables where owner=TEST;
TABLE_NAME                                                                                                                       TABLESPACE_NAME
-------------------------------------------------------------------------------------------------------------------------------- ------------------------------
T                                                                                                                                USERS

SQL> alter table test.t move tablespace TEST;

Table altered.

SQL> select TABLE_NAME,TABLESPACE_NAME from dba_tables where owner=TEST;

TABLE_NAME                                                                                                                       TABLESPACE_NAME
-------------------------------------------------------------------------------------------------------------------------------- ------------------------------
T                                                                                                                                TEST

4.example for move index to another tablespace

SQL> set lines 222
SQL> col INDEX_NAME for a33
SQL> col TABLE_NAME for a33

SQL> select INDEX_NAME,TABLE_NAME,TABLESPACE_NAME from dba_indexes where OWNER=TEST;

INDEX_NAME                        TABLE_NAME                                                                                                                       TABLESPACE_NAME
--------------------------------- -------------------------------------------------------------------------------------------------------------------------------- ------------------------------
MY_INDEX                          T                                                                                                                                USERS

SQL> alter index test.MY_INDEX rebuild tablespace TEST;

Index altered.

SQL> select INDEX_NAME,TABLE_NAME,TABLESPACE_NAME from dba_indexes where OWNER=TEST;

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

5.transfer user default tablespace

SQL> set lines 222
SQL> col username for a33
SQL> col DEFAULT_TABLESPACE for a33
SQL> select username,DEFAULT_TABLESPACE from dba_users where USERNAME=TEST;

SQL> select username,DEFAULT_TABLESPACE from dba_users where USERNAME=TEST;

USERNAME                                                                                                                         DEFAULT_TABLESPACE
-------------------------------------------------------------------------------------------------------------------------------- ------------------------------
TEST                                                                                                                             USERS

SQL> alter user test default tablespace TEST;

User altered.

SQL> select username,DEFAULT_TABLESPACE from dba_users where USERNAME=TEST;

USERNAME                                                                                                                         DEFAULT_TABLESPACE
-------------------------------------------------------------------------------------------------------------------------------- ------------------------------
TEST                                                                                                                             TEST

 

change user default tablespace and move table,index to new tablespace

原文:https://www.cnblogs.com/43945616b/p/11579831.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!