
在单实例环境下,扩容表空间需要考虑如下情况:
(1)数据文件所在磁盘空间是否充足;(2)新增数据文件路径和名称是否正确。
在RAC+DG环境下,扩容表空间需要考虑如下情况:
(1)主、备库数据文件磁盘组剩余空间是否充足;此处除了保证主库空间充足,备库也需要有足够的剩余空间,否则DG同步关系将会中断。(2)新增数据文件路径和名称是否正确;不能将数据文件创建到某个实例本地文件系统。(3)备库端需要考虑以下几个参数,确保主库新增数据文件后,可以同步到备库。standby_file_management、db_create_file_dest、db_file_name_convert、log_file_name_convert
本次案例,有一个特殊的地方
主库对应数据文件的磁盘组剩余空间充足,但备库对应数据文件的磁盘组剩余空间不足,由于db_create_file_dest优先级别高于db_file_name_convert,只需要修改备库db_create_file_dest参数,将数据文件自动生成到备库另一个空间充足的磁盘组内即可。

具体实施过程如下:
1、查看当前表空间使用情况(主库):
主库节点一:
set pagesize 9999set linesize 132col tablespace_name for a35selecta.tablespace_name,a.Total_mb,f.Free_mb,round(a.total_MB-f.free_mb,2) Used_mb,round((f.free_MB/a.total_MB)*100) "%_Free"from(select tablespace_name, sum(bytes/(1024*1024)) total_MB from dba_data_files group by tablespace_name) a,(select tablespace_name, round(sum(bytes/(1024*1024))) free_MB from dba_free_space group by tablespace_name) fWHERE a.tablespace_name = f.tablespace_name(+)order by "%_Free"/
2、添加数据文件,使表空间使用率降低到50%以下
set pagesize 9999set pagesize 9999set linesize 132col tablespace_name for a30selecta.tablespace_name,a.Total_mb,f.Free_mb,' Add'||to_char((total_MB*(1-PCT/100)-Free_mb)/(PCT/100)/1024,'9990.9')||'GB to '||PCT||'%' "Add_Size(GB)"from(select (&pct) PCT from dual),(select tablespace_name, sum(bytes/(1024*1024)) total_MB from dba_data_files group by tablespace_name) a,(select tablespace_name, round(sum(bytes/(1024*1024))) free_MB from dba_free_space group by tablespace_name) fWHERE a.tablespace_name = f.tablespace_name(+)order by "Add_Size(GB)"/Enter value for pct: 50
TBS_CJC_DATA表空间添加 180G数据文件,将使用率降至50%以下 。
3、查看数据文件信息(主库)
set line 150col tablespace_name for a20col file_name for a60Select tablespace_name,file_name from dba_data_files where tablespace_name in ('TBS_CJC_DATA') order by tablespace_name,file_name;
4、查看磁盘组剩余空间
col name for a20set line 200select group_number,name,state,total_mb,free_mb,trunc((total_mb - free_mb)/total_mb,2) "Used(%)" from v$asm_diskgroup order by 1;
主库磁盘组空间充足。
备库CJC_DATA磁盘组剩余空间2355MB,需要将新数据文件指定到SCM_DATA磁盘组。
5、检查备库参数,确保新增数据文件可以同步到备库
检查standby_file_management参数
SQL> show parameter standby_file_managementNAME TYPE VALUE------------------------------------ ----------- --------standby_file_management string AUTO
检查db_file_name_convert、log_file_name_convert参数
SQL> show parameter file_nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_file_name_convert string +BJ_SY_CJC_DATA/sycjc, +TRNT_DATA/trntlog_file_name_convert string +BJ_SY_CJC_DATA/sycjc, +TRNT_ARCH/trnt
检查db_create_file_dest参数
SQL>show parameter db_createNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_create_file_dest string +CJC_DATA
其中+CJC_DATA磁盘组空间不足。
修改备库参数
select name, value, issys_modifiable, descriptionfrom v$parameterwhere name in ('db_create_file_dest', 'db_file_name_convert');alter system set db_create_file_dest='+SCM_DATA';
6、主库1节点添加数据文件
su - oraclesqlplus as sysdbaalter tablespace TBS_CJC_DATA add datafile '+BJ_SY_CJC_DATA/sycjc/datafile/CJC_data10.dbf' size 30G;alter tablespace TBS_CJC_DATA add datafile '+BJ_SY_CJC_DATA/sycjc/datafile/CJC_data11.dbf' size 30G;alter tablespace TBS_CJC_DATA add datafile '+BJ_SY_CJC_DATA/sycjc/datafile/CJC_data12.dbf' size 30G;alter tablespace TBS_CJC_DATA add datafile '+BJ_SY_CJC_DATA/sycjc/datafile/CJC_data13.dbf' size 30G;alter tablespace TBS_CJC_DATA add datafile '+BJ_SY_CJC_DATA/sycjc/datafile/CJC_data14.dbf' size 30G;alter tablespace TBS_CJC_DATA add datafile '+BJ_SY_CJC_DATA/sycjc/datafile/CJC_data15.dbf' size 30G;
7、主库主库两节点再次切归档
su - oraclesqlplus as sysdbaalter system switch logfile;###alter system archive log current;
8、观察主、备库告警日志信息
确保添加过程无报错

9、应急方案
如果备库端没有自动同步数据文件,需要手动处理。
1.备库将standby_file_management改成手动。
alter system set standby_file_management=MANUAL;
2.取消mrp进程
alter database recover managed standby database cancel;
3.查看备库数据文件位置信息
Select name from v$datafile;
4.手动添加新数据文件
alter database create datafile '<第二步查出的新增数据文件路径>' as '+SCM_DATA/数据文件名称';
5.备库将standby_file_management改回自动。
alter system set standby_file_management=AUTO;
6.启动mrp
alter database recover managed standby database disconnect from session;
#####chenjuchao 20210620 15:50#####

文章转载自IT小Chen,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




