oralce rac集群下扩展表空间初探
1、查看表空间占用磁盘情况
select b.file_id, b.tablespace_name, b.bytes/1024/1024 "total(M)", (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 "used(M)" sum(nvl(a.bytes,0))/1024/1024 "free(M)", sum(nvl(a.bytes,0))/(b.bytes)*100 "free_space(%)" from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_id,b.bytes order by b.file_id;
2、扩展表空间语句
alter tablespace your_tablespace_name add datafile '+DATA' size 2048M autoextend on;
该语句解释为:为表空间your_tablespace_name在ASM下增加数据文件,初始大小为2048M,自动增长,最大增长到32G
question1:为什么此处只需要写+DATA,而不用写出ASM下数据文件具体路径?
answer:数据库安装时打开了omf后,只需要写到‘+DATA’就可以自动创建到数据文件所在目录
question2:为什么没有写max size,数据文件最大容量也为32G
answer:表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为4K、8K、16K、32K、64K等,oracle的物理文件最大只允许4194304个数据块(由操作系统决定),表空间数据文件的最大值为4194304*DB_BLOCK_SIZE/1024M = 32G
3、查看DB_BLOCK_SIZE
select value from v$parameter where name = 'db_block_size'
DB_BLOCK_SIZE作为数据库的最小操作单位,是在创建数据库的时候指定的,在创建完数据库后便不可修改,要修改DB_BLOCK_SIZE,需要重建数据库。一般可以将数据EXP出来,然后重建数据库,指定新的DB_BLOCK_SIZE,然后再将数据IMP进数据库。
DB_BLOCK_SIZE一般设置为操作系统块的倍数,即2K、4K、8K、16K或32K,但它的大小一般受数据库用途的影响
(1)对于联机事务,其特点是事务量大,但每个事务处理的数据量小,所以DB_BLOCK_SIZE设置小点就足够了,一般
为4K或者8K,设置太大的话一次读出的数据有部分是没用的(因为只能整块整块读),会拖慢数据库的读写时间
同时增加无必要的IO操作。
(2)而对于数据仓库和ERP方面的应用,每个事务处理的数据量很大,所以DB_BLOCK_SIZE比较大的话,一般为8K、16K
或者32K,此时如果DB_BLOCK_SIZE小的话,那么I/O自然就多,消耗太大
大一点的DB_BLOCK_SIZE对索引的性能有一定的提高。因为DB_BLOCK_SIZE比较大的话,一个DB_BLOCK一次能够索引的行数就比较多
对于行比较大的话,比如一个DB_BLOCK放不下一行,数据库在读取数据的时候就需要进行行链接,从而影响读取性能。
此时DB_BLOCK_SIZE大一点的话就可以避免这种情况的发生
感谢来自雪中的蒲公英的总结:https://www.cnblogs.com/zjfjava/p/9556311.html

浙公网安备 33010602011771号