Oracle数据库备份还原——物理备份


当一个阶段性系统使用完后,需要备份完全的数据库,此时使用冷备份再合适不过了。冷备份需要知道源机与目标机Oracle安装位置和文件系统位置,是一种非常快速的备份方法。源Oracle和目标Oracle版本需要一致。

冷备份

1、 冷备份发生在数据库已经正常关闭的情况下
2、冷备份所需备份的文件包括以下几种:
所有数据文件(datefile)、所有控制文件(controlfile)、所有联机REDO LOG 文件(logfile)、密码文件
3、冷备份的步骤
①正常关闭要备份的实例(instance)
②拷贝物理文件到指定备份路径或设备。
③完成备份后启动数据库

异机恢复

背景:目标机已安装数据库,且未创建同名实例
1、在目标机上的oradata目录下建立orcl文件夹,拷贝源机的所有data文件和联机redo文件到此目录下。
2、在目标机上的admin目录下建立orcl文件夹,然后在orcl里面再建立adump、bdump、cdump、udump、dpdump、pfile六个文件夹。
3、使用oradim命令在cmd下oradim -new -sid orcl 表示建立一个服务,sid为orcl(最好名字和源机备份的数据库名字一致,就不需要重建密码文件)。
4、拷贝源机的pfile到目标机的一个目录下,修改pfile里面相关文件的路径,然后通过SQL>create spfile from pfile=‘文件路径’来创建参数文件。
5、重建控制文件。
6、用net configuration为orcl实例新建监听。
7、还原临时工作空间文件。

操作案例

冷备份数据必须是数据库不在open状态下。以Windows环境下oracle11gR2为例,备份恢复orcl实例。

备份

备份脚本如下:

spool D:/Other-shore/oradata/lengbei/bf.sql
select 'COPY "'||name||'" "D:/Other-shore/oradata/lengbei"' from v$controlfile
union all
select 'COPY "'||name||'" "D:/Other-shore/oradata/lengbei"' from v$datafile
union all
select 'COPY "'||member||'" "D:/Other-shore/oradata/lengbei"' from v$logfile
/
create pfile='D:/Other-shore/oradata/lengbei/initorcl.ora' from spfile;
alter database backup controlfile to trace as 'D:/Other-shore/oradata/lengbei/databasectl.txt';
spool off

Step1、在命令行窗口中(cmd)页面执行

c:\>set ORACLE_SID=orcl
c:\>sqlplus/nolog
SQL> conn sys/sys as sysdba
SQL>   //运行备份脚本
SQL>shutdown immediate;

Step2、执行完备份脚本后,产生如下图文件:
在这里插入图片描述

打开参数文件,拷贝如图框内文件到指定备份路径:
在这里插入图片描述

打开重建控制文件,拷贝如图框内文件到指定备份路径:
在这里插入图片描述

Step3、找到密码文件备份到指定备份路径。密码文件在数据库安装位置的database文件夹下。本机位置E:\app\product\11.2.0\dbhome_1\database\PWDorcl.ora。
在这里插入图片描述

Step4、启动源机数据库实例startup
至此冷备份完成,下图是冷备份所需要的所有物理文件:
在这里插入图片描述

异机恢复

不创建实例:(源机上的数据库名字为orcl)
Step1、拷贝冷备份文件到目标机上

Step2、在目标机的数据库文件系统位置oradata目录下建立orcl文件夹,将备份文件中所有data文件和联机redo文件到此目录下。(C:\app\oradata)

Step3、在目标机的数据库安装位置下(C:\app)
①将flash_recovery_area文件夹中对应的orcl文件备份过去
②将密码文件拷贝到database目录下
③admin目录下建立orcl文件夹,然后在orcl里面再建立adump、bdump、cdump、udump、dpdump、pfile六个文件夹。

Step4、更改参数文件pfile里面框内路径为目标机路径:
在这里插入图片描述

Step5、打开重建控制文件,找到下图一段文本,修改框内相应路径后保存为:createctl.sql文件(sql脚本文件)。
在这里插入图片描述

Step6、在命令窗口中,使用oradim命令oradim -new -sid orcl 表示建立一个服务,sid为orcl(最好名字和源机备份的数据库名字一致,就不需要重建密码文件)
新建一个实例服务:oradim -new -sid orcl
删除一个实例服务:oradim -delete -sid orcl

Step7、在命令行窗口中(cmd)页面执行

c:\>oradim -new -sid orcl
c:\>set ORACLE_SID=orcl
c:\>sqlplus/nolog
SQL> conn / as sysdba
SQL>create spfile from pfile='c:\initorcl.ora';
SQL>@c:\createctl.sql;
SQL>shutdown immediate;
SQL>startup;
SQL>alter database open resetlogs;

执行期间遇到如下报错:
ORA-12560:TNS协议适配器错误
原因:ORACLE的数据库服务没有启动。使用命令net start ORACLESERVICEORADB(ORADB为数据库名字)。

SP2-XXX:原因:存在空行。去除文件中空行就可

Step8、完成上述步骤后已经可以在命令窗口中连接数据库了。接下来用net configuration为orcl实例新建监听

Step9、为保证数据库正常运行,需要将控制文件里的临时工作空间建立一下。
重建控制文件脚本中会自动附加创建临时表空间的语句,如下图所示:
在这里插入图片描述

连接数库后执行下面语句:

ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\APP\ORADATA\ORCL\TEMP01.DBF'
     SIZE 84934656  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER TABLESPACE TEMP_SDTP ADD TEMPFILE 'D:\OTHER-SHORE\ORADATA\TEMP_SD.DBF'
     SIZE 10M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 32767M;

常记溪亭日暮,沉醉不知归路。——李清照《如梦令·常记溪亭日暮》

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值