Oracle支持哪几种此类型文件不支持下载的物理文件备份

教你用Linux完成Oracle自动物理备份_老文章_赛迪网
教你用Linux完成Oracle自动物理备份
本文的目标是通过执行一Shell脚本来完成Oracle数据库自动备份的全过程,而且能够在当前目录下生成其压缩文件
发布时间: 18:54&&&&&&&&来源:&&&&&&&&作者:E剑
本文的目标是通过执行一Shell脚本来完成Oracle数据库自动备份的全过程,而且能够在当前目录下生成其压缩文件。具体实现步骤如下:  
  1.以Oracle用户身份登录到Linux系统下。  
  2.建立database.srcipt文件,以便生成备份数据库的一些参数信息并保存在文件database.parm中。  
  这些信息对于以后恢复数据库具有重要的参考作用,所以在物理备份的过程中,需要保存这些信息,也可以把其他一些重要的信息写在这个脚本里。  
  $vi database.srcipt
  spool database.parm
  --这是当前备份数据库的系统参数列表
  select * from v$
  --这是当前备份数据库的字符集部分参数
  select * from props$;
  --这是当前备份数据库数据文件存储位置及名称
  select * from v$
  --这是当前备份数据库控制文件存储位置及名称
  select * from v$
  --这是当前备份数据库日志文件存储位置及名称
  select * from v$
  --可以在这里添加其他一些重要信息
  --开始生成备份shell文件,可参考backup.sh
  spool off
  spool backup.sh
  select 'cp '||name || ' backup/' from v$
  select 'cp '||name || ' backup/' from v$
  select 'cp '||member || ' backup/' from v$
  spool off
  shutdown immediate
  3.修改上一步中生成的backup.sh文件,并执行它来完成数据库文件的操作系统备份。为清晰起见,将这段脚本命名为文件alterbackup.sh。  
  $vi alterbackup.sh
  echo “该脚本完成把数据库数据文件、控制文件、日志文件的复制到当前目录的过程”
  cat backup.sh|grep ‘cp /’>c.sh
  #该语句把backup.sh中所有以“cp /”开头的语句提取出来生成新的文件c.sh
  rm backup.sh
  mv c.sh backup.sh
  chmod +x backup.sh
  . backup.sh
  #注意:点号“.”与backup.sh之间有一空格  
  4.建立数据库启动脚本,以便完成备份之后启动数据库,将这段脚本命名为startup.script。 
  $vi startup.script
  spool StartStatus.readme
  --开始启动数据库
  startup
  --数据库启动完成,可以查看StartStatus.readme文件检查数据库启动情况
  spool off
  5.为节省磁盘空间和复制到其他存储位置,建立Shell文件gzip.script来完成备份数据文件的压缩。注意生成备份文件时,在文件名中注明时间。  
  $vi gzip.sh
  echo “开始进行备份文件的压缩过程”
  thedate=‘date + %Y.%m.%d.%H.%M’
  #注意:字符串前后都有一个反引号,不是单引号
  outfile=$thedate
  tar -cvf backup$outfile.tar backup/*
  #将备份到backup目录下的所有文件生成一档案文件
  gzip backup$outfile.tar
  #把档案文件进行压缩,以节省硬盘空间
  rm -R backup #删除那些没有压缩的文件  
  6.把上面第2步到第5步生成的内容组织成一个Shell文件begin.sh,但这之前还需要先运行以下命令:  
  $chmod +x alterbackup.sh
  $chmod +x gzip.sh
  $vi begin.sh
  echo “开始进行数据库的自动物理备份过程,该Shell将在当前目录下生成backup.gz文件,
  该文件中包含数据库的一些参数信息及数据库的物理文件……”
  mkdir backup
  sqlplus internal/oracle < database.srcipt
  . alterbackup.sh
  sqlplus internal/oracle < startup.script
  . gzip.sh
  echo “数据库自动进行物理备份过程结束,请在当前目录下检查backup.tar.gz”  
  7.增加数据库参数文件的备份语句。  
  数据库参数文件通常存储在“ORACLE/ADMIN/数据库名/pfile/”目录下,其文件命名规则为“init+数据库名.ora”,数据库名缺省名称为orcl,可根据数据库安装名称来进行修改。如果不知道该文件存储在什么位置,可使用下面命令进行查找:  
  $find $ORACLE_HOME -name ‘initorcl.ora’  
  该语句可能显示出/u01/app/oracle/product/8.1.7/dbs/initorcl.ora,由于在Linux中有一种链接文件,所以要查看显示出的文件是不是链接文件,如果是,还需要进一步查看其原始文件。  
  $ll /u01/app/oracle/product/8.1.7/dbs/initorcl.ora  
  本例中显示出该文件是一个链接文件,它指向/u01/app/oracle/admin/orcl/pfile/initorcl.ora。为此,可以修改第3步的alterbackup.sh,修改结果如下(粗体显示,该语句需要根据数据库安装情况进行修改):  
  chmod +x backup.sh
  cp /u01/app/oracle/admin/orcl/pfile/initorcl.ora backup/initorcl.ora
  . backup.sh
  #注意:点号“.”与backup.sh之间有一空格  
  8.在准备进行备份时,先使用“ls -l(或ll)”命令检查当前目录下,此时应该有这样几个文件:alterbackup.Sh,begin.sh,database.script,gzip.sh,startup.script。  
  此后,还应执行命令:  
  $chmod +x begin.sh
  如果一切完成,就可以执行begin.sh来完成备份过程了:  
  . begin.sh
  #注意begin.sh与前面点号之前有一空格。  
  以后每次需要做备份时,只需运行begin.sh即可。这里也可以使用crontab自动完成按计划备份,有关如何使用crontab,请参考相关资料,也可在网上查询,本文不再做介绍。  
  使用此方法进行物理备份过程,不仅备份了数据库的数据文件,也同时记录了数据库的一些重要信息(第2步的database.parm 文件中),这对于以后恢复数据是非常重要的。最后要提醒读者注意的是,本文提供的方法要求有足够大的剩余磁盘空间(尽管最后只保留了备份文件的压缩文件),这个缺撼留给读者去弥补。
关键词阅读:
1(共条评论)
2(共条评论)
3(共条评论)
4(共条评论)
5(共条评论)
降低上网资费迫在眉睫 企业应关注民心所向
日前,锐捷网络政府和交通行业部总经理肖广...
联系我们:
广告发布:
方案、案例展示:
京ICP000080号 网站-3
&&&&&&&&京公网安备45号Oracle的三种备份方式具有不同的恢复特性 - 教育信息化 - 中国教育和科研计算机网CERNET
字体选择:  
  由于Oracle数据库备份有三种方式,每种方式具有不同的恢复特性,因此应集成数据库与文件系统备份,集成逻辑备份和物理备份。
  一、备份策略
  在操作系统级,使用大容量磁盘阵列,通过磁盘映像技术使每一个数据库文件自动分布于每个物理磁盘。这样,当某个磁盘出现物理损坏时,操作系统会自动引发映像磁盘来取代失效的磁盘,保证数据库的正常运行。
  由于我们使用的是双服务器,因此在另一服务器上保留一个备份数据库。备份数据库与正在使用的数据库具有相同的参数状态,这样在数据库故障中,只需作必须的最少恢复,最大限度地缩短了恢复时间。
  在多个不同的物理磁盘上保持多个控制文件的备份。控制文件在数据库恢复期间用于引导Oracle,因此保持多个控制文件的备份,可以确保在出现磁盘故障后,能有可用的控制文件用于数据库恢复。
  使数据库运行在ARCHIVELOG(归档)方式下,归档日志存放于另一映像的逻辑磁盘上。   每晚进行一次联机备份操作,备份所有数据文件、所有归档日志文件、一个控制文件。   每周进行一次输出(Export)操作。
  二、恢复策略
  1.实例失败
  从实例失败中恢复是自动进行的。实例失败一般是由服务器失败引起的,当数据库实例失败后,重新启动服务器,启动数据库,Oracle检查数据文件和联机日志文件,并把所有文件同步到同一个时间点上。
  2.磁盘失败
  如果丢失的是控制文件,只要关闭数据库,从保留有控制文件的地方拷贝一份即可。
  如果丢失的是数据文件,可用前一天晚上的联机备份进行恢复,步骤如下:   (1)从备份中把丢失的文件存在原来位置。   (2)加载数据库   (3)恢复数据库   (4)打开数据库
  3.错误删除或修改对象
  在这种情况下,一般希望能追溯返回到错误发生前的那个时间点上。这叫做时间点恢复。完成恢复的步骤如下:   (1)从当前数据库输出(Export),输入(Import)到备用数据库,使备用数据库与当前数据库保持一致。   (2)向前滚动备用数据库到错误发生前的那个时间点。   (3)从备用数据库输出受错误影响的逻辑对象。   (4)使用上一步产生的输出文件输入那些受影响的对象到当前数据库。
  三、用户角色管理
  1.对所有客户端按工作性质分类,分别授予不同的用户角色。   2.对不同的用户角色,根据其使用的数据源,分别授予不同的数据库对象存取权限。
  基于以上的安全策略,可以防止非法用户访问数据库,限制合法用户操纵数据库的权限;可以使数据库在故障发生后,不会丢失任何数据,并能使数据库迅速恢复到故障发生前的那一时间点上,最大限度的保证数据的安全和整个系统的连续运行。  来源:赛迪网
页面功能 【】
版权所有:中国教育和科研计算机网网络中心
,,京ICP备,
| 有任何问题与建议请联络:用户名:weikle
文章数:44
访问量:17009
注册日期:
阅读量:1297
阅读量:3317
阅读量:445051
阅读量:1130772
51CTO推荐博文
坏块的发生,很罕见,但生产系统偶尔还是会出现。如果有物理备份,处理起来相对简单,直接进行块级recover即可,但如果只有逻辑备份呢?处理起来要分四种情况,在此总结一下:一、datafile的数据块坏了,在sql执行扫描到这个块的时候会报ORA-01578:ERROR at line 1:ORA-01578: ORACLE data block corrupted (file # 21, block # 12)ORA-01110: data file 21: '/u01/app/oracle/oradata/RWDB_production/T6.DBF'但是,这种坏块不会影响数据库重启,只是在重启到open阶段的时候会报:Thu Nov 20 10:39:00 CST 2014Corrupt Block Found&&&&&&&& TSN = 26, TSNAME = CORRUPT&&&&&&&& RFN = 21, BLK = 12, RDBA = &&&&&&&& OBJN = 591083, OBJD = 591083, OBJECT = USER_TAB, SUBOBJECT =&&&&&&&& SEGMENT OWNER = RWUSER, SEGMENT TYPE = Table Segmentdb在open的时候会扫描数据文件的状态,这里可以清楚地看到是什么类型的段、什么用户、什么对象出现了坏块。还可以用dbv工具进一步check:[oracle@BJ-TEST]/u01/app/oracle/admin/RWDB&dbv file=/u01/app/oracle/oradata/RWDB_production/T6.DBFDBVERIFY - Verification completeTotal Pages Examined&&&&&&&& : 25Total Pages Processed (Data) : 0Total Pages Failing&& (Data) : 0Total Pages Processed (Index): 0Total Pages Failing&& (Index): 0Total Pages Processed (Other): 11Total Pages Processed (Seg)& : 0Total Pages Failing&& (Seg)& : 0Total Pages Empty&&&&&&&&&&& : 13Total Pages Marked Corrupt&& : 1Total Pages Influx&&&&&&&&&& : 0Highest block SCN&&&&&&&&&&& :
(0.)这里也可以看到Total Pages Marked Corrupt为1,即有1个坏块。处理:这种类型的坏块,处理办法有很多,support上的建议办法如下:1、用DBMS_REPAIR.SKIP_CORRUPT_BLOCKS处理,即跳过坏块。2、用CTAS建一个临时表,上面坏了的表为user_tab,可建一个临时表user_tab_tmp3、将user_tab表重命名:alter table user_tab rename to user_tab_corrupt4、将user_tab_tmp改为生产系统正式表:alter table user_tab_tmp rename to user_tab5、重建user_tab表的索引这种恢复办法,那个坏块里面的数据会丢掉。如果是每天都进行逻辑备份,还可以将现在的user_tab与昨天逻辑备份里面的user_tab进行比对,以最大限度恢复数据。二、datafile的head块坏了(1号块)一个8k block大小的数据文件,我们用ultraedit打开,以16进制方式显示,其中01ff0是0号块,后面开始是1号块,即这个数据文件的head块。这个块坏了就相当危险,数据库重启会直接报错:SQL& conn /Connected to an idle instance.SQL&ORACLE instance started.Total System Global Area&
bytesFixed Size&&&&&&&&&&&&&&&&& 2100680 bytesVariable Size&&&&&&&&&&&&
bytesDatabase Buffers&&&&&&&&&
bytesRedo Buffers&&&&&&&&&&&&&&& 6287360 bytesDatabase mounted.ORA-01122: database file 24 failed verification checkORA-01110: data file 24: '/u01/app/oracle/oradata/RWDB_production/T9.DBF'ORA-01210: data file header is media corrupt可以看到,数据库打不开了。alert报下面的东西:Thu Nov 20 15:11:10 CST 2014ALTER DATABASE OPENRead of rdba: 0x (file 24, block 1) failed with ORA-01210.Hex dump of (file 24, block 1) in trace file /u01/app/oracle/admin/RWDB/udump/rwdb_ora_5850.trcCorrupt block relative dba: 0x (file 24, block 1)Bad header found during datafile header readData in bad block:&type: 49 format: 1 rdba: 0x&last change scn: 0x0 seq: 0x31 flg: 0x31&spare1: 0x0 spare2: 0x0 spare3: 0x0&consistency value in tail: 0x00000b01&check value in block header: 0x3131&block checksum disabledTrying reread from disk.Reread of rdba: 0x (file 24, block 1) failed with ORA-01210ORA-1122 signalled during: ALTER DATABASE OPEN...dbv也可以检测到:[oracle@BJ-TEST]/u01/app/oracle/admin/RWDB/bdump&dbv file=/u01/app/oracle/oradata/RWDB_production/T9.DBFDBVERIFY - Verification completeTotal Pages Examined&&&&&&&& : 25Total Pages Processed (Data) : 1Total Pages Failing&& (Data) : 0Total Pages Processed (Index): 0Total Pages Failing&& (Index): 0Total Pages Processed (Other): 10Total Pages Processed (Seg)& : 0Total Pages Failing&& (Seg)& : 0Total Pages Empty&&&&&&&&&&& : 13Total Pages Marked Corrupt&& : 1Total Pages Influx&&&&&&&&&& : 0Highest block SCN&&&&&&&&&&& :
(0.)如果半夜干升级割接(要重启服务器),遇到这种问题,身边又没有DBA,还是很棘手的,业务直接就会中断,如果是HA的系统,坏的datafile又刚好在磁阵上,那么通过切换也无法解决这个问题,因为oracle资源组就起不来。对于非归档模式的数据库,解决方法如下:SQL& ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/RWDB_production/T9.DBF' OFFLINE DROP;Database altered.SQL&Database altered.这里,先不管数据丢失与否,先启动了数据库再说,免得故障闹大!:)三、datafile的os head块坏了(0号块)什么是datafile的0号块?官方称之为操作系统的头块,里面的东西不是oracle写的,是操作系统记录的文件大小等文件系统相关的信息。0号块坏了,可以正常重启数据库,没问题。但是,如果哪一天遇到紧急问题需要重建控制文件,将会面临报错:ORA-27047: unable to read the header block of file对于0号块的检测,用前面的dbv根本检测不出来(dbv命令貌似不检测0号块),需要用dbfsize来检测:[oracle@BJ-TEST]/u02/backup&dbfsize /u01/app/oracle/oradata/RWDB_production/T8.DBF/u01/app/oracle/oradata/RWDB_production/T8.DBF: Header block magic number is bad这里会提示一个什么magic号坏了。解决方法:resize一下有问题的数据文件大小,os block head就会被重写,问题可以解决。alter database datafile '/u01/app/oracle/oradata/RWDB_production/T8.DBF' resize &new size&四、整个datafile都坏了(各种坏块的综合体)笔者曾遇到过一次,整个文件都坏了,这种问题,可看做是以上坏块情况的集体爆发。如:dbvfile=/data1/app/oracle/oradata/RWDB/IRDBRoamerTS_01.dbfTotal Pages Examined&&&&&&&& : 1926Total Pages Processed (Data) : 0Total Pages Failing&& (Data) : 0Total Pages Processed (Index): 0Total Pages Failing&& (Index): 0Total Pages Processed (Other): 0Total Pages Processed (Seg)& : 0Total Pages Failing&& (Seg)&: 0Total Pages Empty&&&&&&&&&&& : 0Total Pages Marked Corrupt&&: 1926Total Pages Influx&&&&&&&&&& : 0Highest block SCN&&&&&&&&&&& : 0 (0.0)这里可以看到,总共检测了1926个块,全坏了。如果遇到数据库重启,就无法open成功。如果有RMAN备份,这种情况就很简单,直接restore、recover坏的数据文件就行。如果没有物理备份,就要先用上面第二种情况的解决办法先把数据库打开,然后再恢复数据。恢复数据的方法,与第二种里面又有所不同,既然这个文件里的块都坏了,再skip哪个块就没意义了。恢复数据的步骤如下:1、看看这个dbf里面有哪些对象2、用最新的逻辑备份将上面的对象impdp进新的表空间(如果IRDBRoamerTS_01不是表空间下的唯一文件,也可以不用建新的表空间)本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)oracle三种备份方式及区别_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
oracle三种备份方式及区别
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩9页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 mysql 物理备份 的文章

 

随机推荐