Oracle 9i 的备份与恢复详细步骤.docx
《Oracle 9i 的备份与恢复详细步骤.docx》由会员分享,可在线阅读,更多相关《Oracle 9i 的备份与恢复详细步骤.docx(24页珍藏版)》请在冰豆网上搜索。
Oracle9i的备份与恢复详细步骤
8.2.2Oracle系统的备份与恢复技术
8.2.2.1备份与恢复的基本概念
Oracle数据库是由一组物理文件组成的,包括:
联机重做日志文件、归档日志文件、控制文件、数据文件、参数文件。
联机重做日志文件记录对数据库的所有修改;归档日志文件是重做日志文件的拷贝,但要求数据库必须运行在归档模式下才能产生归档日志文件;控制文件是包含数据库物理结构的二进制文件;数据文件记录了数据库中表的数据、索引数据、临时数据、回退数据和数据字典数据;参数文件包含数据库初始化参数的文件。
这些文件除了参数文件以外,内容基本上由系统自动维护。
为了使数据库能够正常工作,这些物理文件必须同时出现,而且必须是一致的。
如果丢失了其中任何一个文件,数据库就可能启动不了,或者会在正常工作中产生中断。
Oracle系统一般发生四类故障:
事务故障、系统故障、介质故障、计算机病毒。
事务故障和系统故障,不是很严重,可以由Oracle系统根据日志文件自动恢复,不会导致数据库物理文件的破坏。
而介质故障和计算机病毒比较严重,将导致数据库物理文件不能读写,数据库不能正常启动。
所以必须对这些文件事先做一个备份,将其备份到磁盘或磁带上,一旦文件遭破坏不能启动数据库时,使用这些备份文件进行恢复。
备份就是将组成数据库的物理文件拷贝到一个外存(磁盘或磁带)上,以便在物理文件遭到破坏时可以使用这些备份文件进行恢复。
恢复就是在数据库遭到破坏时将这些数据库文件从磁盘或磁带复制到期望的位置上,然后启动数据库并进行恢复,使这些物理文件达到完全一致的过程。
8.2.2.2Oracle数据库归档模式的设置
Oracle数据库运行在归档模式时,归档进程ARCH将联机重做日志文件拷贝到磁带或磁盘介质上,即从联机重做日志文件产生归档日志文件,即备份已经发生的所有历史事务。
一旦决定让数据库运行在归档模式,就需要正确配置数据库。
默认建立的数据库都是非归档模式。
配置数据库归档模式有两种方法:
一种方法是建立数据库时指定归档模式(即CREATEDATABASE命令中包含ARCHIVELOG关键字),每次启动数据库时自动设置为归档模式;
另一种方法是在已有的非归档模式数据库上用Oracle命令重新指定归档模式。
下面介绍将非归档模式数据库设置为归档模式的步骤:
1.复制文本参数文件initSID.ora
在启动数据库之前,先用操作系统命令将系统随机带的e:
\Oracle\admin\Oracle\pfile\init.ora.12342文件改名为initSID.ora(其中SID代表数据库名,不同的数据库名对应的参数文件名不同),并且复制到e:
\Oracle\ora92\database\目录下。
C:
\copye:
\Oracle\admin\Oracle\pfile\init.ora.12342e:
\Oracle\ora92\database\initOrcl.ora
2.编辑文本参数文件initSID.ora
用文本编辑器编辑initOrcl.ora参数文件,在该文件的末尾加三行分别设置三个参数的值。
加一行log_archive_start=TRUE,表示将log_archive_start参数值设置为TRUE,也就是将归档进程设置为自动。
加一行log_archive_dest=’E:
\Oracle\ora92\RDBMS’,表示将归档文件存储到E:
\Oracle\ora92\RDBMS目录下。
加一行log_archive_format=’arc_%s.log’,表示归档文件存储的文件名为arc_%s.log,%s表示日志文件的序列号,随着日志的切换%s的值随之增大。
如:
arc_01.log、arc_02.log、arc_03.log…。
即只要联机日志文件写满了,ARCH自动将其拷贝到log_archive_dest参数指定的目录进行归档。
log_archive_start=TRUE
log_archive_dest=’E:
\Oracle\ora92\RDBMS’
log_archive_format=’arc_%s.log’
3.重建二进制参数文件spfileSID.ora
由于Oracle9i数据库启动时默认使用二进制参数文件spfileSID.ora,而不是文本参数文件initSID.ora,所以在文本参数文件中增加或修改参数设置,启动数据库时该参数设置不起作用。
为了让刚修改或增加的参数起作用,必须根据修改后的文本参数文件initSID.ora重建二进制参数文件spfileSID.ora。
数据库启动后不能重建二进制参数文件spfileSID.ora,必须在数据库关闭后才能重建。
按下列命令先关闭数据库,然后重建spfileSID.ora文件,让刚设置的log_archive_start、log_archive_dest、log_archive_format参数的设置生效。
SQL>connect/assysdba
SQL>shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL>createspfilefrompfile;
文件已创建。
4.启动数据库到MOUNT状态,
SQL>startupmount
ORACLE例程已经启动。
TotalSystemGlobalArea135338868bytes
FixedSize453492bytes
VariableSize109051904bytes
DatabaseBuffers25165824bytes
RedoBuffers667648bytes
数据库装载完毕。
5.修改数据库的归档模式(从非归档模式改为归档模式)
SQL>alterdatabasearchivelog;
数据库已更改。
6.打开数据库
SQL>alterdatabaseopen;
数据库已更改。
7.验证归档参数设置的正确性
SQL>archiveloglist
数据库日志模式存档模式
自动存档启用
存档终点E:
\Oracle\ora92\RDBMS
最早的概要日志序列58
当前日志序列60
SQL>
上述显示表示数据库已经运行在归档模式下,并且启用自动归档进程。
8.2.2.3Oracle的备份方法
Oracle的备份可以分为物理备份和逻辑备份两类;物理备份是针对组成数据库的物理文件的备份;逻辑备份是用Oracle系统提供的EXPORT工具将组成数据库的逻辑单元(表、用户、数据库)进行备份,将这些逻辑单元的内容存储到一个专门的操作系统文件中。
物理备份又可分数据库运行在非归档方式下的脱机备份(冷备份)、数据库运行在归档模式下的联机备份(热备份)。
非归档模式下的冷备份是指在数据库关闭的情况下将组成数据库的所有物理文件全部备份到磁盘或磁带。
这种备份方法适合数据库运行于非归档模式。
归档模式下的热备份是指在数据库打开的情况下将组成数据库的控制文件,以及与各个表空间对应的数据文件备份到磁盘或磁带,当然必须将归档日志文件也一起备份。
这种备份方法要求数据库必须运行在归档模式。
一、物理备份
1.非归档模式下物理冷备份
首先保证数据库在非归档模式(默认是非归档模式),接着关闭数据库,然后用操作系统命令将组成数据库的所有物理文件(包括控制文件、数据文件、重做日志文件)进行完全备份,备份到h盘的Oracle目录下。
执行下列命令完成非归档模式下的物理冷备份。
(1)关闭数据库
SQL>connect/assysdba
SQL>shutdown
数据库已经关闭。
已经卸载数据库。
Oracle例程已经关闭。
SQL>exit
(2)备份整个数据库
C:
\copye:
\Oracle\oradata\Oracle\*.*h:
\Oracle\cold\/*备份整个数据库*/
(3)重新启动数据库
SQL>connect/assysdba
SQL>startup
ORACLE例程已经启动。
TotalSystemGlobalArea135338868bytes
FixedSize453492bytes
VariableSize109051904bytes
DatabaseBuffers25165824bytes
RedoBuffers667648bytes
数据库装载完毕。
数据库已经打开。
2.归档模式下物理冷备份
按8.2.2.2节中介绍的步骤设置数据库的归档模式,并确认数据库已运行在自动归档模式。
并且进行日志切换三次(假设数据库有三个日志文件组,所以日志切换三次),以便将所有日志信息都存储到归档文件。
接着关闭数据库,然后用操作系统命令将组成数据库的所有物理文件(包括控制文件、数据文件、重做日志文件)进行完全备份,备份到h盘的Oracle目录下。
将归档日志文件也备份到h盘的Oracle目录下。
备份完成后重新打开数据库,执行下列命令完成归档模式下物理冷备份。
(1)日志切换归档所有联机日志文件
SQL>connect/assysdba
SQL>altersystemswitchlogfile;/*产生日志切换*/
SQL>altersystemswitchlogfile;
SQL>altersystemswitchlogfile;
(2)关闭数据库
SQL>connect/assysdba
SQL>shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL>exit
(3)备份整个数据库及归档日志文件
C:
\copye:
\Oracle\oradata\Oracle\*.*h:
\Oracle\cold\/*备份整个数据库*/
C:
\copye:
\Oracle\ora92\RDBMS\arc*.*h:
\Oracle\arch\/*备份归档日志文件*/
(4)重新启动数据库
SQL>connect/assysdba
SQL>startup
ORACLE例程已经启动。
TotalSystemGlobalArea135338868bytes
FixedSize453492bytes
VariableSize109051904bytes
DatabaseBuffers25165824bytes
RedoBuffers667648bytes
数据库装载完毕。
数据库已经打开。
3.归档模式下物理热备份
(1)确保数据库和监听进程已正常启动
在执行物理热备份之前,确保数据库已经正常启动,数据库的监听进程也已正常启动。
启动Oracle数据库和监听进程的方法是:
在WindowsNT或Windows2000或WindowsXP或WindowsME等操作系统下,只要在[控制面版]下的[管理工具]下的[服务]窗口中,将OracleServiceSID服务启动(其中SID代表数据库的名,即数据库名不同,WINDOWS下的服务名也不同),就启动了数据库。
将OracleOraHome92TNSListener服务启动,就启动了监听进程,此时才能监听客户端发来的连接请求。
(2)确保数据库运行在归档模式
按8.2.2.2节中介绍的步骤设置数据库的归档模式,并确认数据库已运行在自动归档模式。
(3)查询数据字典确认system、users表空间所对应的数据文件
SQL>connect/assysdba
SQL>selectfile_name,tablespace_namefromdba_data_files;
查询结果如下:
FILE_NAMETABLESPACE_NAME
--------------------------------------------------------------------------------------------------------
E:
\ORACLE\ORADATA\ORCL\SYSTEM01.DBFSYSTEM
E:
\ORACLE\ORADATA\ORCL\UNDOTBS01.DBFUNDOTBS1
E:
\ORACLE\ORADATA\ORCL\INDX01.DBFINDX
E:
\ORACLE\ORADATA\ORCL\TOOLS01.DBFTOOLS
E:
\ORACLE\ORADATA\ORCL\USERS01.DBFUSERS
E:
\ORACLE\ORADATA\ORCL\TEST.ORAUSERS
E:
\ORACLE\ORADATA\ORCL\TEST2.ORAUSERS
(4)将SYSTEM表空间联机备份
因为system表空间中存放数据字典信息,所以system表空间不能脱机,只能进行联机备份。
上述查询标明system表空间对应的数据文件为
E:
\ORACLE\ORADATA\ORCL\SYSTEM01.DBF。
SQL>altertablespacesystembeginbackup;
SQL>hostcopyE:
\ORACLE\ORADATA\ORCL\SYSTEM01.DBFh:
\Oracle\hot\
SQL>altertablespacesystemendbackup;
(5)将USERS表空间脱机备份
非SYSTEM表空间可以进行联机备份,也可以进行脱机备份。
users表空间对应的数据文件有三个,分别为E:
\ORACLE\ORADATA\ORCL\TEST.ORA和
E:
\ORACLE\ORADATA\ORCL\TEST2.ORA、E:
\ORACLE\ORADATA\ORCL\USERS01.DBF。
因为对USERS表空间采用脱机备份,所以必须先将USERS表空间脱机,然后采用操作系统命令将其所对应的数据文件备份到其他介质上。
SQL>altertablespaceusersoffline;
SQL>hostcopyE:
\ORACLE\ORADATA\ORCL\TEST.ORAh:
\Oracle\hot\
SQL>hostcopyE:
\ORACLE\ORADATA\ORCL\TEST2.ORAh:
\Oracle\hot\
SQL>hostcopyE:
\ORACLE\ORADATA\ORCL\USERS01.DBFh:
\Oracle\hot\
数据库中其他表空间都可以用与USERS表空间相同的方法进行联机或脱机备份。
(6)将当前联机重做日志文件归档
使用下列命令将当前联机重做日志文件存储为归档日志文件,以便以后恢复时使用。
SQL>altersystemarchivelogcurrent;
或者使用下列命令切换所有的联机日志文件,以便将所有日志信息都存储到归档文件。
SQL>altersystemswitchlogfile;/*产生日志切换*/
SQL>altersystemswitchlogfile;
SQL>altersystemswitchlogfile;
(7)将控制文件备份
可用下列命令备份控制文件,产生一个二进制副本,放在h盘的目录下。
SQL>alterdatabasebackupcontrolfileto‘h:
\Oracle\hot\control1.ctl’;
(8)将归档日志文件备份到h盘的Oracle目录下
如果归档日志文件被破坏了,并且归档日志文件没有备份,数据库仍然不能恢复到失败点。
所以归档日志文件也应该备份到指定的设备上,以便恢复时使用。
但因为归档日志文件的内容是不变的,所以可以在数据库打开或关闭的情况下用下列操作系统命令备份。
C:
\copye:
\Oracle\ora92\RDBMS\arc*.*h:
\Oracle\arch\/*备份归档日志文件*/
二、逻辑备份
逻辑备份就是使用Oracle提供的工具EXPORT将数据库中的数据卸出后存放到一个专门的操作系统文件中。
1.卸出的模式
Export工具提供了四种卸出模式:
表、用户、数据库、表空间,分别指定不同的参数可以按不同模式卸出。
下面分别介绍四种不同卸出模式的区别。
(1)表模式
表模式表示可以卸出指定表的定义、表的数据、表上的权限、触发器、约束条件、表上的索引等内容。
所有拥有CREATESESSION权限的用户都可以卸出它们自己的表,需要拥有EXP_FULL_DATABASE角色权限的用户才能卸出别的用户的表。
(2)用户模式
所有拥有CREATESESSION权限的用户都可以卸出自己建立的对象(包括表、视图、私有数据库链路、快照、序列生成器、同义词、存储过程、函数、包等)。
拥有EXP_FULL_DATABASE角色权限的用户才能卸出别的用户所拥有的对象。
(3)整个数据库模式
只有拥有EXP_FULL_DATABASE角色权限的用户才能执行全数据库卸出。
在这种模式下可以卸出除了SYS用户所拥有的对象以外的数据库所有对象,包括:
表空间、撤消段、用户、权限、公共数据库链路、公共同义词等对象的定义和相应的数据。
(4)表空间模式
这种卸出模式用于从一个数据库往另一个数据库迁移表空间时使用。
这种卸出模式只卸出表空间和表空间上对象的定义,但不卸出数据。
2.卸出运行方式
卸出运行方式有三种:
交互方式、命令行方式、参数文件方式。
(1)交互方式
交互方式卸出时首先在操作系统提示符c:
\下输入EXP,然后EXPORT工具会一步一步提示用户回答系统提出的问题,根据用户的回答,EXPORT工具卸出相应的内容。
按用户卸出模式举例说明交互方式的使用过程。
如果希望按用户模式卸出,则在
(1)E(整个数据库)
(2)U(用户)或(3)T(表):
(2)U>后面输入U表示按用户卸出。
下列卸出命令完成将scott用户所拥有的全部对象卸出到e:
\oracle\fuser.dmp文件中。
E:
\>exp
Export:
Release9.2.0.1.0-Productionon星期三1月1912:
02:
182005
(c)Copyright1982,2002,OracleCorporation.Allrightsreserved.
用户名:
scott/tiger
连接到:
Oracle9iEnterpriseEditionRelease9.2.0.1.0-Production
WiththePartitioningandJavaoptions
PL/SQLRelease9.2.0.1.0-Production
输入数组读取缓冲区大小:
4096>
导出文件:
EXPDAT.DMP>e:
\oracle\fuser.dmp
(1)E(整个数据库)
(2)U(用户),或(3)T(表):
(2)U>U
导出权限(yes/no):
yes>
导出表数据(yes/no):
yes>
压缩范围(yes/no):
yes>
即将导出scott的对象...
.即将导出scott的表通过常规路径...
..正在导出表ARTKEY15行被导出
..正在导出表BBOARDINFOR8行被导出
..正在导出表BCHILD_TAB5行被导出
.正在导出同义词
.正在导出视图
.正在导出存储的过程
.正在导出引用完整性约束条件
.正在导出触发器
.正在导出快照
.正在导出快照日志
在没有警告的情况下成功终止导出。
(2)命令行方式
命令行方式就是将交互方式中所有用户回答的内容全部写在命令行上,每一个回答的内容作为某一关键字的值。
EXPORT工具命令行的语法如下:
EXP[KEYWORD=]{VALUE|(VALUE,VALUE…)}
[[[,]KEYWORD=]{VALUE|(VALUE,VALUE…)}]…
其中:
KEYWORD:
是关键字。
VALUE:
是为关键字赋的值。
EXPORT工具常用的关键字包括:
USERID、OWNER、TABLES、FULL、FILE等;
•USERID指定使用EXPORT工具连接到Oracle的用户名/口令;
•OWNER指定按用户模式卸出时的用户名;
•TABLES指定按表模式卸出时的表名;
•FULL=Y表示按整个数据库卸出;
•FILE指定存储卸出对象内容的专门操作系统文件;
三个关键字FULL=Y、OWNER=用户名、TABLES=表名,只能定义其中一个,不能同时定义。
如果选择FULL=Y,表示按整个数据库卸出,需要拥有EXP_FULL_DATABASE角色权限。
如果选择OWNER=用户名,表示按用户卸出。
如果选择TABLES=表名,表示按表卸出。
例如:
下列语句表示SCOTT用户将DEPT和EMP两张表导出到文件EMP.DMP中。
C:
\EXPUSERID=scott/tigerTABLES=(dept,emp)FILE=c:
\oracle\emp.dmp
(3)参数文件方式
参数文件就是存放上述关键字和相应值的一个文件,然后将该文件名作为命令行的PARFILE关键字的值。
如果在参数文件中没有列出的关键字,该关键字就采用其默认值。
例如:
先用文本编辑器编辑一个参数文件,名为C:
\PAR1.TXT,内容如下:
USERID=SCOTT/TIGER
TABLES=(DEPT,EMP,BONUS)
FILE=C:
\ORACLE\f1.dmp
LOG=C:
\ORACLE\log1.log
QUERY=”WHEREDEPTNOIN(10,20,30)”
然后执行EXPORT工具时使用该参数文件(包含路径)。
该参数文件表示将SCOTT用户下的DEPT、EMP、BONUS表中部门号为10、20、30的数据卸出到f1.dmp文件中,卸出过程中的消息写到log1.log文件中。
执行命令如下:
C:
\EXPPARFILE=C:
\PAR1.TXT
8.2.2.4Oracle的恢复方法
与备份方法对应的恢复方法也可以分为物理恢复与逻辑恢复。
物理恢复是针对物理文件的恢复,逻辑恢复是用Oracle系统提供的IMPORT工具将EXPORT工具存储在一个专门的操作系统文件中的内容按逻辑单元(表、用户、表空间、数据库)进行恢复。
IMPORT工具和EXPORT工具必须配套使用。
物理恢复又可分数据库运行在非归档方式下脱机恢复、数据库运行在归档方式下的联机恢复。
非归档方式下脱机恢复是一旦组成数据库的物理文件中有一个文件遭到破坏,必须在数据库关闭的情况下将全部物理文件装入到对应的位置上,进行恢复。
上次备份后所做的所有操作都丢失,这些操作必须用手工方法进行恢复。
这种恢复方法适合数据库运行于非归档模式,只能恢复到最后一次备份点,并且要求DBA勤做备份,否则损失很严重。
归档方式下的联机恢复是一旦这些数据文件中某一个遭到破坏,将该数据文件的备份装入到对应位置,然后利用上次备份后产生的归档日志文件和联机日志文件进行恢复,可以恢复到失败这一刻。
这种恢复方法要求数据库必须运行在归档模式。
一、物理恢复
1.非归档模式下的物理恢复
假如组成数据库物理文件中的任何一个文件遭到破坏,在非归档模式下只能按下列方法进行整个数据库的恢复,恢复到上次备份点