oracle中将字典管理表空间转换为本地管理表空间

首先要知道本地管理表空间和字典管理表空间的区别。
字典管理表空间每当表或其他对象需要扩大的时候都检查其数据字典以确保有可用的空间分配给对象,然后给对象分配一个新区段并更新其可用空间信息。
本地管理表空间保存数据文件本身的空间管理信息,而且表空间自动跟踪每个数据文件块的可用或已用状态。
在事务比较多的数据库中显然字典管理每次插入数据时都会检查数据字典,这就使得数据库性能有所损耗。

转换:
第一种方法---命令方式转移。
首先你要新建一个oracle表空间,在oracle 10g以后默认都是采用本地管理表空间的。
对于表空间的转移使用命令
ALTER TABLE temp MOVE TABLESPACE new_temp;
对于索引你需要重建
ALTER TABLE index REBUILD TABLESPACE new_index;

或许你可以采用oracle提供的PL/SQL数据包中的DBMS_SPACE_ADMIN。
显然上面的方法并不适用于对system表进行转换,因为你不能建立2个同名的system表。
在转换system表前,你必须把所有的其他表空间转换为本地管理。
EXECUTE dbms_space_admin.tablespace_migrate_to_local("tablespace"); ---转行表空间
然后同样的方法将system表空间也进行转换.
EXECUTE dbms_space_admin.tablespace_migrate_to_local("system");
使用这种方法很好,但是它建立的表空间没有automatic segment space managerment选项,所有字典管理表空间都是用默认手动段空间管理,而且在转换为本地管理的表空间是不能进行修改.
还有一个缺点,就是表空间如果存在空间碎片的话,此方法也不能解决碎片问题.
所以oracle建议你,采用第一种方法.


posted on 2009-08-01 08:12 duduli 阅读(1469) 评论(1)  编辑  收藏 所属分类: 数据库

评论

# re: oracle中将字典管理表空间转换为本地管理表空间 2009-08-01 11:07 99读书人

不错!  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2009年8月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

公告

welcome to my place.

常用链接

留言簿(5)

我参与的团队

随笔分类

随笔档案

新闻分类

石头JAVA摆地摊儿

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

@duduli