CentOS6u9 Oracle 11g 静默安装手工建库统一配置方案

环境相关:

OS:CentOS release 6.9
IP:192.168.77.10
MEM:16G
DISK:50G
SWAP:20G

1. 简单说明

本篇博文实际就是在用的生产环境上的CentOS6系统oracle11g静默安装的方案
本博文包括oracle的软件静默安装、打PSU、手工建库、归档备份策略配置
官方文档地址:https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm

2. 主机克隆,基础环境部署

1° 参照《CentOS6实验机模板搭建部署》
克隆一台实验机,调整内存为16G,并进一步配置主机名和hosts文件:

hostname oracle11g
sed -i "s/^HOSTNAME=.*$/HOSTNAME=$(hostname)/g" /etc/sysconfig/network
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "$(ifconfig eth0|grep inet|awk -F'[ :]' '{print $13}') $(hostname)">>/etc/hosts

2° 调整SWAP配置:

参照《CentOS5u11 Oracle 10g 静默安装手工建库统一配置方案》做相关调整
根据官档,当内存大于等于16G时,SWAP配制成16G即可

3° 系统软件包安装:

#静默安装所需的系统包:
yum -y install bind-utils.x86_64 compat-libcap1.x86_64 \
compat-libstdc++-33.x86_64 gcc.x86_64 gcc-c++.x86_64 \
glibc-devel.x86_64 ksh.x86_64 libaio.x86_64 libaio-devel.x86_64 \
libstdc++-devel.x86_64 nfs-utils.x86_64 openssh-clients.x86_64 \
smartmontools.x86_64 sysstat.x86_64 xorg-x11-utils.x86_64 \
bind-libs.x86_64 cloog-ppl.x86_64 cpp.x86_64 glibc-headers.x86_64 \
kernel-headers.x86_64 keyutils.x86_64 libXv.x86_64 libXxf86dga.x86_64 \
libdmx.x86_64 libedit.x86_64 libevent.x86_64 libgomp.x86_64 \
libgssglue.x86_64 libtirpc.x86_64 mailx.x86_64 mpfr.x86_64 \
nfs-utils-lib.x86_64 ppl.x86_64 python-argparse.noarch \
rpcbind.x86_64 elfutils-libelf-devel.x86_64 unzip readline-devel \
unixODBC unixODBC-devel

#图形安装时,还需要的系统包:
yum -y groupinstall "X Window System"
yum -y groupinstall "Desktop"
yum -y install tigervnc-server.x86_64

4° 内核参数调整和用户资源限额配置:
参照《CentOS6u9 Oracle11g 安装部署的内核参数设置简录》调整内核参数

echo 'fs.aio-max-nr = 3145728'>>/etc/sysctl.conf
echo 'fs.file-max = 6815744'>>/etc/sysctl.conf
# 如果物理内存大于64G,则打开使用
# echo 'kernel.shmmax = 137438953472'>>/etc/sysctl.conf
echo 'kernel.sem = 250 32000 100 128'>>/etc/sysctl.conf
echo 'net.ipv4.ip_local_port_range = 9000 65000'>>/etc/sysctl.conf
echo 'net.core.rmem_default = 262144'>>/etc/sysctl.conf
echo 'net.core.rmem_max = 4194304'>>/etc/sysctl.conf
echo 'net.core.wmem_default = 262144'>>/etc/sysctl.conf
echo 'net.core.wmem_max = 1048576'>>/etc/sysctl.conf
sysctl -p

用户资源限额:
echo 'oracle soft nofile 4096'>>/etc/security/limits.conf
echo 'oracle hard nofile 65536'>>/etc/security/limits.conf
echo 'oracle soft nproc 2047'>>/etc/security/limits.conf
echo 'oracle hard nproc 16384'>>/etc/security/limits.conf
echo 'oracle soft stack 10240'>>/etc/security/limits.conf
echo 'oracle hard stack 32768'>>/etc/security/limits.conf

5° Oracle用户创建配置和安装目录创建配置:
用户创建:

groupadd -g 1000 oinstall
groupadd -g 1001 dba
useradd -g oinstall -G dba -u 1000 oracle
echo oracle|passwd --stdin oracle

用户配置:

SID=orcl
NLS=UTF8
# 实例名为orcl,字符集为UTF8,根据需求更改设置
cat >>/home/oracle/.bash_profile<<EOF
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=$SID; export ORACLE_SID
PATH=/usr/sbin:\$PATH; export PATH
PATH=\$ORACLE_HOME/bin:\$PATH; export PATH
LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib; export CLASSPATH
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
export NLS_LANG=AMERICAN_AMERICA.$NLS
EOF

安装目录配置:

mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01
mkdir /oradata
chown -R oracle: /oradata
mkdir -p /backup
chown -R oracle:oinstall /backup
mkdir -p /arch
chown -R oracle:oinstall /arch

3. Oracle11.2.0.4软件静默安装

主机已经做了很多变动和配置,建议重启一次主机

# 重启主机
reboot

# 解压数据库安装介质
chown oracle: /tmp/p13390677_112040_Linux-x86-64_1of7.zip
chown oracle: /tmp/p13390677_112040_Linux-x86-64_2of7.zip
su - oracle
cd /tmp
unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip
rm -rf /tmp/p13390677_112040_Linux-x86-64_1of7.zip
rm -rf /tmp/p13390677_112040_Linux-x86-64_2of7.zip

# 创建软件静默安装需要的应答文件
cd /tmp/database/
cat >/tmp/database/response/install_11g.rsp<<EOF
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=$(hostname)
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=true
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=false
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=
oracle.install.db.config.starterdb.characterSet=
oracle.install.db.config.starterdb.memoryOption=false
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=SKIP_UPDATES
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
EOF

# 静默安装
./runInstaller -force -silent -responseFile /tmp/database/response/install_11g.rsp

# 根据提示,可以找到静默安装的日志文件目录:
# /u01/app/oracle/oraInventory/logs/

# 静默安装的屏幕信息分析:
# Starting Oracle Universal Installer...
# Checking Temp space: must be greater than 120 MB.   Actual 35833 MB    Passed
# Checking swap space: must be greater than 150 MB.   Actual 20473 MB    Passed
# 统一安装工具启动后首先检查了tmp目录余容量和swap容量
# Preparing to launch Oracle Universal Installer from /tmp/OraInstall2018-05-17_10-29-05AM. Please wait ...
# [WARNING] [INS-13014] Target environment do not meet some optional requirements.
#    CAUSE: Some of the optional prerequisites are not met. See logs for details. 
#        /tmp/OraInstall2018-05-17_10-29-05AM/installActions2018-05-17_10-29-05AM.log
#    ACTION: Identify the list of failed prerequisite checks from the log: 
#        /tmp/OraInstall2018-05-17_10-29-05AM/installActions2018-05-17_10-29-05AM.log. 
#        Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
# You can find the log of this install session at:
#  /u01/app/oraInventory/logs/installActions2018-05-17_10-29-05AM.log
# 这里有一个警告信息,根据提示,查看相应的日志来解决警告信息,可以直接过滤WARNING关键字
# 这里的警告信息来自optional requirement,并不影响安装
# The installation of Oracle Database 11g was successful.
# Please check '/u01/app/oraInventory/logs/silentInstall2018-05-17_10-29-05AM.log' for more details.
# As a root user, execute the following script(s):
#         1. /u01/app/oraInventory/orainstRoot.sh
#         2. /u01/app/oracle/product/11.2.0/db_1/root.sh
# 这里提醒使用root用户执行两个脚本
# 脚本执行后也有日志记录,可以查询验证脚本执行的结果

cd /tmp/
rm -rf /tmp/database
# 删除安装包

4. 数据库安装最后的PSU补丁

chown oracle: /tmp/p23274134_112040_Linux-x86-64.zip
chown oracle: /tmp/p6880880_112000_Linux-x86-64.zip
# 安装OPatch
su - oracle
cd /tmp/
unzip p6880880_112000_Linux-x86-64.zip
cp -av OPatch/* $ORACLE_HOME/OPatch/
$ORACLE_HOME/OPatch/opatch version
# 删除安装包
rm -rf OPatch
rm -rf p6880880_112000_Linux-x86-64.zip
# 安装PSU
unzip p23274134_112040_Linux-x86-64.zip
cd /tmp/23274134/23054359
$ORACLE_HOME/OPatch/opatch apply
# 删除安装包
cd /tmp
rm -rf 23274134
rm -rf p23274134_112040_Linux-x86-64.zip

这里写图片描述

5. 手工建库

实例相关设定:

su - oracle
SID=orcl
NLS=UTF8
# 实例名为orcl,字符集为UTF8,根据需求更改设置
SGA=$(grep 'MemTotal' /proc/meminfo |awk '{printf ("%d\n",$2*1024*0.8*0.8)}')
PGA=$(grep 'MemTotal' /proc/meminfo |awk '{printf ("%d\n",$2*1024*0.8*0.2)}')
# 配置MEM的80%分配给Oracle实例
# 配置SGA为其中的80%,配置PGA为其中的20%
DBPASS=oracle
# 配置数据库账号密码为oracle,即sys密码为oracle

配置监听:

rm -rf $ORACLE_HOME/network/admin/listener.ora
cat >$ORACLE_HOME/network/admin/listener.ora<<EOF
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ${SID})
      (ORACLE_HOME = $ORACLE_HOME)
      (SID_NAME = ${SID})
    )
  )
LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = $(hostname -i))(PORT = 1521))
  )
ADR_BASE_LISTENER = $ORACLE_BASE
EOF

lsnrctl start

配置init.ora:

cat >/home/oracle/init.ora<<EOF
db_block_size=8192
open_cursors=300
db_domain=""
db_name="${SID}"
control_files=("/oradata/${SID}/control01.ctl", "/oradata/${SID}/control02.ctl", "/oradata/${SID}/control03.ctl")
compatible=11.2.0.0.0
diagnostic_dest=${ORACLE_BASE}
memory_target=0
sga_target=${SGA}
pga_aggregate_target=${PGA}
processes=1500
audit_file_dest="/u01/app/oracle/admin/${SID}/adump"
audit_trail=none
remote_login_passwordfile=EXCLUSIVE
undo_tablespace=UNDOTBS1
EOF
# 在创建时就直接关闭AMM,启用ASMM,为后续的大页做准备
# 关闭审计

创建实例运行目录和库文件存放目录:

OLD_UMASK=$(umask)
umask 0027
mkdir -p /u01/app/oracle/admin/${SID}/adump
mkdir -p /u01/app/oracle/admin/${SID}/dpdump
mkdir -p /u01/app/oracle/admin/${SID}/pfile
mkdir -p /u01/app/oracle/cfgtoollogs/dbca/${SID}
mkdir -p /u01/app/oracle/product/11.2.0/db_1/dbs
mkdir -p /oradata/${SID}
umask ${OLD_UMASK}
# 文件系统库,库文件统一存放于/oradata/目录下,实际生产要根据情况更换目录或者挂接存储

库注册:

ORACLE_SID=${SID}; export ORACLE_SID
echo "${SID}:/u01/app/oracle/product/11.2.0/db_1:N">>/etc/oratab
# 如果库信息没有写入oratab文件,则该库无法被dbca删除

手工建库:

SID=orcl
NLS=UTF8
DBPASS=oracle
# 以上三个参数和上方的配置保持一致
/u01/app/oracle/product/11.2.0/db_1/bin/sqlplus /nolog<<EOF
set verify off
host /u01/app/oracle/product/11.2.0/db_1/bin/orapwd file=/u01/app/oracle/product/11.2.0/db_1/dbs/orapw${SID} password='${DBPASS}' force=y
-- 创建密码文件
SET VERIFY OFF
connect "SYS"/"${DBPASS}" as SYSDBA
set echo on
spool /home/oracle/CreateDB.log append
-- 建库日志
startup nomount pfile="/home/oracle/init.ora";
-- nomount实例
CREATE DATABASE "${SID}"
MAXINSTANCES 8
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
DATAFILE '/oradata/${SID}/system01.dbf' SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/oradata/${SID}/sysaux01.dbf' SIZE 600M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/oradata/${SID}/temp01.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE '/oradata/${SID}/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT  5120K MAXSIZE UNLIMITED
CHARACTER SET ${NLS}
-- 库字符集设置
NATIONAL CHARACTER SET AL16UTF16
LOGFILE
GROUP 1 ('/oradata/${SID}/redo01a.log','/oradata/${SID}/redo01b.log') SIZE 204800K,
GROUP 2 ('/oradata/${SID}/redo02a.log','/oradata/${SID}/redo02b.log') SIZE 204800K,
GROUP 3 ('/oradata/${SID}/redo03a.log','/oradata/${SID}/redo03b.log') SIZE 204800K
-- 三组日志文件,每组俩日志成员,日志文件容量200M
USER SYS IDENTIFIED BY "${DBPASS}" USER SYSTEM IDENTIFIED BY "${DBPASS}";
-- 建库
spool off
SET VERIFY OFF
connect "SYS"/"${DBPASS}" as SYSDBA
set echo on
spool /home/oracle/CreateDBFiles.log append
-- 创建users表空间的日志
CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/oradata/orcl/users01.dbf'
SIZE 5M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
ALTER DATABASE DEFAULT TABLESPACE "USERS";
spool off
-- 创建users表空间
SET VERIFY OFF
connect "SYS"/"${DBPASS}" as SYSDBA
set echo on
spool /home/oracle/CreateDBCatalog.log append
-- 创建性能视图的日志
@/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/catalog.sql;
@/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/catblock.sql;
@/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/catproc.sql;
@/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/catoctk.sql;
@/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/owminst.plb;
connect "SYSTEM"/"${DBPASS}"
@/u01/app/oracle/product/11.2.0/db_1/sqlplus/admin/pupbld.sql;
connect "SYSTEM"/"${DBPASS}"
set echo on
spool /home/oracle/sqlPlusHelp.log append
-- 创建sqlplus帮助的日志
@/u01/app/oracle/product/11.2.0/db_1/sqlplus/admin/help/hlpbld.sql helpus.sql;
spool off
spool off
SET VERIFY OFF
set echo on
spool /home/oracle/lockAccount.log append
-- 锁定用户的日志
BEGIN
 FOR item IN ( SELECT USERNAME FROM DBA_USERS WHERE ACCOUNT_STATUS IN ('OPEN', 'LOCKED', 'EXPIRED') AND USERNAME NOT IN (
'SYS','SYSTEM') )
 LOOP
  dbms_output.put_line('Locking and Expiring: ' || item.USERNAME);
  execute immediate 'alter user ' ||
   sys.dbms_assert.enquote_name(
   sys.dbms_assert.schema_name(
   item.USERNAME),false) || ' password expire account lock' ;
 END LOOP;
END;
/
spool off
SET VERIFY OFF
connect "SYS"/"${DBPASS}" as SYSDBA
set echo on
spool /home/oracle/postDBCreation.log append
-- 收尾日志
execute DBMS_AUTO_TASK_ADMIN.disable();
@/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/catbundle.sql psu apply;
select 'utl_recomp_begin: ' || to_char(sysdate, 'HH:MI:SS') from dual;
execute utl_recomp.recomp_serial();
select 'utl_recomp_end: ' || to_char(sysdate, 'HH:MI:SS') from dual;
connect "SYS"/"{DBPASS}" as SYSDBA
set echo on
create spfile='/u01/app/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora' FROM pfile='/home/oracle/init.ora';
-- 创建spfile
shutdown immediate;
-- 关库
connect "SYS"/"${DBPASS}" as SYSDBA
startup;
-- 重启库
spool off
exit;
EOF
# 建库日志在/home/oracle目录下,可以另外打开终端,监控日志,监控建库进度
# 如果需要重建,则:
# echo 'shutdown abort'|sqlplus / as sysdba
# rm -rvf cd /oradata/${SID}/*
# rm -rvf /u01/app/oracle/diag/rdbms/${SID}*
# rm -rvf /u01/app/oracle/admin/${SID}/adump/*
# rm -rvf /u01/app/oracle/admin/${SID}/dpdump/*
# rm -rvf /u01/app/oracle/admin/${SID}/pfile/*
# rm -rf /home/oracle/*.log
# 手工建库完成
rm -v /home/oracle/{*.log,init.ora}

6. 配置归档

sqlplus / as sysdba
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
#将默认的密码生存周期由180天改为无限制
alter system set deferred_segment_creation=false;
#关闭段延迟分配
define SID=orcl
-- 设置归档子目录,将归档存入和SID相同的子目录中
host mkdir -pv /arch/&SID
alter system set log_archive_format='arch_%t_%s_%r.arc' scope=spfile;
alter system set log_archive_dest_10='location=/arch/&SID' scope=spfile;
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
alter system archive log current;
alter system set control_file_record_keep_time=30;
-- 归档留存策略为30天
exit

7. 配置RMAN备份策略

目录配置:

mkdir -pv /backup/rman/script
mkdir -pv /backup/{autobackup,backupset}
mkdir -pv $ORACLE_HOME/block_change_trace
# 创建rman脚本目录、rman自动备份目录、备份集存储目录
# 创建块改变追踪目录

打开块改变追踪:

sqlplus / as sysdba
alter system set control_file_record_keep_time=30;
-- 归档留存策略为30天
alter database enable block change tracking using file '?/block_change_trace/track.file';
-- 打开块改变追踪
exit

设置备份策略:

rman target /
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/autobackup/%F';
exit
# 设置备份留存策略、打开控制文件自动备份

创建备份脚本:

# 备份脚本:
cat >/backup/rman/script/rman_inc0.sh<<EOFALL
#!/bin/bash
. ~/.bash_profile
export NLS_LANG=American_America.${NLS}
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
TIME=\$(date "+%Y_%m_%d_%H_%M_%S")

echo ''>>/backup/rman/script/rman_run.log
echo '###########################################################'>>/backup/rman/script/rman_run.log
echo '#######' \$(date '+%F %R:%S') Check and Delete Backup '#######' >>/backup/rman/script/rman_run.log
echo '###########################################################'>>/backup/rman/script/rman_run.log
echo ''>>/backup/rman/script/rman_run.log

rman target / log /backup/rman/script/rman_run.log append<<EOF
allocate channel for maintenance type disk;
crosscheck backup;
crosscheck archivelog all;
delete noprompt archivelog until time 'sysdate-7';
delete noprompt obsolete;
delete noprompt expired backup;
EOF
# 删除7天前的归档

echo ''>>/backup/rman/script/rman_run.log
echo '##########################################################'>>/backup/rman/script/rman_run.log
echo '#######' \$(date '+%F %R:%S') Start Rman Inc0 Backup  '#######' >>/backup/rman/script/rman_run.log
echo '##########################################################'>>/backup/rman/script/rman_run.log
echo ''>>/backup/rman/script/rman_run.log

rman target / nocatalog log /backup/rman/script/rman_run.log append<<EOF
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
set limit channel c1 readrate=10240;
set limit channel c1 kbytes=4096000;
set limit channel c2 readrate=10240;
set limit channel c2 kbytes=4096000;
backup as compressed backupset filesperset 3 incremental level 0 database format '/backup/backupset/inc0_%d_%T_%s_%p' tag=inc0_\$TIME;
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup as compressed backupset archivelog all not backed up 2 times tag=arch0_\$TIME format '/backup/backupset/arch0_%d_%T_%s_%p';
backup as compressed backupset current controlfile tag=ctl0_\$TIME format '/backup/backupset/ctl0_%d_%T_%s_%p';
backup as compressed backupset spfile tag=spfile0_\$TIME format '/backup/backupset/spfile0_%d_%T_%s_%p';
release channel c1;
release channel c2;
}
EOF
# 归档备份两次
EOFALL

备份任务:

chmod +x /backup/rman/script/rman_inc0.sh
crontab -l>/tmp/crontab.tmp
echo '# Rman Backup Job'>>/tmp/crontab.tmp
echo '0 0 * * * /bin/bash /backup/rman/script/rman_inc0.sh >/dev/null 2>&1'>>/tmp/crontab.tmp
cat /tmp/crontab.tmp |crontab
rm -rf /tmp/crontab.tmp

测试:

/bin/bash /backup/rman/script/rman_inc0.sh >/dev/null 2>&1
cd /backup/rman/script/
cat rman_run.log

[TOC]

猜你喜欢

转载自blog.csdn.net/zwjzqqb/article/details/80346991