描述一下环境:
oracle 10.2.0.1
ASM的使用如下:SQL> select g.name,d.name,g.group_number,d.path,d.header_status,d.mode_status
2 from v$asm_disk d,v$asm_diskgroup g
3 where d.group_number=g.group_number
4 order by g.name; NAME NAME GROUP_NUMBER PATH HEADER_STATU MODE_ST
------------ ------------ ------------ -------------- ------------ -------
DATA DATA_0000 1 /dev/raw/raw4 MEMBER ONLINE
DATA DATA_0001 1 /dev/raw/raw6 MEMBER ONLINE
FLASH FLASH_0000 2 /dev/raw/raw5 MEMBER ONLINESQL> select t.name tablespace,t.ts#,d.name from v$tablespace t,v$datafile d
2 where t.ts#=d.ts#
3 order by t.ts#; TABLESPACE TS# NAME
---------- ---------- --------------------------------------------------
SYSTEM 0 +DATA/mydata/datafile/system.259.694616135
UNDOTBS1 1 +DATA/mydata/datafile/undotbs1.260.694616187
SYSAUX 2 +DATA/mydata/datafile/sysaux.261.694616197
UNDOTBS2 4 +DATA/mydata/datafile/undotbs2.263.694616231
USERS 5 +DATA/mydata/datafile/users.264.694616241
TEST1 6 +DATA/mydata/datafile/test1.268.694877367
TEST2 7 +DATA/mydata/datafile/test2.269.694877387
TEST3 8 +DATA/mydata/datafile/test3.270.694877403问题1:我如何能控制创建的表空间去使用ASM同一个磁盘组中的某一个裸设备?比如test1去使用/dev/raw/raw4,test2去使用/dev/raw/raw6.
问题2:假如问题1无解,那么分区表在基于ASM管理创建的库中还有意义吗?
假设现在有一个表的数据量很大,最初的想法是创建分区表如下:create table test_partition (id number,name varchar2(10))
partition by hash (id)
partitions 2
store in (test1,test2);结果发现根本没法控制磁盘I/O,无法确定ASM是把test1和test2创建到那个裸设备上了,若是都创建在/dev/raw/raw4上了,那分区表还有什么意义呢......
希望高手或有经验的DBA帮忙解答一下,不胜感激!
oracle 10.2.0.1
ASM的使用如下:SQL> select g.name,d.name,g.group_number,d.path,d.header_status,d.mode_status
2 from v$asm_disk d,v$asm_diskgroup g
3 where d.group_number=g.group_number
4 order by g.name; NAME NAME GROUP_NUMBER PATH HEADER_STATU MODE_ST
------------ ------------ ------------ -------------- ------------ -------
DATA DATA_0000 1 /dev/raw/raw4 MEMBER ONLINE
DATA DATA_0001 1 /dev/raw/raw6 MEMBER ONLINE
FLASH FLASH_0000 2 /dev/raw/raw5 MEMBER ONLINESQL> select t.name tablespace,t.ts#,d.name from v$tablespace t,v$datafile d
2 where t.ts#=d.ts#
3 order by t.ts#; TABLESPACE TS# NAME
---------- ---------- --------------------------------------------------
SYSTEM 0 +DATA/mydata/datafile/system.259.694616135
UNDOTBS1 1 +DATA/mydata/datafile/undotbs1.260.694616187
SYSAUX 2 +DATA/mydata/datafile/sysaux.261.694616197
UNDOTBS2 4 +DATA/mydata/datafile/undotbs2.263.694616231
USERS 5 +DATA/mydata/datafile/users.264.694616241
TEST1 6 +DATA/mydata/datafile/test1.268.694877367
TEST2 7 +DATA/mydata/datafile/test2.269.694877387
TEST3 8 +DATA/mydata/datafile/test3.270.694877403问题1:我如何能控制创建的表空间去使用ASM同一个磁盘组中的某一个裸设备?比如test1去使用/dev/raw/raw4,test2去使用/dev/raw/raw6.
问题2:假如问题1无解,那么分区表在基于ASM管理创建的库中还有意义吗?
假设现在有一个表的数据量很大,最初的想法是创建分区表如下:create table test_partition (id number,name varchar2(10))
partition by hash (id)
partitions 2
store in (test1,test2);结果发现根本没法控制磁盘I/O,无法确定ASM是把test1和test2创建到那个裸设备上了,若是都创建在/dev/raw/raw4上了,那分区表还有什么意义呢......
希望高手或有经验的DBA帮忙解答一下,不胜感激!
ASM可以处理I/O分布,但是/dev/raw/raw6是为了测试,后加到ASM中的,我知道Asm_power_limit这个参数可以指定磁盘自动平衡负载的等级,但是ASM是何时进行的自动负载平衡的?有资料说是添加或删除磁盘的时候,是否是这个时候,我如何去确定?或者说Asm_power_limit究竟设置多少合适?
1. 如果where条件中有分区的条件,那么,查询的时候只会从相应的分区中取数据,而不去检索其他分区,这样,可以加快速度
2. 对于insert和update,在local index的情况下,会比不分区的情况下并发性能更好
3. local index会减少相应的资源消耗