前言
这两天因为项目组需要迁移演示系统环境,因数据库数据量太大,小k考量之下决定使用冷备份来实现。下面小k给大家简单介绍一下oracle数据库冷备份异机恢复的步骤吧。
1、 查询oracle是什么版本,SELECT * FROM V$VERSION;(要数据库版本一致)
2、 例如数据库块大小,SHOW PARAMETERS DB_BLOCK_SIZE(块大小要一致)
3、 查询要冷备份恢复的库关联的数据文件放在哪里,SELECT * FROM DBA_DATA_FILES;
4、 查询Oracle安装目录 ;
5、 查询Oracle系统数据文件和用户数据文件的容量。(一定要看目标服务器中对应盘的大小,因为拷贝进去的文件很大,尽量选择大的文件夹下存放)
select name from v$datafile; --数据文件
select name from v$controlfile;--控制文件
select member from v$logfile;--日志文件
2、使用sqlplus 以sysdba用户连接源数据库,关闭数据库,然后备份上面查询的出来的文件
SQLPLUS / AS SYSDBA
SHUTDOWN IMMEDIATE;
如果是linux环境下,操作步骤为:
(1)打开新窗口;
(2)切换到oracle用户下:su – oracle;
(3)连接数据库:
sqlplus /nolog
SQL>conn /as sysdba;
(4)关闭数据库:shutdown immediate
注意:创建的新实例名与源服务器实例名要一致
注意:此步骤可以直接新实例的数据文件的文件夹重命名备份,然后将源备份的数据文件拷贝过来,如下图
此处数据文件内容为:
--1、使用nomount启动
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "JZBS0129" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 584
LOGFILE
GROUP 1 '/data/app/oracle/oradata/gxtest53/redo01.log' SIZE 200M BLOCKSIZE 512,
GROUP 2 '/data/app/oracle/oradata/gxtest53/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/data/app/oracle/oradata/gxtest53/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/data/app/oracle/oradata/gxtest53/system01.dbf',
'/data/app/oracle/oradata/gxtest53/sysaux01.dbf',
'/data/app/oracle/oradata/gxtest53/undotbs01.dbf',
'/data/app/oracle/oradata/gxtest53/FMIS_LARGE_01.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS_LARGE_02.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS9999_01.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS9999_02.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS9999_03.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS9999_04.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS9999_05.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS9999_06.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS9999_07.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS9999_08.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS9999_09.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS9999_10.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS9999_11.ORA',
'/data/app/oracle/oradata/gxtest53/FMISINDEX_01.ORA',
'/data/app/oracle/oradata/gxtest53/FMISINDEX_02.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS_LOB_01.ORA',
'/data/app/oracle/oradata/gxtest53/FMIS_LOB_02.ORA',
'/data/app/oracle/oradata/gxtest53/FMISCOMP_01.ORA',
'/data/app/oracle/oradata/gxtest53/FMISCOMP_02.ORA',
'/data/app/oracle/oradata/gxtest53/FMISTMP_01.ORA',
'/data/app/oracle/oradata/gxtest53/FMISTMP_02.ORA',
'/data/app/oracle/oradata/gxtest53/FMISTMP_03.ORA',
'/data/app/oracle/oradata/gxtest53/FMISTMP_04.ORA',
'/data/app/oracle/oradata/gxtest53/FMISTMP_05.ORA',
'/data/app/oracle/oradata/gxtest53/FMISTMP_06.ORA',
'/data/app/oracle/oradata/gxtest53/FMISTMP_07.ORA',
'/data/app/oracle/oradata/gxtest53/ODS_01.ORA',
'/data/app/oracle/oradata/gxtest53/NBI_01.ORA',
'/data/app/oracle/oradata/gxtest53/YG_BANK_01.ORA'
CHARACTER SET ZHS16GBK
;
--2、恢复数据库
RECOVER DATABASE USING BACKUP CONTROLFILE
-- 3、打开数据库
ALTER DATABASE OPEN RESETLOGS;
-- 4、创建临时表空间
ALTER TABLESPACE TEMP ADD TEMPFILE '/data/app/oracle/oradata/gxtest53/temp01.dbf' SIZE 8647M REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 65535M;
a、执行recover database恢复数据库报ORA-27037和ORA-27083错误
解决:此步不选auto,选择cancel
b、执行ALTER DATABASE OPEN RESETLOGS;打开数据库报ORA-01113和ORA-01110错误
解决:
此处恢复文件需要介质,执行:
recover datafile ‘/data/app/oracle/oradata/gxtest53/system01.dbf’
c、执行上一步之后又报ORA-00283和ORA-01610错误
解决:此处因为采用的resetlogs方式,所以会出现如上的错误
这时需要用如下的方式进行恢复
recover database using backup controlfile until cancel;
此方式恢复需要指定具体的日志文件,如图:
到这里可以看到终于没有报错了,此时再执行ALTER DATABASE OPEN RESETLOGS;
打开数据库和创建临时表空间脚本,均没有报错,到此数据库已经恢复成功(建议可以先shutdown immediate 关闭数据库,然后再startup重启)
有疑问的看客朋友欢迎留言,小k会不吝解答