Oracle 表空间扩充
一、现场环境:
(1)操作系统:AIX
(2)数据库:Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
(3)数据库模式:RAC(双实例)
(4)192.168.1.1 racone 192.168.1.2 ractwo
二、查询表
1. 登陆数据库查询数据库中表空间使用情况
set linesize 200
col file_name for a40
select
a.a1 tabelspace_name,
round(b.b3/1048576,0) table_size_M,
round((b.b3-a.a2)/1048576,0) used_M,
round(a.a2/1048576,0) free_M,
round(substr((b.b3-a.a2)/b.b3*100,1,5),2) used_rate
from
(select tablespace_name a1, sum(nvl(bytes,0)) a2 from dba_free_space group by tablespace_name) a,
(select tablespace_name b1,sum(bytes) b3 from dba_data_files group by tablespace_name) b
where a.a1(+)=b.b1
order by 5 desc;
查询结果如下:
TABLESPACE_NAME total(总大小/单位M) free(剩余大小/单位M) USED(已使用/单位M) use/per(使用率)
-------------------- -------------------- -------------------- -------------------- ---------
BJAJJOA_ATT_LOB 126000 M 7725.9375 M 118274.0625 M 93.87 %
JBTS 12000 M 814.125 M 11185.875 M 93.22 %
TOWERY_AJ_ODS_WL 599039.875 M 17598.125 M 581441.75 M 97.06 %
2.发现TOWERY_AJ_ODS_WL表空间使用率达到97%了,因业务需求需要进行表空间增加30G
三、准备工作
1. lsvg oradata查看VG剩余空间,pp size=64m;free PPs=416G
分配30G空间需要,30*1024/64=480pp
2、查询表空间TOWERY_AJ_ODS_WL的datafiles数据文件的名称位置
select file_name,bytes/1024/1024/1024,tablespace_name from dba_data_files where tablespace_name='TOWERY_AJ_ODS_WL';
结果如下:目前数据文件已经创建至19,所以创建第20个,按名称数字排序创建tzh_ods_wl20的lv
四、对表空间进行扩充实施
1、从vg的oradata创建lv名字是:tzh_ods_wl20
正确命令:mklv -y tzh_ods_wl20 -T O -w n -s n -r n -t raw oradata 480
2、完了分别去两个节点查询lv是否都创建成功了
lsvg -l oradata |grep tzh_ods_wl20
3、分别在两个节点设置lv的用户和用户组权限
chown oracle:dba /dev/rtzh_ods_wl20
4、登陆到数据库任意节中对表空间进行扩充,注意:裸设备,需要预留几个块,分配lv:30G=30720M,实际分配要小于30720,,不然预留不够会报错,如图:
ALTER TABLESPACE TOWERY_AJ_ODS_WL ADD DATAFILE '/dev/rtzh_ods_wl20' SIZE 30700M reuse autoextend off;
5、成功后进行查询验证空间由约17G增长到约48G
select file_name,bytes/1024/1024/1024,tablespace_name from dba_data_files where tablespace_name='TOWERY_AJ_ODS_WL' order by 1;
set linesize 200
col file_name for a40
select
a.a1 tabelspace_name,
round(b.b3/1048576,0) table_size_M,
round((b.b3-a.a2)/1048576,0) used_M,
round(a.a2/1048576,0) free_M,
round(substr((b.b3-a.a2)/b.b3*100,1,5),2) used_rate
from
(select tablespace_name a1, sum(nvl(bytes,0)) a2 from dba_free_space group by tablespace_name) a,
(select tablespace_name b1,sum(bytes) b3 from dba_data_files group by tablespace_name) b
where a.a1(+)=b.b1
order by 5 desc;
总结:VG不够扩VG,再扩LV,最后扩表空间,注意细节,感谢大神指导
2017-11-03
刘院波