1.分别看一下从9i到11gR2版本中关于“ALTER TABLESPACE”的语法。
1).11g(R1和R2相同)的语法:
ALTER TABLESPACE tablespace
{ DEFAULT [ table_compression ] storage_clause
| MINIMUM EXTENT size_clause
| RESIZE size_clause
| COALESCE
| SHRINK SPACE [ KEEP size_clause]
| RENAME TO new_tablespace_name
| { BEGIN | END } BACKUP
| datafile_tempfile_clauses
| tablespace_logging_clauses
| tablespace_group_clause
| tablespace_state_clauses
| autoextend_clause
| flashback_mode_clause
| tablespace_retention_clause
} ;
2).10g的语法:
ALTER TABLESPACE tablespace
{ DEFAULT
[ table_compression ] storage_clause
| MINIMUM EXTENT size_clause
| RESIZE size_clause
| COALESCE
| RENAME TO new_tablespace_name
| { BEGIN | END } BACKUP
| datafile_tempfile_clauses
| tablespace_logging_clauses
| tablespace_group_clause
| tablespace_state_clauses
| autoextend_clause
| flashback_mode_clause
| tablespace_retention_clause
} ;
3).9i的语法:
ALTER TABLESPACE tablespace
{ datafile_tempfile_clauses
| DEFAULT [ data_segment_compression ] storage_clause
| MINIMUM EXTENT integer [ K | M ]
| ONLINE
| OFFLINE [ NORMAL | TEMPORARY | IMMEDIATE ]
| { BEGIN | END } BACKUP
| READ { ONLY | WRITE }
| PERMANENT| TEMPORARY
| COALESCE
| logging_clause
| [ NO ] FORCE LOGGING
} ;
2.将比较关心的几个特性演进描述一下
1)10g比9i增加了修改表空间名字的方法(RENAME TO),方便很多,虽然在改名的过程中存在一些限制,不过改进相当的人性,终于不用通过增删的方式修改表空间的名字了。
关于rename表空间名字的一些限制请阅读Oracle的官方文档,描写的非常的清晰,地址如下:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_3002.htm#SQLRF01002
具体操作一例:
sys@ora10g> alter tablespace TBS_SEC_D1 rename to TBS_SEC_D;
Tablespace altered.
2)10g到9i的变化是非常大的,增加了非常多的特性,因为10g是一个跨时代的一个版本。
3)10g到11g的变化不是很大,不过也体现了功能的进一步加强,这里提到的是对临时表空间的“SHRINK SPACE”功能,加强了对临时表空间的管理功能。
(1)“SHRINK SPACE”之前的临时表空间查看
sys@ora11g> select tablespace_name,file_id,bytes/1024/1024 Mbytes,blocks,maxbytes/1024/1024 MmaxBytes,maxblocks from dba_temp_files;
TABLESPACE_NAME FILE_ID MBYTES BLOCKS MMAXBYTES MAXBLOCKS
--------------- ---------- ---------- ---------- ---------- ----------
TEMP 1 29 3712 32767.9844 4194302
(2)使用“SHRINK SPACE”功能对临时表空间进行缩减
sys@ora11g> alter tablespace TEMP shrink space;
Tablespace altered.
(3)“SHRINK SPACE”之后临时表空间查看,可以看到临时表空间大小由原来的29M变成了现在的不到2M的大小。
sys@ora11g> select tablespace_name,file_id,bytes/1024/1024 Mbytes,blocks,maxbytes/1024/1024 MmaxBytes,maxblocks from dba_temp_files;
TABLESPACE_NAME FILE_ID MBYTES BLOCKS MMAXBYTES MAXBLOCKS
--------------- ---------- ---------- ---------- ---------- ----------
TEMP 1 1.9921875 255 32767.9844 4194302
(4)演示一下对于非临时表空间进行SHRINK时的报错信息,提示信息很清晰
sys@ora11g> alter tablespace USERS shrink space;
alter tablespace USERS shrink space
*
ERROR at line 1:
ORA-12916: cannot shrink permanent or dictionary managed tablespace
3.小结
上面只是提到了几个我感觉比较实用的变化,抛个砖,细节之处大家再慢慢体会吧。
-- The End --