ITPub博客

首页 > 数据库 > Oracle > 【比较】Oracle不同版本中关于ALTER TABLESPACE的功能演进

【比较】Oracle不同版本中关于ALTER TABLESPACE的功能演进

原创 Oracle 作者:OCMU联盟 时间:2009-10-30 19:48:17 0 删除 编辑
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的官方文档,描写的非常的清晰,地址如下:

具体操作一例:
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 --

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70034820/viewspace-2994005/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
OCM联盟( Oracle Certified Master Union)是由侯圣文(ACE总监)发起的一个公益组织,旨在为每一个OCM大师提供一个可以继续展示自己才华,技术和实力的平台。

注册时间:2007-05-27

  • 博文量
    799
  • 访问量
    8407026