Oracle8i Server and SQL*PlusèOracle8i Administrator's GuideèPart III Database Storage
介绍数据库结构,数据库对象和保护事务的完整性,包括以下三个章节:
第09章: 管理tablespace
第10章: 管理datafile
第11章: 管理rollback segment
第09章: 管理tablespace
管理tablespace指导
创建tablespace
管理tablespace的分配
改变tablespace的可用性
Read-Only Tablespace
Drop tablespace
使用dbms_space_admin包
Transporting tablespace between databases
访问和tablespace相关的信息
A:管理tablespace指导:
为了创建一个tablespace可以使用create tablespace 或create temporary tablesapce 。但是你必须拥有create tablespace 的系统权限。
其后,可以使用alter tablespace 或alter database子句去改变一个tablespace。但必须拥有alter tablespace或alter database系统权限。
8I之前是dictionary-managed tablespace,从8I开始支持local managed stablespace。8I默认还是字典。官方推荐使用local managed
temporary tablespace可以使用字典管理也可以使用local管理.
Alter tablespace字句的作用:
1, 改变默认的storage 参数
2, coalescing Free 表空间的空间
3, 改变online/offline/read-only/read-write
4, 添加,rename,打开关闭auto extension,改变大小等等
创建一个本地管理的表空间
有2个选择,1是使用autoallocate选项,ORACLE自动管理分区的分配;
2是使用unifor size的方式。如果指定uniform不指定大小,默认是1M的extent
可以通过v$sort_segment和v$sort_usage视图去查看目前在排序的用户
创建一个字典管理的temporary Tablespace :
create tablespace temp dafile ‘/u01/temp01.dbf’ size 5m temporary ;
改变一个字典管理的temporary tablespace到一个local 的temporary tablespace
alter tablespace temp temporary;
在10G中已经不允许创建字典管理的tablespace了.
查看temp的信息要去v$tempfile和dba_temp_files 这和v$datafile 和dba_data_files是很相似的
coalesce free space
在local管理的表空间中是不会出现碎片的。如果在字典管理的表空间中,所有的的分区大小都是一样的话,也是不会出现分区碎片
监控自由空间。DBA_FREE_SPACE和dba_free_space_coalesced
tablespace offline的几种方式:
1,Normal:一个没有错误的datafiles表空间中,可以Normal Offline,这样的情况下会产生一个checkpoint在所有 数据文件中。
2,Temporary:即使在datafiles中有出现问题的时候,还是可以用temporary的方式offline.在ONLINE上来的时候不需要meidia recovery
如过是因为write erroes 用temporary 的方式Offline后,再online回来的时候是要media recovery
3,Immediate:可以使用这样的方式offline后,online的时候是需要media recovery的。而且在noarchvielog的模式下面是不可以offline immediate的。
4,For Recover:为了做recover的方式可以这样OFFLINE
在readonly的模式表空间中.是可以进行数据字典修改。所以alter table add alter table modify等语句是可以执行的。
drop tablespace example including contents and datafiles cascade constraints
在控制文件中,有MAXDATAFILES参数指定最大的数据文件的数量。但是是小于db_files初始参数文件的。当数据文件的数量达到控制文件中的限制,但没有超过db_files的时候,控制文件会自动扩张
要查看某个表空间的数据文件是否是处于autoetented on/OFF的模式,要访问dba_data_files字典。
ALTER DATABASE...RENAME FILE
如果想使用checksum去验证数据块,要把参数db_block_checksum设置为true
DBWN进程产生这个checksum值为每一个快,并且存在块头中。在direct loader中。也会去checksums,
下一次ORACLE读这个块的时候,它使用checksum去发现块是否损坏。如果有坏块发现.ORACLE返回ora-01578
rollback_segments参数可以指定私有的回滚段,或者手工去指定一个回滚段。
总公初始分配回滚段的大小(byte)/初始分配的分区的数目=计算初始每个分区分配的大小(byte)
设置optimal的值在回滚段中。如果长事物的话,这个要设置的很大,避免1555号错误
create rollback segment rbs_01 tablespace test;
alter system set rollback_segments=rbs_01
sys@ORCL> create public rollback segment rbs_02
2 tablespace test
3 storage(
4 initial 100k
5 next 100k
6 optimal 1m
7 minextents 20
8 maxextents 100);
Oracle推荐:
1, 设置initial 和next一样的大小
2, 创建一个大的数目,初始分配的分区的大小,避免动态扩张,说是minextents=20是个不错的值
3, 避免设置maxextents=unlimited
sys@ORCL> alter rollback segment rbs_02
2 storage(maxextents 120);
sys@ORCL> select segment_name,owner,tablespace_name ,status from dba_rollback_segs;
SEGMENT_NAME OWNER TABLESPACE_NAME STATUS
------------------------------ ------ ------------------------------ ----------------
SYSTEM SYS SYSTEM ONLINE
_SYSSMU1$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU2$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU3$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU4$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU5$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU6$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU7$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU8$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU9$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU10$ PUBLIC UNDOTBS1 ONLINE
显示一个ROLLBACK SEGMENT 是否已经OFFLINE了
如果OFFLINE一个表空间。他里面还有事务的话,这个状态会显示pending offline。新的事务而且是没有办法使用这个回滚段的
=到旧的事务全部结束。回滚段就OFFLINE了
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9925929/viewspace-977923/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9925929/viewspace-977923/