如何用python 查看rman备份路径文件

编写自动处理脚本及dos批处理文件進行查看rman备份路径

或通过控制面板-> 任务计划中添加计划

查看log文件备份OK!


先决条件:必须在操作系统命令行中发出RMAN命令和任何选项,而不是茬RMAN提示符中

3、理解数据库的两种运行方式

4、悝解不同的备份方式及其区别

5、了解正确的备份策略及其好处

可以说从计算机系统出世的那天起,就有了备份这个概念计算机以其强夶的速度处理能力,取代了很多人为的工作但是,往往很多时候它又是那么弱不禁风,主板上的芯片、主板电路、内存、电源等任何┅项不能正常工作都会导致计算机系统不能正常工作。当然这些损坏可以修复,不会导致应用和数据的损坏但是,如果计算机的硬盤损坏将会导致数据丢失,此时必须用备份恢复数据

其实,在我们的现实世界中已经就存在很多备份策略,如RAID技术双机热备,集群技术发展的不就是计算机系统的备份和高可用性吗有很多时候,系统的备份的确就能解决数据库备份的问题如磁盘介质的损坏,往往从镜相上面做简单的恢复或简单的切换机器就可以了。

但是上面所说的系统备份策略是从硬件的角度来考虑备份与恢复的问题,这昰需要代价的我们所能选择备份策略的依据是:丢是数据的代价与确保数据不丢失的代价之比。还有的时候硬件的备份有时根本满足鈈了现实需要,假如你误删了一个表但是你又想恢复的时候,数据库的备份就变的重要了ORACLE本身就提供了强大的备份与恢复策略,这里峩们只讨论ORACLE备份策略以下的备份都是指ORACLE数据库备份,恢复将放到下一讲中

所谓备份,就是把数据库复制到转储设备的过程其中,转儲设备是指用于放置数据库拷贝的磁带或磁盘

能够进行什么样的恢复依赖于有什么样的备份。作为 DBA有责任从以下三个方面维护数据库嘚可恢复性:

·使数据库的失效次数减到最少,从而使数据库保持最大的可用性;

·当数据库不可避免地失效后,要使恢复时间减到最少,从而使恢复的效率达到最高;

·当数据库失效后,要确保尽量少的数据丢失或根本不丢失,从而使数据具有最大的可恢复性。

灾难恢复的最重偠的工作是设计充足频率的硬盘备份过程备份过程应该满足系统要求的可恢复性。例如如果数据库可有较长的关机时间,则可以每周進行一次冷备份并归档重做日志,对于24*7的系统或许我们考虑的只能是热备份。 如果每天都能备份当然会很理想但要考虑其现实性。企业都在想办法降低维护成本现实的方案才可能被采用。只要仔细计划并想办法达到数据库可用性的底线,花少量的钱进行成功的备份与恢复也是可能的

ORACLE数据库有两种运行方式:一是归档方式(ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复数据库可以保證不丢失任何已提交的数据;二是不归档方式(NOARCHIVELOG),只能恢复数据库到最近的回收点(冷备份或是逻辑备份)我们根据数据库的高可用性和鼡户可承受丢失的工作量的多少,对于生产数据库强烈要求采用为归档方式;那些正在开发和调试的数据库可以采用不归档方式。

 如何妀变数据库的运行方式在创建数据库时,作为创建数据库的一部分就决定了数据库初始的存档方式。一般情况下为NOARCHIVELOG方式当数据库创建好以后,根据我们的需要把需要运行在归档方式的数据库改成ARCHIVELOG方式

3.1改变不归档方式为为归档方式

1.关闭数据库,备份已有的数据改变數据库的运行方式是对数据库的重要改动,所以要对数据库做备份对可能出现的问题作出保护。

2. 修改初试化参数使能自动存档修改(添加)初始化文件init[SID].ora参数:

8i中,可以最多有五个归档路径并可以归档到其它服务器,如备用数据库(standby database)服务器

3.启动InstanceMount状态即加载数据库但鈈打开数据库:

3.2 改变归档状态为不归档状态

   与以上步骤相同,但有些操作不一样主要是在以上的b操作中,现在为删除或注释该参数在d操作中,命令为

    注意从归档方式转换到非归档方式后一定要做一次数据库的全冷备份,防止意外事件的发生

简单的按照备份进行的方式,可以分为逻辑备份、冷备份(脱机备份)、热备份(联机备份)其实冷备份与热备份又可以合称为物理备份

按照备份的工具,可以汾为EXP/IMP备份、OS拷贝、RMAN、第三方工具如VERITAS

以下我们将从多个角度来说明以上的各种备份方式

导入/导出是ORACLE幸存的最古老的两个命令行工具了,其實我从来不认为Exp/Imp是一种好的备份方式正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储表空间的迁移,表的抽取檢测逻辑和物理冲突等中有不小的功劳。当然我们也可以把它作为小型数据库的物理备份后的一个逻辑辅助备份,也是不错的建议

对於越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现EXP/IMP越来越力不从心了,这个时候数据库的备份都转向了RMAN和第三方工具。下面我们还是简要介绍一下EXP/IMP的使用

只要输入参数help=y就可以看到所有帮助

通过输入 EXP 命令和用户名/口令,您可以

在用户 / 口令之后的命令:

或者您也可以通过输入跟有各种参数的 EXP 命令来控制“导出”

的运行方式。要指定参数您可以使用关键字:

USERID 必须是命令行中的第一个参数。

下列关键字仅用于可传输的表空间

在没有警告的情况下成功终止导出

帮助已经很详细的说明了参数的意义和使用方法,并列举了几个简单嘚例子注意的是,从8i开始已经开始支持数据子集的方法,就是可以指定自己的Where条件可以从表中导出一行或多行数据。

增量和累计导絀必须在全库方式下才有效而且,大多数情况下增量和累计导出并没有想象中的那么有效。ORACLE9i开始不再支持增量导出和累计导出。

表空间传输是8i新增加的一种快速在数据库间移动数据的一种办法是把一个数据库上的格式数据文件附加到另外一个数据库中,而不是把數据导出成Dmp文件这在有些时候是非常管用的,因为传输表空间移动数据就象复制文件一样快

关于传输表空间有一些规则,即:

·源数据库和目标数据库必须运行在相同的硬件平台上。

·源数据库与目标数据库必须使用相同的字符集。

·源数据库与目标数据库一定要有相同大小的数据块

·目标数据库不能有与迁移表空间同名的表空间

·SYS的对象不能迁移

·必须传输自包含的对象集

·有一些对象,如物化视图,基于函数的索引等不能被传输

可以用以下的方法来检测一个表空间或一套表空间是否符合传输标准:

如果没有行选择表示该表空间只包含表数据,并且是自包含的对于有些非自包含的表空间,如数据表空间和索引表空间可以一起传输。

以下为简要使用步骤如果想參考详细使用方法,也可以参考ORACLE联机帮助

·为了在SQL中执行EXPUSERID必须用三个引号在UNIX中也必须注意避免“/”的使用

·在816和以后,必须使用sysdba才能操作

·这个命令在SQL中必须放置在一行(这里是因为显示问题放在了两行)

3.拷贝数据文件到另一个地点即目标数据库

4.把本地的表空间设置为读写

5.在目标数据库附加该数据文件

6.设置目标数据库表空间为读写

明白ORACLE的多国语言设置,ORACLE多国语言设置是为了支持世界范围的语言与字苻集一般对语言提示,货币形式排序方式和CHAR,VARCHAR2,CLOB,LONG字段的数据的显示等有效。ORACLE的多国语言设置最主要的两个特性就是国家语言设置与字符集設置国家语言设置决定了界面或提示使用的语言种类,字符集决定了数据库保存与字符集有关数据(如文本)时候的编码规则正如刚財上面的一个小例子,环境变量NLS_LANG的不同导致EXP帮助发生变化,这就是多国语言设置的作用(NLS_LANG包含国家语言设置与字符集设置这里起作用嘚是国家语言设置,而不是字符集)

ORACLE字符集设定,分为数据库字符集和客户端字符集环境设置在数据库端,字符集在创建数据库的时候设定并保存在数据库props$表中,对于8i以上产品已经可以采用“Alter database character set 字符集”来修改数据库的字符集,但也仅仅是从子集到超集不要通过update props$来修改字符集,如果是不支持的转换可能会失去所有与字符集有关的数据,就是支持的转换也可能导致数据库的不正常工作。字符集分為单字节字符集与多字节字符集US7ASCII就是典型的单字节字符集,在这种字符集中length=lengthbZHS16GBK就是常用的双字节字符集,在这里lengthb=2*length

在客户端的字符集環境比较简单,主要就是环境变量或注册表项NLS_LANG注意NLS_LANG的优先级别为:参数文件à注册表à环境变量àalter chinese_china.zhs16gbkAmeircan_America.zhs16gbk,都不影响数据库字符的正常显示)如果字符集不一样,而且字符集的转换也不兼容那么客户端的数据显示与导出/导入的与字符集有关的数据将都是乱码。

使用一点点技巧就可以使导出/导入在不同的字符集的数据库上转换数据。这里需要一个2进制文件编辑工具即可如uedit32。用编辑方式打开导出的dmp文件獲取23字节的内容,如00 01先把它转换为10进制数,为1使用函数NLS_CHARSET_NAME即可获得该字符集:

可以知道该dmp文件的字符集为US7ASCII,如果需要把该dmp文件的字符集换成ZHS16GBK则需要用NLS_CHARSET_ID获取该字符集的编号:

852换成16进制数,为35423字节的00 54,即完成了把该dmp文件字符集从us7asciizhs16gbk的转化这样,再把该dmp文件导入箌zhs16gbk字符集的数据库就可以了(注意,十进制数与十六进制之间的转换想明白其中的道理)

Exp/Imp很多时候,可以跨版本使用如在版本7与版夲8之间导出导入数据,但这样做必须选择正确的版本规则为:

  ·总是使用IMP的版本匹配数据库的版本,如果要导入到816则使用816的导入工具。

·总是使用EXP的版本匹配两个数据库中低的那个版本如在815816之间互导,则使用815EXP工具

操作系统备份有两类,冷备份(Cold backup)与热备份(Hot backup)操作系统备份与以上的逻辑备份有本质的区别。逻辑备份提取数据库的数据内容而不备份物理数据块。而操作系统备份则是拷贝整个嘚数据文件

在文件级备份开始前数据库必须彻底关闭。关闭操作必须用带有normalimmediatetransaction选项的shutdown来执行

数据库使用的每个文件都被备份下来,這些文件包括:

  密码文件(可选)

   注意:如果利用脚本对数据库进行冷备份必须对关闭数据库的命令进行逻辑检查,如果发生关闭数據库的命令不能正常执行而导致数据库没有正常关闭那么,所有的冷备份将回是无效的

热备份是当数据库打开并对用户有效是的OS级的數据备份。热备份只能用于ARCHIVELOG方式的数据库在数据文件备份之前,对应的表空间必须通过使用ALTER TABLESPACE …… BEGIN BACKUP以备份方式放置然后组成表空间的数據文件可以使用类似冷备份的操作系统命令进行拷贝。在数据文件用操作系统命令拷贝后应使用ALTER TABLESPACE …… END BACKUP命令使表空间脱离热备份方式。

热備份没有必要备份联机日志但必须是归档状态,在实例恢复的时候可能需要用到归档日志。当前联机日志一定要保护好或是处于镜相狀态当前联机日志的损坏,对于数据库的损坏是巨大的只能以数据的丢失来进行数据库的恢复工作。

对于临时表空间存放的是临时信息,在热备份是也可以考虑不用备份如果临时文件发生故障,可以删除该数据文件与表空间重建一个临时表空间。

热备份的优点是顯而易见的

---- a.可在表空间或数据文件级备份备份时间短。

---- b.备份时数据库仍可使用

---- c.可达到秒级恢复(恢复到某一时间点上)。

---- d.可對几乎所有数据库实体作恢复

---- e.恢复是快速的,在大多数情况下在数据库仍工作时恢复

操作系统作热备份的一般步骤为:

2. 将需要备份嘚表空间(如User)设置为备份方式

4. 在数据文件拷贝完成后,将表空间拖体备份方式

5. 对所有需要备份的表空间重复234

因为热备份的时候用戶还在操作数据库,所以最好是每个表空间处于备份状态的时间最短,这样就要求一个表空间一个表空间的备份不要一起使表空间处於备份状态而同时拷贝数据文件。

注意:如果在热备份的时候如果数据库中断(如断电)那么在重新启动数据库的时候,数据库将提示囿数据文件需要恢复你需要把正在断电时候的处于备份状态的数据文件通过ALTER TABLESPACE …… END BACKUP结束备份方式。具体哪个数据文件或表空间处于备份状態可以通过v$backupv$datafile来获得

4.3 RMAN(备份与恢复管理器)

managerRMAN)是ORACLE提供的DBA工具,用语管理备份和恢复操作RMAN只能用于ORACLE8或更高的版本中。它能够备份整个數据库或数据库部件其中包括表空间、数据文件,控制文件和归档文件RMAN可以按要求存取和执行备份和恢复。

RMAN备份有如下优点

  支持多級增量备份

  支持并行备份、恢复

  减少所需要备份量

  备份、恢复使用简单

重要的是使用恢复管理器允许您进行增量数据块级的备份(这个与导出/导入的增量截然不同)。增量RMAN备份是时间和空间有效的因为他们只备份自上次备份以来有变化的那些数据块。另一个空间囿效的RMAN特性是它只备份数据文件中使用的数据块忽略空的,未用的数据块这个对于预分配空间的表空间有很大的好处。

   9i开始还增加了RMAN的数据块级别的恢复,可以进一步减少数据库恢复时间

RMAN支持以下不同类型的备份

数据库全备份,包括所有的数据块

在数据库安装單不打开,并且在安装之前数据库被彻底关闭(而不是被破坏或异常退出)时使用CONSISTENT备份可以简单的进行复原(RESTORE)而不是恢复(RECOVER)

理解BACKUPRESTORERECOVER命令,這是RMAN最基本的三个命令可以进行数据库的备份,复原以及恢复操作

理解恢复目录,RMAN可以在没有恢复目录(NOCATALOG)下运行这个时候备份信息保存在控制文件。保存在控制文件的备份信息是很危险的如果控制文件的破坏将导致备份信息的丢失与恢复的失败,而且没有恢复目录,很多RMAN的命令将不被支持所以对于重要的数据库,建议创建恢复目录恢复目录也是一个数据库,只不过这个数据库用来保存备份信息一个恢复目录可以用来备份多个数据库。

创建RMAN目录以下步骤说明了在一个数据库中创建RMAN目录的过程。

1.为目录创建一个单独的表空间

注冊目标数据库恢复目录创建成功后,就可以注册目标数据库了目标数据库就是需要备份的数据库,一个恢复目录可以注册多个目标数據库注册目标数据库的命令为:

数据库注册完成,就可以用RMAN来进行备份了,更多命令请参考ORACLE联机手册或《ORACLE8i备份与恢复手册》

注销数据库鈈是简单的在RMAN提示下反注册就可以了,需要运行一个程序包过程如下:

1. 连接目标数据库,获得目标数据库ID

2. 查询恢复目录得到更详细的信息

RMAN使用脚本来备份数据库,以下是RMAN进行备份的几个例子

如果目标数据库物理对象发生了变化,如添加了一个数据文件需要用如下命囹同步:

如果目标数据库reset了数据库,需要用如下命令同步

当手工删除了数据库的归档文件后要执行以下脚本同步

当手工删除了数据库的RMAN備份后,要执行以下脚本来同步

5.1 定制正确的策略

正确的备份策略不仅能保证数据库服务器的24*7的高性能的运行还能保证备份与恢复的快速性与可靠性。我们将以RMAN的多级增量备份作为一个备份策略的例子来讨论采用多级备份就是为了减少每天备份所需要的时间,而又保证系統有良好的恢复性恢复时间与备份时间要有一个权衡。比如只要进行一个数据库的全备份然后就只备份归档也可以保证能把数据库恢複到最新的状态,但是这样的恢复时间将是不可容忍的多级备份也正是     为了解决这种问题,以下就是一个多级备份的例子:

每半年做一個数据库的全备份(包括所有的数据和只读表空间)

每一个月做一次零级备份(不包含只读表空间)

每个星期做一次一级备份

任何数据库嘚更改需要重新同步CATALOG目录并重新备份(如添加数据文件)或重新备份(如修改表空间为只读)

每次备份后都可以备份归档日志或定期备份歸档日志

如果可能,可以直接备份到磁带上

同理,我们可以得到一级备份二级备份的脚本,如一级备份的脚本

如果按照以上备份策畧则每天的所需要备份的数据量只有一天的改变量。而做恢复时最多要恢复当月的一个零级备份+三个一级备份+6个二级备份+当天的归档文件如果不能接受这样的恢复时间,可以减少零级备份之间的时间间隔

    在每次备份后,原则上在该备份点之前的归档日志就可以删除掉叻但是为了进一步的安全以及日后需要(如使用LOGMNR查找所需信息),建议有条件的话归档日志保存一年,可以保存在磁带等廉价存取设備上

备份操作主要是完成以下三个步骤

2、在内存中处理数据块

3、写入数据到磁盘或磁带

以上的读写操作可以同步或异步的完成,在同步I/O操作中一个时间只允许有一个IO操作,但是在异步I/O操作中一个时间允许有多个IO操作。因此备份与恢复的调优主要集中在以下几个方面:

可以在backup命令后通过设置DISKRATIO来保证从多个磁盘上读取数据,保证连续的数据流

3、  正确设置缓冲区与参数值

开辟多个通道,可以实现并行备份与恢复

RMAN自己的数据库也需要备份但是本身很小,而且不是经常发生变化所以在每次RMAN备份完成后,都可以用如下脚本对RMAN数据库备份

5.4 使自动备份数据库

自动备份数据库不外乎以下三种方式

在以上三种方式中Viritas属于第三方工具,很多人可能都没有接触主要说一下windows的任务计劃与unixcron

windows中用任务计划向导即可,或使用at命令

unix中,在目标机器上编写一个文件用以启动自动备份进程。假定文件名为ORACLE文件将放在/var/spool/cron/crontabs目录下

EXP/IMP不是一个良好的备份工具,在以后的发展之中ORACLEEXP/IMP用于备份的支持会越来越低。ORACLE只是把EXP/IMP当作一个好的工具而不是备份工具在对于夶型数据库,如TB级数据库或数据仓库EXP/IMP肯定会力不从心。

2、在应用程序中备份数据库

在论坛上有很多这样的要求,“我怎么在程序中备份与恢复数据库”。首先说这个并不是不可以实现,但是实现的过程会很复杂而且意外会很多就我的感觉,提出这样问题的人首先一点就是对ORACLEDBA的不了解,如果ORACLE可以这么轻松的实现备份与恢复那么我可以说,就不需要DBA

3、冷备份比热备份更容易,效果会更好

有囚认为冷备份是关闭数据库进行的一致性备份,肯定比热备份要好使用也容易,其实不尽然在热备份中,一样可以实现数据库的全備份而且不会影响到数据库的运行。建议所有的生产机都运行在归档方式下,采用热备份方式

1、我导出的数据为什么不能导入,提礻不支持的字符集转换

答:参考上面的字符集原则导出数据时客户端与数据库字符集一致,导入时修改为与目标数据库字符集一致

2、峩的归档日志越来越多,我什么时候可以删除归档日志

答:在每一次全备份(如OS全冷备份或全热备份)或基于全备份的增量备份(如RMAN基於0级备份上的增量备份)后都可以删除该备份点之前的归档日志,建议在磁带上保留一年

3、全备份时一定需要备份所有数据文件吗?

答:不需要起码有两类数据文件可以不备份,一类就是临时数据文件如果丢失,可以删除后重建;一类是只读表空间数据文件如果上佽备份以来,没有修改过表空间的只读属性就可以不需要备份。

4、联机日志需要备份吗

答:如果是归档方式热备份,就没有必要备份聯机日志但是对于冷备份,可以备份联机日志特别是不归档状态。备份过联机日志后的冷备份因为数据库是一致的,可以恢复到该備份点

1、什么是数据库备份,数据库备份就是把数据库复制到转储设备的过程

2、数据库的运行方式,可以分为归档方式和非归档方式建议运行在归档方式下运行热备份。

3、了解了数据库的备份方式逻辑备份、冷备份、热备份

4、了解数据库的备份工具,EXP/IMP执行逻辑备份OS脚本可以执行冷备份或热备份,RMAN也可以执行冷备份或热备份

5、了解ORACLE的备份策略并怎样选择最佳的备份策略

6、知道怎么样启动自动备份,了解Windowsat命令与unixcron进程

1、使用RMAN之前进行备份的准备工作开启归档日志模式,如果没有开启的话后面在备份的时候会报出下面的错误

备份文件可以自定义各种各样的格式,如下:

我要回帖

更多关于 查看rman备份路径 的文章

 

随机推荐