符礼龄Oracle数据库日常巡检.备份.恢复2021-04-08金蝶中国大企业技术支持部2课程收益课程收益1.掌握Oracle日常巡检方法2.了解Oracle冷备与恢复过程3.掌握Oracle逻辑备份与恢复方法4.掌握Oraclerman备份与恢复方法3目录1Oracle日常巡检2Oracle冷备与恢复3Oracle逻辑备份与恢复4Oraclerman备份与恢复CONTENTS4PART1:Oracle日常巡检Oracle数据库日常巡检与备份恢复51.Oracle日常巡检1.1检查Oracle实例状态1.2检查Oracle监听进程1.3检查Oraclealert日志1.4检查Oracle表空间1.5检查备份[root@linux01~]#ps-ef|greppmon#查看启动数据库的操作系统账号oracle563103月28?00:00:08ora_pmon_linux01root1257927615007:45pts/100:00:00grep--color=autopmonoracle25471103月28?00:00:09ora_pmon_test[root@linux01~]#su–oracle#切换启动数据库的操作系统账号[oracle@linux01~]$exportORACLE_SID=linux01#设置sid环境变量(适用多实例的情况)[oracle@linux01~]$sqlplus/assysdba#管理员登录数据库SQL*Plus:Release12.2.0.1.0ProductiononWedMar3107:46:212021Copyright(c)1982,2016,Oracle.Allrightsreserved.Connectedto:OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProductionSQL>selectinst_id,statusfromgv$instance;#查看数据库状态INST_IDSTATUS----------------------1OPEN#OPEN的状态为正常的状态SQL>61.Oracle日常巡检1.1检查Oracle实例状态1.2检查Oracle监听进程1.3检查Oraclealert日志1.4检查Oracle表空间1.5检查备份[root@linux01~]#ps-ef|greppmonoracle563103月28?00:00:08ora_pmon_linux01root1430527615008:08pts/100:00:00grep--color=autopmonoracle25471103月28?00:00:09ora_pmon_test[root@linux01~]#su-oracle[oracle@linux01~]$lsnrctlstatus#检查监听的状态,“UNKNOWN”是静态监听,“READY”是动态监听71.Oracle日常巡检1.1检查Oracle实例状态1.2检查Oracle监听进程1.3检查Oraclealert日志1.4检查Oracle表空间1.5检查备份数据库版本Oraclealertlog存放路径查找方法11g[oracle@linux01~]$sqlplus/assysdbaSQL>showparameterbackground_dump_dest;NAMETYPEVALUE-----------------------------------------------------------background_dump_deststring/var/oracle/diag/rdbms/zy1/ZY1/trace12c[oracle@linux01~]$sqlplus/assysdbaSQL>selectvaluefromv$diag_infowherename='DiagTrace';VALUE-------------------------------------------------------------------/u01/app/oracle/diag/rdbms/linux01/linux01/trace即$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace[oracle@linux01trace]$catalert_linux01.log|egrep-i“ora-|err|fail|warn”|more#查看报错关键字[oracle@linux01trace]$tail-falert_linux01.log#实时查看日志输出[oracle@linux01trace]$tail-500alert_linux01.log#查看最后500行ORA-00313:openfailedformembersofloggroup1ofthread1ORA-00312:onlinelog1thread1:'/u01/app/oracle/oradata/linux01/redo01.log’ORA-27037:unabletoobtainfilestatusLinux-x86_64Error:2:Nosuchfileordirectory⚫Oraclealert日志名称:alert_${ORACLE_SID}.log⚫Oraclealert日志报错关键字:“ORA-”“err”“fail”“warn”⚫Oraclealert日志检查方法:⚫不同数据库版本下Oraclealert日志存放路径查找方法81.Oracle日常巡检1.1检查Oracle实例状态1.2检查Oracle监听进程1.3检查Oraclealert日志1.4检查Oracle表空间1.5检查备份表空间检查脚本如下附件所示:91.Oracle日常巡检1.1检查Oracle实例状态1.2检查Oracle监听进程1.3检查Oraclealert日志1.4检查Oracle表空间1.5检查备份[root@linux01~]#ps-ef|greppmonoracle563103月28?00:00:08ora_pmon_linux01root1910721800009:11pts/000:00:00grep--color=autopmonoracle25471103月28?00:00:09ora_pmon_test[root@linux01~]#su-oracle上一次登录:三3月3108:08:19CST2021pts/1上[oracle@linux01~]$crontab–l#查看当前用户计划任务4515***sh/home/oracle/script/fullbackup.sh[oracle@linux01~]$cat/home/oracle/script/fullbackup.sh#查看脚本内容,找到日志输出文件[oracle@linux01~]$cat/kingdee/backup/fullbackup/fullbackup2021_03_30.log|RMAN-#查看日志输出内容,匹配报错关键字,rman备份的报错一般以“RMAN-”开头[oracle@linux01~]$cat/kingdee/backup/fullbackup/expdp2021_03_20|grepORA-#expdp备份的报错一般以“ORA-”开头10PART2:Oracle冷备与恢复Oracle数据库日常巡检与备份恢复11Oracle备份恢复概述物理备份物理文件拷贝的方式对数据库进行备份逻辑备份逻辑导出数据(expdp/impdp)只是对数据进行转存,所以恢复是只能恢复到备份时保存的数据冷备份数据库关闭后使用操作系统命令的拷贝备份,只能恢复到备份时的那一时间点热备份数据库不停机的情况下进行的备份,结合归档日志可以恢复到任意一个时间点(前提是有归档日志备份)Oracle备份物理备份逻辑备份冷备份热备份备份分类:122.Oracle冷备与恢复2.1源端查看文件路径2.2源端关闭数据库2.3拷贝文件到目标服务器2.4目标端创建输出目录2.5目标端开启数据库[oracle@linux01~]$exportORACLE_SID=test[oracle@linux01~]$sqlplus/assysdbaSQL>selectnamefromv$datafile;--数据文件SQL>selectnamefromv$tempfile;--临时文件SQL>selectmemberfromv$logfile;--在线日志文件SQL>selectnamefromv$controlfile;--控制文件SQL>showparameterspfile;--初始化参数文件132.Oracle冷备与恢复2.1源端查看文件路径2.2源端关闭数据库2.3拷贝文件到目标服务器2.4目标端创建输出目录2.5目标端开启数据库142.Oracle冷备与恢复2.1查看文件名称及路径2.2源端关闭数据库2.3拷贝文件到目标服务器2.4目标端创建输出目录2.5目标端开启数据库◼拷贝初始化参数文件⚫目标服务器安装数据库软件设置环境变量(略)⚫目标服务器拷贝初始化参数文件[root@linux02~]#su-oracle[oracle@linux02~]$cd$ORACLE_HOME/dbs[oracle@linux02dbs]$scp172.20.110.152:/u01/app/oracle/product/12.2.0.1/dbhome_1/dbs/spfiletest.ora.◼拷贝数据文件、临时文件、在线日志文件、控制文件⚫目标端创建文件存放目录,保证跟源端目录结构一致(也可以不一致,如果不一致的话要在mount状态重定义各文件的位置)root@linux02~]#su-oracle[oracle@linux02~]$mkdir–p/u01/app/oracle/oradata/test⚫源端打包压缩数据文件并传输到服务端[root@linux01~]#su–oracle[oracle@linux01~]$cd/u01/app/oracle/oradata/test[oracle@linux01test]$tar-zcvf/kingdee/backup/test.tar.gz*[oracle@linux01test]$scp/kingdee/backup/test.tar.gz172.20.110.182:/u01/app/oracle/oradata/test⚫目标端解压缩文件到/u01/app/oracle/oradata目录下:root@linux02~]#su–oracle[oracle@linux02~]$cd/u01/app/oracle/oradata/test[oracle@linux02test]$tar-zxvftest.tar.gz152.Oracle冷备与恢复2.1查看文件名称及路径2.2关闭数据库2.3拷贝文件到目标服务器2.4目标端创建输出目录2.5目标端开启数据库⚫目标端根据spfile创建pfile[root@linux02~]#su–oracle[oracle@linux02~]$sqlplus/assysdbaSQL>createpfile='/tmp/1.ora'fromspfile='/u01/app/oracle/product/12.2.0.1/dbhome_1/dbs/spfiletest.ora’;⚫根据pfile文件内容关于路径的参数创建如下输出目录:[oracle@linux02~]$mkdir-p/u01/app/oracle[oracle@linux02~]$mkdir-p/u01/app/oracle/admin/test/adump[oracle@linux02~]$mkdir-p/u01/app/oracle/fast_recovery_area/test162.Oracle冷备与恢复2.1查看文件名称及路径2.2关闭数据库2.3拷贝文件到目标服务器2.4目标端创建输出目录2.5目标端开启数据库目标端开启数据库[oracle@linux02~]$exportORACLE_SID=test[oracle@linux02~]$sqlplus/assysdbaSQL>startup;17PART3:Oracle逻辑备份与恢复Oracle数据库日常巡检与备份恢复183.Oracle逻辑备份与恢复3.1源端导出前准备3.2源端expdp导出3.3目标端导入前准备3.4目标端创建输出目录3.5目标端开启数据库--查询原用户使用了哪些表空间SQL>selectdistincttablespace_namefromdba_segmentswhereowner='EAS01';TABLESPACE_NAME------------------------------EAS_D_EAS01_STANDARDEAS_D_EAS01_INDEX--了解用户的占用空间大小SQL>selecttablespace_name,sum(BYTES)/1024/1024as"TablesSize(MBytes)"fromdba_segmentswhereowner='EAS01'groupbytablespace_name;--创建操作系统文件夹(保证空间够用)[root@linux01~]#su-oracle[oracle@linux01~]$mkdir-p/kingdee/testdir--数据库层创建导出的并给用户授权[root@linux01~]#su–oracle[oracle@linux01~]$sqlplus/assysdbaSQL>createdirectorytestdiras'/kingdee/testdir';SQL>grantread,writeondirectorytestdirtoeas01;193.Oracle逻辑备份与恢复3.1源端导出前准备3.2源端expdp导出3.3目标端导入准备3.4目标端创建输出目录3.5目标端开启数据库expdp用户名/密码@数据库连接名称directory=目录名称dumpfile=dmp文件logfile=日志文件例如:[root@linux01~]#su–oracle[oracle@linux01~]$expdpeas01/eas01schemas=eas01directory=testdirdumpfile=eas01.dmplogfile=eas01.logexclude=table:\"like\'VT%\'\"说明:导出命令放在一行执行203.Oracle逻辑备份与恢复3.1源端导出前准备3.2源端expdp导出3.3目标端导入前准备3.4目标端impdp导入3.5目标端开启数据库--创建表空间SQL>createtablespaceEAS_D_EAS02_STANDARDdatafile'/u01/app/oracle/oradata/linux01/EAS_D_EAS02_STANDARD01.dbf'size1mautoextendon;SQL>createtablespaceEAS_D_EAS02_INDEXdatafile'/u01/app/oracle/oradata/linux01/EAS_D_EAS02_INDEX01.dbf'size1mautoextendon;--创建新用户并授权SQL>createusereas02identifiedbyeas02;SQL>grantcreatesession,createtable,createprocedure,createsequence,createtrigger,createview,selectanydictionary,creatematerializedview,unlimitedtablespacetoeas02;SQL>grantIMP_FULL_DATABASEtoeas02;--修改用户默认表空间SQL>alterusereas02defaulttablespaceEAS_D_EAS02_STANDARD;--创建操作系统文件夹(保证空间够用)(略)--数据库层创建导出的并给用户授权(略)--上一步导出的dmp文件传输到目标服务器对应创建的目录下213.Oracle逻辑备份与恢复3.1源端导出前准备3.2源端expdp导出3.3目标端导入前准备3.4目标端impdp导入3.5常见参数impdp用户名/密码@数据库连接名称directory=目录名称dumpfile=dmp文件logfile=日志文件remap_schema=old_schema:new_schema,remap_tablespace=old_tablespace:new_tablespace例如:[root@linux01~]#su–oracle[oracle@linux01~]$impdpeas02/eas02@linux01directory=testdirdumpfile=eas01.dmplogfile=eas02.logremap_schema=eas01:eas02remap_tablespace=EAS_D_EAS01_STANDARD:EAS_D_EAS02_STANDARD,EAS_D_EAS01_INDEX:EAS_D_EAS02_INDEX说明:导入命令放在一行执行223.Oracle逻辑备份与恢复3.1源端导出前准备3.2源端expdp导出3.3目标端导入前准备3.4目标端impdp导入3.5常见参数DIRECTORY:供转储文件和日志文件使用的目录对象,即逻辑目录。DUMPFILE:目标转储文件(expdp.dmp)的列表,例如DUMPFILE=expdp1.dmp,expdp2.dmp。EXCLUDE:排除特定的对象类型,例如EXCLUDE=TABLE:EMP。PARALLEL:更改当前作业的活动worker的数目。SCHEMAS:要导出的方案的列表(登录方案)。VERSION:要导出的对象的版本,其中有效关键字为:(COMPATIBLE),LATEST或任何有效的数据库版本。FLASHBACK_SCN:用于将会话快照设置回以前状态的SCN。--指定导出特定SCN时刻的表数据。FULL:导出整个数据库(N)。TABLES:标识要导出的表的列表-只有一个方案。--[schema_name.]table_name[:partition_name][,…]REMAP_SCHEMA:将一个方案加载到另一个方案REMAP_SCHEMA=SOURCE_SCHEMA:TARGET_SCHEMAREMAP_TABLESPACE:将表空间对象重新映射到另一个表空间。STOP_JOB:顺序关闭执行的作业并退出客户机。STOP_JOB=IMMEDIATE将立即关闭数据泵作业。HELP:显示帮助消息(N)。23PART4:Oraclerman备份与恢复Oracle数据库日常巡检与备份恢复244.Oraclerman备份与恢复4.1rman备份了解4.2rman备份方式比较4.3rman完全备份4.4rman完全备份的恢复4.5rman增量备份rman(recoverymanager)是一种用于备份(backup)、还原(restore)和恢复(recover)数据库的Oracle工具。能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及spfile参数文件。支持增量备份,只备份自上次备份以来有变化的那些数据块。rman本地连接方式:[root@linux01~]#su–oracle[oracle@linux01~]$rmantarget/rman备份配置设置:RMAN>showall;#查看当前的配置信息CONFIGURERETENTIONPOLICYTOREDUNDANCY2;#备份保留策略CONFIGURECONTROLFILEAUTOBACKUPON;#控制文件自动备份rman常用命令:RMAN>backup……#备份……RMAN>list……#查看备份……RMAN>delete……#删除备份RMAN>report……#查看备份是否可用RMAN>crosscheck……#核对备份文件,以确保RMAN资料库与备份文件保持同步254.Oraclerman备份与恢复4.1rman备份了解4.2rman备份方式介绍4.3rman完全全备份4.4rman全备份的恢复4.5rman增量备份Oracle完全备份:每次对数据库进行完整的备份Oracle增量备份:是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比发生变化的数据块。Oracle中,增量备份是分等级的,级别从0开始,一级一级递增,实际上用的较多的是0级和1级备份。0级增量备份是后面级别的增量备份的基础,0级备份实际上就是一个完全备份,与普通的完全备份唯一的不同点是0级备份可以作为其他级别增量备份的基础,而普通的完全备份是不能的。从级别1开始,Oracle的增量备份分为累积增量备份和差异增量备份两种Oracle累积增量备份:是备份上级备份以来所有变化的块(Cumulative)Oracle差异增量备份:是备份上级及同级备份以来所有变化的数据块,是默认增量备份方式(Differential)三种备份方式的区别时间数据完全备份累积增量备份差异增量备份周天AAAA周一ABABBB周二ABCABCBCC.264.Oraclerman备份与恢复4.1rman备份了解4.2rman备份方式介绍4.3rman全备份4.4rman全备份的恢复4.5rman增量备份--创建备份文件存放目录(保证空间够用):[root@linux01~]#su–oracle[oracle@linux01~]$mkdir-p/kingdee/backup--开始备份[oracle@linux01~]$rmantarget/sql'altersystemcheckpoint';RMAN>backupspfileformat'/kingdee/backup/fullbackup/%T_%d_%s_%p.ora'tag'spfile';;RMAN>backupascompressedbackupsetformat'/kingdee/backup/fullbackup/%T_%d_%s_%p.dat'tag'full_data_archive'databaseplusarchivelogdeleteinput;RMAN>backupcurrentcontrofileformat'/kingdee/backup/fullbackup/%T_%d_%s_%p.ctl'tag'full_ctl';补充:完全备份脚本:274.Oraclerman备份与恢复4.1rman备份了解4.2rman备份方式介绍4.3rman全备份4.4rman全备份的恢复4.5rman增量备份1.恢复spfile文件;2.启动nomount模式;3.恢复控制文件;4.启动数据库实例到mount模式;5.注册备份信息装载备分片;6.还原数据库;7.恢复数据库;8.打开数据库;284.Oraclerman备份与恢复4.1rman备份了解4.2rman备份方式介绍4.3rman全备份4.4rman全备份的恢复4.5rman增量备份--0级备份简单语法:RMAN>backupincrementallevel0databaseformat'/backup/lv0_%T_%d_%s_%p.ora’;--1级备份简单语法:RMAN>backupincrementallevel1databaseformat'/backup/lv0_%T_%d_%s_%p.ora';增量备份脚本如下附件所示:29实操演练1.检查数据实例和监听状态2.expdp\impdp导出导入用户3.rman全备与恢复30课后学习1.Oracleexpdp11g知识位置:https://docs.oracle.com/cd/E11882_01/server.112/e22490/toc.htm2.Oracleexpdp12C知识位置:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sutil/oracle-data-pump-export-utility.html#GUID-5F7380CE-A619-4042-8D13-1F7DDE4299913.Oraclerman11g知识位置:https://docs.oracle.com/cd/E11882_01/backup.112/e10642/toc.htm4.Oraclerman12C知识位置:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/rcmrf/index.htmlThanksterimakasih感謝谢谢ありがとうขอบคุณ