环境:windows7、Oracle11g

一、脱机备份
脱机备份是指在数据库关闭情况下的数据备份,也称为冷备份。

在书上学到的备份步骤:
1、记录所要备份数据库文件所在的操作系统路径;
2、关闭数据库,不要使用shutdown abort这种关闭方式;
3、拷贝数据库文件到备份目录中;
4、重启数据库,完成备份。

了解到这些步骤后,做了一个备份测试,要备份的数据库为testdb。

1、记录所要备份数据库文件所在的操作系统路径
   
(1)查看数据文件的路径(用管理员账户连接)
备注:可以在sqlplus命令行或者plsql执行下面sql语句

select file_name,tablespace_name from dba_data_files;

D:\APP\LC\ORADATA\TESTDB\USERS01.DBF     USERS
D:\APP\LC\ORADATA\TESTDB\UNDOTBS01.DBF   UNDOTBS1
D:\APP\LC\ORADATA\TESTDB\SYSAUX01.DBF    SYSAUX
D:\APP\LC\ORADATA\TESTDB\SYSTEM01.DBF    SYSTEM

(2)查看控制文件的路径
select name from v$controlfile;

D:\APP\LC\ORADATA\TESTDB\CONTROL01.CTL
D:\APP\LC\FLASH_RECOVERY_AREA\TESTDB\CONTROL02.CTL

(3)查看重做日志文件的路径
select member from v$logfile;

D:\APP\LC\ORADATA\TESTDB\REDO03.LOG
D:\APP\LC\ORADATA\TESTDB\REDO02.LOG
D:\APP\LC\ORADATA\TESTDB\REDO01.LOG

2、关闭数据库

SQL> conn system/Oracle123456@testdb as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

3、拷贝数据库文件到备份目录中;
如果在sqlplus下可以使用host copy拷贝,也可以直接选择文件拷贝,把第1步的所有文件拷贝到D:\dbbackup中。

4、启动数据库。

SQL> startup
ORACLE 例程已经启动。
......

二、数据库恢复
为了模拟数据库恢复,在DBCA工具中把testdb删除掉,删除成功后,执行下面恢复步骤。
1、把D:\dbbackup中的文件拷贝到原来的D:\APP\LC\ORADATA\TESTDB等目录下。
2、新建一个实例
  用管理员权限,在cmd窗口执行下面语句,其中testdb名称要与备份的名字一样
  oradim -new -sid testdb
3、查看oracle服务和监听是否启动,如果没启动,则到控制面板的服务或cmd下运行命令启动。
   启动服务 net start OracleServicetestdb
   启动监听 lsnrctl start
4、启动数据库
   cmd命令窗口中
   输入   set oracle_sid=testdb回车
   再输入 sqlplus  /nolog 回车
   再输入 conn / as sysdba 回车
   再输入startup 回车

这时却出现了错误:
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file 'D:/app/LC/product/11.2.0/dbhome_1/database/inittestdb.ora'

检查了这个路径,没有inittestdb.ora这个文件。

-------------------------------------------------------

网上搜索了下,解决方法基本和下面大同小异:

解决方法:将$ORACLE_BASE/admin/数据库名称/pfile目录下的init.ora.012009233838形式的文件copy 到$ORACLE_HOME/database 目录下
initoracle.ora即可。(注:initoracle.ora中的oracle为你的实例名 ORACLE_SID
------------------------------------------------------
在电脑找了下,在D:\app\LC\admin\orcl\pfile目录下有一个init.ora.9182016154717文件,把它复制到
D:/app/LC/product/11.2.0/dbhome_1/database目录下,把里面内容的所有“orcl”改为“testdb”,保存为inittestdb.ora。
在D:\app\LC\admin目录下建立testdb及它的子目录pfile。
这时候再回到cmd命令行窗口执行startup,终于成功启动数据库了。

这时候用plsql登录却提示ORA-12154: TNS: 无法解析指定的连接标识符。
解决方法:
打开 D:\app\LC\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora,模仿里面的ORCL代码,手动添加下面语句
TESTDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = testdb)
    )
  )

三、总结
通过上面例子,知道除了备份数据文件、控制文件、重做日志文件,还要备份参数文件。
于是重新建立一个数据库tdb,这次备份除了数据文件、控制文件、重做日志文件,还备份了
(1)D:\app\LC\product\11.2.0\dbhome_1\database目录下的3个文件:hc_tdb.dat、PWDtdb.ora、SPFILETDB.ORA
(2)D:\app\LC\admin\tdb整个目录,里面有adump、dpdump、pfile共3个目录,其中pfile下面有个init.ora.919201613321文件。
(3)D:\app\LC\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora

恢复的时候把数据文件、控制文件、重做日志文件、SPFILETDB.ORA、tnsnames.ora内容还原。
终于成功恢复数据库。
hc_tdb.dat、PWDtdb.ora、D:\app\LC\admin\tdb目录似乎恢复没用到,但最好也是还原下。

附,恢复时候执行的命令行:

C:\Windows\system32>oradim -new -sid tdb
实例已创建。
C:\Windows\system32>set oracle_sid=tdb
C:\Windows\system32>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期三 10月 19 15:25:45 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
SQL> conn /as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1686925312 bytes
Fixed Size                  2176368 bytes
Variable Size             989858448 bytes
Database Buffers          687865856 bytes
Redo Buffers                7024640 bytes
数据库装载完毕。
数据库已经打开。
SQL>

测试oracle数据库的脱机备份和恢复的更多相关文章

  1. ORACLE数据库不同故障下的恢复总结

    ORACLE数据库不同故障下的恢复总结1. 非归档模式下丢失或损坏的文件--1.1 数据文件--启动数据库的状态到MOUNT--恢复方法:通过之前创建的数据库完整备份,修复整个数据库,不过备份之后发生 ...

  2. Windows环境下Oracle数据库的自动备份脚本

    批处理文件(.bat) @echo off echo ================================================ echo  Windows环境下Oracle数据 ...

  3. Navicat工具Oracle数据库复制 or 备用、恢复功能(评论都在谈论需要教)

    GXPT它是一个分布式系统,该系统包括一个临时许可系统.基本系统.教学评价体系.考试系统,每个系统都有自己的oracle数据库.统,而评教系统的正常须要借助于权限系统和基础系统,详细的业务这里就不多解 ...

  4. Oracle数据库的自动备份脚本

    @echo off echo ================================================ echo Windows环境下Oracle数据库的自动备份脚本 echo ...

  5. Windows环境下Oracle数据库的自动备份脚本自动删除30天前的备份

    @echo off echo ================================================ echo Windows环境下Oracle数据库的自动备份脚本 echo ...

  6. 数据库通过sql备份脚本恢复时,报错误The user specified as a definer ('root'@'%') does not exist

    数据库通过sql备份脚本恢复时,报错误The user specified as a definer ('root'@'%') does not exist 当出现这个错误,意思是某个数据库对象的定义 ...

  7. Oracle数据库表的备份和数据表的删除操作

    --Oracle数据库中的表备份: --备份语句:在备份之后就可以将这张表的所有数据源删除了,但是之后有人对这张表的数据进行操作,但是在操作完成之后要记得将数据表恢复 CREATE TABLE DZH ...

  8. MySQL数据库的数据备份和恢复(导入和导出)命令操作语法【转】

    不管是Oracle数据库还是SQL Server数据库,每个数据库都有自己的一套数据备份和恢复的方法,MySQL数据库也不例外.MySQL数据库备份和恢复用到了两个命令,分别是“mysqldump”和 ...

  9. Windows系统下oracle数据库每天定时备份

    第一步:建立备份脚本oraclebackup.bat 首先建立一个备份bat文件,在D盘下新建备份目录oraclebackup,将oracle安装目录下的EXP.EXE复制到此目录下,再新建一个文本文 ...

随机推荐

  1. HDU 5055 Bob and math problem(简单贪心)

    http://acm.hdu.edu.cn/showproblem.php?pid=5055 题目大意: 给你N位数,每位数是0~9之间.你把这N位数构成一个整数. 要求: 1.必须是奇数 2.整数的 ...

  2. JQuery selector - not

    <div class="table"> <div class="row header"></div> <div cla ...

  3. Qt4.8.5在ARM9上的移植

    Qt4.8.5在ARM9开发板上的移植 以前移植过qtopia-embedded-2.2.0,俗称Qt/E,在早期的Qt框架中是使用X11桌面服务器系统,无法应用于嵌入式平台,为此产生了qtopia, ...

  4. [Asp.net]Uploadify上传大文件,Http error 500 解决方案

    /// 原来这个项目中用了这个控件 所以config设置文件大小没有 现在可以了 <location path="MailWrite.aspx" > <!--上传 ...

  5. c#学习 流程控制语句

    语句是啥? 语句就是程序的基本结构.程序是一个人,语句就是人的身体.而写程序的人就是上帝造人的过程. break在swich语句中很严谨 using System; public class Grad ...

  6. iphone H5视频行内播放(禁止全屏播放)

    一般用户都知道,ios在网页点击视频播放时,视频会弹出全屏播放框. video标签的playsinline.webkit-playsinline标记根本就不会起作用. 还有传闻说对于没有声音的视频不会 ...

  7. heartbeat

    http://www.bubuko.com/infodetail-1174857.html http://www.cnblogs.com/zhanjindong/p/3618055.html http ...

  8. openlayer3 获取feature

    feature是放在vector的source中,所以在获取feature前,需先vector.getSource(),再去getFeature().

  9. Hibernate 基础配置及常用功能(一)

    本来是想等全部框架测试完以后再统一发布的,但是随着测试的一点点增加感觉把需要叙述的东西放在一起终将会是一场灾难.所以还是打算分成几章来描述,其中还包括一些有待解决的问题.短期很难腾出时间来仔细阅读Hi ...

  10. abrt-hook-ccpp: Saved core dump of pid 12224导致dn挂掉问题

    一.引言: 最近发现datanode老是无缘无故的进程挂掉,从程序的日志没有stop迹象,只能从/var/log/messages入手,发现如下信息: 从namenode的页面也可以看到进程消息的时间 ...