疑问---表空间块的管理方式到底如何决定???
时间:2011-09-16
来源:互联网
本人在学习oralce存储管理时,对块的管理方式还比较模糊
create tablespace USERTBS
datafile 'd:\oradata\usertbs01.dbf' size 50m
pctfree30 pctused50
extent management local autoallocate;
segment space management auto;
上述创建表空间的语句
问题1. segment space management auto如果没有显示指定的话,默认是auto自动吗???如果是自动的话,既是oracle通过位图来管理段中的数据块,这时上面的PCTFREE PCTUSED参数是否会被忽略??? 在此表空间中创建表等对象时使用的PCTFREE PCTUSED参数是否会被忽略???
问题2. 如果创建表空间时把段管理设为手动(不知道是不是segment space management manual),块的管理方式又是怎么样的??? 在此表空间中创建表等对象时再使用的PCTFREE20 PCTUSED60参数,和pctfree30 pctused50不一致的话 那块的管理又是怎样???
谢谢~~~
create tablespace USERTBS
datafile 'd:\oradata\usertbs01.dbf' size 50m
pctfree30 pctused50
extent management local autoallocate;
segment space management auto;
上述创建表空间的语句
问题1. segment space management auto如果没有显示指定的话,默认是auto自动吗???如果是自动的话,既是oracle通过位图来管理段中的数据块,这时上面的PCTFREE PCTUSED参数是否会被忽略??? 在此表空间中创建表等对象时使用的PCTFREE PCTUSED参数是否会被忽略???
问题2. 如果创建表空间时把段管理设为手动(不知道是不是segment space management manual),块的管理方式又是怎么样的??? 在此表空间中创建表等对象时再使用的PCTFREE20 PCTUSED60参数,和pctfree30 pctused50不一致的话 那块的管理又是怎样???
谢谢~~~
作者: xieyihn 发布时间: 2011-09-16
自己顶起来
作者: xieyihn 发布时间: 2011-09-16
好象没注意过这个问题,一般是设置一个值,10%增长,如果觉得不够了,可以加大.
作者: dawugui 发布时间: 2011-09-16
引用 2 楼 dawugui 的回复:
好象没注意过这个问题,一般是设置一个值,10%增长,如果觉得不够了,可以加大.
好象没注意过这个问题,一般是设置一个值,10%增长,如果觉得不够了,可以加大.
SQL> create tablespace indx
2 datafile 'C:\oracle\oradata\testdb\indx.dbf' size 10M autoextend ON next 1M maxsize 50
3 extent management local autoallocate
4 pctfree 30
5 pctused 60;
pctfree 30
*
ERROR 位于第 4 行:
ORA-02180: 无效的 CREATE TABLESPACE 选项
建表空间时PCTFREE,PCTUSED到底怎样使用 为什么加上后上述语句报错呢?
作者: xieyihn 发布时间: 2011-09-16
create tablespace USERTBS
datafile 'd:\oradata\usertbs01.dbf' size 50m
pctfree30 pctused50
extent management local autoallocate;
segment space management auto;
上述创建表空间的语句
问题1. segment space management auto如果没有显示指定的话,默认是auto自动吗???如果是自动的话,既是oracle通过位图来管理段中的数据块,这时上面的PCTFREE PCTUSED参数是否会被忽略??? 在此表空间中创建表等对象时使用的PCTFREE PCTUSED参数是否会被忽略???
问题2. 如果创建表空间时把段管理设为手动(不知道是不是segment space management manual),块的管理方式又是怎么样的??? 在此表空间中创建表等对象时再使用的PCTFREE20 PCTUSED60参数,和pctfree30 pctused50不一致的话 那块的管理又是怎样???
记得好像从oracle9i 开始就采用自动管理方式,如果不指定,系统也是采取auto的方式进行管理,当自动管理后其他的参数自然会被忽略了.
下面是自己记录的笔记看是否对你能有所收获:
表空间管理方式可分为
字典管理(dictionary-managed tablespace DMT)
字典管理方式是传统的管理方式,使用oracle的数据字典来管理存储空间的分配。
当在表空间中分配新的区或回收已分配的区时Oracle将对数据字典中相关的“基层表”进行查询,更新并且在这一过程中使用单线程搜索方法,
速度比较慢,另外对表的操作会产生redo和undo。
因此在分配或回收区时,会在数据库中产生相应的undo和redo信息,这是字典管理方式的特点,也是他的缺点。
注意:
如果其他表空间要使用数据字典管理方式,那么system表空间也必须采用字典管理方式,
而且在create tablespace 语句中显示的使用 EXTENT MANAGEMENT DICTIONARY;
本地管理(local_managed tablespace LMT)--推荐使用本地管理!
本地管理表空间方式是从oracle9i开始改进新的管理方式,创建表空间时默认是使用本地管理表空间方式。
在本地管理方式下,表空间中区的分配与回收的管理信息存储在表空间的数据文件中,而与数据字典无关。表空间
会在每一个数据文件中维护一个“位图-bitmap”结构,用于记录表空间中所有区的分配情况,当在表空间中分配新的区
或者回收已分配的区时oracle将对数据文件中的“位图”进行更新,这种更新不是对表的更新,所以不会产生redo和undo信息。
为什么设置 extent management local 后就不存在磁盘浪费一说呢?因为本地管理是维护数据文件的位图信息,它会使用位图的方法去查询空闲空间,相邻的空闲块被视为
一个大的空闲块,从设计上保证自动合并磁盘碎片,碎片产生后由系统自动消除!
datafile 'd:\oradata\usertbs01.dbf' size 50m
pctfree30 pctused50
extent management local autoallocate;
segment space management auto;
上述创建表空间的语句
问题1. segment space management auto如果没有显示指定的话,默认是auto自动吗???如果是自动的话,既是oracle通过位图来管理段中的数据块,这时上面的PCTFREE PCTUSED参数是否会被忽略??? 在此表空间中创建表等对象时使用的PCTFREE PCTUSED参数是否会被忽略???
问题2. 如果创建表空间时把段管理设为手动(不知道是不是segment space management manual),块的管理方式又是怎么样的??? 在此表空间中创建表等对象时再使用的PCTFREE20 PCTUSED60参数,和pctfree30 pctused50不一致的话 那块的管理又是怎样???
记得好像从oracle9i 开始就采用自动管理方式,如果不指定,系统也是采取auto的方式进行管理,当自动管理后其他的参数自然会被忽略了.
下面是自己记录的笔记看是否对你能有所收获:
表空间管理方式可分为
字典管理(dictionary-managed tablespace DMT)
字典管理方式是传统的管理方式,使用oracle的数据字典来管理存储空间的分配。
当在表空间中分配新的区或回收已分配的区时Oracle将对数据字典中相关的“基层表”进行查询,更新并且在这一过程中使用单线程搜索方法,
速度比较慢,另外对表的操作会产生redo和undo。
因此在分配或回收区时,会在数据库中产生相应的undo和redo信息,这是字典管理方式的特点,也是他的缺点。
注意:
如果其他表空间要使用数据字典管理方式,那么system表空间也必须采用字典管理方式,
而且在create tablespace 语句中显示的使用 EXTENT MANAGEMENT DICTIONARY;
本地管理(local_managed tablespace LMT)--推荐使用本地管理!
本地管理表空间方式是从oracle9i开始改进新的管理方式,创建表空间时默认是使用本地管理表空间方式。
在本地管理方式下,表空间中区的分配与回收的管理信息存储在表空间的数据文件中,而与数据字典无关。表空间
会在每一个数据文件中维护一个“位图-bitmap”结构,用于记录表空间中所有区的分配情况,当在表空间中分配新的区
或者回收已分配的区时oracle将对数据文件中的“位图”进行更新,这种更新不是对表的更新,所以不会产生redo和undo信息。
为什么设置 extent management local 后就不存在磁盘浪费一说呢?因为本地管理是维护数据文件的位图信息,它会使用位图的方法去查询空闲空间,相邻的空闲块被视为
一个大的空闲块,从设计上保证自动合并磁盘碎片,碎片产生后由系统自动消除!
作者: BearFishShow 发布时间: 2011-09-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28