如果我们正确的添加表空间,很好。如果我们只是执行了
alter tablespace TS_COMMadd datafile'DIR/dafile.dbf'size50Mautoextend on maxsize2G。
发现,有问题!
问题:
两个实例访问的数据库数据不一致了,数据文件只有一个实例上,另一个实例不能访问
!这样只是添加一个数据文件,不存在其添加的裸设备,资源不能共享!
添加错了,当然要修改了,征集到了三种解决方案:
核心内容当然是一样的
方案一:
Details of work
Command Line
检查CSR状态
crs_stat -t
确认当前数据库名称
srvctl config database
停止当前数据库
srvctl stop database MNCN
确认MNCN是否已经停止
crs_stat -t
登陆到节点1的主机上,拷贝数据文件
dd if=/dev/rMNCN_06G_04 f=/dev/rMNCN_04G_02
设置ORACLE_SID
export ORACLE_SID=MNCN1
登陆数据库
sqlplus "/as sysdba"
mount数据库
startup mount
重命名数据库文件
ALTER DATABASE RENAME FILE '/dev/rMNCN_06G_04' TO '/dev/rMNCN_04G_02';
OPEN数据库
ALTER DATABASE OPEN;
检查裸设备是否生效
SELECT * FROM V$DATAFILE WHERE NAME = '/dev/rMNCN_04G_02' ;
手动停止数据库
shutdown immediate
启动MNCN数据库
srvctl start database MNCN
检查Crs状态
crs_stat -t
方案二:
Details of work
Command Line
检查CSR状态
crs_stat -t
停止所有服务
crs_stop -all
拷贝数据文件
dd if=/dev/rMNCN_06G_04 f=/dev/MNCN_04G_02
启动节点一的服务
srvctl start nodeapps -n cordb1
启动节点二的服务
srvctl start nodeapps -n cordb2
设置ORACLE_SID
export ORACLE_SID=MNCN1
登陆数据库
sqlplus "/as sysdba"
mount数据库
startup mount
重命名数据库文件
ALTER DATABASE RENAME FILE '/dev/rMNCN_06G_04' TO '/dev/rMNCN_04G_02';
ALTER DATABASE RENAME FILE '/arch1/MNCN/rMNCN_06G_05' TO '/dev/rMNCN_04G_03';
OPEN数据库
ALTER DATABASE OPEN;
检查裸设备是否生效
SELECT * FROM V$DATAFILE WHERE NAME = '/dev/rMNCN_04G_02' ;
停止数据库
shutdown immediate
停止所有服务
crs_stop -all
启动所有服务
crs_start -all
检查当前状态
crs_stat_-t
方案三:
1. 确认当前的LV裸设备信息:lsvg datavg
lsvg -l datavg | grep closed 查看未被使用的裸设备,确保下面更替的裸设备不是原有的。
2. 将表空间设置成为offline :alter tablespace TS_COMM offline;
3. 拷贝数据文件
dd if=/arch1/MNCN/rMNCN_06G_05 f=/dev/rMNCN_04G_03 bs=4096k;
4.sqlplus '/as sysdba'
alter tablespace TS_COMM rename datafile '/dev/rMNCN_06G_04' to '/dev/rMNCN_04G_02';
5.alter tablespace TS_COMM rename datafile '/arch1/MNCN/rMNCN_06G_05' to '/dev/rMNCN_04G_03';
6. alter tablespace TS_COMM online;