2012年5月14日
1、 发现问题:
环境:linux 5.5 oracle 10.2.0.4 RAC ASM
前几天客户方数据库归档空间满出现问题,当天临时删除了部分归档日志,数据库恢复了正常使用;重新对数据库做备份。大量加载数据导致1.6T的归档日志所在DG满,归档日志存放在asm;
最近一段时间,客户方另外一个服务公司(程序开发)需要往数据库大量导入数据,操作员对数据库不熟悉,又没有老员工帮带,而且客户方也没有dba,感觉不放心。于是昨天主动联系客户,今天到达现场,检查相关情况并处理问题。
登录第二个节点,查看下磁盘空间,发现很奇怪的问题,本地磁盘使用率突然增加到了88%,这太奇怪了,因为最近一年多以来,每次巡检,基本上使用率都维持在36%左右;找啊找,最后在目录$ORACLE_HOME/dbs下发现了一个大数据文件,上个月27日创建的,已经增长到240多G了;增长好快,而且数据还只导入了三分之一,所以照此估计,数据总量可达约800G。晕死,谁把数据文件放到本地磁盘了?!
进一步检查数据库告警日志发现,有人在27日创建了一个大表空间:
create bigfile tablespace <tbsname> datafile size 500m autoextend on next 500m;
查询相关视图,多了一个很长很奇怪的数据文件。
不应该将数据库置于一种危险的境地!
2、确认问题:
正打算进一步检查,最近一直往数据库导入数据的工程师过来了。他说加载数据,需要新建表空间,上网搜资料,参考别人(windows环境中)创建表空间的语句,不知道本地文件系统和asm的区别,以及当前数据库的数据文件都是存放在asm里的,已经往新建的数据文件里导入了240多g数据;路径中有E:\等,而oracle将整个路径及名称当做一个数据文件名来处理了,于是看到了一个很长很奇怪的数据文件名;
3、处理问题:
本地磁盘根分区原本有空余空间约280G,现在剩余40多g,创建了一个大文件表空间,估计等待所有数据全部导入完成,约有800G数据;
可以利用rman将本地数据文件迁移到asm;
3.1、迁移大致步骤
rman target /
report schema;
backup tablespace tbsname;
sql 'alter tablespace tbsname offline';
backup as copy datafile 259 format '+DG1';
switch datafile 259 to copy;
sql 'alter tablespace tbsname online';
report schema;
rm 删掉原来的本地数据文件
3.2、意外情况:
copy进行了一段时间后,觉得文件巨大,单通道copy太慢,于是ctrl+c中断;
分配多个通道重新操作,遭遇报错“无法读取数据文件表头259错误原因4 rman 06056”
(ctrl+c中断 很多时候是很危险的,可能收获意想不到的”惊喜”;)
还好有备份:
restore tablespace tbsname;
recover tablespace tbsname;
完成之后,接下来继续分配多个通道进行copy迁移操作。
如果备份有问题,恢复时可能报错rman 03002 06026 06100
3.3、如果上述方法不管用,还可以用如下方法处理:
因为都是最近导入的数据,而且所有dmp文件都在,可以删掉表空间,然后在DG1里创建表空间:
drop tablespace tbsname including contents and datafiles;
create bigfile tablespace tbsname datafile ‘+DG1’ size 20G autoextend on next 512m maxsize unlimited;
3.4、删除和创建完成后,imp导入所有数据
=====================================================================
4、虚拟机利用rman将本地数据文件迁移到其他路径(测试)
RMAN> report schema;
Report of database schema
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 450 SYSTEM YES /home/app/oracle/data/node1/system01.dbf
2 25 UNDOTBS1 YES /home/app/oracle/data/node1/undotbs01.dbf
3 270 SYSAUX NO /home/app/oracle/data/node1/sysaux01.dbf
4 215 USERS NO /home/oracle/users1.dbf
5 200 GOLDENGATE NO /home/app/oracle/data/node1/goldengate01.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 20 TEMP 32767 /home/app/oracle/data/node1/temp01.dbf
备份表空间
rman target / catalog rman/rman@node1
RMAN> backup tablespace users;
将表空间离线
RMAN> sql 'alter tablespace users offline';
Rman 拷贝
RMAN> backup as copy datafile 4 format '/home/app/oracle/data/node1/users01.dbf';
(此处如果迁移到asm,格式可写成 '/+DG1/')
将数据文件切换为copy
RMAN> switch datafile 4 to copy;
将表空间在线
RMAN> sql 'alter datafile 4 online';
RMAN> report schema;
说明:
迁移过程花费的时间主要取决于要迁移的数据文件大小,数据量较大时,可以考虑分配多个通道。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21256317/viewspace-1063026/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21256317/viewspace-1063026/