当前位置:求职简历网 > 知识 > 正文

oracle数据库恢复

数据库的备份和恢复 [Oracle数据库的备份与恢复策略分析] 【摘 要】为了保证数据库的安全性和稳定性,通过对Oracle的备份以及恢复策略进行了分析和探讨,明确了数据库备份以及恢复技术在实际工

数据库的备份和恢复 [Oracle数据库的备份与恢复策略分析]

  【摘 要】为了保证数据库的安全性和稳定性,通过对Oracle的备份以及恢复策略进行了分析和探讨,明确了数据库备份以及恢复技术在实际工程项目当中的应用,通过分析数据库备份的实际需求,同时选择了合理的数据备份策略以及数据恢复策略,采取了有效的数据库的管理和维护策略,有效保证了数据库中的相关数据以及整个系统的安全性和稳定性,为类似数据库的备份以及恢复策略提供了可供参考的经验。
  【关键字】Oracle数据库;备份;数据;恢复;策略
  对于企业而言,数据库中的数据是重要的数据资源,也是企业得以持续总结和发展的重要的要素,由此保证相应数据库的安全性和稳定性有着十分重要的影响。 随着数据库内数据量的逐渐增加,并且数据库发展以及运行所面临的环境也日益复杂,数据库中数据的安全性以及相关系统运行的稳定性对企业的发展尤为重要。数据库中的数据难以避免地受到了外界的侵袭,例如网络、硬件以及系统等方面的故障,甚至自然灾害也将导致则整个系统的崩溃,数据丢失,数据库中存储过程中的失误将给企业的发展带来严重的影响甚至巨大的损失,为了有效避开或者减少这些无法预测损失的到来,建立一系列安全稳定可靠的数据备份系统尤为重要。
  1 建立备份策略
  1.1 数据备份需求
  (1)良好的可扩展能力
  随着企业的发展和项目管理以及建设的持续发展和升级,企业数据库中的数据量将日益增长,所使用的数据库也应具有数据的扩展和升级的空间和可能。
  (2)备份数据的可恢复性
  为保证企业内部数据库的规范统一以及集中安全的数据恢复和备份的管理,相应的数据备份以及恢复策略应保证所备份的数据的可靠性以及可恢复性,为系统数据的恢复奠定了良好的基础。
  (3)保持业务流程的连贯性
  数据备份和恢复系统要以维持企业基本的业务流程和体系为基础,在保证了系统业务连续性的前提下开展数据库的数据备份,避免了数据存储设备时间较长对企业系统的使用和相关项目的运行造成影响。
  1.2 备份设备的选型
  在对PCEDM数据库备份需求分析的基础上,使用IBM的TSM作为备份数据备份的支持。TSM软件管理软件系统,是为企业级别的数据以及系统安全设计,以解决企业级数据和系统的安全性,为数据的备份提供解决方案,为石油、金融、电信管理和其他许多大型企业解决了数据的备份和管理问题。 TSM的管理结构,其高度的可扩展性和广泛的平台支持,集中式,自动化的存储管理等方面的优势,提供高效,自动,可扩展的备份管理系统。TSM专有的二进制格式,每个数据备份和恢复加密的数据传输格式,TSM自动CRC数据校验,从而保证了数据备份和恢复过程的完整性和安全。
  2 制定备份策略
  通过详细分析Oracle数据库的存储结构、数据库的运行模式、数据存储文件、数据增长的速度和数据增长密度等实际状况,结合几个备份Oracle数据库的优点和缺点分析,数据的备份策略表示如下:
  2.1 使用RMAN与冷备份、逻辑备份相结合。使用Oracle数据库本身的RMAN和冷备份以及逻辑备份的方式结合起来,其中,Oracle数据库所提供的备份方式是主要的备份方式,而冷备份,逻辑备份作为辅助备份。
  2.2 RMAN 备份包括全备份和增量备份 2 种方式。使用备份数据量小,低差异增量备份。在进行了一次级别为n的Differential增量的备份过程中,RMAN备份仅仅将那些最近一次等级等于或小于增量备份n相比,产生变化的数据块进行备份。差异增量备份策略RMAN的方法,设定在每个星期天,星期三0级备份数据库和日志文件的备份,周一,周二,周四,周五,周六为第一级增量备份和日志文件的备份。
  2.3 备份触发方式,在Unix预定时间以及计划内启动。构建系统的CRON任务,根据备份策略编辑命令,在确定的时间内起动文件以及备份计划。
  3 数据备份方案的具体实施
  备份存储设备使用的磁盘阵列和磁带库的组合方式。TSM备份存储池,并最终利用RMAN备份的数据进行备份的IBM Ultrium3584磁带库EMC CX700磁盘阵列空间分割出的一部分作为备份的存储区域。数据库服务器放置在本地磁盘系统进行数据库冷备份以及逻辑备份过程中所产生的备份文件。
  3.1 冷备份
  在数据库以TRANSACTIONAL,IMMEDIATE 或 NORMAL 方式关闭后进行的数据备份称为冷备份或脱机备份,所以得到的是一个备份的一致性。在数据库关闭,操作系统的所有订单数据文件,控制文件和联机日志文件,初始化参数文件等进行备份,冷备份副本。一旦数据库发生故障,可以将这些文件拷贝覆盖原始文件的位置。这个备份数据库,它可以返回到之前的状态。 由于PCEDM数据库需要,以确保7天24小时运作,冷备份必须在封闭的数据库进行。冷备份在正常的服务维修期间进行每一年两次的备份。使用冷备份具有一致性的优势,可以保证系统恢复的迅速。
  3.2 逻辑备份
  逻辑备份使用Oracle导出工具将数据库中的对象模型得出的二进制文件,有一个需要重用Oracle导入工具将模型的二进制文件导入到对象数据库。基于整个数据库备份的逻辑模式,用户模式或表模型可以将数据输出,更灵活。对于一些重要的数据可以作为辅助备份方式。通过使用不同操作系统平台,以及不同的数据库版本之间进行了数据库中数据的迁移,这成为了数据库物理备份的补充形式。
  3.3 RMAN 备份
  RMAN是Oracle提供的外部工具,专门用于数据库备份和恢复操作。通过在RMAN备份系统中启动Oracle服务进程完成备份的任务。创建RMAN的备份的具体步骤如下:
  (1)在数据库服务器上安装TSM客户端,选择相关文件进行编辑,设置DSMI_ORC_CONFIG,TDPO_ PSWDPATH参数,建立RMAN备份和TSM备份管理软件系统的连接。
  (2)创建RMAN目录数据库备份恢复,以保存备份的索引信息。
  (3)RMAN恢复管理器,同时开始在目标数据库的连接。
  (4)目标数据库的注册。
  (5)修改RMAN默认的配置参数。 CONFIGURE命令可以用来改变默认的RMAN设置,如配置自动通道,在指定的备份保留策略,激活或屏蔽备份优化功能。
  (6)创建备份脚本。
  4 Oracle 数据库恢复
  4.1 RMAN 的完全恢复
  在使用RMAN的完全恢复,在线和归档重做日志文件中的所有记录将被用于恢复数据库,从备份中恢复已损坏的文件,然后应用日志文件,将数据文件恢复到当前的时间。
  4.2 RMAN的不完全恢复
  通过RMAN中的不完全恢复数据库,将数据库恢复到指定的时刻或状态,通过将指定的SCN或者应用指定日期顺序归档重做日志之后的状态,也就是从时间、SCN或日志这三种方式中选择一种方式作为恢复终止的标记。
  5 结语
  实践证明,这种设计的备份策略,实现真正意义上的数据备份自动化管理,使系统的管理从传统的繁琐的手工备份中解放出来,提高工作效率和工作质量;有效避免了人为错误,提高数据备份的安全性和可靠性;减少了数据库的I / O操作,提高了数据备份恢复的速度以及数据备份的有效性。与此同时,也使备份系统具有良好的可扩展性,能够满足当前和今后几年的业务发展的实际需求。
  参考文献:
  [1]张自辉. ORACLE数据库的备份方法和策略[J]. 吉首大学学报(自然科学版), 2009,(01) .
  [2]安亚强. Oracle备份与恢复及故障研究[J]. 内蒙古煤炭经济, 2009,(04) .
  [3]王立新. Oracle数据库备份与恢复策略浅析[J]. 才智, 2009,(28) .
  [4]杨志彬. Oracle数据库备份策略[J]. 电脑知识与技术, 2009,(17) .


Oracle数据库的备份及恢复策略研究

   多工联机重作日志文件   每个数据库实例都有其自己的联机重作日志组 在操作数据库时 Oracle首先将数据库的全部改变保存在重作日志缓冲区中 随后日志记录器进程(LGWR)将数据从系统共用区SGA(System Global Area)的重作日志缓冲区写入联机重作日志文件 在磁盘崩溃或实例失败时 可以通过与之相关的联机重作日志来保护数据库 将损失降至最低 但Oracle在默认的方式下只创建一组重作日志文件(每一组只有一个项目文件) 为了减少丢失这些重要的重作日志文件的危险 因此需要对其进行镜像拷贝   在Oracle级多工联机重作日志文件 即增加多个文件到每个组以便镜像数据 这样I/O故障或写丢失只损坏一个拷贝 从而保证了LGWR后台进程至少能够向一个成员写入信息 数据库仍然可以继续运行 同时应保证日志组的成员不应驻存在同一物理设备上 因为这将削弱多重日志文件的作用    镜像拷贝控制文件   控制文件描述通用的数据库结构 它存储了大量数据库状态信息 包括物理结构和联机重作日志文件在当时的名称 位置 状态 控制文件在数据库启动时被Oracle实例读取 保持打开并随着操作而文件内容更新 直到实例关闭为止 在它打开的过程中能够同步需要恢复的信息 包括检查点信息 因此若损坏或丢失了控制文件 Oracle将不能继续工作 因此应在系统中保持控制文件的多个拷贝 且这些拷贝应置于安装于不同磁盘控制器下的不同磁盘设备中   由于Oracle没有提供对控制文件多工的完整支持 因此应在对控制文件使用操作系统或硬件镜像 即在修改初始化文件的control_files参数后重新启动数据库前 应将控制文件复制到定义的新位置 否则数据库启动时将会出错    激活归档进程   当数据库运行于NOARCHIVELOG模式下时 只能在完全关闭数据库后进行数据库的一致备份 并且同时禁用了联机重作日志的存档 这样在Oracle实例失败时只能将数据库修复到最近的完整数据库备份时的那一点上 不能在失效点处对实例进行恢复 而在ARCHIVELOG模式下 数据库不仅可以进行一致备份 还可以在数据库打开的情况下进行联机备份 通过数据库的备份和联机与存档的重作日志文件 用户可以恢复所有已提交的事务 并允许将数据库恢复到指定的时间 SCN或日志系列号处 增大了恢复的灵活性 减少了故障时的数据丢失 因此数据库应运行于ARCHIVELOG模式   在ARCHIVELOG模式下为了防止文件损坏和介质故障 应把日志归档到不同的磁盘上 这可以通过在初始化文件中为归档重作日志指定多个目标实现    数据库实施较大改变时备份   因为控制文件中保存了数据库的模式结构信息 因此在对数据库进行较大改变(包括改变表结构 增加 删除日志文件或数据文件等)时应立即备份控制文件及相应的数据文件    使用RESETLOGS选项打开数据库后进行备份   在以RESETLOGS选项打开数据库后 应对整个数据库进行脱机或联机的备份 否则将不能恢复重置日志后的改变   当以RESETLOGS选项打开数据库时 Oracle将抛弃恢复中没有应用的重复信息 并确保永远不再运用 同时还将初始化控制文件中关于联机日志和重作线程的信息 清除联机日志中的内容 因此 RESETLOGS前的归档日志的序列号将与RESETLOGS后的Oracle控制文件的要求值不相符(备份文件中的检查点比控制文件中的检查点旧) 即在恢复中不能应用以前的归档日志文件 从而导致RESETLOGS操作之前的备份在新形体中无用    避免备份联机重作日志文件   由于文中提出了多工联机重作日志文件且数据库运行于ARCHIVELOG模式 ARCH进程能够将联机重作日志归档 因此不必对其进行备份 若用备份的联机重作日志文件重建它 可能会引起日志文件序列号的混乱 从而破坏数据库 得到适得其反的结果    重置联机日志   在进行了不完全恢复或用备份控制文件进行恢复后 应重置联机日志   为了确保数据库的一致性 必须保证在恢复后所有数据文件都恢复到同一个时间点 但不完全恢复可能导致数据文件中具有一个与其它文件不同的检查点 导致数据库的一致性受到破坏 同样 备份的控制文件中保存的SCN和计数器与当前日志文件中的值可能不同 从而也破坏了数据库的一致性 因此应在进行完上述两项操作后重置联机日志    数据库的逻辑备份   以上所述备份都为物理备份 是实际物理数据库文件从一处拷贝到另一处的备份 除此之外还可使用Oracle提供的导出实用程序进行数据库的逻辑备份 Oracle同时还提供了相应的导入实用程序重建逻辑备份中保存的信息   逻辑备份只拷贝数据库中的数据 而不记录数据位置的备份过程 它利用SQL语句 从数据库中导出数据到一个存放在合适位置的外部文件中 同时并可检测到数据块的损坏 因此可用其作为物理备份的补充 备份策略   考虑到如今大部分信息系统每周的业务是 × 操作 因此采用联机备份 否则可每隔一定时间进行一次脱机备份   应用上述规则 可得出下述典型的备份策略   ①镜像拷贝重作日志文件   ②镜像拷贝控制文件   ③激活归档进程 即以ARCHIVELOG模式操作数据库   ④每天进行数据库的部分联机备份(每天进行数据库的完全热备份将无畏地增加数据库的负担且没有必要 同时也增加了数据库恢复时的灵活性)   ⑤每隔一周或几周进行一次数据库的逻辑备份    实际项目应用   当数据库中的文件达到一定数量后 DBA可能记不住该备份的文件的名或位置 因此 若能使备份过程自动化可有效地减轻DBA的负担 同时不会遗漏应备份的文件 应用自动批处理文件及脚本文件可实现备份 恢复的自动化 下面简介了在实际项目开发中应用本文所提出的自动备份 恢复策略 通过实际应用 证明了该策略的正确性和可行性   ( )下述脚本实现联机重作日志的多工   connect 账户名/密码 alter database ktgis add logfile member 日志文件的存储位置 to group 联机日志组号; shutdown immediate startup pfile=初始化文件的存放位置 exclusive mount; 装载数据库且不打开 alter database archivelog; 激活归档进程 alter database open; exit   ( )下列VB代码自动建立联机备份的批处理文件及相应的脚本文件   Set adoTmp = objConnect Execute( select tablespace_name from sys dba_data_files ) 得到数据库中的表空间名 Dim lnum As Long Dim lnum As Long lNum = FreeFile Open 自动备份批处理文件路径 For Binary As lNum lnum = FreeFile Open onlinebegin sql For Binary As lnum onlinebegin sql为设置表空间进入热备份模式的脚本文件文件名 lnum = FreeFile Open onlineend sql For Binary As lnum onlinebegin sql为结束表空间热备份模式的脚本文件文件名 strTmp = connect 账户名/密码 & Chr( ) & Chr( ) Put lnum strTmp strTmp = shutdown immediate & Chr( ) & Chr( ) Put lnum strTmp strTmp = startup pfile=初始化文件的存放位置exclusive mount; & Chr( ) & Chr( ) Put lnum strTmp strTmp = alter database archivelog; & Chr( ) & Chr( ) Put lnum strTmp strTmp = alter database open; & Chr( ) & Chr( ) Put lnum strTmp strTmp = connect 账户名/密码 & Chr( ) & Chr( ) Put lnum strTmp strTmp = Oracle服务管理器路径 & @ & onlinebegin sql & Chr( ) & Chr( ) 在服务管理器中执行脚本文件onlinebegin sql Put lNum strTmp Do While Not adoTmp EOF Set adoTmp = objConnect Execute( select file_name from sys dba_data_files where tablespace_name= & adoTmp Fields( ) & ) 得到当前表空间所对应的所有数据文件名 通过循环即可得到所有表空间所对应数据文件名 若只备份指定的表空间 可指定表空间名从而得到其对应的物理数据文件 strTmp = alter tablespace & adoTmp Fields( ) & begin backup; & Chr( ) & Chr( ) 将表空间置于热备份模式 Put lnum strTmp strTmp = Oracle的ocopy exe工具全路径 & adoTmp Fields( ) & & 备份文件存放路径 & Chr( ) & Chr( ) Put lNum strTmp strTmp = alter tablespace & adoTmp Fields( ) & end backup; & Chr( ) & Chr( ) 表空间恢复正常模式 Put lnum strTmp adoTmp MoveNext Loop strTmp = Oracle服务管理器路径 & @ & onlineend sql & Chr( ) & Chr( ) 在服务管理器中执行脚本文件onlineend sql Put lNum strTmp strTmp = exit & Chr( ) & Chr( ) 退出服务管理器 Put lnum strTmp strTmp = alter system switch logfile; & Chr( ) & Chr( ) 强制日志转换 使Oracle创建一个归档日志文件 Put lnum strTmp strTmp = exit & Chr( ) & Chr( ) Put lnum strTmp Close Set adoTmp = Nothing Set adoTmp = Nothing   运行得到的自动批处理文件 即可自动进行数据库的联机备份   ( )在从备份中恢复数据文件后 执行下列脚本将数据库的恢复程序   connect账户名/密码 shutdown abort startup mount pfile=初始化文件的存放位置; 装载数据库 set autorecovery on; 打开自动恢复 recover database; alter database open; 打开数据库    结束语 lishixinzhi/Article/program/Oracle/201311/18527


重装系统后,怎么恢复oracle数据库?

  任何软件都有可能在有意或无意的情况下被重新安装,如Oracle重装后数据库怎么恢复呢?情况发生在你是无意的情况下!ORACLE数据库恢复的方法我们经常会用到,下面就为您介绍重装系统后ORACLE数据库恢复的方法,希望对您学习ORACLE数据库恢复方面能有所帮助。\x0d\x0a\x0d\x0a  我的电脑突然挂了,不得不重装系统,不过我的ORACLE装在了D盘,所有的文件都还在,我相信一定能够恢复,直到搞定工作,我才开始整我的数据库,花了两天时间,终于恢复了,庆祝一下,同时总结一下,希望有遇到同样问题的朋友能够快速搞定此类问题\x0d\x0a\x0d\x0a  第一种:\x0d\x0a\x0d\x0a  首先,备份数据库(X:\oracle\oradata)下的数据文件,重新命名即可(否则装数据库的时候会提示sid已存在)。重新安装数据\x0d\x0a库,当然数据库的名字就是你要恢复的名字。安装完成后,打开控制面板,停止oracle的服务。把(X:\oracle\oradata)下新生成的文件\x0d\x0a改名,把原先目录下的文件恢复名字。再重新启动oracle服务和监听。用sys/as dba \x0d\x0a登陆数据库,可能会提示权限不够(ora-01031)修改(X:\oracle\ora92\network\admin \x0d\x0a)文件夹下的sqlnet.ora文件,添加SQLNET.AUTHENTICATION_SERVICES= \x0d\x0a(NTS),增加权限。登陆进去后,打开table提示不能打开。打开common页,执行命令alert database \x0d\x0aopen;这时再刷新table,发现原先的表可以打开了。恢复成功了。再用原先数据库的普通用户进入。发现一切正常。至此,大功告成。\x0d\x0a\x0d\x0a  第二种:\x0d\x0a\x0d\x0a  1、首先,将原来的ORACLE文件夹改名,原来的路径是D:/oracle.我暂时改成D:/oracle_old.找来ORACLE(我用\x0d\x0a的是ORACLE 9I)安装光盘,将ORACLE安装在原来安装的目录下,这样恢复起来更加方便,主要是注册表的内容不用修改。\x0d\x0a\x0d\x0a  2、安装完了之后,系统中又有一个可以使用的ORACLE了。这个时候要做的就是将原来的文件和数据恢复过来。第一步,先关闭ORACLE的所\x0d\x0a有已经启动的项目,在"服务"里面逐一关闭。然后,将安装目录改名。我现在用的是D:/oracle.改成D:/oracle_new.再将D:\x0d\x0a/oracle_old改成D:/oracle. \x0d\x0a这样理论上说从物理层面恢复了ORACLE了。但是我们发现,现在还不能启动ORACLE的监听程序和服务程序。我们还要从逻辑上解决。\x0d\x0a\x0d\x0a  3、在dos环境下执行一个删除命令:oradim -delete -sid mm,其中mm为创建oracle时候创建的实例 \x0d\x0a建议执行这个命令后重新启动机器,重启后就可以建立和原来实例名相同的实例。当然你懒,不重新启动也可以,但是你的实例名就不能和原来的一样了。\x0d\x0a\x0d\x0a  4、在dos环境下执行命令 oradim -new -sid mm -startmode a -pfile "D:\oracle\admin\mm\pfile\initmm.ora "创建一个新的实例,其中 "mm"为新数据库的名称。\x0d\x0a\x0d\x0a  5、启动服务,先打开数据库,然后可以用以前的用户名和密码登陆进去。 \x0d\x0a要补充的是,一般的ORACLE数据库的监听程序都是用电脑的名称来识别地址的,而不是127.0.0.1或者localhost.所以,如果我们安装系\x0d\x0a统的时候用的是不同的电脑名称(比如我原来用的是wm_mm.重新安装后用的是wenming_mm),那么我们还有一个工作要做,就是修改文件 \x0d\x0alistener.ora.将里面的相关的东西改过来就可以了。\x0d\x0a\x0d\x0a  需要耐心、细心,可能在一步里有一个细小的差别就会出些古怪的错误提示,有时需要根据错误提示采取策略,总之原理是,先装一个一模一样的ORACLE,安装目录、数据库名称都一样,这样保证注册表里不用更改;再覆盖物理文件,最后重新实例化,打开数据库就可以进去了。


重装系统怎么恢复oracle数据库

  任何软件都有可能在有意或无意的情况下被重新安装,如Oracle重装后数据库怎么恢复呢?情况发生在你是无意的情况下!ORACLE数据库恢复的方法我们经常会用到,下面就为您介绍重装系统后ORACLE数据库恢复的方法,希望对您学习ORACLE数据库恢复方面能有所帮助。

  我的电脑突然挂了,不得不重装系统,不过我的ORACLE装在了D盘,所有的文件都还在,我相信一定能够恢复,直到搞定工作,我才开始整我的数据库,花了两天时间,终于恢复了,庆祝一下,同时总结一下,希望有遇到同样问题的朋友能够快速搞定此类问题

  第一种:

  首先,备份数据库(X:\oracle\oradata)下的数据文件,重新命名即可(否则装数据库的时候会提示sid已存在)。重新安装数据
库,当然数据库的名字就是你要恢复的名字。安装完成后,打开控制面板,停止oracle的服务。把(X:\oracle\oradata)下新生成的文件
改名,把原先目录下的文件恢复名字。再重新启动oracle服务和监听。用sys/as dba
登陆数据库,可能会提示权限不够(ora-01031)修改(X:\oracle\ora92\network\admin
)文件夹下的sqlnet.ora文件,添加SQLNET.AUTHENTICATION_SERVICES=
(NTS),增加权限。登陆进去后,打开table提示不能打开。打开common页,执行命令alert database
open;这时再刷新table,发现原先的表可以打开了。恢复成功了。再用原先数据库的普通用户进入。发现一切正常。至此,大功告成。

  第二种:

  1、首先,将原来的ORACLE文件夹改名,原来的路径是D:/oracle.我暂时改成D:/oracle_old.找来ORACLE(我用
的是ORACLE 9I)安装光盘,将ORACLE安装在原来安装的目录下,这样恢复起来更加方便,主要是注册表的内容不用修改。

  2、安装完了之后,系统中又有一个可以使用的ORACLE了。这个时候要做的就是将原来的文件和数据恢复过来。第一步,先关闭ORACLE的所
有已经启动的项目,在"服务"里面逐一关闭。然后,将安装目录改名。我现在用的是D:/oracle.改成D:/oracle_new.再将D:
/oracle_old改成D:/oracle.
这样理论上说从物理层面恢复了ORACLE了。但是我们发现,现在还不能启动ORACLE的监听程序和服务程序。我们还要从逻辑上解决。

  3、在dos环境下执行一个删除命令:oradim -delete -sid mm,其中mm为创建oracle时候创建的实例
建议执行这个命令后重新启动机器,重启后就可以建立和原来实例名相同的实例。当然你懒,不重新启动也可以,但是你的实例名就不能和原来的一样了。

  4、在dos环境下执行命令 oradim -new -sid mm -startmode a -pfile "D:\oracle\admin\mm\pfile\initmm.ora "创建一个新的实例,其中 "mm"为新数据库的名称。

  5、启动服务,先打开数据库,然后可以用以前的用户名和密码登陆进去。
要补充的是,一般的ORACLE数据库的监听程序都是用电脑的名称来识别地址的,而不是127.0.0.1或者localhost.所以,如果我们安装系
统的时候用的是不同的电脑名称(比如我原来用的是wm_mm.重新安装后用的是wenming_mm),那么我们还有一个工作要做,就是修改文件
listener.ora.将里面的相关的东西改过来就可以了。

  需要耐心、细心,可能在一步里有一个细小的差别就会出些古怪的错误提示,有时需要根据错误提示采取策略,总之原理是,先装一个一模一样的ORACLE,安装目录、数据库名称都一样,这样保证注册表里不用更改;再覆盖物理文件,最后重新实例化,打开数据库就可以进去了。


有关Oracle数据库的备份情况

  一 意义 当我们使用一个数据库时 总希望数据库的内容是可靠的 正确的 但由于计算机系统的故障(硬件故障 网络故障 进程故障和系统故障)影响数据库系统的操作 影响数据库中数据的正确性 甚至破坏数据库 使数据库中全部或部分数据丢失 因此当发生上述故障后 希望能重新建立一个完整的数据库 该处理称为数据库恢复 恢复子系统是数据库管理系统的一个重要组成部分 恢复处理随所发生的故障类型所影响的结构而变化 二 备份的方法ORACLE数据库有三种标准的备份 导出/导入(EXPORT/IMPORT) 冷备份 热备份 导出备份是一种逻辑备份 这种方法包括读取一系列的数据库日志 并写入文件中 这些日志的读取与其所处位置无关 冷备份和热备份是物理备份(也称低级备份) 它涉及到组成数据库的文件 但不考虑逻辑内容 下面我们分别介绍一下这三种备份方法及其特点 (一) 导出/导入(EXPORT/IMPORT)EXPORT/IMPORT是用来将ORACLE中数据移出/移入数据库 EXPORT将数据库中数据备份成一个二进制系统文件称为 导出转储文件 (EXPORT DUMP FILE) 并将重新生成数据库写入文件中 它有三种模式 a 用户模式 导出用户所有对象以及对象中的数据 b 表模式 导出用户所有表或者指定的表 c 整个数据库 导出数据库中所有对象 它的备份有三种类型 a 完全型(PLETE EXPORT) 备份整个数据库 b 积累型(ULATIVE ERPORT) 备份上一次积累型备份所改变的数据 c 增量型(INCREAMENTAL EXPORT) 备份上一次备份后改变的数据 EXPORT 的命令可以交互式进行 各参数的具体含义见附录 在进行导出备份时我们要考虑一点问题 那就是导出的一致性 在导出过程 中导出每读一次就读取一个表 因而尽管导出是在一个特点时自己开始的 但不同的表读取的时间不同 因此 导出开始读一个表时 此时表中的数据才是导出的数据 这样当大多数表按内部关键字和外部关键字相互联系时 在导出过程中这些相关联表的改变就会导致导出的不一致性 要避开这个 我们可以将导出过程安排在不对表操作的时候进行 另外 当ORACLE中RESTRICTEP CONSISTENT 选项就可以保证导出数据一致性    IMPORT导入 导入的过程是导出的逆过程 这个命令先读取导出来的导出转储二进制文件 并运行文件 恢复对象用户和数据 IMPORT命令执行的方法和EXPORT方案有关 如果EXPORT所实施的是完全型方案(FULL)则在IMPORT时所有的数据对象 包括表空间 数据文件 用户都会在导入时创建 但考虑到数据库中的物理布局 预先创建表空间和用户是有用的 如果EXPORT使用的是INCREMENTAL/CUMULATIVE方式 则需要预先设置好表空间 用户 数据文件 (二) 冷备份冷备份发生在数据库已经正常关闭的情况下 当正常关闭时会提供给我们一个完整的数据库 数据库使用的每个文件都被备份下来 这些文件包括 所有数据文件所有控制文件所有联机REDO LOG 文件INIT ORA文件(可选)值得注意的是冷备份必须是数据库关闭的情况下完成 当数据库开着的时候 执行数据库文件系统备份无效 作冷备份一般步骤是 正常关闭要备份的实例(instance); : 备份整个数据库到一个目录 启动数据库 SQLDBA>connect internalSQLDBA>shutdown normal SQLDBA>! cp 或SQLDBA>!tar cvf /dev/rmt/ /dg/oracle SQLDBA>startup   (三)热备份(ACHIRELOG)数据库需要二十四小时运行 而且随时有新的数据加入 数据丢失将影响整个公司 采用archivelog mode物理备份 ?设置数据库为automatic archivelog mode #su oracle%svrmgrl svrmgrl>connect internalsvrmgrl>startup mount svrmgrl>alter database archivelogsvrmgrl>shutdownsvrmgrl>exit%vi initoracle ora加入log_archive_start = true # if you want automatic archivinglog_archive_dest = $ORACLE_HOME/dbs/archlog_archive_format = log%s arc%dbstart%ps ef|grep archoracle : : ? : ora_arch_oracle 注 oracle database is in automatic archivelog mode   ?full offline entire database backup 当数据库初始完成后 这份备份是将来备份的基础 它提供了所有与数据库有关的拷贝 %dbshut%cp /oracle/oradata/oracle /system dbf /oracle/oradata/oracle /rbs dbf /oracle/oradata/oracle /temp dbf/oracle/oradata/oracle /tools dbf/oracle/oradata/oracle /users dbf/oraclecle/app/oracle/product/ /dbs/application dbf/oracle/app/oracle/product/ /dbs/apptmpsp dbf/oracle/app/oracle/product/ /dbs/apprlbksp dbf/oracle/oradata/oracle /redooracle log /oracle/oradata/oracle /control ctl /oracle/oradata/oracle /control ctl /oracle/oradata/oracle /control ctl %dbstart 注:以上* dbf文件为数据文件 * log文件为日志文件 * ctl文件为控制文件%exit %tar uvf /dev/rmt/ 注:如果为oracle 则copy 相应的 data files relog files control files    每天做一次 partial online with archiving backups #su oracle%svrmgrl%svrmgrl>connect internal%svrmgrl>alter tablespace billsp begin backup%svrmgrl>alter tablespace billtmpsp begin backup%svrmgrl>alter tablespace billrlbksp begin backup%svrmgrl>alter tablespace system begin backup %svrmgrl>alter tablespace rbs begin backup%svrmgrl>alter tablespace temp begin backup%svrmgrl>alter tablespace tools begin backup %svrmgrl>alter tablespace users begin backup %svrmgrl>host cp all datafile to the backup storage #文件名如第一步中以 dbf结尾的 %svrmgrl>alter tablespace billsp end backup%svrmgrl>alter tablespace billtmpsp end backup%svrmgrl>alter tablespace billrlbksp end backup%svrmgrl>alter tablespace system end backup %svrmgrl>alter tablespace rbs end backup%svrmgrl>alter tablespace temp end backup%svrmgrl>alter tablespace tools end backup %svrmgrl>alter tablespace users end backup   做一个sql文件 如上所写   The billing system can recover to the point of failure when the failure occur   七 备份文件的恢复   恢复文件 以下是对"/etc/passwd"文件的恢复  ( 放入正确的磁带  ( 运行以下命令恢复"/etc/passwd"文件  # rsh mt f /dev/rmt/ rew( 找到最近的磁带 向前进带到最近的"/etc/passwd" 比如要找星期三的"/etc/passwd"文件 运行如下命令)  #rsh mt f /dev/rmt/ n fsf   # ufsrestore if :/dev/rmt/ nufsrestore > ls. etc/ufsrestore > cd etc ufsrestore > ls./etc passwdufsrestore > add passwdWarnign ./etc File existsufsrestore > verboseverbose mode onufsrestore > extractExtract requested filesYou have not read any volumes yet .Unless you know which volume your file(s) are on you should start witch the last volume and work to wards the first.Specify next volume # extract file ./etc/passwdAdd linksSet directory mode ower and times.set owner /mode for . ?(yn)nDirectories already exit set mode anyway?(yn)yufsrestore >quit  热备份可以在数据库打开打情况下进行 一般通过使用Alter命令改变表空间的状态来开始进行备份的 备份完成后 要恢其原来状态 否则redo log 会错配 引起数据库下次启动时对受影响的表空间进行完全覆盖 热备份的要求是 热备份工作必需要求数据库在Archivelog 方式下操作 在SQLDBA状态下用alter database archivelog|noarchivelog命令可改变备份的模式 热备份只能在数据库不使用或使用率低的情况下进行 热备份需要大量的档案空间 一般情况 Oracle 以循环的方式写入Online redo log 文件 当填满第一个redo log文件后写第二个 直至最后一个 最后一个被填满后 后台进程LGWR就覆盖第一个 在Archivelog方式下 后台进程ARCH在每一个redo log 文件被覆盖前 给它作一个拷贝 一般 这些文档的redo log 文件被写入磁盘或磁带中 如果磁盘空间够用 建议使用磁盘 这样可大大减少完成备份所需的时间 在作热备份之前 要将config ora文件中的log_archive_start 设为true 将log_archive_dest规定archive redo log 文件的位置 log_archive_dest=/dg/oracle/arch/archlog_archive_start=true一旦数据库运行在archivelog状态下 就可以作备份了 热备份的命令文件由三部分组成 数据文件一个表空间一个空间地备份 a 设置表空间为备份状态 b 备份表空间的数据文件 c 恢复表空间为正常状态 备份归档要作log 文件 a 临时停止归档进程b log下那些在archive redo log目标目录中的文件c 重新启动archive进程d 备份归档的redo log 文件 用alter database backup controlfile命令来备份拷贝文件在热备份运行之前log_archive_dest目录可能已满 这时就要备份目录 然后删除文件 释放空间 这个过程有如下步骤 暂时停止archive进程 记录在log_archive_dest目录下的文件 重新启动archive 进程 备份archive redo log 文件 删除目录中的文件 sqldba lmode=y <<EOF arch archive log stop;exitEOF arch FILES= ls /dg/oracle/arch/arch* dbf ;sqldba lmode=y<<EOF arch connect internalarchive log start;exitEOF arch tar rvf /dev/rmt/ FILESrm f $FILES   逻辑备份与物理备份的结合 前面介绍了三种备份的方法 在数据库做备份时 应该将数据这三种备份的特点灵活运用 我们首先比较一下三种方法的特性   方 法类 型恢 复 特 性EXPORT导出逻辑型可以将任何数据库对象恢复到它被导出时的状态乻hutdown?将最近copyes of datafile 拷贝到$oracle_home/dbs目录 ?%svrmgrl?svrmgrl>connect internal…svrmgrl>startup mount pfile=filename exclusive?svrmgrl>alter database recover;注:将自动恢复数据到the point of failure;? svrmgrl>alter database open; ?当archive log文件过多时 在 做过部分备份后 可将current log sequence 之前的log*** arc删除 #su oracle%svrmgrlsvrmgrl>connect internal;svrmgrl>archive log list; #此处标有current log sequence 假设为 Svrmgrl>exit$cd /billdg/oracle/app/oracle/product/ /dbs/arch$ rm #将log arc之前的文件如log arc log arc 删除 冷 备 份物理型可将数据库到它被关闭的状态热 备 份物理型可将数据库恢复到任一时间点的状态   当数据库比较小时 处理业务也小时 冷备份导出就可以了 如果只对一两个表备份导出就够了 一般来说一个好 备份最终执行总包括逻辑和物理 导出确认数据库在逻辑的正确性而物理备份确保物理 另外 在进行备份时需要一些存储介质 对于这些介质应该对其作好管理 根据备份的内容 日期将介质统一编号 以免备份和恢复时弄错介质 造成原有的备份丢失 介质应存放在与计算机设备不同的地点 以免机房发生意外时 备份与计算机设备一同损坏   附录 tar命令tar option [arguments] filename option:c:创建一个由命令行指定的新的tarfilet:列出tarfile中的内容x:打开tarfile;f:使用其后的filename 或/dev/rmt/ | v:列出被恢复的文件名 p:恢复文件example:#tar cvf /dev/rmt/ /oracle备份/root 下的所有内容#tar tvf /dev/rmt/ 列出磁带上的所有内容#tar xvf /dev/rmt/ /oracle将磁带上的/oracle目录中的内容恢复到当前目录中   导出选项关键字 内 容 USERID 运行导出命令的帐号的用户名/口令 BUFFEER 用来取数据行的缓冲区的大小 FILE 导出转储文件的名字PRESS 导出是否应该压缩有碎片的段成一个范围 这将会影响STORAGE 子句 GRANTS 导出时否要导出数据库对象上的授权INDEXES 是否要导出表上的索引ROWS 是否应导出行 如它为 N 那么在导出文件中仅生成数据库 对象的DDLCONSSTRAINTS 是否导出表旧的约定条件FULL 如设为 Y 那么将执行一个整个数据库导出操作OWNER 要导出的一系列数据库帐号 然后执行这些帐号的USER导出操 作TABLES 要导出的一系列表 执行这些表的TABLE导出操作RECORDLENGTH 转储导出文件日志的长度(以字节为单位) 通常都使用缺省 除非要在两个不同操作系统中传递导出文件INCTYPE 正在执行的导出操作的类型(有效值有 PLETE (缺省值) CUMULATIVE 和 IVCREMENTAL )RECORD 在增量导出类型中的一个标记 标明是否将日志存储到数据字典中日志导出的表中PARFILE 要传递给导出的参数文件的名字 这个文件将包含所有参数的入口项ANALYZE 标明是否将移对象的统计信息写入导出转储文件中CONSISTENT 标明是否保留所有导出对象的读取一致复制 LOG 导出日志将要写入的文件的名字MLS 标明是否要导出MLS 标号MLS_LABEL_ 规定了MLS标号的格式   导入选择项USERID 运行导入命令的帐号的用户名/口令 BUFFEER 用来取数据行的缓冲区的大小 FILE 导入转储文件的名字SHOW 规定文件内容是否被显示 而不是被执行 EGORE 标明在执行 CREATE 命令时 是否忽略遇到的错误 如果正在导入的对象已经存在时 应使用这个参数 FULL 如设为 Y 那么将执行一个整个数据库导入操作FROMUSER 在FULL=N的情况下 才有参数 它是一系列的数据库帐号 其对象应从导出转储文件中读取 TOUSER 一系列数据库帐号 导出转储文件扣的对象将要导入这些帐号 GRANTS 导入时否要导入数据库对象上的授权INDEXES 是否要导入表上的索引ROWS 是否应导入行 如它为 N 那么在导入文件中执行数据库对象的DDLFULL 如设为 Y 那么将执行一个整个数据库导出操作TABLES 要导入的一系列表RECORDLENGTH 转储导入文件日志的长度(以字节为单位) 通常都使用缺省 除非要在两个不同操作系统中传递导入文件INCTYPE 正在执行的导入操作的类型(有效值有 PLETE (缺省值) CUMULATIVE 和 IVCREMENTAL )PARFILE 要传递给导入的参数文件的名字 这个文件将包含所有参数的入口项ANALYZE 标明是否将移对象的统计信息写入导入转储文件中LOG 导入日志将要写入的文件的名字MLS 标明是否要导入MLS 标号   热备份的命令文件 ORACLE_SID=oracle ORACLE_HOME=/dg/oraclesqldba lmode=y<<EOF arch connect internalalter tablespace SYSTEM begin backup;!tar cvf /dev/rmt/ /dg/oracle/dbms/sys dbfalter tablespace SYSTEM end backup;   alter tablespace BWT begin backup;!tar cvf /dev/rmt/ /dg/oracle/dbms/BWT dbfalter tablespace BWT end backup;   archive log stopexitEOF arch FILES= ls /dg/oracle/arch/arch* dbf ;   sqldba lmode=y<<EOF arch connect internalarchive log start;exitEOF arch   tar rvf /dev/rmt/ $FILESrm f $files   sqldba lmode=y<<EOFarch alter database backup controlfile to /dg/oracle/dbms/bwtcontrfile backup ;exitEOF arch lishixinzhi/Article/program/Oracle/201311/17668


在oracle中如何找回被删除的数据?

1、首先新建一张测试表TEST,里面输入记录。由于删除/更新/插入恢复步骤相同,这里仅演示删除数据的情况。2、删除其中1条记录,查看表中记录情况,由下图可见,记录2被删除了。3、恢复之前先确定要恢复到的时间点,下图可以看出2018-03-07 15:33:00数据是正确的。SELECT *FROM TEST AS OF TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');4、下面进行表数据恢复。FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');可以看到报错了,原因是没有开启行移动。5、开启该表的行移动。ALTER TABLE TEST ENABLE ROW MOVEMENT;6、再次执行数据恢复。FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');然后查看数据情况,可以看到已经恢复了。

听说有工具能会恢复oracle中被delete删除的记录,能介绍下吗?

flashback query闪回查询尝试使用Oracle 10g 以后的flashback Query特性 闪回查询可以查询若干时间之前的数据logmnr 日志挖掘使用logminer 日志挖掘 把delete的redo挖出来看有没有 对应的undo回滚SQL可用使用ORACLE PRM-DUL 工具Oracle PRM-DUL 工具可以恢复 数据库中表上 被删除的记录,大致流程如下:对于没有有效物理或逻辑备份的场景,当Oracle中发生delete误操作时 一般会优先考虑使用flashback闪回或logminer日志挖掘等技术来恢复Oracle表中的数据行记录,但很多时候flashback或logminer都无法力挽狂澜。 对于delete操作而言,其对于oracle底层数据块block中的row piece记录一般仅仅是修改其row flag标记为已删除标记,容许后续INSERT的记录覆盖这些被标记为delete的数据,也容许破坏这些delete掉的数据的结构。 换句话说如果delete后没有对表做什么操作的话,直接读取block中的这些被标记为deleted的记录还是有可能读取到完整数据的。总而言之,是否能恢复这部分delete掉的数据,完全取决于磁盘上oracle block中这部分删除的数据行是否有被最终清理掉。在被清理掉之前ORACLE PRM-DUL工具都可以尝试把这部分数据恢复出来, 具体步骤与普通的数据字典模式差别很小。启动PRM-DUL 点击恢复向导 字典模式 加入所有oracle数据文件,不需要加入临时文件TEMPFILE、UNDO数据文件、控制文件、日志文件 点击load 按钮,PRM会自动加载数据字典 即bootstrap动作 至此 PRM左侧将出现 树形的对象树,选择你需要恢复的用户下的对应数据表, 右击对象后选择 unload deleted data PRM-DUL 完成对已删除数据的恢复操作后会将 数据写出到 上图中 File path的位置, 示例的数据恢复情况如下:

oracle 数据库如何还原?

单击开始,这里输入cmd,打开dos窗口输入命令exp bms/BMSPASS@TCDB file=E:\DBback\dbback20160112.dmp 这里说明一下这里的bms是指备份时,登录数据库实例TCDB的用户名;这里的/是语法符号。这里的BMSPASS是用户bms登录数据库TCDB时的密码;@是语法符号。这里的TCDB是Oracle数据库的实例名。这里的file=E:\DBback\dbback20160112.dmp 是只指备份文件的存放路径。等待导出完成,如果看到这里的导出成功,说明备份完成了。打开备份时指定的存储路径,就可以看到备份文件了。如果在导出命令的最后加上full=y的参数,也就是exp bms/BMSPASS@TCDB file=E:\DBback\dbback20160112.dmp full=y意思是将用户bms在TCDB数据库实例中的所有文件都备份,也就是完整备份。数据库还原使用语法imp bms/BMSPASS@TCDB file=E:\DBback\dbback20160112.dmp这里的E:\DBback\dbback20160112.dmp是备份文件的存放路径请添加详细解释

oracle数据库恢复方法(oracle数据库恢复数据)

第一种:首先,备份数据库(X:oracleoradata)下的数据文件,重新命名即可(否则装数据库的时候会提示sid已存在)。重新安装数据库,当然数据库的名字就是你要恢复的名字。安装完成后,打开控制面板,停止oracle的服务。把(X:oracleoradata)下新生成的文件改名,把原先目录下的文件恢复名字。再重新启动oracle服务和监听。用sys/asdba登陆数据库,可能会提示权限不够(ora-01031)修改(X:oracleora92etworkadmin)文件夹下的sqlnet.ora文件,添加SQLNET._SERVICES=(NTS),增加权限。登陆进去后,打开table提示不能打开。打开common页,执行命令alertdatabaseopen;这时再刷新table,发现原先的表可以打开了。恢复成功了。再用原先数据库的普通用户进入。发现一切正常。第二种:1、首先,将原来的ORACLE文件夹改名,原来的路径是D:/oracle.我暂时改成D:/oracle_old.找来ORACLE(我用的是ORACLE9I)安装光盘,将ORACLE安装在原来安装的目录下,这样恢复起来更加方便,主要是注册表的内容不用修改。2、安装完了之后,系统中又有一个可以使用的ORACLE了。这个时候要做的就是将原来的文件和数据恢复过来。第一步,先关闭ORACLE的所有已经启动的项目,在"服务"里面逐一关闭。然后,将安装目录改名。(例如D:/oracle.改成D:/oracle_new,再将D:/oracle_old改成D:/oracle.)这样理论上说从物理层面恢复了ORACLE了。但是现在还不能启动ORACLE的监听程序和服务程序,还要从逻辑上解决。3、在dos环境下执行一个删除命令:oradim-delete-sidmm,其中mm为创建oracle时候创建的实例建议执行这个命令后重新启动机器,重启后就可以建立和原来实例名相同的实例。当然你懒,不重新启动也可以,但是你的实例名就不能和原来的一样了。4、在dos环境下执行命令oradim-new-sidmm-startmodea-pfile"D:oracleadminmmpfileinitmm.ora"创建一个新的实例,其中"mm"为新数据库的名称。5、启动服务,先打开数据库,然后可以用以前的用户名和密码登陆进去。要补充的是,一般的ORACLE数据库的监听程序都是用电脑的名称来识别地址的,而不是127.0.0.1或者localhost.所以,如果我们安装系统的时候用的是不同的电脑名称(比如我原来用的是wm_mm.重新安装后用的是wenming_mm),那么还有一个工作要做,就是修改文件listener.ora.将里面的相关的东西改过来就可以了。需要耐心、细心,可能在一步里有一个细小的差别就会出些古怪的错误提示,有时需要根据错误提示采取策略,总之原理是,先装一个一模一样的ORACLE,安装目录、数据库名称都一样,这样保证注册表里不用更改;再覆盖物理文件,最后重新实例化,打开数据库就可以进去了。注:恢复必须要有以下文件a、初始化参数文件INIT.ORAb、所有数据文件.dbfc、所有重做日志文件(联机日志、归档日志)redod、所有控制文件crtle、internal密码文件。

请问oracle怎么从dmp文件只恢复一张表的数据,恢复到另一个用户中

1、安装Oracle数据库软件,并且用Oracle管理工具中的Database Configuration Assistant 根据对方提供的数据库名建立数据库。数据库版本则要和导出当前dmp文件的数据库版本一致。2、透过脚本文件建立导入dmp文件所需的表空间、用户、规则以及相关的授权。3、将dmp文件复制到新安装的Oracle数据库服务器中,准备导入这个数据库文件。4、通过cmd调出运行窗口,用imp命令导入数据。5、通过数据库管理工具连接数据库,就可以查询到dmp文件中的数据了。

知识相关

知识推荐

求职简历网为你分享个人简历、求职简历、简历模板、简历范文等求职简历知识。

Copyrights 2018-2024 求职简历网 All rights reserved.