博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux服务器下对Oracle作Rman备份
阅读量:5264 次
发布时间:2019-06-14

本文共 3894 字,大约阅读时间需要 12 分钟。

由于工作需要,最近要对几台Linux系统下的Oracle数据库进行Rman备份,就在操作的同时,整理了一下,方便今后作为资料进行查阅。

 

总结:Linux服务器下对Oracle数据库进行Rman步骤大致分为以下七个步骤:

一:确定备份存储的文位置,创建文件夹 mkdir /backup

二:建立备份脚本存储位置,创建文件夹 mkdir /u01/script/

三:创建备份脚本和脚本日志。授予oracle用户执行权限。

四:为了防止修改数据库参数导致数据库无法启动,创建spfile参数文件备份pfile; create pfile='/u01/initpfile.ora' from spfile;

五:修改数据库模式为归档模式。alter database archivelog;

六:修改数据库归档日志格式。alter system set log_archive_format='%t_%s_%r.arch' scope=spfile;

七:根据备份策略确定备份脚本执行时间,频率

举例说明:对某某服务器Rman备份

步骤一、二没有先后顺序:

1、[root@localhost ~]# su - oracle

2、[oracle@localhost ~]$ cd /u01     --------切换至u01目录下

3、[oracle@localhost u01]$ mkdir script  --------在u01目录下新建script文件夹

4、[oracle@localhost u01]$ ll            --------查看文件夹是否创建成功   总用量 8 drwxr-xr-x. 4 oracle oinstall 4096 8月  16 19:13 app drwxr-xr-x  2 oracle oinstall 4096 12月 31 14:34 script  ---------成功

5、[oracle@localhost u01]$ chown oracle:oinstall script/    -------更改该文件夹的所有者(oracle)--此步骤特定情况不用重复指定

6、[oracle@localhost u01]$ chown -R oracle:oinstall /u01/    -------更改u01文件夹的所有者(oracle)--此步骤特定情况不用重复指定

7、[oracle@localhost u01]$ mkdir /backup    ---------确定备份存储的文件位置

8、[oracle@localhost u01]$ chown oracle:oinstall /backup/   -------更改backup文件夹的所有者(oracle)--此步骤特定情况不用重复指定

9、[oracle@localhost u01]$ cd /

10、[oracle@localhost /]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/bin/

11、[oracle@localhost bin]$ chmod 6751 oracle     --------修改Oracle可执行文件权限 ----一般情况不用要结合具体情况

步骤三(创建备份脚本和脚本日志,授予oracle用户执行权限):

1、将事先编辑好的文件,文件名为:backup_db_level_0.sh上传至u01/script目录下;

2、[oracle@localhost script] vi backup_db_level_0.sh

3、[oracle@localhost script] vi set_environment

步骤四(为了防止修改数据库参数导致数据库无法启动,创建spfile参数文件备份pfile):

1、SQL> shutdown immediate;   --------关闭数据库

2、SQL> create pfile='/u01/initpfile.ora' from spfile;

步骤五(修改数据库模式为归档模式):

1、SQL> select open_mode,name,log_mode from v$database;   -------查看数据库是归档还是非归档模式

OPEN_MODE      NAME      LOG_MODE -------------------- --------- ------------ READ WRITE      ORCL      NOARCHIVELOG

2、SQL> alter database archivelog;   --------修改为归档模式

步骤六(修改数据库归档日志格式):

1、SQL> alter system set log_archive_format='%t_%s_%r.arch' scope=spfile;

2、SQL> startup         --------启动数据库

步骤七(对数据库制定每周六晚上0点进行备份计划):

1、[oracle@localhost script]$ crontab -e    -------对定时备份文件进行“编辑”

no crontab for oracle - using an empty one crontab: installing new crontab

2、[oracle@localhost script]$ crontab -l    -------对定时备份文件进行“查看”

SHELL=/bin/bash PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin 0 0 * * 6 /u01/script/backup_db_level_0.sh

3、[oracle@localhost script]$ cat backup_db_level_0.sh -----一次显示整个文件

 

[oracle@E5CP22ZH01 script]$ cat backup_db_level_0.sh . /u01/app/tmp/script/set_environment cd /u01/app/tmp/script

rman TARGET / > Backup_DB_Level_0.log.`date +%Y%m%d-%H%M` << EOF CONFIGURE DEFAULT DEVICE TYPE TO DISK;

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/app/tmp/backup/';

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/app/tmp/backup/%F';

CONFIGURE DEVICE TYPE DISK PARALLELISM 1;

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/tmp/backup/snapcf_db.f';

SHOW ALL;

SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';

run {   

ALLOCATE CHANNEL c1 TYPE DISK;   

ALLOCATE CHANNEL c2 TYPE DISK;  

  BACKUP AS BACKUPSET ARCHIVELOG ALL      

FORMAT="/u01/app/tmp/backup/db_arch_log_%I_%U";  

  RELEASE CHANNEL c1;   

RELEASE CHANNEL c2;

}

ALLOCATE CHANNEL FOR MAINTENANCE TYPE DISK;

RELEASE CHANNEL;

run {   

ALLOCATE CHANNEL c1 TYPE DISK;  

  ALLOCATE CHANNEL c2 TYPE DISK;   

BACKUP AS BACKUPSET INCREMENTAL LEVEL 0 DATABASE      

FORMAT="/u01/app/tmp/backup/db_db_level_0_%I_%U"      

INCLUDE CURRENT CONTROLFILE      

FILESPERSET=2;   

RELEASE CHANNEL c1;   

RELEASE CHANNEL c2;

}

crosscheck backup;

crosscheck archivelog all;

report obsolete;

delete noprompt obsolete;

delete noprompt expired backup;

release channel;

EXIT EOF

--------说明---- crontab 文件中每个条目中各个域的意义和格式:

第一列 分钟: 1——59

第二列 小时: 1——23(0表示子夜)

第三列 日 : 1——31

第四列 月 : 1——12

第五列 星期: 星期0——6(0表示星期天,1表示星期一、以此类推)

第六列 要运行的命令

 

转载于:https://www.cnblogs.com/boboc/p/7218504.html

你可能感兴趣的文章
关于ExecuteNonQuery()返回值为-1
查看>>
Firefox修復QQ快速登錄
查看>>
PAT——1060. 爱丁顿数
查看>>
分布式技术追踪 2017年第二十期
查看>>
git添加公钥后报错sign_and_send_pubkey: signing failed: agent refused operation的解决办法
查看>>
Linux环境变量永久设置方法(zsh)
查看>>
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
查看>>
脑袋卡在窗子里
查看>>
ruby 中文字符to_json后乱码(unicode)
查看>>
《大道至简》第六章读后感
查看>>
codeforce 597C-Subsequences(dp+树状数组)
查看>>
[android](学习笔记6)为应用程序添加对话框(1)
查看>>
windows下mongodb安装与使用
查看>>
rotate the clock
查看>>
bugku 变量
查看>>
Python 环境傻瓜式搭建 :Anaconda概述
查看>>
数据库01 /Mysql初识以及基本命令操作
查看>>
数据库02 /MySQL基础数据类型以及多表之间建立联系
查看>>
Python并发编程04/多线程
查看>>
CF461B Appleman and Tree
查看>>