Oracle备份的几种方式
这里使用Oracle 12C来大概演示说明一下rman的基本用法,这里不会深入讨论,因为本人也只是刚刚才接触,只是结合了网上的一些文章以及自己的实践来总结并拿出来大家学习,谢SEO靠我谢目录
一、关于备份与恢复 二、逻辑备份(expdp和impdp) 三、物理备份 四、数据库日常备份计划及脚本参考一、关于备份与恢复
1、备份定义备份就是把SEO靠我数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本
2、备份分类从物理与逻辑的角度来分类:
从SEO靠我物理与逻辑的,备份可以分为物理备份和逻辑备份。
物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的SEO靠我时候进行的,后者是以归档日志的方式对运行的数据库进行备份。可以使用oracle的恢复管理器(RMAN)或操作系统命令进行数据库的物理备份。
逻辑备份:对数据库逻辑组件(如表和存储过程等数据库对象)的备份SEO靠我。逻辑备份的手段很多,如传统的EXP,数据泵(EXPDP),数据库闪回技术等第三方工具,都可以进行数据库的逻辑备份。从数据库的备份角度分类:
从数据库的备份角度,备份可以分为完全备份和增量备份和差异备份SEO靠我
完全备份:每次对数据库进行完整备份,当发生数据丢失的灾难时,完全备份无需依赖其他信息即可实现100%的数据恢复,其恢复时间最短且操作最方便。
增量备份:只有那些在上次完全备份或增量备份后被修改的文件才会SEO靠我被备份。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖以前备份记录,出问题的风险较大。
差异备份:备份那些自从上次完全备份之后被修改过的文件。从差异备份中恢复数据的时间较短,因此只需要两份数SEO靠我据—最后一次完整备份和最后一次差异备份,缺点是每次备份需要的时间较长。
3、恢复定义恢复就是发生故障后,利用已备份的数据文件或控制文件,重新建立一个完整的数据库
4、恢复分类实例恢复:当oracle实例出SEO靠我现失败后,oracle自动进行的恢复
介质恢复:当存放数据库的介质出现故障时所作的恢复。介质恢复又分为完全恢复和不完全恢复
完全恢复:将数据库恢复到数据库失败时的状态。这种恢复是通过装载数据库备份并应用全SEO靠我部的重做日志做到的。
不完全恢复:将数据库恢复到数据库失败前的某一时刻的状态。这种恢复是通过装载数据库备份并应用部分的重做日志做到的。进行不完全恢复后,必须在启动数据库时用resetlogs选项重设联机SEO靠我重做日志。
二、逻辑备份(expdp和impdp)
1、expdp/impdp和exp/imp的区别exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。 expdpSEO靠我和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。 imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件SEO靠我,而不适用于exp导出文件。 对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。本节主要讲解的是expdp/impdp的用法,不涉及到exp和SEO靠我imp
2、导出数据在准备要备份的数据库服务器上创建备份目录(在后面使用sql命令创建的逻辑目录并不是在OS上创建目录,所以我们先要在服务器上创建一个目录)
$ mkdir /home/SEO靠我oracle/oracle_bak
用管理员身份登录到sqlplus
$ sqlplys /nolog
SQL> conn sys/oracle as sysdba创建逻辑目录
SQL> create dirSEO靠我ectory data_dir as ‘/home/oracle/oracle_bak’;
查看管理员目录是否存在
SQL> select * from dba_direcories;
使用管理员用户给指定SEO靠我的用户赋予在该目录的操作权限(比如该用户需要备份自己的数据)
SQL> grant read,write on directory data_dir to C##BAK_TEST_USER;
导出可有五种SEO靠我方式
1、“full=y”,全量导出数据库$ expdp sys/oracle@orcl dumpfile=expdp.dmp directory=data_dir full=y logfile=expSEO靠我dp.log
2、schemas按用户导出
$ expdp user/passwd@orcl schemas=user dumpfile=expdp.dmp directory=data_dir logfSEO靠我ile=expdp.log
3、按表空间导出
$ expdp sys/passwd@orcl tablespace=tbs1,tbs2 dumpfile=expdp.dmp directory=data_SEO靠我dir logfile=expdp.log
4、导出表
$ expdp user/passwd@orcl tables=table1,table2 dumpfile=expdp.dmp directorySEO靠我=data_dir logfile=expdp.log
5、按查询条件导出
$ expdp user/passwd@orcl tables=table1=‘where number=1234’ dumpfSEO靠我ile=expdp.dmp directory=data_dir logfile=expdp.log
2、导入数据
首先将需要导入的数据文件存放导需要导入的数据库服务器上
参照导出的时候的建立目录方式建立物SEO靠我理目录和逻辑目录(只是建目录即可,如果需要给用户权限则加上给用户权限的那步)
使用命令导入,同时,导入方式也可以分为五种,分别对应着导出的五种方式
1、“full=y”,全量导入数据库;
impdp useSEO靠我r/passwd directory=data_dir dumpfile=expdp.dmp full=y
2、同名用户导入,从用户A导入到用户A;
impdp A/passwd schemas=A diSEO靠我rectory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
3、
①从A用户中把表table1和table2导入到B用户中;impdp B/passwdtSEO靠我ables=A.table1,A.table2 remap_schema=A:B directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
②将表SEO靠我空间TBS01、TBS02、TBS03导入到表空间A_TBS,将用户B的数据导入到A,并生成新的oid防止冲突;
impdp A/passwd remap_tablespace=TBS01:A_TBS,SEO靠我TBS02:A_TBS,TBS03:A_TBS remap_schema=B:A FULL=Y transform=oid:n
directory=data_dir dumpfile=expdp.dmpSEO靠我 logfile=impdp.log4、导入表空间;
impdp sys/passwd tablespaces=tbs1 directory=data_dir dumpfile=expdp.dmp loSEO靠我gfile=impdp.log
5、追加数据;
impdp sys/passwd directory=data_dir dumpfile=expdp.dmp schemas=system table_exSEO靠我ists_action=replace logfile=impdp.log;
–table_exists_action:导入对象已存在时执行的操作。有效关键字:SKIP,APPEND,REPLACE和TSEO靠我RUNCATE3、并行操作
可以通过 PARALLEL 参数为导出使用一个以上的线程来显著地加速作业。每个线程创建一个单独的转储文件,因此参数 dumpfile 应当拥有和并行度一样多的项目。您可以指定SEO靠我通配符作为文件名,而不是显式地输入各个文件名,例如:
expdp ananda/abc123 tables=CASES directory=DPDATA1 dumpfile=expCASES_%U.dmSEO靠我p parallel=4 job_name=Cases_Export
注意:dumpfile 参数拥有一个通配符 %U,它指示文件将按需要创建,格式将为expCASES_nn.dmp,其中nn 从 01SEO靠我 开始,然后按需要向上增加。
在并行模式下,状态屏幕将显示四个工作进程。(在默认模式下,只有一个进程是可见的)所有的工作进程同步取出数据,并在状态屏幕上显示它们的进度。
分离访问数据文件和转储目录文件系统SEO靠我的输入/输出通道是很重要的。否则,与维护 Data Pump 作业相关的开销可能超过并行线程的效益,并因此而降低性能。并行方式只有在表的数量多于并行值并且表很大时才是有效的。数据库监控
您还可以从数据库SEO靠我视图获得关于运行的 Data Pump 作业的更多信息。监控作业的主视图是 DBA_DATAPUMP_JOBS,它将告诉您在作业上有多少个工作进程(列 DEGREE)在工作。另一个重要的视图是 DBASEO靠我_DATAPUMP_SESSIONS,当它与上述视图和 V$SESSION 结合时将给出主前台进程的会话 SID。
select sid, serial# from v$session s, dba_dSEO靠我atapump_sessions d where s.saddr = d.saddr;
这条指令显示前台进程的会话。更多有用的信息可以从警报日志中获得。当进程启动时,MCP 和工作进程在警报日志中显示如SEO靠我下:
kupprdp:master process DM00 started with pid=23, OS id=20530 to execute - SYS.KUPM M C P . M A I NSEO靠我 ( ′ C A S E S E X P O R T ′ , ′ A N A N D A ′ ) ; k u p p r d p : w o r k e r p r o c e s s D W 01 SEO靠我s t a r t e d w i t h w o r k e r i d = 1 , p i d = 24 , O S i d = 20532 t o e x e c u t e − S Y S .SEO靠我 K U P W MCP.MAIN(CASES_EXPORT, ANANDA); kupprdp:worker process DW01 started with worker id=1, pid=2SEO靠我4, OS id=20532 to execute - SYS.KUPW MCP.MAIN(′CASESEXPORT′,′ANANDA′);kupprdp:workerprocessDW01starSEO靠我tedwithworkerid=1,pid=24,OSid=20532toexecute−SYS.KUPWWORKER.MAIN(‘CASES_EXPORT’, ‘ANANDA’); kupprdp:SEO靠我worker process DW03 started with worker id=2, pid=25, OS id=20534 to execute - SYS.KUPW$WORKER.MAIN(SEO靠我‘CASES_EXPORT’, ‘ANANDA’);
它显示为数据泵操作启动的会话的 PID。您可以用以下查询找到实际的 SID:
select sid, program from v s e s s iSEO靠我 o n w h e r e p a d d r i n ( s e l e c t a d d r f r o m v session where paddr in (select addr froSEO靠我m v sessionwherepaddrin(selectaddrfromvprocess where pid in (23,24,25));
PROGRAM 列将对应警报日志文件中的名称显示进程 DSEO靠我M (为主进程)或 DW (为工作进程)。如果一个工作进程使用了并行查询,比如说 SID 23,您可以在视图 V$PX_SESSION 中看到它,并把它找出来。它将为您显示从 SID 23 代表的工作SEO靠我进程中运行的所有并行查询会话:
select sid from v$px_session where qcsid = 23;
从视图 V$SESSION_LONGOPS
中可以获得其它的有用信息来预测完成作SEO靠我业将花费的时间。select sid, serial#, sofar, totalwork from v$session_longops where opname = ‘CASES_EXPORT’ aSEO靠我nd sofar != totalwork;
列 totalwork 显示总工作量,该列的 sofar 数量被加和到当前的时刻 — 因而您可以用它来估计还要花多长时间。
4、不同版本数据库之间数据互导如将SEO靠我11g数据库的数据导入导10g数据库的服务器上
首先在11g服务器上导出EXPDP USERID=‘SYS/cuc2009@cuc as sysdba’ schemas=sybj directory=DSEO靠我ATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0
然后在10g数据库服务器上导入
IMPDP USERID=‘SYS/cuc20SEO靠我09@cucf as sysdba’ schemas=sybj directory=DATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.SEO靠我0.1.0
三、物理备份
1、使用rman工具备份及恢复说明:1. RMAN是 ORACLE提供的一个备份与恢复的工具,可以用来执行完全或不完全的数据库恢复。2. RMAN不能用于备份初始化参数文件和口令SEO靠我文件。3. 与传统工具相比,RMAN具有独特的优势:跳过未使用的数据块。当备份一个RMAN备份集时,RMAN不会备份从未被写入的数据块,而传统的方式无法获知那些是未被使用的数据块。4. RMAN可以进SEO靠我行增量备份(增量备份是针对于上一次备份(无论是哪种备份):备份上一次备份后,所有发生变化的文件)1、首先需要在将要备份的数据库服务器上切换服务器的归档模式,如果已经是归档模式了,那么可以跳过此步
$ sqlplus /nolog //启动sqlplus
SQL> conn / as sysdba //以DBA的身份连接数据库
SQL> shutdown imSEO靠我mediate; //立即关闭数据库
SQL> startup mount //启动实例并加载数据库,但不打开
SQL> alter database archivelog; //更改数据库为归档模式
SQSEO靠我L> alter database open; //打开数据库
SQL> alter system archive log start; //启用自动归档
SQL> exit //退出
2、启动并连接到rmSEO靠我an(恢复管理器)
可以开个专门用于备份的用户,不过这里使用了sys用户
$ rman target=sys/oracle@orcl
3、基本设置
具体路径可自己安装需求改,但是登录的用户需要对备份的目录有读SEO靠我写权限,目录建立方法可参考上面逻辑备份的备份目录建立
RMAN> configure default device type to disk; //设置默认的备份设备为磁盘
RMAN> configureSEO靠我 device type disk parallelism 2; //设置备份的并行级别,通道数
RMAN> configure channel 1 device type disk format ‘/SEO靠我home/oracle/oracle_bak/bakup_%U’; //设置备份的文件格式,只适用于磁盘设备
RMAN> configure channel 2 device type disk forSEO靠我mat ‘/home/oracle/oracle_bak/bakup2_%U’; //设置备份的文件格式,只适用于磁盘设备
RMAN> configure controlfile autobackup SEO靠我on; //打开控制文件与服务器参数文件的自动备份
RMAN> configure controlfile autobackup format for device type disk to ‘/homSEO靠我e/oracle/oracle_bak/ctl_%F’; //设置控制文件与服务器参数文件自动备份的文件格式
说明:
format:
%c:备份片的拷贝数(从1开始编号);
%d:数据库名称;
%D:位于该月中SEO靠我的天数(DD);
%M:位于该年中的月份(MM);
%F:一个基于DBID唯一的名称,这个格式的形式为c-xxx-YYYYMMDD-QQ,其中xxx位该数据库的DBID,YYYYMMDD为日期,QQ是一个SEO靠我1-256的序列;
%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8;
%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集产生一个唯一的名称;
%p:表示备份SEO靠我集中的备份片的编号,从1开始编号;
%U:是%u_%p_%c的简写形式,利用它可以为每一个备份片段(既磁盘文件)生成一个唯一的名称,这是最常用的命名方式;
%t:备份集时间戳;
%T:年月日格式(YYYYMSEO靠我MDD);channel的概念:一个channel是rman于目标数据库之间的一个连接,"allocate channel"命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份和恢复操作SEO靠我使用的I/O类型
通道控制命令可以用来:
控制rman使用的OS资源 影响并行度 指定I/O带宽的限制值(设置 limit read rate 参数) 指定SEO靠我备份片大小的限制(设置 limit kbytes) 指定当前打开文件的限制值(设置 limit maxopenfiles)4、查看所有配置
RMAN> show all;
5、查看数据库方SEO靠我案报表
RMAN> report schema;
6、全量备份数据库及全量恢复
1、全量备份全库
RMAN> backup database plus archivelog delete input; //备SEO靠我份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志
2、备份表空间
这里也可以改为备份某个表空间,比如 back tablespace users;就是备份users的表空间RMANSEO靠我> backup tablespace system plus archivelog delete input; //备份指定表空间及归档的重做日志,并删除旧的归档日志
3、备份归档日志
RMAN> baSEO靠我ckup archivelog all delete input;
4、复制数据文件
RMAN> copy datafile 1 to ‘/home/oracle/oracle_bak/bak/systeSEO靠我m.copy’;
说明一下,这里的数字1对应着命令report schema结果中的1
5、查看备份和文件副本
RMAN> list backup;
查看复制文件
RMAN> list copy
6、验证备份
RMSEO靠我AN> validate backupset 3;
这里说明一下,3这个数字代表的是备份集的编号,可以在list backup命令的结果中查看
7、从自动备份中恢复表空间
如果只丢失了特定的表空间的数据文件SEO靠我,那么可以选择只恢复这个表空间,而不是恢复整个数据库,表空间恢复可以在不关闭数据库的情况下进行,只需要将需要恢复的表空间offline现在模拟某个表空间丢失或损坏
$ cd /database/oracSEO靠我le/oracle/oradata/orcl
$ mv users01.dbf users01_bak.dbf现在开始恢复表空间users01
进入到rman$ rman target=sys/oraclSEO靠我e@orcl
使表空间脱机
RMAN> sql ‘alter tablespace users offline immediate’;
还原表空间
RMAN> restore tablespace usersSEO靠我;
恢复表空间
RMAN> recover tablespace users;
将表空间联机
RMAN> sql ‘alter tablespace users online’;
8、恢复和复原全数据库
模拟数据SEO靠我文件丢失或损坏
$ cd /database/oracle/oracle/oradata/orcl
$ mv system01.dbf system01_bak.dbf现在重新启动实例会报错
查看数据库当前SEO靠我状态
SQL> select status from v$instance;
登录到rman
$ rman target=sys/oracle@orcl
还原数据库
RMAN> restore databaseSEO靠我;
恢复数据库
RMAN> recover database;
打开数据库并登录数据库查看状态
RMAN> alter database open;
SQL> select status from v$instSEO靠我ance;
此时数据文件已恢复了
9、某一个数据文件恢复
查看系统当前的数据文件SQL> col file_name for a50
SQL> select file_id,file_name,status SEO靠我from dba_data_files;
查看文件状态
SQL> select file#,status from v$datafile;
模拟删除文件
$ mv sysaux01.dbf sysaux01_SEO靠我bak.dbf
将数据文件设置未offline状态
SQL> alter database datafile 3 offline;
此时数据文件状态未recover
现在来恢复数据文件
进入到rman$ rmaSEO靠我n target=sys/oracle@orcl
还原和恢复数据文件
RMAN> restore datafile 3;
RMAN> recover datafile 3;
将数据文件设置为online并查看SEO靠我状态
SQL> alter database datafile 2 online;
SQL> select file#,status form v$datafile;
7、增量备份数据库及增量恢复
本节从一个SEO靠我例子来说明增量恢复,首先在数据库表中插入一条数据
接着用rman做一次全量备份(设置的参数可参考上面的设置)
RMAN> backup incremental level 0 database;
然后对数据SEO靠我库数据作更改,这里添加了一条数据
然后再做一次差异增量备份
RMAN> backup incremental level 1 database;
这里再添加一条数据
然后再进行一次备份
然后再做一次差异增量备份SEO靠我RMAN> backup incremental level 1 database;
这里使用了scn的恢复方式
查看当前scnSQL> select dbms_flashback.get_system_SEO靠我change_number from dual;
然后对数据进行删除
还有一种常用的获取到scn的方式就是执行下面语句,将删除的时间转换为scn
SQL> select timestamp_to_scn(tSEO靠我o_timestamp(‘2011-08-03 10:00:00’,‘YYYY-MM-DD HH:MI:SS’)) from dual;
然后我们现在来进行恢复
关闭数据库实例,然后开启实例,单不打开数据SEO靠我库SQL> shutdown immediate;
SQL> startup mount;还原数据到指定scn的位置
RMAN> restore database until scn 2092046;
恢复SEO靠我数据到指定scn的位置
RMAN> recover database until scn 2092046;
因为是不完全恢复(指定了某个位置),所以在打开数据库的命令要加上resetlogs
SQL> alSEO靠我ter database open resetlogs;
然后再看看数据库,发现数据已经恢复了
如果需要基于时间点的恢复,可以参考一下(参考网上资料,没实践过)
SQL> ALTER SESSION SETSEO靠我 NLS_DATE_FORMAT=‘YYYY-MM-DD HH24:MI:SS’;
SQL> shutdown immediate;
SQL> startup mount;
RMAN> restore daSEO靠我tabase until time “to_date(‘2019-7-19 13:19:00’,‘YYYY-MM-DD HH24:MI:SS’)”;
RMAN> recover database untSEO靠我il time “to_date(‘2019-7-19 13:19:00’,‘YYYY-MM-DD HH24:MI:SS’)”;
SQL> alter database open resetlogs;基SEO靠我于日志序列的恢复(参考网上资料,没实践过):
SQL> shutdown immediate;
SQL> startup mount;
RMAN> restore database until SEQUENSEO靠我CE 100 thread 1; //100是日志序列
RMAN> recover database until SEQUENCE 100 thread 1;
SQL> alter database opSEO靠我en resetlogs;日志序列查看命令:
SQL>select * from v$log;
其中有一个sequence字段.resetlogs就会把sequence 置为1
8、删除备份文件删除无效备份SEO靠我。首先执行CROSSCHECK命令核对备份集,如果发现备份无效(比如备份对应的数据文件损坏或丢失),RMAN会将该备份集标记为 EXPIRED状态。要删除相应的备份记录,可以执行DELETE EXPISEO靠我RED BACKUP命令:
RMAN> DELETE EXPIRED BACKUP;
删除EXPIRED副本,如下所示:
RMAN> DELETE EXPIRED COPY;
删除特定备份集,如下所示:
RMASEO靠我N> DELETE BACKUPSET 19;
删除特定备份片,如下所示:
RMAN> DELETE BACKUPPIECE ‘d:/backup/DEMO_19.bak’;
删除所有备份集,如下所示:
RMSEO靠我AN> DELETE BACKUP;
删除特定映像副本,如下所示:
RMAN> DELETE DATAFILE COPY ‘d:/backup/DEMO_19.bak’;
删除所有映像副本,如下所示:
RMASEO靠我N> DELETE COPY;
2、冷备
冷备相对来说比较简单,基本原来就是手动将日志文件、数据文件、控制文件复制到备份的目录
基本步骤是:shutdown数据库—> copy文件—> start数据库$ SEO靠我sqlplus sys/ as sysdba
SQL> shutdown immediate;
SQL> exit;
$ cd /database/oracle/oracle/oradata/orcl //SEO靠我数据库数据目录
$ cp -p * /home/oracle/oracle_bak //复制所有文件及目录到备份目录下
$ sqlplus sys/ as sysdba
SQL> startup;说明:
*.SEO靠我dbf:数据文件
*.ctl:控制文件
*.log:日志文件
3、使用归档模式热备说明:归档模式热备份的数据库是必须在归档模式下的(有点废话,但oracle默认安装是在非归档模式下)
将数据库转换为归档模式(SEO靠我注意数据库必须已装载到此实例并且不在任何实例中打开):$ sqlplus / as sysdba //登录数据库
SQL> shutdown immediate;
SQL> startup mount;(SEO靠我startup nomount 启动实例;startup mount 启动实例加载数据库; startup 启动实例加载数据库打开数据库)
SQL> alter database archivelog;SEO靠我一些归档的相关操作记录:
SQL> archive log list;–查看是否出于归档模式;
SQL> select name from v$archived_log; --查询归档日志
(10G之后)
SSEO靠我QL> alter database archivelog;
SQL> alter database noarchivelog;(10G之前)
SQL> archive log stop;
SQL> arcSEO靠我hive log start;
SQL> alter system set log_archive_start =true scope =spfile;
SQL> alter system set logSEO靠我_achive_start=false scope=spfile;热备的步骤如下:
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter databSEO靠我ase archivelog;
SQL> alter database open;
SQL> alter tablespace users begin backup; --设置备份模式;
$ cp -Rp SEO靠我oracle/ /home/oracle/oracle_bak/;–拷贝
SQL> alter tablespace users end backup ;–结束备份状态
SQL> alter systemSEO靠我 switch logfile–切换日志,使用当前日志归档
四、数据库日常备份计划及脚本参考
1、如果是使用RMAN备份计划可参考:
1.星期天晚上:全备份
2.星期一晚上:增量备份
3.星期二晚上:增量备份
4SEO靠我.星期三晚上:累积备份
5.星期四晚上:增量备份
6.星期五晚上:增量备份
7.星期六晚上:增量备份
如果星期二需要恢复的话,只需要1+2
如果星期四需要恢复的话,只需要1+4
如果星期五需要恢复的话,只需要1+SEO靠我4+5
如果星期六需要恢复的话,只需要1+4+5+6如果需要自动备份,可使用备份脚本+crontab的方式执行
执行脚本命令:rman target / msglog=bakl0.log cmdfile=SEO靠我bakl0 (/表示需要连接的目标数据库,msglog表示日志文件,cmdfile表示的是脚本文件)
如:rman target sys/oracle@orcl msglog=/home/oracle/SEO靠我oracle_bak/bakl1.log cmdfile=/home/oracle/oracle_bak脚本内容为:
run{
allocate channel cha1 type disk;
backupSEO靠我
incremental level 0
format ‘/u01/rmanbak/inc0_%u_%T’(u表示唯一的ID,大T是日期,小t是时间)
tag monday_inc0 //标签可以顺便起,没SEO靠我关系
database;
release channel cha1;
}改动以上的备份等级可弄出全量、增量、累积备份的脚本,然后使用crontab自动执行即可
2、如果是使用备份脚本备份脚本内容如下:
#!/bSEO靠我in/sh
export ORACLE_BASE=/data/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLESEO靠我_SID=orcl
export ORACLE_TERM=xterm
export PATH= O R A C L E H O M E / b i n : / u s r / s b i n : ORACSEO靠我LE_HOME/bin:/usr/sbin: ORACLEHOME/bin:/usr/sbin:PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/uSEO靠我sr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#以上代码为Oracle数据库运行账号oracle的系统环境变量设置,必须添加,SEO靠我否则crontab任务计划不能执行。
date=date +%Y_%m_%d #获取系统当前日期时间
days=7 SEO靠我#设置删除7天之前的备份文件
orsid=192.168.0.198:1521/orcl #Oracle数据库服务器IP、端口、SID
orowner=OSYUNWEI #备份此用户下面的数据
bakuseSEO靠我r=OSYUNWEI #用此用户来执行备份,必须要有备份操作的权限
bakpass=OSYUNWEI #执行备注的用户密码
bakdir=/backup/oracledata #备份文件路径,需要提前创建SEO靠我好
bakdata= o r o w n e r " " orowner"_" orowner""date.dmp #备份数据库名称
baklog= o r o w n e r " " orowner"SEO靠我_" orowner""date.log #备份执行时候生成的日志文件名称
ordatabak= o r o w n e r " " orowner"_" orowner""date.tar.gz SEO靠我#最后保存的Oracle数据库备份文件
cd $bakdir #进入备份目录
mkdir -p $orowner #按需要备份的Oracle用户创建目录
cd $orowner #进入目录
exp b a kSEO靠我 u s e r / bakuser/ bakuser/bakpass@ o r s i d g r a n t s = y o w n e r = orsid grants=y owner= orsSEO靠我idgrants=yowner=orowner file= b a k d i r / bakdir/ bakdir/orowner/ b a k d a t a l o g = bakdata loSEO靠我g= bakdatalog=bakdir/ o r o w n e r / orowner/ orowner/baklog #执行备份
tar -zcvf $ordatabak $bakdata $baSEO靠我klog #压缩备份文件和日志文件
find b a k d i r / bakdir/ bakdir/orowner -type f -name “*.log” -exec rm {} ; #删除备份SEO靠我文件
find b a k d i r / bakdir/ bakdir/orowner -type f -name “*.dmp” -exec rm {} ; #删除日志文件
find b a k d SEO靠我i r / bakdir/ bakdir/orowner -type f -name “*.tar.gz” -mtime +$days -exec rm -rf {} ; #删除7天前的备份(注意:{SEO靠我} \中间有空格)
然后添加脚本执行权限:
chmod +x /backup/oracledata/ordatabak.sh #添加脚本执行权限
然后将脚本添加至crontab执行计划即可
参考资料:
逻辑备份SEO靠我:
https://www.cnblogs.com/promise-x/p/7477360.html(可作为expdp/impdp命令参考)
https://www.cnblogs.com/huacw/pSEO靠我/3888807.html
https://www.cnblogs.com/wishyouhappy/p/3700313.html
RMAN备份:
https://www.cnblogs.com/hllnjSEO靠我2008/p/4117792.html
https://www.cnblogs.com/wishyouhappy/p/3700313.html
https://blog.csdn.net/shudaqi2SEO靠我010/article/details/75300437
https://blog.csdn.net/weixin_41078837/article/details/80609077
https://blSEO靠我og.csdn.net/imliuqun123/article/details/79543378
备份脚本:
http://www.ttlsa.com/oracle/linux-auto-backup-oSEO靠我racle-database/网站备案号:浙ICP备17034767号-2