UrBackup文件备份系统数据库Oracle自动及手动备份及恢复操作手册.docx
- 文档编号:12096718
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:23
- 大小:567.95KB
UrBackup文件备份系统数据库Oracle自动及手动备份及恢复操作手册.docx
《UrBackup文件备份系统数据库Oracle自动及手动备份及恢复操作手册.docx》由会员分享,可在线阅读,更多相关《UrBackup文件备份系统数据库Oracle自动及手动备份及恢复操作手册.docx(23页珍藏版)》请在冰豆网上搜索。
UrBackup文件备份系统数据库Oracle自动及手动备份及恢复操作手册
Oracle数据库
备份及恢复操作手册
一、UrBackup客户端
UrBackup的安装请参考官方网站进行服务器及客户端的安装。
1.创建Oracle测试表空间及用户并授权
创建表空间
临时表空间
CREATETEMPORARYTABLESPACEtest_temp
TEMPFILE'E:
\app\Administrator\oradata\orcl\test_temp01.dbf'
SIZE32M
AUTOEXTENDON
NEXT32MMAXSIZE2048M
EXTENTMANAGEMENTLOCAL;
用户表空
CREATETABLESPACEtest_data
LOGGING
DATAFILE'E:
\app\Administrator\oradata\orcl\TEST_DATA01.DBF'
SIZE32M
AUTOEXTENDON
NEXT32MMAXSIZE2048M
EXTENTMANAGEMENTLOCAL;
表空间的路径用户根据不同操作系统或情况进行调整。
创建用户并制定表空间
CREATEUSERtestIDENTIFIEDBYpassword
DEFAULTTABLESPACETEST_DATA
TEMPORARYTABLESPACETEST_TEMP;
给用户授予权限
GRANT
CREATESESSION,CREATEANYTABLE,CREATEANYVIEW,CREATEANYINDEX,CREATEANYPROCEDURE,
ALTERANYTABLE,ALTERANYPROCEDURE,
DROPANYTABLE,DROPANYVIEW,DROPANYINDEX,DROPANYPROCEDURE,
SELECTANYTABLE,INSERTANYTABLE,UPDATEANYTABLE,DELETEANYTABLE
TOtest;
GRANTdbaTOtest;
授予用户的角色,根据实际场景进行设置,这里为了便于测试,给予了dba的权限,在生产环境,最好不要给予dba的角色。
用登录的用户创建测试备份的测试表sys_users
--Createtable
createtableSYS_USERS
(
usernamevarchar2(20)notnull,
passwordvarchar2(20)
);
--Addcommentstothecolumns
commentoncolumnSYS_USERS.username
is'用户名';
commentoncolumnSYS_USERS.password
is'密码';
--Create/Recreateprimary,uniqueandforeignkeyconstraints
altertableSYS_USERS
addconstraintPK_USERNAMEprimarykey(USERNAME);
添加测试数据
insertintosys_users(username,password)values('admin','admin');
insertintosys_users(username,password)values('guest','guest');
insertintosys_users(username,password)values('zhangsan','zhangsan');
insertintosys_users(username,password)values('lisi','lisi');
insertintosys_users(username,password)values('wangwu','wangwu');
commit;
2.Windows
测试安装的Oracle版本:
oracle11G
安装路径:
E:
\app
UrBackup安装路径:
C:
\Programfiles\
配置默认备份文件夹为:
E:
\backup
(1)使用export
⏹执行备份
通过Oracle创建directory
一般创建directory都是为了用数据泵导入/导出数据用
通过windows的cmd窗口执行创建directory,并给对应的备份用户授权读写的权限。
sqlplus/assysdba
createorreplacedirectorydump_backupas'E:
\backup';
createorreplacedirectorydump_restoreas'E:
\restore';
grantread,writeondirectorydump_backuptotest;
grantread,writeondirectorydump_restoretotest;
其中dump_backupas'E:
\backup'用于存放导出的备份文件。
其中dump_restoreas'E:
\restore'用于存放导入的还原备份文件。
已创建的directory查看
select*fromdba_directories
编写UrBackup对应的备份之前的脚本:
C:
\Programfiles\UrBackup\prefilebackup.bat,内容如下:
@echooff
del/QE:
\backup\*
E:
\app\Administrator\product\11.2.0\dbhome_1\BIN\expdp.exeFULL=YDIRECTORY=dump_backupDUMPFILE=exp.dmpUSERID=test/password
注意:
上面脚本中的DIRECTORY的名称,为您上面创建的directory。
脚本编写完成之后,可以在windows的窗口下执行prefilebackup.bat,看备份是否成功。
然后通过客户端执行备份。
备份完成之后,删除用户test表sys_users中不是admin的用户。
删除不是admin的用户,然后通过恢复功能恢复用户表的数据。
deletefromSYS_USERSwhereusername!
='admin'
⏹执行恢复
从服务器下载刚才备份的文件exp.dmp,并放到上面用于还原的文件夹E:
\restore。
在目录下创建恢复的脚本restore.bat,放入下面的内容:
@echooff
E:
\app\Administrator\product\11.2.0\dbhome_1\BIN\impdp.exeFULL=YDIRECTORY=dump_restoreDUMPFILE=exp.dmpUSERID=test/passwordREUSE_DATAFILES=YTABLE_EXISTS_ACTION=REPLACE
然后双击执行还原即可。
注意:
根据实际业务场景调整对应的脚本中的USERID,备份跟还原两者要一一对应。
导入过程中遇见的错误解决办法:
ORA-39126:
在KUPW$WORKER.PROCESS_TABLE_EXISTS_ACTION[TABLE:
"IX"."AQ$_STREAMS_QUEUE_TABLE_T"]中Worker发生意外致命错误
ORA-24019:
QUEUE_TABLE的标识符过长,不可大于24个字符
ORA-00955:
名称已由现有对象使用
ORA-06512:
在"SYS.DBMS_SYS_ERROR",line95
ORA-06512:
在"SYS.KUPW$WORKER",line8165
-----PL/SQLCallStack-----
objectlineobject
handlenumbername
000007FFB9D7593818990packagebodySYS.KUPW$WORKER
000007FFB9D759388192packagebodySYS.KUPW$WORKER
000007FFB9D7593814941packagebodySYS.KUPW$WORKER
000007FFB9D7593815739packagebodySYS.KUPW$WORKER
000007FFB9D7593815377packagebodySYS.KUPW$WORKER
000007FFB9D759383945packagebodySYS.KUPW$WORKER
000007FFB9D759388875packagebodySYS.KUPW$WORKER
000007FFB9D759381649packagebodySYS.KUPW$WORKER
000007FFC9473D802anonymousblock
作业"SYSTEM"."SYS_IMPORT_FULL_01"因致命错误于10:
58:
04停止
解决办法,cmd运行下面的命令:
sqlplus/assysdba
Begin
dbms_aqadm.drop_queue_table('IX.STREAMS_QUEUE_TABLE',TRUE);
End;
/
其中IX.STREAMS_QUEUE_TABLE根据报错内容,进行组合设置。
返回成功之后登录,查询test用户下sys_users表内的数据:
(2)使用Windows备份API(VSS)
这种方法使用事务日志正确地备份原始数据文件,并且在恢复期间正确地应用事务日志。
如果您有变更块跟踪驱动程序,则在备份时只读取数据文件的变更部分,否则将全量读取数据文件。
在两种情况下,只有差异部分被传输。
此方法不能与OracleXE一起工作,因为在这个版本(OraVSSW)中缺少必需的Oracle服务。
⏹执行备份
将你的Oracle实例设置为ARCHIVELOG模式,如果它还没有设置:
sqlplus/assysdba
shutdownimmediate
startupmount
alterdatabasearchivelog;
alterdatabaseopen;
查看Oracle实例对应的VssWriter服务是否启动,没有启动,则需要手动启动,并设置为了,开机自启动。
在Windows服务器上安装带有托盘图标的客户端。
右键点击托盘图标,选择“配置组件备份”:
在组件选择窗口上选择“OracleVSSWriter-Oracle安装的实例名”备份实例中的所有Oracle数据库,或备份单个数据库。
如果选择“OracleVSSWriter-Oracl安装的e实例名”,新的数据库将自动备份:
单击确定后,您的Oracle数据库将备份到UrBackup服务器。
执行一次备份之后,删除不是admin的用户,然后通过恢复功能恢复用户表的数据。
deletefromSYS_USERSwhereusername!
='admin'
⏹执行恢复
右键点击托盘图标,选择“恢复组件”:
Oracle数据库没有完全实现WindowsbackupAPI。
为了恢复工作,您必须在恢复之前手动关闭Oracle数据库(并保持OracleVSSwriter服务运行),但它将在恢复后自动启动。
如果不这样做,Oracle组件将不会报告任何恢复错误,除非通过Windows事件日志。
恢复过程
恢复之后,登录如果出现以下错误
ORA-01033:
ORACLEinitializationorshutdowninprogress
进程ID:
0
会话ID:
0序列号:
0
按下面的顺序进行进行修复即可。
修复数据库
RECOVERDATABASEUSINGBACKUPCONTROLFILEUNTILCANCEL;
如果提示然指定日志,如果没有忽略此步骤,通过下面命令,获取当前修复数据库的redo日志
SELECTMEMBERFROMV$LOGG,V$LOGFILEFWHEREG.GROUP#=F.GROUP#ANDG.STATUS='CURRENT';
打开数据库
alterdatabaseopenresetlogs;
所有命令执行如下:
SQL>alterdatabaseopenresetlogs;
alterdatabaseopenresetlogs
*
第1行出现错误:
ORA-01139:
RESETLOGS选项仅在不完全数据库恢复后有效
SQL>RECOVERDATABASEUSINGBACKUPCONTROLFILEUNTILCANCEL;
ORA-00283:
recoverysessioncanceledduetoerrors
ORA-19909:
datafile2belongstoanorphanincarnation
ORA-01110:
datafile2:
'E:
\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF'
SQL>alterdatabaseopenresetlogs;
数据库已更改。
带指定修复日志的命令:
SQL>alterdatabaseopenresetlogs;
alterdatabaseopenresetlogs
*
第1行出现错误:
ORA-01139:
RESETLOGS选项仅在不完全数据库恢复后有效
SQL>SELECTMEMBERFROMV$LOGG,V$LOGFILEFWHEREG.GROUP#=F.GROUP#ANDG.STA
TUS='CURRENT';
MEMBER
--------------------------------------------------------------------------------
E:
\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG
SQL>recoverdatabaseusingbackupcontrolfileuntilcancel;
ORA-00279:
更改1825716(在03/03/202115:
10:
46生成)对于线程1是必需的
ORA-00289:
建议:
E:
\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2021_03_03\O1_MF_1_2_J3
YFMRPS_.ARC
ORA-00280:
更改1825716(用于线程1)在序列#2中
指定日志:
{
E:
\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG
ORA-00310:
archivedlogcontainssequence3;sequence2required
ORA-00334:
archivedlog:
'E:
\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG'
ORA-10879:
errorsignaledinparallelrecoveryslave
ORA-01547:
warning:
RECOVERsucceededbutOPENRESETLOGSwouldgeterrorbelow
ORA-01195:
onlinebackupoffile1needsmorerecoverytobeconsistent
ORA-01110:
datafile1:
'E:
\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF'
SQL>alterdatabaseopenresetlogs;
数据库已更改。
然后登录查看用户表Sys_users恢复的信息,是否是预期的内容。
3.Linux
测试安装的Mysql版本:
5.7.32-35
安装路径:
/usr/local/mysql
UrBackup安装路径:
/usr/local
(1)使用export
这种方法的缺点是UrBackup不能进行有效的增量操作,每次备份都会读取所有数据,而且在备份期间需要创建数据的第二个副本。
把导出数据库到.dmp备份文件配置UrBackup备份的文件夹内。
测试安装的Oracle版本:
oracle11G
安装路径:
/oradata/soft/oracle11g
UrBackup安装路径:
默认值
配置默认备份文件夹为:
/oradata/backup
配置默认恢复文件夹为:
/oradata/restore
通过Oracle创建directory
一般创建directory都是为了用数据泵导入/导出数据用
创建备份及恢复文件的目录并修改对应的所有者,否则在执行导出或导入时会报错。
mkdir/oradata/backup
mkdir/oradata/restore
chown-Roracle:
oinstall/oradata/backup
chown-Roracle:
oinstall/oradata/restore
按照上面的方式进入sql语句命令行界面
createorreplacedirectorydump_backupas'/oradata/backup';
createorreplacedirectorydump_restoreas'/oradata/restore';
grantread,writeondirectorydump_backuptotest;
grantread,writeondirectorydump_restoretotest;
其中dump_backupas'/oradata/backup'用于存放导出的备份文件。
其中dump_restoreas'/oradata/restore'用于存放导入的还原备份文件。
已创建的directory查看
select*fromdba_directories
⏹执行备份
编写脚本之前,先查看Oracle的相关环境变量,作为下面备份的脚本设置的环境变量:
su-oracle
env|grepORACLE
编写UrBackup对应的备份之前的脚本:
/usr/local/etc/urbackup/prefilebackup
vi/usr/local/etc/urbackup/prefilebackup
加入如下内容:
#!
/bin/sh
#Oracle备份脚本
#设置Oracle相关的环境变量
exportORACLE_UNQNAME=prod
exportORACLE_SID=prod
exportORACLE_BASE=/oradata/soft/oracle11g
exportORACLE_HOME=/oradata/soft/oracle11g/product/11.2.0.3/dbhome_1
echo"删除之前备份的文件."
rm-rf/oradata/backup/*
STARTTIME=`date`
echo"开始Oracle备份$STARTTIME."
/oradata/soft/oracle11g/product/11.2.0.3/dbhome_1/bin/expdpFULL=YDIRECTORY=dump_backupDUMPFILE=exp.dmpUSERID=test/password
ENDTIME=`date`
echo"Oracle备份已完成$ENDTIME."
给予prefilebackup可执行权限
chmod+x/usr/local/etc/urbackup/prefilebackup
脚本编写完成之后,测试一下看备份是否成功。
/usr/local/etc/urbackup/prefilebackup
然后通过客户端执行备份。
备份完成之后,删除用户test表sys_users中不是admin的用户。
删除不是admin的用户,然后通过恢复功能恢复用户表的数据。
deletefromSYS_USERSwhereusername!
='admin'
⏹执行恢复
从服务器下载刚才备份的文件exp.dmp,并放到上面用于还原的文件夹/oradata/restore。
在目录下创建还原的脚本restore,放入下面的内容:
编写还原脚本restore
vi/oradata/restore/restore
#!
/bin/sh
#Oracle备份脚本
#设置Oracle相关的环境变量
exportORACLE_UNQNAME=prod
exportORACLE_SID=prod
exportORACLE_BASE=/oradata/soft/oracle11g
exportORACLE_HOME=/oradata/soft/oracle11g/product/11.2.0.3/dbhome_1
STARTTIME=`date`
echo"开始执行Oracle恢复$STARTTIME."
/oradata/soft/oracle11g/product/11.2.0.3/dbhome_1/bin/impdpFULL=YDIRECTORY=dump_restoreDUMPFILE=exp.dmpUSERID=test/p@ssw0rdREUSE_DATAFILES=YTABLE_EXISTS_ACTION=REPLACE
ENDTIME=`date`
echo"Oracle恢复已完成$ENDTIME."
给予restore脚本可执行权限
chmod+x/oradata/restore/restore
然后执行脚本,进行数据恢复即可。
/oradata/restore/restore
在恢复过程中出现了如下错误:
开始执行Oracle恢复2021年03月04日星期四11:
47:
46CST.
Import:
Release11.2.0.1.0-ProductiononThuMar411:
47:
462021
Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.
Conn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UrBackup 文件 备份 系统 数据库 Oracle 自动 手动 恢复 操作手册
![提示](https://static.bdocx.com/images/bang_tan.gif)