监控表空间的使用是DBA的日常工作之一,Oracle扩展表空间很简单,一般有扩展某个数据文件大小或增加新的数据文件两种办法。举例说明如下。
首先我们要获取某个表空间的数据文件信息:
select file_name,file_id,tablespace_name,bytes/1024/1024 from dba_data_files order by file_name
根据file_id扩展某个数据文件大小:
alter database datafile 12 resize 13312m;
要注意的是,如果使用裸设备,一般要先查看LV是否足够,否则以上扩展命令可能出错,查看方式如下:
查看VG信息:
ERPDB1@/home/oracle>lsvg
rootvg
oraclevg
查看VG的LV:
ERPDB1@/home/oracle>lsvg -l oraclevg
oraclevg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
db_oravote raw 1 1 1 closed/syncd N/A
db_oraocr raw 1 1 1 closed/syncd N/A
db_system raw 3 3 1 open/syncd N/A
db_sysaux raw 5 5 1 open/syncd N/A
db_undotbs1 raw 3 3 1 open/syncd N/A
db_undotbs2 raw 3 3 1 open/syncd N/A
db_temp raw 46 46 1 closed/syncd N/Adb_erp_ht2 raw 56 56 1 open/syncd N/A
db_erp2 raw 72 72 1 open/syncd N/A
查看VG的详细信息:
ERPDB1@/home/oracle>lsvg oraclevg
VOLUME GROUP: oraclevg VG IDENTIFIER: 00c65fbf00004c000000011697e0f5f9
VG STATE: active PP SIZE: 256 megabyte(s)
VG PERMISSION: read/write TOTAL PPs: 2328 (595968 megabytes)
MAX LVs: 512 FREE PPs: 1146 (293376 megabytes)
LVs: 57 USED PPs: 1182 (302592 megabytes)
OPEN LVs: 39 QUORUM: 5
TOTAL PVs: 8 VG DESCRIPTORS: 8
STALE PVs: 0 STALE PPs: 0
ACTIVE PVs: 8 AUTO ON: no
Concurrent: Enhanced-Capable Auto-Concurrent: Disabled
VG Mode: Concurrent
Node ID: 1 Active Nodes:
MAX PPs per VG: 130048
MAX PPs per PV: 1016 MAX PVs: 128
LTG size (Dynamic): 1024 kilobyte(s) AUTO SYNC: no
HOT SPARE: no BB POLICY: relocatable
这里可见还有1146个可用的pp ,根据pp size能计算出VG的容量。
查看某个LV的详细信息:
ERPDB1@/home/oracle>lslv db_erp2
LOGICAL VOLUME: db_erp2 VOLUME GROUP: oraclevg
LV IDENTIFIER: 00c65fbf00004c000000011697e0f5f9.44 PERMISSION: read/write
VG STATE: active/complete LV STATE: opened/syncd
TYPE: raw WRITE VERIFY: off
MAX LPs: 512 PP SIZE: 256 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 72 PPs: 72
STALE PPs: 0 BB POLICY: relocatable
INTER-POLICY: minimum RELOCATABLE: no
INTRA-POLICY: middle UPPER BOUND: 128
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: off
EACH LP COPY ON A SEPARATE PV ?: no
Serialize IO ?: NO
DEVICESUBTYPE : DS_LVZ
注意这里可以根据pp 的数量和大小计算能提供的容量。
扩展某个LV,增加32个pp :
p5a1@/orabak/arch/transmited#extendlv db_erp_cw 32
p5a1@/orabak/arch/transmited#ls -l /dev/rdb_erp_cw
crw-rw---- 1 oracle dba 53, 35 Dec 02 2007 /dev/rdb_erp_cw
LV增加了以后,就可以用上面的命令扩展对应的数据文件了。
如果要新增LV,则一般这样操作:
p5a1@/#mklv -y db_erp_index2 -T O -w n -t raw -s n -r n oraclevg 156
p5a1@/#chown oracle.dba /dev/rdb_erp_index2
p5a1@/#ls -l /dev/rdb_erp_index2
crw-rw---- 1 oracle dba 53, 58 Mar 26 20:02 /dev/rdb_erp_index2
然后增加数据文件:
SQL> ALTER TABLESPACE erp_index ADD DATAFILE '/dev/rdb_erp_index2' SIZE 4096m;
Tablespace altered.
如果是ASM环境,查看可用空间和为表空间增加数据文件的脚本如下:
select group_number,name,total_mb,free_mb from v$asm_diskgroup;
ALTER TABLESPACE erp_index ADD DATAFILE '+DATA' SIZE 4096m;
单个数据文件的大小对性能基本没什么影响,单个数据文件过大就是可能有管理维护方面的潜在问题,比如数据文件损坏带来的数据损失。