EMC 存储两块盘亮黄灯,数据库为oracle

来源:这里教程网 时间:2026-03-03 21:04:39 作者:

灾备机房巡检,偶然发现EMC 存储两块盘亮黄灯,经过层层交流,确定是电子病历历史库,ip  *.*.17.0 经过讨论,业务说偶尔登录上去查看一下历史数据DBA登录系统查看  select status from v$instance;  为open状态 经过讨论,等业务确认是哪些表需要导出,等了一周左右没有捋清楚,又换一个方案,全库恢复到另外一个机器。 -------- 环境检查 *.*.17.0:windows 2008 R2      32G内存    数据库文件分布   D盘,F盘   oracle  11.2.0.4目标    *.*.10.14   windows   2008 R2     32G内存      仅有E盘,C盘        oracle  11.2.0.1 方案一  exp /expdp  imp/impdp都可以   涉及版本,高版本可以导入到低版本,rman 无法实现 方案二    .*.17.0   rman 备份,异机恢复   .*.10.14( .*.10.14先升级到11.2.0.4 备份脚本.

run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup as compressed backupset
database  fileperset  3

format 'E:\orabak\full_level0_%d_%T_%s_%p' database

sql 'alter system archive log current';

s ql 'alter system archive log current';

s ql 'alter system archive log current';

crosscheck archivelog all;

delete noprompt expired archivelog all;

backup  archivelog format 'E :\orabak\full_archi_%d_%T_%s_%p' delete input;
backup current controlfile format ' E :\orabak\control_%d_%T_%s_p%';
backup spfile format=' E :\orabak\spfile_%d_%T_%s_p%';
release channel c1;
release channel c2;
release channel c3;
crosscheck backup;

delete noprompt obsolete;

delete noprompt expired backup;

} 二   备份+升级 执行备份开始 rman target / .*.10.14开始升级 由于 .*.10.14是虚拟化平台的虚拟机,硬盘和内存,cpu都可以调整增加,升级前系统管理员说打一个快照 (快照是恢复windows所有数据,包含C,D,E盘等) 2.1  快照结束,大概10分钟 2.2  升级oracle     找到升级包  database  p13390677_112040_MSWIN-x86_1of7.zip  p13390677_112040_MSWIN-x86_2of7.zip   升级参照以下博客yhttps://blog.csdn.net/bjywxc/article/details/103764077 其中,解压两个安装包后,忘了把 p13390677_112040_MSWIN-x86_2of7内容合到 安装过程中出现以下错误 解决:参照 https://blog.csdn.net/singit/article/details/70832723 注  linux 升级包解压,自动到一个文件,这个就是linux和windows的小区别 ----- 三   oracle 异机恢复 升级完成....,验证原来数据,没有问题 设置* .*.17.0.备份目录的网络共享,在 *.*.10.14拷贝备份数据 恢复分三个步骤 1  恢复参数文件   2  回复控制文件    nomount阶段 3 恢复数据文件    mount阶段 3.1   rman 恢复参数文件没有直接从源库copy方便 * .*.17.0 .   show parameter  spfile,确定是spfile启动后   源库创建pfile文件 create  pfile=‘D:\pfile1212.txt’ from spfile; copy 到目标库 *.*.10.14,修改参数文件(内存大小,controlfile路径,归档路径,NLS_*, audit_file-dest等主要惨),启动 set  ORACLE_SID=jhmr sqlplus  / as sysdba 报错:ORA-12560   无论怎么调试都不行,注册表修改ORACLE_SID 为jhmr,重启,关闭原来的实例都不行请教两个高手朋友也么有办法,windows实在不友好,linux么有这个问题 灵机一动,dbca 新建一个库,就15分钟左右的事情,只用新建库的参数文件,修改一下 果然凑效,能到nomount    3.2   恢复控制文件也顺利 rman  target  / set  dbid=********(   dbid 从源库查询的  desc  v$database有dbid 列) restore controlfile from   'E:\orabak\ctl_*******'; 3.3  恢复数据文件启动到mount阶段, 注册备份片 alter database mount;catalog start with  'E:\orabak\'; 恢复前  根据v$datafile  ,v$tempfile,v$logfile;在目标系统创建对应目录,或者使用alter 命令修改为新位置由于源库数据文件在D F盘,目标仅有E盘,而且数据文件99个,使用sql 批量修改 alter database rename file 'D:\ORAGLE\ORADATA\TEMPG1.DEF’ tO 'E:\ORADATA\TEMPB1.DEF'.... select "alter database rename file '''||name||''' to '''||name''';',from v$datafile                           

-————————————————

spool /path/setnewnamedf.lst

select 'set newname for datafile ' || file# || ' to ''' ||replace( name,'/old/data/path','/new/data/path' ) || ''';' from v$datafile;

spool off

restore 恢复  经过一夜,早上上班过来一看,一堆报错,如下

幡然醒悟,可能是 * .*.17.0 .磁盘出现问题,数据库虽然可以打开,但是备份的文件在怀的磁盘上,rman备份也没有用户

冷静下来,想想方案出了问题

最终确定    exp或者expdp远程导出 目前在原服务器读没有问题,写入就不确定,只能远程exp/expdp 备份(rman不支持远程备份) -----再次沟通,仅有一个用户数据导出就可以了 导出前查看用户所属表空间大小①确认用户所属表空间 desc user_tablesselect tablespace_name from user_tables ② 查看用户表空间总大小select sum(bytes)/1024/1024 from dba_data_files where tablespace_name='AAAA' 第一次  exp 导出没有加任何参数花费20小时没有导出完成 65670 MB 选择空间 目标机器建立单独数据库实例,用户 ,表空间,设置修改redo 组大小 256MBdbca   字符集和源库一样  查询源库字符集 修改exp参数exp 加参数优化    direct=y  recordlength=65535   buffer=65536 exp  emr11/****@jhemaa170  file=emr111.dmp   directory=y    recordlength=65535   buffer=65536  owner=emr11log=exp1218.log --1个小时完成 导入 先导入表,再导入索引

imp  emr11/****  file=emr111.dmp   feedback=10000    commit=y   buffer=4096000  ignore=y owner=emr11

rows=y  indexes=n  log=imp1218.log

imp  emr11/****  file=emr111.dmp   feedback=10000    commit=y   buffer=4096000  ignore=y owner=emr11

rows=y  indexes=n  log=imp1218_2.log

大概1个半小时。   

相关推荐