首页数据库oracle数据库备份语句 备份表的sql语句oracle

oracle数据库备份语句 备份表的sql语句oracle

编程之家2026-05-22677次浏览

大家好,如果您还对oracle数据库备份语句不太了解,没有关系,今天就由本站为大家分享oracle数据库备份语句的知识,包括备份表的sql语句oracle的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

oracle数据库备份语句 备份表的sql语句oracle

对oracle数据库怎么进行备份急求解决,谢谢!

Oracle数据库的备份,要根据以下不同情况去考虑如何进行备份:

1、根据企业的业务形式-- 24 x 7不停机(银行、通讯等)与每天有一定时间可停机(商场);

2、根据企业的数据库规模--数据量的大小可适当考虑采用的备份方式;

3、根据Oracle数据库的运行方式--日志文件归档与非归档模式。

这里简单说一下两种不同情况所采用的备份方法。

1、企业 24 x 7是不停机--多数采用数据库以归档模式运行,并以逻辑备份和不完全备份相结合的方法。而逻辑备份可按系统方式和用户方式进行备份,而且考虑到备份介质的损坏可能性进行单双日备份。即每种备份留两套,单日一套双日一套。

oracle数据库备份语句 备份表的sql语句oracle

2、企业业务不是全天性的--可采用数据库以非归档模式运行,并以物理备份和逻辑备份相结合的方法。而逻辑备份可按系统方式和用户方式进行备份,而且考虑到备份介质的损坏可能性进行单双日备份。即每种备份留两套,单日一套双日一套。

注:逻辑备份-- EXP、IMP命令备份;物理备份--关闭数据库备份所有的系统文件;不完全备份--可脱机一些表空间进行备份(此方法用的少)。

oracle数据库怎么备份恢复

一.理解什么是数据库恢复

当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故障后,希望能重构这个完整的数据库,该处理称为数据库恢复。恢复过程大致可以分为复原(Restore)与恢复(Recover)过程。

数据库恢复可以分为以下两类:

1.1实例故障的一致性恢复

oracle数据库备份语句 备份表的sql语句oracle

当实例意外地(如掉电、后台进程故障等)或预料地(发出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 10g制定的夜间备份策略9步是: 1、删除旧的日志文件并重命名当前的日志2、删除所有RMAN备份文件3、执行一个0级RMAN备份4、创建克隆文件5、创建归档日志备份,包括恢复目录内务6、删除数据泵导出文件7、执行数据泵导出8、检查日志错误9、广播和/或发送简短错误描述的电子邮件1、删除旧日志文件并重命名当前的日志这是每天都要执行的,为所有的脚本创建一个日志文件是很好的实践,在步骤8中,我检查所有日志错误,因此重命名了当前日志,当它们被重命名后,就很容易参考旧的作业分辨出错误了,这些所有需要删除的最终是为了不引起空间问题。代码清单1:qgrep-l rman D:Oracleadmincommonbackuplogs*>>%LOGFILE%del/Q D:Oracleadmincommonbackuplogs*.oldlog3>>%LOGFILE%ren D:Oracleadmincommonbackuplogs*.oldlog2*.oldlog3>>%LOGFILE%ren D:Oracleadmincommonbackuplogs*.oldlog1*.oldlog2>>%LOGFILE%ren D:Oracleadmincommonbackuplogs*.log*.oldlog1>>%LOGFILE%提示:尽力自动清除日志文件,要记住这些命令是不容易的。2、删除所有RMAN备份文件这仅需要在0级RMAN备份之前执行一次,我们的RMAN备份在X:驱动器上执行,正确地说是X:RMAN。我们估算这个驱动器可以容纳下我们的0级备份、归档日志、归档日志备份和数据泵导出文件。每周清除一次RMAN文件基本上可以保证驱动器上有足够的空间存储下一周的备份。代码清单2:# Running these commands will show the files that will be deleted in the next step.FORFILES/p x:rman/m*.bks/d-0/c"CMD/C echo@PATH@FILE@FDATE.@FTIME">>%logfile%FORFILES/p x:rman/m*cfile*/d-0/c"CMD/C echo@PATH@FILE@FDATE.@FTIME">>%logfile%# These commands perform the actual deletion.FORFILES/p x:rman/d-0/c"CMD/C del*.bks">>%logfile%FORFILES/p x:rman/d-0/c"CMD/C del*cfile*">>%logfile%提示:一定要自动删除磁盘上的大文件。在一个不恰当的时间删除你将用光磁盘空间。X因子X:驱动器是这个备份的关键部分,我们定期在其他服务器或交替节点上克隆我们的生产数据库进行测试和开发。RMAN喜欢从它们的备份中获取它的文件,最简单的方法就是备份到磁带上,这种方法与你在服务器上执行克隆没什么区别,当你告诉RMAN你的目标数据库,它就直接为它需要的文件转到介质管理层(MML),我们使用磁带的问题是磁带不可靠或磁带驱动不可靠,我们的解决办法是备份到磁盘上,问题是它将中服务器相同的驱动器映射中来回地复制文件,我们需要做的是映射一个SAN驱动器到我们的生产服务器上,然后在启动时将我们的测试服务器映射到同一个SAN驱动器,我们可以在服务器命令行使用一个命令来完成这个任务,我们可以通过使用一个来自Windows资源套件中叫做AutoExNT的服务来解决这个问题,它允许我们在启动时运行一个批处理文件,我们可以将命令放在那里,现在生产和测试服务器都映射到同一个X:驱动器。X文件因子AutoExNT只能工作在32位服务器上,当你有64位服务器时问题就来了,不幸的是,Windows资源套件对64位服务器无效,因此无法使用AutoExNT,幸运的是,我们可以说服我们的开发人员在64位Windows上创建一个“启动”服务,让它与AutoExNT服务一样,无论怎样,我们让批处理文件在服务器启动时执行。3、执行一个0级RMAN备份这一步通常每周执行一次,我们有一些更大、更活动的数据库创建的数量巨大的归档日志,在恢复或克隆时,恢复数据库的时间将很长,在这些情况下,我们在一周内将不止执行一次0级备份,在0级RMAN备份中,我们执行非恢复目录维护,脚本叫做DBname_lvl_0_disk.rcv。代码清单3:#************* Configure controls for Recovery Manager*******************#***************** in case they have been changed************************configure controlfile autobackup on;configure controlfile autobackup format for device type disk to'X:rmanCFILE_%F.bks';configure channel 1 device type disk format'X:rmanBACKUPPIECE_%d_%U_%T_%s.bks' maxpiecesize 2048M;configure retention policy to recovery window of 34 days;#************* Perform weekly RMAN level 0 Database Backup***************backup as compressed backupset incremental level= 0 database;#************* Confirm level 0 Backup is valid***************************restore database check logical validate;第一个命令配置RMAN让控制文件和spfile自动备份,第二个命令指定RMAN用一种特定的格式给文件命名,本例中,备份到磁盘上的文件叫做“X:rmanCFILE_F%.bks”,第三个命令创建一个磁盘通道并命名为“1”,命名备份片“X:rmanBACKUPPICE_%d_%U_%T_%s.bks”以及任何一个备份片的大小不能超过2GB,第四个命令告诉恢复目录目标数据库的备份应该保留34天,第五个命令才是真正的执行备份,它告诉RMAN创建一个压缩的备份集,它真正可以容纳更多的备份片,它还指定了仅对数据库执行一个完整备份,没有备份归档日志,因为存储是最主要的问题,压缩备份对节省空间真正的有帮助,我们发现这是RMAN最有用的特性之一,最后一行的命令执行已经完成的备份检查,它读取备份文件并确认它们没有被破坏,我强烈建议不要跳过这一步,没有什么比在需要恢复一个数据库时发现一个或更多的文件不可用更糟糕的了。提示:只有当备份文件确认有效后你才可以使用它们,是的,事情就是这样!我已经试过多次在备份完成后但检查确认未完成之前的实验了。我使用一个Windows批处理文件调用RMAN 0级备份脚本,这个批处理文件叫做DBname_lvl_0_disk.bat。代码清单4:set NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SSset NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252set CURDIR=D:Oracleadmincommonbackupcd%CURDIR%rman target ID/pword@DBname catalog rcatID/rcatpword@rcatname log=logsDBname_lvl_0_disk.log@DBname_lvl_0_disk.rcvpage_on_backup.vbs DBname_level_0_disk.log page_DBname_level_0.log Dbname最前面两行设置操作系统的环境变量,我们更喜欢详细一点的日期掩码,05-DEC-2007 23:59:59"比"05-DEC-2007"好,日期格式在恢复过程中变得更重要了,设置NLS_LANG变量,移除所有数据库正在使用的字符设置疑惑,第三和第四行对于使用计划任务而言是很重要的,Windows需要直接指定RMAN脚本的位置,因此设置好目录并将脚本移动到那里,接下来,才真正的调用RMAN,需要同时登陆到target和catalog,在当前目录下一个独立的叫做“logs”的子目录下创建一个日志文件,以及调用列表4中的脚本代码,如果出现任何错误,一个VB脚本被调用呼叫支持人员,如果不出现错误,那么只会发送一封日志文件的电子邮件,在第9小节会有更多细节信息。4、创建克隆文件这是用RMAN备份自动“刷新”测试数据库最关键的一步,克隆文件批处理作业实际上创建了“复制数据库”语句,我们使用它克隆我们的生产数据库到我们的测试数据库上,下面是一个叫做create_TESTDB_clone_files.sql的在生产服务器上运行的SQL脚本文件。代码清单5: set echo off;set feedback off;set linesize 140;SET PAGESIZE 0;set trimspool on;ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MON-DD HH24:MI:SS';select checkpoint_change# from v$database;alter system archive log current;select sysdate from dual;--***********************************************************************--***********************************************************************--***********************************************************************--******************************* TESTDBSERVER**************************--******************************* TESTDBSERVER**************************--******************************* TESTDBSERVER**************************--***********************************************************************--***********************************************************************--***********************************************************************--TESTDB1spool TESTDBSERVERd$Oracleadmincommoncloneclone_to_TETSTDB1.rcvselect'duplicate target database to TESTDB1 until time'||''''|| sysdate||''';' from dual;spool off;--TESTDB2spool TESTDBSERVERd$Oracleadmincommoncloneclone_to_TETSTDB2.rcvselect'duplicate target database to TESTDB2until time'||''''|| sysdate||''';' from dual;spool off;--TESTDB3spool TESTDBSERVERd$Oracleadmincommoncloneclone_to_TETSTDB3.rcvselect'duplicate target database to TESTDB23until time'||''''|| sysdate||''';' from dual;spool off;--***********************************************************************--***********************************************************************--***********************************************************************--********************************* THE END*****************************--********************************* THE END*****************************--***********************************************************************--***********************************************************************--***********************************************************************alter system archive log current;select sysdate from dual;select checkpoint_change# from v$database;select sysdate from dual;exit;这个脚本在生产服务器上运行,spool输出到测试服务器,首先你注意的是NLS_DATE_FORMAT设置,与0级备份时设置方法一样;接下来,你看到我们已经选择了系统改变序号或SCN,数据库也可以通过使用SCN克隆和/或恢复,我们不再使用SCN进行数据库复制,我们不取消这一步是因为我们想查看日志文件中的SCN,假设在一个生产恢复情景下,SCN在一个额外的位置是可用的,在接下来的语句中,我们对当前的重做日志进行归档,我们从Oracle 8i开始就已经执行过了RMAN复制,但日志方面总有问题,这是唯一可以确定的最好的方法,我们每次都这样使用;接下来,我们选择sysdate,我们想在SCN下查看它,向下移动到spool语句,你看到一个为TESTDBSERVER编写的名叫clone_to_TESTDB.rcv的RMAN脚本,只有一行:代码清单6:duplicate target database to TESTDB1 until time'2007-DEC-05 19:55:00';你可以在你的测试数据库服务器上为每个测试数据库单独编写一个克隆脚本,正如你看到的,这就是我们所做的,我们有一部分生产数据库服务器不止安装有一个生产数据库,对那些我们有两个脚本,在每个生产数据库上为测试数据库创建一个克隆脚本。代码清单7:set NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SSset NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252set CURDIR=D:Oracleadmincommonbatchcd%CURDIR%sqlplus system/pword@DBNAME@create_TESTDB_clone_files.sql>logscreate_TESTDB_clone_files.log这个脚本的批处理文件非常简单,最前面的两行设置你的环境变量,第三和第四行用于任务调度,非常重要,windows需要直接指定SQL脚本的位置,因此需要设置好目录后,将脚本移动到目录中,接下来,SQLplus才真正被调用和运行脚本以创建克隆文件,在当前目录下的一个叫做logs的子目录中单独生成了一个日志文件。

OK,本文到此结束,希望对大家有所帮助。

数组词三声(数的拼音多音字组词)javascript技术介绍?javascript官方文档