用Oracle的热备份重建数据库

原创 2002年09月02日 09:04:00

为了检验我为公司开发的Oracle数据库在线自动备份系统,我根据“Oracle数据库在线自动备份系统”产生的备份文件来重建和恢复Oracle数据库。为了让大家共享其方法和步骤(也适合于用其它方式对Oracle做的热备份进行重建数据库)现整理如下。

一、系统环境<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

本次测试所使用的系统环境如下:

1.   硬件环境

服务器:Dell PowerEdge 1300 (CPUP 550MHz  内存:128MB  硬盘:36GB)

2.   软件环境

操作系统:UnixWare 7.1

数据库: Oracle 8.1.6 for Unix 企业版,SIDora816

Oracle安装路径:/home/oracle

备份文件:所有数据库文件、控制文件、初始化文件、数据库备份以来的所有归档日志文件。

二、恢复步骤

下面根据从用户处带回来的备份数据,在一台新的服务器重建Oracle数据库。其详细步骤如下:   

1.       创建数据库恢复使用的环境

在新的Dell服务器上,安装与原来的数据库服务器相同的操作系统UnixWare 7.1;然后安装与原数据库相同版本的Oracle 8.1.6 for Unix 企业版。

2.       删除新服务器上的Oracle实例

启动新数据库服务器上的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文件用Ftp上传到新数据库服务器中Oracle实例的initSID.ora文件位置,覆盖之。其位置一般在$ORACLE_HOME/dbs目录下。

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"

  

7.       恢复数据库

经过以上6个步骤,把所有的备份文件已经上传到了新数据库服务器中。下面开始根据这些文件恢复并启动数据库,先在操作系统的提示符下做如下操作:

$svrmgrl

SVRMGR>connect internal

SVRMGR>startup mount

<1> 创建口令文件

如果原来的数据库配置了口令文件,并且在mount数据库时报如下错误:

ORA-01990: error opening password file '/home/oracle/app/oracle/product/8.1.6/dbs/orapw'

可以到/home/oracle/app/oracle/product/8.1.6/dbs/路径下,用以下命令创建口令文件:

orapwd

其用法如下:

Usage: orapwd file=<fname> password=<password> entries=<users>

       where

      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 'old_file' to 'new_file';

如把原来路径/home/oracle/app/oracle/oradata/ora816下的文件system01.dbf改到了/u21/oracle/app/oracle/oradata/ora816下:

SVRMGR>alter database rename file

    '/home/oracle/app/oracle/oradata/ora816/system01.dbf'

                to  '/u21/oracle/app/oracle/oradata/ora816/system01.dbf';

按照上面的方法把所有修改路径的数据库文件重新命名。

<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

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: {<RET>=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 '/home/oracle/app/oracle/admin/ora8/arch/arch_1_399.arc' 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 '/home/oracle/app/oracle/admin/ora8/arch/arch_1_400.arc' noy

ORA-00308: cannot open archived log '/home/oracle/app/oracle/admin/ora8/arch

/arch_1_401.arc'

ORA-27037: unable to obtain file status

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

Database mounted.

Database opened. 

数据库正常打开,数据库重建恢复成功。

 

使用dbcd删除后重建实例

今天建库时选择了OMF方式,结果文件名称采用Oracle自动命名的方式,看不懂啊,于是乎决定删除再重建。 Oracle提供了删除数据库的指令:drop database。 需要数据库处于mou...
  • fenglin20115588
  • fenglin20115588
  • 2016年01月20日 17:16
  • 545

通过重建控制文件的方法恢复数据库

今天配置dataguard的时候,一不小心把主库的控制文件全删了,主库是集团的测试库,所以心里比较慌。静下心来在网上找了一些资料之后,发现可以通过重建控制文件的方法来恢复数据库,就做了一下测试。 ...
  • MisshqZzz
  • MisshqZzz
  • 2016年05月26日 14:44
  • 3076

Oracle 重建索引的必要性

索引重建是一个争论不休被不断热烈讨论的议题。当然Oracle官方也有自己的观点,我们很多DBA也是遵循这一准则来重建索引,那就是Oracle建议对于索引深度超过4级以及已删除的索引条目至少占有现有索引...
  • robinson_0612
  • robinson_0612
  • 2014年04月15日 15:45
  • 4812

Oracle OEM 重建 及 案例 说明

一.手工重建EM Oracle 的gridcontrol 由两部分组成:dbcontrol 和repository。 我们可以对某一部分进行操作,也可以同时进行操作。 这块的内容详细参考...
  • suyishuai
  • suyishuai
  • 2014年08月29日 13:33
  • 1415

浅谈oracle中重建索引

转载地址:http://hi.baidu.com/ericfung56/item/5fc3412c43a8b81a2a0f1c0c 当我们创建索引时,oracle会为索引创建索引树,...
  • piaoboyijianke1
  • piaoboyijianke1
  • 2014年01月11日 09:58
  • 3416

Oracle修改ip或主机名后重建em和监听

oracle数据库修改ip和主机名的详细操作 修改ip操作 1.修改hosts文件中主机名对应的ip地址。 2.重启服务器网络 service network resta...
  • wjx515628
  • wjx515628
  • 2014年09月13日 10:07
  • 3434

Oracle 11g EM删除重建的方法

虚拟机里的Oracle 11g好长时间没用了,突然打开之后发现EM无法访问了,之前知道EM可以重建,于是也不查找原因了,直接使大招 …… emca -deconfig dbcontrol db -re...
  • mycdsnstudy
  • mycdsnstudy
  • 2015年09月20日 21:20
  • 5800

Oracle 重建索引脚本

索引是提高数据库查询性能的有力武器。没有索引,就好比图书馆没有图书标签一样,找一本书自己想要的书比登天还难。然而索引在使用的过程中,尤其是在批量的DML的情形下会产生相应的碎片,以及B树高度会发生相应...
  • robinson_0612
  • robinson_0612
  • 2014年04月21日 17:52
  • 4541

oracle索引重建到底会提高多少性能?

工作中往往会观察到索引重建带来的空间释放和应用性能提升。空间释放比较容易理解,也非常容易度量,那么索引重建到底会对应用的性能有多少影响那?首先我们会问:索引重建为什么会带来性能的提升?毫无疑问,这是因...
  • joeadai
  • joeadai
  • 2013年11月22日 13:51
  • 2409

ORACLE11g 重装系统后根据dbf恢复数据库

1.安装一个和原系统一致的oracle 环境,主要包括版本、数据名sid、实例名、路径和数据库编码一致 2.修改listener.ora的参数SID_LIST_LISTENER = (SID_LI...
  • ywswen
  • ywswen
  • 2017年01月02日 12:57
  • 2933
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Oracle的热备份重建数据库
举报原因:
原因补充:

(最多只允许输入30个字)