oracle数据库备份与恢复 oracle数据库如何备份与恢复
大家好,今天给各位分享oracle数据库备份与恢复的一些知识,其中也会对oracle数据库如何备份与恢复进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
oracle如何备份单表并在新数据库恢复
冷备份
冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件、控制文件、联机REDO LOG文件,将其拷贝到另外的位置。此外冷备份也可以包含对参数文件和口令文件的备份,但是这两种备份是可以根据需要进行选择的。冷备份实际也是一种物理备份,是一个备份数据库物理文件的过程。因为冷备份要备份除了重做日志以外的所有数据库文件,因此也被成为完全的数据库备份。
过程:
冷备份数据必须是数据库不在open状态下。以下步骤会给出详细的过程:
◆(1):关闭DB: shutdown immediate;
◆(2):copy oradata目录下的所有文件,包括数据文件,控制文件,redo,等,还需要copy密码文件在目录ora92下的database中的pwd文件.全部copy到一个安全目录中。在sql下可以直接加一个 host然后使用dos命令。如host copy.............
◆(3):如果是操作系统的重新安装,只要是同样系统,同样数据库版本,是可以做冷备恢复。一下谈的是系统的重新安装后的步骤。
◆(4):正常安装oracle软件,只需要安装软件,可以不用建实例,建实例的时间也比较长,也没有必要。软件安装好以后,开始准备恢复。
◆(5):数据覆盖过去包括pwd文件,放在原来的目录,如果目录有所改变则需要另外建立控制文件,修改pfile。
◆(6):建立服务:使用oradim命令 cmd下 oradim-new-sid erp表示建立一个服务,sid为erp。关于oradim的命令另外给出专门解释。
◆(7):建立监听: net configuration assintant来建立,或用脚本建立并且开启。
◆(8):打开数据库:用oem也行,cmd下也行。
set oracle_sid=erp;
sqlplus"/as sysdba";
startup;
select* from v$instance;
至此,冷备份恢复成功。即使你现在用oem打开数据库时发现提示找不到sid,但实际上你已经成功了,此时只需要重启一下的你的服务器就可以了。
-------------------------------------------
热备份
热备份是在数据库运行的情况下,采用archive log mode方式备份数据库的方法。热备份要求数据库处于archive log模式下操作,并需要大量的档案空间。一旦数据库处于archive loh
模式,就可以进行备份了,当执行备份时,只能在数据文件级或表空间进行。
过程:
1.准备工作
由于在备份过程中,数据库仍然是打开的,所以要求正在复制的各个数据文件管理的表空间必须处于备份模式。备份完后再脱离备份模式。因此备份前必须将ORACLE数据库调整为归档模式。查看代码如下
查看当前数据库归档状态:ARCHIVE LOG LIST:以下为非归档
<img src="https://pic3.zhimg.com/8c8711b9cf0afbe3b2ae1142d329a02e_b.jpg" data-rawwidth="505" data-rawheight="130" class="origin_image zh-lightbox-thumb" width="505" data-original="https://pic3.zhimg.com/8c8711b9cf0afbe3b2ae1142d329a02e_r.jpg"/>
2数据库备份
2.1查询要备份表空间对应的数据文件的详细信息
select file_name from dba_data_files
where
tablespace_name='USERS';
2.2将表空间设为备份模式
ALTER TABLESPACE USERS BEGIN BACKUP;
2.3查看处于备份模式的数据文件:
select* from v$backup;
2.4使用操作系统命令备份表空间的数据文件
HOST COPY f:\BAK\ HOST COPY f:\oracle\oradata\orcl\*.dbf//将前面ORACLE数据库热备份的文件拷贝到系统目录中
2.5将表空间设置为正常模式
ALTER TABLESPACE USERS END BACKUP。
oracle数据库怎么备份恢复
一.理解什么是数据库恢复
当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故障后,希望能重构这个完整的数据库,该处理称为数据库恢复。恢复过程大致可以分为复原(Restore)与恢复(Recover)过程。
数据库恢复可以分为以下两类:
1.1实例故障的一致性恢复
当实例意外地(如掉电、后台进程故障等)或预料地(发出SHUTDOUM
ABORT语句)中止时出现实例故障,此时需要实例恢复。实例恢复将数据库恢复到故障之前的事务一致状态。如果在在线后备发现实例故障,则需介质恢复。在其它情况Oracle在下次数据库起动时(对新实例装配和打开),自动地执行实例恢复。如果需要,从装配状态变为打开状态,自动地激发实例恢复,由下列处理:
(1)为了解恢复数据文件中没有记录的数据,进行向前滚。该数据记录在在线日志,
包括对回滚段的内容恢复。
(2)回滚未提交的事务,按步1重新生成回滚段所指定的操作。
(3)释放在故障时正在处理事务所持有的资源。
(4)解决在故障时正经历一阶段提交的任何悬而未决的分布事务。
1.2介质故障或文件错误的不一致恢复
介质故障是当一个文件、一个文件的部分或磁盘不能读或不能写时出现的故障。文件错误一般指意外的错误导致文件被删除或意外事故导致文件的不一致。这种状态下的数据库都是不一致的,需要DBA手工来进行数据库的恢复,这种恢复有两种形式,决定于数据库运行的归档方式和备份方式。
(1)完全介质恢复可恢复全部丢失的修改。一般情况下需要有数据库的备份且数据库运行在归档状态下并且有可用归档日志时才可能。对于不同类型的错误,有不同类型的完全恢复可使用,其决定于毁坏文件和数据库的可用性。
(2)
不完全介质恢复是在完全介质恢复不可能或不要求时进行的介质恢复。重构受损的数据库,使其恢复介质故障前或用户出错之前的一个事务一致性状态。不完全介质恢复有不同类型的使用,决定于需要不完全介质恢复的情况,有下列类型:基于撤消、基于时间和基于修改的不完全恢复。
基于撤消(CANCEL)恢复:在某种情况,不完全介质恢复必须被控制,DBA可撤消在指定点的操作。基于撤消的恢复地在一个或多个日志组(在线的或归档的)已被介质故障所破坏,不能用于恢复过程时使用,所以介质恢复必须控制,以致在使用最近的、未损的日志组于数据文件后中止恢复操作。
基于时间(TIME)和基于修改(SCN)的恢复:如果DBA希望恢复到过去的某个指定点,是一种理想的不完全介质恢复,一般发生在恢复到某个特定操作之前,恢复到如意外删除某个数据表之前。
第二章.数据库恢复案例测试环境
2.1数据库环境
以下的所有案例都是通过测试经过,环境为:
OS:Windows 2000 Server
DB:Oracle 816
DBNAME:TEST
数据文件:
SQL> select file#,status,enabled,name from v$datafile;
FILE# STATUS ENABLED NAME
----------------------------------------------------------------
1 SYSTEM READ WRITE D:/Oracle/ORADATA/TEST/SYSTEM01.DBF
2 ONLINE READ WRITE D:/Oracle/ORADATA/TEST/RBS01.DBF
3 ONLINE READ WRITE D:/Oracle/ORADATA/TEST/USERS01.DBF
4 ONLINE READ WRITE D:/Oracle/ORADATA/TEST/TEMP01.DBF
5 ONLINE READ WRITE D:/Oracle/ORADATA/TEST/TOOLS01.DBF
6 ONLINE READ WRITE D:/Oracle/ORADATA/TEST/INDX01.DBF
控制文件:
SQL> select* from v$controlfile;
STATUS NAME
---------------------------------------------------------------------
D:/Oracle/ORADATA/TEST/CONTROL01.CTL
D:/Oracle/ORADATA/TEST/CONTROL02.CTL
D:/Oracle/ORADATA/TEST/CONTROL03.CTL
联机日志:
SQL> select* from v$logfile;
GROUP# STATUS MEMBER
---------------------------------------------------------------------
1 STALE D:/Oracle/ORADATA/TEST/REDO01.LOG
2 D:/Oracle/ORADATA/TEST/REDO02.LOG
3 STALE D:/Oracle/ORADATA/TEST/REDO03.LOG
2.2数据库备份脚本
冷备份脚本:
rem script:coldbak.sql
rem creater:chenjiping
rem date:5.8.2003
rem desc:offline full backup database
--connect database
connect internal/password;
--shutdown database
shutdown immediate;
--Copy Data file
!xcopy d:/Oracle/oradata/test/*.dbf d:/database/H/R;
--Copy Control file
!xcopy d:/Oracle/oradata/test/*.ctl d:/database/H/R;
--Copy Log file
!xcopy d:/Oracle/oradata/test/*.log d:/database/H/R;
--startup database
startup;
说明:
1、以上脚本在数据库关闭状态下备份数据库所有的数据文件,联机日志,控制文件(在一个目
录下),如果成功备份,所有文件是一致的;
2、没有备份参数文件,参数文件可以另外备份,没有必要每次都备份,只需要在改变设置后备份一次;
3、如果以上命令没有成功依次执行,那么备份将是无效的,如连接数据库不成功,那么肯定关闭数据库也不成功,那么备份则无效;
4、冷备份建议下人工干预下执行。
数据库OS热全备份脚本
rem script:hotbak.sql
rem creater:chenjiping
rem date:5.8.2003
rem desc:backup all database datafile in archive
--connect database
connect internal/password;
--archive
alter system archive log current;
--start
alter tablespace system begin backup;
!xcopy d:/Oracle/oradata/test/system01.dbf d:/databak/H/R;
alter tablespace system end backup;
alter tablespace rbs begin backup;
!xcopy d:/Oracle/oradata/test/rbs01.dbf d:/databak/H/R;
alter tablespace rbs end backup;
alter tablespace users begin backup;
!xcopy d:/Oracle/oradata/test/users01.dbf d:/databak/H/R;
alter tablespace users end backup;
alter tablespace tools begin backup;
!xcopy d:/Oracle/oradata/test/tools01.dbf d:/databak/H/R;
alter tablespace tools end backup;
alter tablespace indx begin backup;
!xcopy d:/Oracle/oradata/test/indx01.dbf d:/databak/H/R;
alter tablespace indx end backup;
--end
--bak control file
--binary
alter database backup controlfile to'd:/databak/controlbinbak.000';
--ascii
alter database backup controlfile to trace;
alter system archive log current;
说明:
1、热备份必须在数据库归档方式下才可以运行;
2、以上脚本可以在数据库运行状态下备份数据库所有的数据文件(除了临时数据文件),没有必要备份联机日志;
3、归档日志至少需要一次完整备份之后的所有日志;
4、如果以上命令没有成功依次执行,那么备份也是无效的,如连接数据库不成功,那么备份则无效。
RMAN备份只讲叙有恢复目录的情况,如果没有恢复目录,情形大致相似。以下是RMAN的热备份全备份的脚本:
# script:bakup.rcv
# creater:chenjiping
# date:5.8.2003
# desc:backup all database datafile in archive with rman
# connect database
connect rcvcat rman/rman@back;
connect target internal/virpure;
# start backup database
run{
allocate channel c1 type disk;
backup full tag'dbfull' format'd:/backup/full%u_%s_%p' database
include current controlfile;
sql'alter system archive log current';
release channel c1;
}
# end
说明:
1、数据库必须运行在归档模式下;
2、 RMAN将自动备份数据文件,运行可靠;
3、归档日志另外备份处理,但至少需要保存一次备份来的日志;
4、没有必要用RMAN做冷备份,效果不好。
以上举例说明了数据库的恢复案例的测试环境与部分备份测试脚本,其它的备份脚本可以根据以上脚本演变而来或在案例中加以说明。
数据库的自动实例将不加以说明,这里只举例说明媒体错误或人为错误造成的恢复可能。
以上包括以下案例都是在WINDOWS+Oracle816上测试验证的,在不同的操作系统与不同的数据库版本中略有差别。
oracle数据库如何备份与恢复
Oracle数据库的备份与恢复有三种标准的模式,大致分为两大类,备份恢复(物理上的)以及导入导出(逻辑上的)。物理备份又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style)和归档模式(Archivelog-style),通常,我们把非归档模式称为冷备份,而相应的把归档模式称为热备份。
冷备份是指在数据库关闭的情况下对数据文件、控制文件和重做日志文件进行拷贝。冷备份的优点是简单、快速、安全,缺点是需要停机维护,影响业务连续性。
热备份是指在数据库开启并处于归档模式下对数据文件进行拷贝。热备份的优点是不需要停机维护,不影响业务连续性,缺点是比较复杂、耗时、占用资源。
导入导出是指使用EXP/IMP或者数据泵技术将数据库中的对象或者数据导出到一个二进制文件中,并且可以将这个文件导入到另一个数据库中。导入导出的优点是灵活、方便、可移植,缺点是不能保证一致性、效率低、不能恢复系统对象。
OK,本文到此结束,希望对大家有所帮助。