您的位置:首页 > 其它

关于 alter table move tablespace 的一点理解

2014-12-03 22:33 239 查看
测试一:

SQL> alter table hlj move tablespace test;

alter table hlj move tablespace test

            *

ERROR at line 1:

ORA-01652: unable to extend temp segment by 128 in tablespace TEST

当test 的空间不足以存放 hlj 表的数据时,oracle并不是那么智能,在初始化test表空间数据文件前就抛出报错,实际是oracle会先在test 表空间为hlj 生成临时段 ,等没有空间可扩展时,才会抛出ORA-1652: unable to extend temp segment by 128 in tablespace     TEST ,然后再去清理掉test中的临时段,但是只是标记而已,不会立刻清理。

21:15:37 SQL> alter table hlj move tablespace test;

alter table hlj move tablespace test

            *

ERROR at line 1:

ORA-01652: unable to extend temp segment by 128 in tablespace TEST
Elapsed: 00:00:12.18

21:16:07 SQL> 

ALert.log 记录报错信息:

Thu Nov  6 21:16:06 2014

ORA-1652: unable to extend temp segment by 128 in tablespace                 TEST 

测试二:

关于 alter tablemove 是否会回收数据文件空间?  答案是:不会释放数据文件已经格式化的磁盘空间

hlj 表原来在 example 表空间

Status             Name                 Type               Extent Management    Total Size (M)             Used (M)                   Free (M)                        Used %

------------------ -------------------- ------------------ -------------------- -------------------------- -------------------------- -------------------------- --------------

ONLINE             TEMP                 TEMPORARY          LOCAL                         .000                       .000                   .000                  0.00

ONLINE             UNDOTBS1             UNDO               LOCAL                    32767.984                     70.250                384.750                  0.21

ONLINE             SYSAUX               PERMANENT          LOCAL                    32767.984                    263.688                  6.313                  0.80

ONLINE             SYSTEM               PERMANENT          LOCAL                    32767.984                    498.625               1651.375                  1.52
ONLINE             EXAMPLE              PERMANENT          LOCAL                    32767.984                   771.250                  4.375     
           2.35    ------------》775.625=[b]771.250 + 4.375


ONLINE             USERS                PERMANENT          LOCAL                    32767.984                   1193.438               1231.563                  3.64[/b]
ONLINE             TEST                 PERMANENT          LOCAL                      200.000                      8.000                192.000                  4.00

将hlj 表从 example 表空间move到 users

SQL> alter table hlj move tablespace users;

Table altered.

Status             Name                 Type               Extent Management    Total Size (M)             Used (M)                   Free (M)                        Used %

------------------ -------------------- ------------------ -------------------- -------------------------- -------------------------- -------------------------- --------------

ONLINE             TEMP                 TEMPORARY          LOCAL                         .000                       .000                   .000                  0.00

ONLINE             UNDOTBS1             UNDO               LOCAL                    32767.984                     70.375                384.625                  0.21
ONLINE             EXAMPLE              PERMANENT          LOCAL                    32767.984                     68.250                707.375                  0.21  -----------》68.250+707.375=775.625

ONLINE             SYSAUX               PERMANENT          LOCAL                    32767.984                    263.688                  6.313                  0.80

ONLINE             SYSTEM               PERMANENT          LOCAL                    32767.984                    498.625               1651.375                  1.52

ONLINE             TEST                 PERMANENT          LOCAL                      200.000                      8.000                192.000                  4.00
ONLINE             USERS                PERMANENT          LOCAL                    32767.984                   1889.438                535.563                  5.77

发现前后数据文件的大小没啥变化
下面的数据比对更清晰:

21:16:07 SQL> select tablespace_name,bytes from dba_data_files;

TABLESPACE_NAME                                                   BYTES

------------------------------------------------------------ ----------
USERS                                                        2542796800

SYSAUX                                                        283115520

UNDOTBS1                                                      477102080

SYSTEM                                                       2254438400
EXAMPLE                                                       813301760

TEST                                                          209715200

Elapsed: 00:00:00.00

21:32:02 SQL> alter table hlj move tablespace  EXAMPLE;

Elapsed: 00:00:27.80

21:32:41 SQL> select tablespace_name,bytes from dba_data_files;

TABLESPACE_NAME                                                   BYTES

------------------------------------------------------------ ----------
USERS                                                        2542796800

SYSAUX                                                        283115520

UNDOTBS1                                                      477102080

SYSTEM                                                       2254438400
EXAMPLE                                                       813301760

TEST                                                          209715200
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: