(云南烟草机械有限责任公司,云南省昆明市)
摘要:随着工业信息化进程的不断加速推进,很多中小企业对生产管理的要求越来越高,信息化、数字化、智能化无疑是提升企业管理的重要手段,而支撑企业信息化、数字化、智能化发展的基础应用软件数据库的数据在发生事故后能否有效恢复,对企业来说意义重大。本文就目前市场上使用最广泛的Oracle数据库的备份与恢复进行探索。主要探讨了Oracle数据库备份与恢复的重要性及其实际应用。
关键词:信息化;Oracle数据库;备份;恢复。
一引言
2020年3月30日中共中央国务院《关于构建更加完善的要素市场化配置体制机制的意见》中明确将数据作为平行于土地、劳动力、资本、技术的第五种生产要素写入政策文件。数据就是企业的重要资产,而数据库备份就是一种防范灾难于未然的强力手段,没有了数据,一切应用系统也难为“无米之炊”。安全有效的数据是企业从“业务经验驱动”向“数据量化驱动”转型,从主观分析和预判变成基于存量数据分析和精细化运营的必要条件。因此,数据是未来信息化发展的必备要素。然而,由于各种原因,如硬件故障、软件错误、人为误操作等,可能会导致数据库中的数据丢失或损坏。因此,数据库备份与恢复是保障企业数据安全的重要手段。Oracle数据库作为企业级数据库的代表,其备份与恢复技术对于保障企业数据安全具有重要意义。从长远来看,只有拥有安全的数据备份,才能为企业以后的数据挖掘、数据统计及分析提供基础保障。
二数据库市场状况
从2023年9月DB-Engines发布的数据库系统排行榜来看,数据库市场排名前3名依次是Oracle、MySQL与MicrosoftSQLServer,并且总占比远远超越其他数据库系统。在我国Oracle数据库系统的使用占比依然远远大于其他数据库。早在20世纪90年代,中国国内就逐渐形成了Oracle垄断电信行业,IBM垄断金融行业的格局。截至2019年,其他国家厂商仍占据中国数据库市场80%以上份额。传统的关系型数据库市场中,Oracle、IBM、Microsoft、SAP四家厂商共占据市场份额六成,其中Oracle占比超过三分之一。在全球,近半数企业与组织在使用Oracle数据库及其技术。
三Oracle数据库概述
Oracle数据库管理系统是一个以关系型和面向对象为中心管理数据的数据库管理软件系统,Oracle数据库支持多用户、大事务量的事务处理,在数据安全性与数据完整性控制方面性能优越,具备跨操作系统、跨硬件平台的数据互操作能力。同时,Oracle数据库是一个强大而全面的数据库管理系统,具有高可用性、扩展性、安全性、性能优化、灵活性和可伸缩性。它为组织提供了一个稳定、可靠和高效的存储和管理大量结构化数据的解决方案。通过提供丰富的功能和技术,ORACLE数据库可以满足各种应用领域的需求,并帮助组织实现数据驱动的业务目标。
四Oracle数据库备份概述
Oracle数据库的备份分为物理备份和逻辑备份两种。物理备份主要是通过转储数据库物理文件(如数据文件、控制文件、归档日志文件等),将组成数据库的文件从数据库应用服务器拷贝到备份系统进行存储的过程,通常是从一种存储介质到另一种存储介质。物理备份可分为冷备份和热备份。逻辑备份是利用数据库的导出工具从数据库中提取数据并另存于二进制文件的过程。数据库的恢复是当数据库发生故障时,针对不同的故障(事务故障、系统故障和介质故障)采取不同的方法把数据库恢复到一致性状态的过程。
五逻辑备份与恢复
利用EXP\EXPDP可将数据从数据库中提取出来,利用IMP\IMPDP则可将提取出来的数据送回到Oracle数据库中去,这是最常用,也是比较可靠的一种备份恢复方法。在数据库的版本升级或者迁移时一般采用这种方法。逻辑备份方式分为三种:表方式(T方式)、用户方式(U方式)、全库方式(F方式)。
5.1表方式(T方式)
备份某个用户模式下指定的对象(表)。业务数据库中重要的数据表通常采用这种备份方式,备份如下:
expuser/password@tnsnamerows=yfile=/dir/file_name.dmpcompress=nlog=log_neme.logtables=(tables1、tables2……)
恢复如下:
impuser/password@tnsnamefile=/dir/file_name.dmptables=(tables1、tables2……)fromuser=user_nametouser=user_namecommit=yignore=yrows=ylog=log_neme.log
5.2用户方式(U方式)
备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式,备份如下:
expuser/password@tnsnamerows=yfile=/dir/file_name.dmpcompress=nlog=log_neme.logowner=(dbname1、dbname2……)
恢复如下:
impuser/password@tnsnamefile=/dir/file_name.dmpfromuser=user_nametouser=user_nameowner=(dbname1、dbname2……)commit=yignore=yrows=ylog=log_neme.log
5.3全库方式(F方式)
备份完整的数据库,备份如下:
expsystem/password@tnsnamerows=yfile=/dir/file_name.dmpcompress=nlog=log_neme.logfull=y
恢复如下:
impsystem/password@tnsnamefile=/dir/file_name.dmpcompress=nlog=log_neme.logfull=ycommit=yignore=yrows=y
六物理备份与恢复
6.1冷备份的执行与恢复
6.1.1冷备份的执行
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的。冷备份是将关键性文件拷贝到另一个存储的备份方式。冷备份中必须拷贝的文件包括:所有数据文件、所有控制文件、所有日志文件(联机日志和归档日志)、参数文件。冷备份的操作方式:
SQL>connect/assysdba;
SQL>shutdownnormal;
然后复制三个文件夹admin;oradata;flash_recovery_area以及dbhome_1下的database(PWDfile、pfile),dbs(spfile)、NETWORK/ADMIN(listener.ora、tnsnames.ora)
SQL>startup;
6.1.2冷备份的恢复
6.1.2.1重新建库恢复,步骤如下:
(1)创建一个和原来一样的数据库。(安装路径和数据库名必须和原来一致)。
(2)停止数据库shutdownimmediate;
(3)复制安装目录下的admin、oradata、flash_recovery_area覆盖,复制database(PWDfile、pfile)覆盖
(4)启动数据库startup;
备注:若数据库没有在归档模式下运行:将备份文件拷贝回原来的目录即可,然后启动数据库。
注:若源数据库在归档模式运行,恢复步骤如下:
(1)将数据文件、控制文件拷贝回原来目录;
(2)SQL>startupmount;
SQL>recoverdatabaseusingbackupcontrolfile;
(3)将相应的归档日志和联机日志拖到CMD命令窗口进行跑日志。
(4)SQL>alterdatabaseopenresetlogs;
6.1.2.2软件重装恢复
操作系统重装,如果做冷备恢复,要保证相同操作系统,相同的数据库版本。形式如同异机恢复。
(1)不创建实例:(假设源机上的数据库实例为orcl)
1.恢复oradata/orcl目录
在目标机上的oradata目录下建立orcl文件夹,然后进行数据覆盖。包括数据文件、参数文件、控制文件、日志文件、pwd文件,放在与原系统相同的目录。如果目录有所改变,则需要另外建立控制文件,修改pfile。
2.恢复admin/orcl目录
在目标机上的admin目录下建立orcl文件夹,然后在orcl里面再建立adump、bdump、cdump、udump、dpdump、pfile六个文件夹。
3.建立服务
把源机的密码文件拷贝到目标机的database目录下。使用oradim命令在cmd下oradim-new-sidorcl表示建立一个服务,sid为orcl(最好名字和源机备份的数据库名字一致,就不需要重建密码文件)。如果是在linux下,不需要此步。
4.重建创建参数文件、控制文件
拷贝源机的pfile到目标机的一个目录下,修改pfile里面相关文件的路径。
创建参数文件:SQL>createspfilefrompfile=‘文件路径';
重建控制文件:SQL>alterdatabasebackupcontrolfiletotrace;
然后会在udump文件夹下产生一个追踪文件,打开文件找到如下一段,复制到文本中,修改相应路径然后保存为:createctl.sql文件(sql脚本文件),复制到目标机上。
注意:SQL>alterdatabasebackupcontrolfiletotraceas5.'F:/DB_RECOVERY/CONTROL_FILE_TRACE.TXT';
5.数据库设置SID和启动服务
c:\>setORACLE_SID=orcl
c:\>sqlplus"/assysdba"
SQL>createspfilefrompfile='c:\pfile.txt';
SQL>@c:\createctl.sql;
SQL>shutdownimmediate;
SQL>startup;
SQL>alterdatabaseopenresetlogs;
(2)创建实例方式(实例SID与源机数据库SID一致)
1.替换和覆盖oradata\orcl目录
删除目标机的oradata\orcl底下的所有文件,把源机所有data文件、redo文件拷贝到此目录下。
2.密码文件覆盖
删除目标机的密码文件,拷贝源机密码文件到目标机下。
3.控制文件恢复
在源机上重建目标机的控制文件:SQL>alterdatabasebackupcontrolfiletotrace;然后会在udump文件夹下产生一个追踪文件,打开文件找到上面那段,复制到文本中,修改相应路径然后保存为:createctl.sql文件(sql脚本文件),复制到目标机上。
c:\>sqlplus"/assysdba"
SQL>@c:\createctl.sql;
SQL>shutdownimmediate;
SQL>startup;
SQL>alterdatabaseopenresetlogs;
4.在network\admin下的tnsnames.ora中添加如下片段
ORCL=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
(CONNECT_DATA=
(SERVICE_NAME=orcl)))
5.用netconfiguration为orcl实例新建监听和启动服务
6.2热备份的执行与恢复
6.2.1热备份的执行
热备份是在数据库运行的情况下,采用archivelogmode方式备份数据库的方法。热备份的前提是数据库运行在归档模式下并设置好备份条件:
SQL>archiveloglist;
SQL>shutdownimmediate;
SQL>startupmount;
SQL>alterdatabasearchivelog;
SQL>alterdatabaseopen;
SQL>altersystemarchivelogstart;
(1)数据文件的备份
1.设置表空间为备份状态,SQL>altertablespacerlglbeginbackup;
2.备份表空间的数据文件,用操作系统的复制拷贝工具拷贝数据文件。
3.设置表空间为正常状态,SQL>altertablespacesysbsendbackup;
(2)备份归档日志文件
SQL>altersystemswitchlogfile;
SQL>archiveloglist;
通过在执行archiveloglist命令获取当前的日志顺序号,从最早的概要日志序列到当前日志序列的联机redo日志都应该拷贝出来。
(3)备份控制文件
SQL>alterdatabasebackupcontrolfiletotrace;
使用alterdatabasebackupcontrolfiletotrace;命令获得控制文件的一个备份,可以到%oracle_base%\admin\%oracle_sid%\udump目录中寻找最新的跟踪文件,其中有重建控制文件的全部命令。
6.2.2热备份恢复
假设表空间RSDB中的数据文件rsdb01.dbf损坏。
(1)先进行损坏的表空间文件脱机。SQL>alterdatabasedatafile’e:\oracle\oradata\rsdb01.dbf’offline;
(2)打开数据库。SQL>alterdatabaseopen;
(3)将拷贝的文件rsdb01.dbf拷贝回先前的文件夹E:\ORACLE\ORACLEDATA。
(4)恢复数据库文件。SQL>recoverdatafile’e:\oracle\oradata\rsdb01.dbf’;
(5)关闭数据库。SQL>shutdownimmediate;
(6)重新打开数据库。SQL>startup;
6.3RMAN备份恢复
RMAN(RecoveryManager,恢复管理器)是从Oracle8开始提供的一套用于备份和恢复的工具,可以实现对数据库的快速备份和恢复。RMAN支持基于磁盘的备份和恢复、基于磁带的备份和恢复、远程备份和恢复等。RMAN还可以进行自动备份和恢复,可以根据需要设置备份频率、备份内容、备份存储位置等。
RMAN有两种使用界面:GUI(图形用户界面)和CLI(命令行界面)。RMAN备份包括数据库完全备份和增量备份,其中增量备份又可以分为差异增量备份和累计增量备份。完全备份是包含从备份开始处所有的数据块的一个完整副本。增量备份则只包含从最近一次备份以来被修改或添加的数据块。使用RMAN可以完成Oracle数据库备份和恢复的各种任务。
6.3.1RMAN备份参数设置
SQL>archiveloglist;
SQL>shutdownimmediate;
SQL>startupmount;
SQL>alterdatabasearchivelog;
SQL>alterdatabaseopen;
SQL>altersystemarchivelogstart;
RMAN>configuredefaultdevicetypetodisk;
RMAN>configuredevicetypediskparallelism2;
RMAN>configurechannel1devicetypediskformat'e:\backup1\backup_%U';
RMAN>configurechannel2devicetypediskformat'e:\backup2\backup_%U';
RMAN>configurecontrolfileautobackupon;
RMAN>configurecontrolfileautobackupformatfordevicetypediskto'e:\backup1\ctl_%F';
RMAN>showall;
RMAN>reportschema;
6.3.2RMAN备份
(1)备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志
RMAN>backupdatabaseplusarchivelogdeleteinput;
(2)备份表空间及归档的重做日志,并删除旧的归档日志
RMAN>backuptablespacesystemplusarchivelogdeleteinput;
(3)备份归档日志
RMAN>backuparchivelogalldeleteinput;
(4)复制数据文件
RMAN>copydatafile1to'e:\backup1\datafile\1.ora';
(5)查看备份和文件复本
RMAN>listbackup;
(6)验证备份
RMAN>validatebackupset3;
6.3.3RMAN恢复
RMAN>shutdownimmediate;
RMAN>startupnomount;
RMAN>restorecontrolfileto'/backup1'fromautobackup;
RMAN>shutdownimmediate;
RMAN>exit;
C:\renE:\oracle\oradata\oracle\rsdb01.orarsdb01.bak;
C:\renE:\oracle\oradata\oracle\rsdb02.orarsdb02.bak;
C:\rmantarget=rman/rman@oracle;
RMAN>startuppfile=C:\oracle\admin\oracle\pfile\initoracle.ora;
RMAN>restoredatabase;
RMAN>recoverdatabase;
RMAN>alterdatabaseopen;
七结论与展望
本论文主要介绍了Oracle数据库备份与恢复的重要性及其应用。在企业实际生产环境中,必须针对企业实际应用情况制定科学合理的备份方案,这样,一旦Oracle数据库系统出现故障,则能够根据既定的备份恢复策略进行数据恢复,保证生产环境数据的完整性与准确性。然而,在数据备份这个方面,仍存在许多问题需要进一步研究和探讨,例如如何进一步提高Oracle数据库备份与恢复的效率和安全性、如何更好地管理和维护Oracle数据库等。这些问题还需我们在未来的进行更深入的探讨和实践,为企业的发展保驾护航。