热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

用Oracle的热备份重建数据库

用Oracle的热备份重建数据库为了检验我开发的Oracle数据库在线备份系统,我根据Oracle数据库在线备份系统产生的备份文件来重建和恢复Oracle数据库。为了让大家共享其方法和tb步骤(也适合于用其它方式对Oracle做...SyntaxHighlighter.all()

用Oracle的热备份重建数据库
 
为了检验我开发的Oracle数据库在线备份系统,我根据“Oracle数据库在线备份系统”产生的备份文件来重建和恢复Oracle数据库。为了让大家共享其方法和tb步骤(也适合于用其它方式对Oracle做的热备份进行重建数据库)现整理如下。
 
一、系统环境
 
本次测试所使用的系统环境如下:
1. 硬件环境
  www.2cto.com  
服务器:Dell PowerEdge 1300 (CPU:PⅢ 550MHz 内存:128MB 硬盘:36GB)
 
2. 软件环境
 
操作系统:UnixWare 7.1
 
数据库: Oracle 8.1.6 for Unix 企业版,SID:ora816
 
Oracle安装路径:/home/oracle
 
备份文件:所有数据库文件、控制文件、初始化文件、数据库备份以来的所有归档日志文件。
 
二、恢复步骤
 
下面根据从用户处带回来的备份数据,在一台新的服务器重建Oracle数据库。其详细步骤如下:
 
1. 创建数据库恢复使用的环境
 
在新的Dell服务器上,安装与原来的数据库服务器相同的操作系统UnixWare 7.1;然后安装与原数据库相同版本的Oracle 8.1.6 for Unix 企业版。
 
2. 删除新服务器上的Oracle实例
  www.2cto.com  
启动新数据库服务器上的Oracle,在sqlplus中,查找到数据库文件的路径,并保存在当前路径下的文件file_name.txt中:
 
$ sqlplus system/manager
 
SQL> spool file_name.txt
 
SQL> select file_name from sys.dba_data_files;
 
SQL> spool end
 
SQL>exit
 
关闭新服务器的Oracle,然后根据文件file_name.txt中的路径,删除新装的Oracle实例的所有数据库文件。
 
注:从本步开始所有操作都是用Oracle用户登录操作系统(Unix)后进行。文中所有的黑色粗体5号字符(标题除外)的语句可以直接执行,黑色倾斜粗体5号字符的语句需要修改后执行。
 
3. 恢复数据库文件
 
把备份的所有数据库文件用Ftp上传新的数据库服务器中的相同路径下。如果原来的路径已不存在,可以拷贝到其他路径下,恢复时详细处理方法见步骤7中<2>。
 
4. 恢复初始化参数文件
 
把备份的initSID.ora文件用Ftbp上传到新数据库服务器中Oracle实例的initSID.ora文件位置,覆盖之。其位置一般在$ORACLE_HOME/dbs目录下。
  www.2cto.com  
5. 恢复控制文件
 
把备份的ControlFile.bak文件用Ftp上传到新数据库服务器中Oracle实例的各个镜像路径下,并按初始化参数文件initSID.ora中的该项的位置和名称命名。
 
control_files = ("/home/oracle/app/oracle/oradata/ora816/control01.ctl", "/home/oracle/app/oracle/oradata/ora816/control02.ctl","/home/oracle/app/oracle/oradata/ora816/control03.ctl")
 
其路径如有变动,在初始化参数文件initSID.ora中修改如上内容的路径和名称,使其实际路径与该参数的路径一致。
 
6. 恢复归档日志文件
 
把数据库备份后的归档日志用Ftp上传到新数据库服务器的相同路径下。路径如有变动可以根据初始化参数文件initSID.ora中如下位置进行修改,使其实际路径与该参数的路径一致。
 
log_archive_dest_1 = "location=/home/oracle/app/oracle/admin/ora816/arch"
  www.2cto.com  
7. 恢复数据库
 
经过以上6个步骤,把所有的备份文件已经上传到了新数据库服务器中。下面开始根据这些文件恢复并启动数据库,先在操作系统的提示符下做如下操作:
 
$svrmgrl
 
SVRMGR>connect internal
 
SVRMGR>startup mount
 
<1> 创建口令文件
 
如果原来的数据库配置了口令文件,并且在mount数据库时报如下错误:
 
ORA-01990: error opening password file &#39;/home/oracle/app/oracle/product/8.1.6/dbs/orapw&#39;
 
可以到/home/oracle/app/oracle/product/8.1.6/dbs/路径下,用以下命令创建口令文件:
 
orapwd
 
其用法如下:
 
Usage: orapwd file= password= entries=
 
where
  www.2cto.com  
file - name of password file (mand),(口令文件的命名方式为:orapwSID)
 
password - password for SYS and INTERNAL (mand),
 
entries - maximum number of distinct DBA and OPERs (opt),
 
There are no spaces around the equal-to (=) character.
 
例如: orapwd file=orapwora816 password=manager
 
然后重新执行如下语句mount数据库:
 
SVRMGR>startup mount。
 
<2> 修改数据库文件的路径
 
如果在上述的步骤3中修改了恢复的数据库文件的路径,可以用如下语句对数据库文件重新命名 :
 
alter database rename file &#39;old_file&#39; to &#39;new_file&#39;;
 
如把原来路径/home/oracle/app/oracle/oradata/ora816下的文件system01.dbf改到了/u21/oracle/app/oracle/oradata/ora816下:
 
SVRMGR>alter database rename file
 
&#39;/home/oracle/app/oracle/oradata/ora816/system01.dbf&#39;
 
to &#39;/u21/oracle/app/oracle/oradata/ora816/system01.dbf&#39;;
 
按照上面的方法把所有修改路径的数据库文件重新命名。
 
<3> 根据控制文件和归档日志文件恢复数据库
 
下面开始用控制文件和归档日志文件恢复数据库:
 
SVRMGR>recover database using backup controlfile until cancel;
 
出现如下提示:
 
ORA-00279: change 50971 generated at 08/23/2002 09:21:27 needed for thread 1
  www.2cto.com  
ORA-00289: suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_399.arc
 
ORA-00280: change 50971 for thread 1 is in sequence #399
 
Specify log: {=suggested | filename | AUTO | CANCEL}输入:
 
auto
 
如果有如下提示,则表示成功。
 
ORA-00279: change 51007 generated at 08/23/2002 11:23:13 needed for thread 1
 
ORA-00289: suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_400.arc
 
ORA-00280: change 51007 for thread 1 is in sequence #400
 
ORA-00278: log file &#39;/home/oracle/app/oracle/admin/ora8/arch/arch_1_399.arc&#39; noy
 
Log applied.
 
意外处理:如果其它提示可能是需要的日志文件不存在,检查ORA-00289中该文件是否存在。
 
直到出现如下提示:
 
ORA-00279: change 51011 generated at 08/23/2002 11:23:45 needed for thread 1
 
ORA-00289: suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_401.arc
 
ORA-00280: change 51011 for thread 1 is in sequence #401
 
ORA-00278: log file &#39;/home/oracle/app/oracle/admin/ora8/arch/arch_1_400.arc&#39; noy
 
ORA-00308: cannot open archived log &#39;/home/oracle/app/oracle/admin/ora8/arch
 
/arch_1_401.arc&#39;
 
ORA-27037: unable to obtain file status
  www.2cto.com  
Intel SVR4 UNIX Error: 2: No such file or directory
 
Additional information: 3
 
<4> 重置日志
 
SVRMGR>alter database open resetlogs;
 
意外处理:如果提示创建日志的路径不存在,按提示路径创建目录。然后再重置日志。
 
<5> 重启数据库,完成恢复
 
SVRMGR>shutdown immediate
 
SVRMGR>startup
 
ORACLE instance started.
 
Total System Global Area 123437040 bytes
 
Fixed Size 69616 bytes
 
Variable Size 106418176 bytes
 
Database Buffers 16777216 bytes
 
Redo Buffers 172032 bytes
  www.2cto.com  
Database mounted.
 
Database opened.
数据库正常打开,数据库重建恢复成功。
 
 
作者 tbwshc

推荐阅读
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 本文介绍了如何在 DB2 环境中创建和删除数据库编目。创建编目是连接新数据库的必要步骤,涉及获取数据库连接信息、使用命令行工具进行配置,并验证连接的有效性。删除编目则用于移除不再需要的数据库连接。 ... [详细]
  • 本文详细介绍了如何使用ActionScript 3.0 (AS3) 连接并操作MySQL数据库。通过具体的代码示例和步骤说明,帮助开发者理解并实现这一过程。 ... [详细]
  • 在即将迎来26岁生日之际,作者的人生陷入了低谷。经过近三年的硕士学习后,最终决定退学,并且面临没有工作经验的困境。尽管如此,作者依然坚定地选择为自己的人生负责。 ... [详细]
author-avatar
bale999_816
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有