在HP Unix上安装MC软件来运行Oracle 10G双机(8)设置rman

1 安装catalog数据库

如果没有instance则先创建。

设置本地服务名中catalog databasecatalog_database

Target databasetarget_database

system用户登录catalog数据库

sqlplus system/oracle@catalog_database

  create tablespace rman_ts datafile ’/opt/oracle/oradata/catalog_database/rmants.dbf’--(需要修改路径,如果catalog数据库放在HA数据库中,这个表空间需要放在共享磁盘上)  size 20m  default storage(  initial 100k  next 100k  pctincrease 0  );

create user rman identified by passw0rd--(需要修改密码)   default tablespace rman_ts  Temporary tablespace temp  quota unlimited on rman_ts;  grant recovery_catalog_owner to rman;  grant connect,resource to rman;

2 做准备

2.1 设置target数据库并查看参数

查看LARGE_POOL_SIZE设置,使备份可以使用连续的缓冲池

sqlplus “/as sysdba”

show parameters large

查看DB_FIL_DIRECT_IO_COUNT设置,可以提高缓冲区的利用。

show parameters db_fil

2.2 设置target数据库block参数

指定block change tracking位置,打开block change tracking功能

alter database enable block change tracking using file '/opt/oracle/oradata/cutest/chg01.dbf';

是否已经打开的查看方法:

Select * from v$block_change_tracking;

2.3 打开target 数据库的归档

此处已经做完,对于MC来说,数据库会直接运行到open状态,这时需要修改oracle10g.sh文件,使数据库运行到nomount状态,这样就能修改某些参数了

A. 用操作系统oracle用户登录主机

B. 用操作系统用户登录数据库

sqlplus “/as sysdba”

C. 查看当前归档状态

archive log list;

D. 备份初始化文件

create pfile=’/home/oracle/pfilebackup20110318’ from spfile;

E. 配置归档日志名称和格式

alter system set log_archive_format='%S_%T_%R.log' scope=spfile;

F. 配置归档文件存放位置(首先要创建location的目录,注意目录后要有’/’

alter system set log_archive_dest_1='location=/opt/oracle/oradata/cutest/arc' scope=spfile;

G. 运行下面命令关闭数据库

shutdown immediate

H. 将数据库开启到mount状态

startup mount

I. 开启归档模式

alter database archivelog;

J. 打开数据库

alter database open;

K. 测试是否产生归档日志

alter system switch logfile;

L. 查看当前状态

archive log list;

select log_mode from v$database;

2.4 target数据库注册到catalog数据库中

A. 运行下面脚本

rman
RMAN>connect catalog rman/passw0rd@catalog_database
RMAN>create catalog tablespace rman_ts
RMAN>connect target system/oracle
RMAN>register database;
RMAN>resync catalog;

3 备份程序shell脚本

先要指定备份目录,对于HA来说备份目录需要放在共享磁盘中

在备份目录建立几个文件夹

mkdir data

mkdir log

mkdir data/1

touch data/1/aaa

mkdir data/7

touch data/7/aaa

mkdir data/14

touch data/14/aaa

mkdir data/21

touch data/21/aaa

mkdir data/28

touch data/28/aaa

mkdir data/temp

在备份目录创建rman_bak.sh文件,给该shell文件赋权

touch rman_bak.sh

chmod 777 rman_bak.sh

前提:ORACLE_BASE ORACLE_HOME NLS_LANG PATH都需要设置好

附上的是rman_bak.sh文件内容,需要在target数据库本机上运行该脚本。(需要设置前面几个参数)

rman_bak.sh文件见扩展

4 设置crontab

oracle用户加入到crontab允许列表中

root运行vi /etc/cron.allow(linux系统)

root运行vi /usr/adm/cron/cron.allow(HPUX系统)

oracle用户加入,立刻生效

以下用oracle身份执行

crontab –l

crontab –e

(需要修改shell文件的路径,HA也要设置该路径,可以先禁用)

备份策略:(备份时间需要再讨论)每月1日凌晨5点做0级备份,每月7/14/21/28日凌晨5点做1级备份,
0 5 1 * * nohup /opt/oracle/oradata/backup/rman_bak.sh 0 > /opt/oracle/oradata/backup/rman_bak.log &
0 5 7,14,21,28 * * nohup /opt/oracle/oradata/backup/rman_bak.sh 1 > /opt/oracle/oradata/backup/rman_bak.log &

5 重复设置

分别对下面几个数据库进行设置:

平台和HA,核心1HA,核心2HA

6 最小磁盘占用估算(5.7T

平台核心数据库的全量备份2个(因为在每月月初全量备份需要存放两份)

平台核心数据库增量备份4

归档日志存放8

一份全量备份预计占用500G

一份增量备份≈min(归档日志*8,全量备份)

一天的归档日志大概占用100G

现阶段磁盘占用:

500G*2+500G*4+100G*8=3.8T

加上buffer,最小磁盘占用=3.8T*1.5=5.7T

7 恢复过程:

7.1 启动target数据库到nomount状态

sqlplus连接target数据库,将target数据库启动到nomount状态,此处需要用到pfile或者是spfile

sqlplus “/as sysdba”

shutdown immediate

startup nomount

exit

7.2 rman连接catalog数据库和target数据库

rman catalog rman/passw0rd@catalog_database target system/oracle(需要修改用户名和密码)

7.3 恢复控制文件

run {

allocate channel d1 type disk;

restore controlfile;

release channel d1;

}

7.4 查询数据文件

sqlplus连接catalog数据库,查询有几个数据文件和数据文件的号码

sqlplus rman/passw0rd@catalog_database(需要修改本地服务名)

select * from DF; (select file# from DF;)

7.5 rman恢复数据文件

(需要根据上面查询出的数据文件代码来写本部分代码)

run {

allocate channel d1 type disk;

sql "alter database mount";

restore datafile 1;

restore datafile 2;

restore datafile 3;

restore datafile 4;

restore datafile 5;

restore datafile 6;

release channel d1;

}

7.6 rman注册归档文件

sqlplus “/as sysdba”

alter system set "_allow_resetlogs_corruption"=true scope=spfile;

shutdown immediate

startup mount

rman catalog rman/passw0rd@catalog_database target system/oracle

(需要设置归档路径)

run {

set archivelog destination to '/db0/oradata/ora_bk/arc';

allocate channel d1 type disk;

restore archivelog all;

release channel d1;

}

exit

7.7 recover

sqlplus连接target数据库,根据日志做recover

sqlplus “/as sysdba”

recover database using backup controlfile until cancel;(本步骤可能会出现一个ora-1152错误,不用担心)

alter database open resetlogs;

7.8 查询数据库是否恢复

sqlplus连接target数据库,查询数据库是否恢复

select table_name from user_tables;

exit

7.9 同步

target数据库恢复后,做rman数据库的同步。(需要设置用户名和密码)

rman catalog rman/passw0rd@catalog_database target system/oracle

reset database;

[@more@]

#!/bin/sh
#set env
PATH=$PATH:$HOME/bin
ORACLE_BASE=/opt/oracle
export ORACLE_BASE
export ORACLE_SID=cutest
export ORACLE_HOME=/opt/oracle/product/10.2.0
export PATH=$ORACLE_HOME/bin:/home/oracle/dba/bin:$PATH
DATE=`date +%d`
DATE_2=`date +%Y%m%d`
BACKUP_PATH=/opt/oracle/oradata/backup
TEMP_PATH=$BACKUP_PATH/data/temp
LEVEL=$@
TARGET_SID=cutest
TARGET_USERNAME=system
TARGET_PASS=oracle
RMAN_SID=catalog_database
RMAN_USERNAME=rman
RMAN_PASS=passw0rd
if [ $# != 1 ]; then
echo "usage: rman_bak.sh n where n is the rman backup level(0,1,2 is permitted)."
exit 1
fi
if [ $@ -ne 0 -a $@ -ne 1 -a $@ -ne 2 ]; then
echo "usage: rman_bak.sh n where n is the rman backup level(Only 0,1,2 is permitted)."
exit 2
fi

# Move data to temp folder
rm -rf $TEMP_PATH/*
mv $BACKUP_PATH/data/$DATE/* $TEMP_PATH/

echo "-----------------------------start-----------------------------";date
if [ $LEVEL = 0 ]; then
rman log $BACKUP_PATH/log/level.$TARGET_SID.$LEVEL.$DATE_2.log <connect target $TARGET_USERNAME/$TARGET_PASS;
connect catalog $RMAN_USERNAME/$RMAN_PASS@$RMAN_SID;
resync catalog;
run{
allocate channel c1 type disk ;
crosscheck backupset of archivelog all ;
backup filesperset 3 format '$BACKUP_PATH/data/$DATE/arch.%d.live.$LEVEL.%t'(archivelog from time 'sysdate-8' all delete input) ;
delete noprompt expired backupset of archivelog all ;
release channel c1 ;
}
run{
allocate channel c2 type disk ;
crosscheck backupset of database ;
backup incremental level $LEVEL filesperset 3 format '$BACKUP_PATH/data/$DATE/data.%d.live.$LEVEL.%t'(database include current controlfile) ;
delete noprompt expired backupset of database ;
delete noprompt obsolete ;
release channel c2 ;
}
exit;
EOF
else
rman log $BACKUP_PATH/log/level.$TARGET_SID.$LEVEL.$DATE_2.log <connect target $TARGET_USERNAME/TARGET_PASS;
connect catalog $RMAN_USERNAME/$RMAN_PASS@$RMAN_SID;
resync catalog;
run{
allocate channel c1 type disk ;
crosscheck backupset of archivelog all ;
backup filesperset 3 format '$BACKUP_PATH/data/$DATE/arch.%d.live.$LEVEL.%t' (archivelog from time 'sysdate-8') ;
delete noprompt expired backupset of archivelog all ;
release channel c1 ;
}
run{
allocate channel c2 type disk ;
crosscheck backupset of database ;
backup incremental level $LEVEL filesperset 3 format '$BACKUP_PATH/data/$DATE/data.%d.live.$LEVEL.%t' (database include current controlfile) ;
delete noprompt expired backupset of database ;
delete noprompt obsolete ;
release channel c2 ;
}
exit;
EOF
fi

exp $RMAN_USERNAME/$RMAN_PASS@$RMAN_SID file=$BACKUP_PATH/data/$DATE/live.rman.$DATE_2.dmp log=$BACKUP_PATH/log/$RMAN_SID.rman.$DATE_2.log
echo "------------------------------end------------------------------";date

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/41451/viewspace-1047908/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/41451/viewspace-1047908/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值