环境:AIX,oracle
1查询当前表空间的利用率
select a.tablespace_name, total, free, total - free used,round((1-free/total)*100,2) 利用率
from (select tablespace_name, sum(bytes) / 1024 / 1024 total
from dba_data_files
group by tablespace_name) a,
(select tablespace_name, sum(bytes) / 1024 / 1024 free
from dba_free_space
group by tablespace_name) b where a.tablespace_name = b.tablespace_name;

注:需要加大的表空间是前4个,下面以增加第一个表空间为例
2查询该表空间对应的裸设备文件
select * from dba_data_files t where t.TABLESPACE_NAME='JCXX_NSRSRNSXX2_IDX';

注:裸设备文件在/dev/下面有两个文件,一个带r,一个不带r。注意这里的文件名字实际上只是srxx2_idx_31_d4
3给表空间添加数据文件,这个表空间最后一个裸设备文件是/dev/rsrxx2_idx_31_d4,依照命名规则,下一个文件名是/dev/rsrxx2_idx_32_d4,但是无法确定这个命名是否已经使用,所以要先确定一下,
select * from dba_data_files where file_name like '%rsrxx2_idx_%';
发现这个名字没有被使用,我们可以使用。
4查看这个裸设备文件属于哪个卷组
[root@localhost~]#lslv -L srxx2_idx_31_d4
LOGICAL VOLUME: srxx2_idx_31_d4 VOLUME GROUP: oraindex1vg_dm4
LV IDENTIFIER: 00c71dad00004c000000013d1a2be63e.59 PERMISSION: read/write
VG STATE: active/complete LV STATE: opened/syncd
TYPE: raw WRITE VERIFY: off
MAX LPs: 512 PP SIZE: 128 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 257 PPs: 257
STALE PPs: 0 BB POLICY: relocatable
INTER-POLICY: minimum RELOCATABLE: yes
INTRA-POLICY: middle UPPER BOUND: 32
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?: NO
5查看这个卷组的情况
[root@localhost~]#lsvg oraindex1vg_dm4
VOLUME GROUP: oraindex1vg_dm4 VG IDENTIFIER: 00c71dad00004c000000013d1a2be63e
VG STATE: active PP SIZE: 128 megabyte(s)
VG PERMISSION: read/write TOTAL PPs: 9672 (1238016 megabytes)
MAX LVs: 256 FREE PPs: 101 (12928 megabytes)
LVs: 59 USED PPs: 9571 (1225088 megabytes)
OPEN LVs: 59 QUORUM: 7
TOTAL PVs: 13 VG DESCRIPTORS: 13
STALE PVs: 0 STALE PPs: 0
ACTIVE PVs: 13 AUTO ON: yes
MAX PPs per VG: 32512
MAX PPs per PV: 1016 MAX PVs: 32
LTG size (Dynamic): 256 kilobyte(s) AUTO SYNC: no
HOT SPARE: no BB POLICY: relocatable
注:此卷组可用的PP只有101个,每个PP为128M, 无法满足表空间的要求,所以首先要加大卷组的的容量。如果free PPs的数量足够大的话,则可以跳过下一步,直接划分。详见
第8步。
6查看AIX上所有物理卷的情况,包括使用和未使用。
[root@localhost~]#lspv
硬盘名 硬盘ID 所属卷组 状态
……………………………………
hdiskpower282 00c71dadbf614da8 oradata1vg_dmx4 active
hdiskpower283 00c71dadbf5e03b1 oradata1vg_dmx4 active
hdiskpower284 00c71dadbf5ab9bf oradata1vg_dmx4 active
hdiskpower285 00c71dadbf57697f oradata1vg_dmx4 active
hdiskpower286 none None
hdiskpower287 none None
hdiskpower288 none None
hdiskpower289 none None
hdiskpower290 none None
hdiskpower291 none None
hdiskpower292 none None
hdiskpower293 none None
hdiskpower294 none None
hdiskpower295 none None
hdiskpower296 none None
hdiskpower297 none None
…………………………………
查看具体每个物理卷的情况
[root@localhost~]#lspv hdiskpower285
PHYSICAL VOLUME: hdiskpower285 VOLUME GROUP: oradata1vg_dmx4
PV IDENTIFIER: 00c71dadbf57697f VG IDENTIFIER 00c71dad00004c000000013d1a242876
PV STATE: active
STALE PARTITIONS: 0 ALLOCATABLE: yes
PP SIZE: 128 megabyte(s) LOGICAL VOLUMES: 0
TOTAL PPs: 744 (95232 megabytes) VG DESCRIPTORS: 1
FREE PPs: 744 (95232 megabytes) HOT SPARE: no
USED PPs: 0 (0 megabytes) MAX REQUEST: 256 kilobytes
FREE DISTRIBUTION: 149..149..148..149..149
USED DISTRIBUTION: 00..00..00..00..00
注:128*744=95232M=93G 一块硬盘93G
查看AIX上卷组的情况
[root@localhost~]#lsvg
rootvg
softwarevg
oravg
oravg_dmx4
oradata0vg_dmx4 放数据的
orasysvg_dmx4
oradata1vg_dmx4 放数据的
oraindex0vg_dmx 放索引的
oraindex1vg_dm4 放索引的
databackvg_dmx4
archlog_dmx4
7增大vg的大小
[root@localhost~]#smitty extendvg

从列表中选出vg的名字和pv的名字,这里实际上是hdiskpower286,图示有些出入,因为是后来总结的。
[root@localhost~]#lspv
hdiskpower282 00c71dadbf614da8 oradata1vg_dmx4 active
hdiskpower283 00c71dadbf5e03b1 oradata1vg_dmx4 active
hdiskpower284 00c71dadbf5ab9bf oradata1vg_dmx4 active
hdiskpower285 00c71dadbf57697f oradata1vg_dmx4 active
hdiskpower286 00c71dadc0d69925 oraindex1vg_dm4 active
[root@localhost~]#lsvg oraindex1vg_dm4
这个时候再查看这个vg,会发现总的pps多了744个,因为一块硬盘是93G,每个PP128M,正好744个。
根据需要可以给该vg增加一个或多个硬盘。
8制作逻辑卷
[root@localhost~]#smitty mklv

就填写3项即可,在下拉列表中选择vg的名字,逻辑分区的数量手动输入257(因为一个数据文件最大是32G,每个PP是128M,共256个,但是实际划分的时候会预留出一些空间,所以这里加大了一点,之前划分的都是257个),逻辑卷的类型手动输入为raw裸设备类型,列表中没有,手动输入即可。别的选项默认即可。
[root@localhost~]#lslv -L srxx2_idx_32_d4
LOGICAL VOLUME: srxx2_idx_32_d4 VOLUME GROUP: oraindex1vg_dm4
LV IDENTIFIER: 00c71dad00004c000000013d1a2be63e.61 PERMISSION: read/write
VG STATE: active/complete LV STATE: opened/syncd
TYPE: raw WRITE VERIFY: off
MAX LPs: 512 PP SIZE: 128 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 257 PPs: 257
STALE PPs: 0 BB POLICY: relocatable
INTER-POLICY: minimum RELOCATABLE: yes
INTRA-POLICY: middle UPPER BOUND: 32
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?: NO
9修改权限
[root@localhost~]#ls -l /dev/*srxx2_idx_32_d4
crw-rw---- 1 root system 55, 61 Sep 11 17:53 /dev/rsrxx2_idx_32_d4 字符设备
brw-rw---- 1 root system 55, 61 Sep 11 17:41 /dev/srxx2_idx_32_d4 块设备
注:正如前文所说,在/dev下会有两个文件,一个带r,一个不带r。
[root@localhost~]#chown oracle:dba /dev/rsrxx2_idx_32_d4
10添加到表空间
SQL> alter tablespace JCXX_NSRSRNSXX2_IDX add datafile '/dev/rsrxx2_idx_32_d4' size 32767M autoextend off;
Tablespace altered
注:这里的大小只能写M的单位,写G会报错,32G本来是32768M,但是必须要预留出来1M左右,所以这里写32767M,之前的都是这么多。
select * from dba_data_files t where t.TABLESPACE_NAME='JCXX_NSRSRNSXX2_IDX';

注:已经成功向该表空间添加裸设备文件。这时再查看表空间的利用率,会看到已经下降。