Oracle 之 11g Clone 单机脚本安装

 如果你需要安装的数据库服务器比较多,使用图形化方式安装数据库软件的速度还是很慢,而且也比较麻烦。Oracle 11g 提供了Clone安装的方法。

步骤如下:

  • 使用正常方法在服务器A上安装好Oracle。

  • 将A机器上的$ORACLE_HOME打包,db_home1.zip 。

  • 将B机器的环境准备好,如建立用户、建立用户、修改内核参数,修改环境变量等等。

  • 将zip包copy到B服务器,解压到任意目录。

  • 执行Clone命令

 

  1. A机器上打包

[root@localhost oracle]# zip -r db_1.zip /u01/app/oracle/product/11.2.0/db_1/

2. 准备B机器环境

[root@localhost inst_env_scripts]# ./1preusers.sh 
[root@localhost inst_env_scripts]# ./2predir.sh 
[root@localhost inst_env_scripts]# ./3prelimits.sh
[root@localhost inst_env_scripts]# ./4presysctl.sh

脚本内容如下

[root@localhost inst_env_scripts]# cat 1preusers.sh 
#!/bin/bash
#Purpose:Create 3 groups named ‘oinstall‘,‘dba‘,‘oper‘, plus 1 users named ‘oracle‘.
#Also setting the Environment
#variable for oracle user.
#variable for grid user.
#Usage:Log on as the superuser(‘root‘),and then execute the command:#./1preusers.sh
#Author:ding liqing
 
echo "Now create 3 groups named ‘oinstall‘,‘dba‘,‘oper‘"
echo "Plus 1 users named ‘oracle‘,Also setting the Environment"
groupadd -g 1000 oinstall 
groupadd -g 1300 dba 
groupadd -g 1301 oper 
useradd -u 1101 -g oinstall -G dba,oper -d /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle 
echo "oracle" | passwd --stdin oracle
echo "export TMP=/tmp">> /home/oracle/.bash_profile  
echo ‘export TMPDIR=$TMP‘>>/home/oracle/.bash_profile 
echo "export ORACLE_SID=orcl">> /home/oracle/.bash_profile 
echo "export ORACLE_BASE=/u01/app/oracle">> /home/oracle/.bash_profile
echo ‘export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1‘>> /home/oracle/.bash_profile
echo ‘export TNS_ADMIN=$ORACLE_HOME/network/admin‘  >> /home/oracle/.bash_profile
echo ‘export PATH=/usr/sbin:$PATH‘>> /home/oracle/.bash_profile
echo ‘export PATH=$ORACLE_HOME/bin:$PATH‘>> /home/oracle/.bash_profile
echo ‘export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib‘>> /home/oracle/.bash_profile
echo ‘export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib‘>> /home/oracle/.bash_profile
echo "export EDITOR=vi" >> /home/oracle/.bash_profile
echo "export LANG=en_US" >> /home/oracle/.bash_profile
echo "export NLS_LANG=american_america.AL32UTF8" >> /home/oracle/.bash_profile
echo "export NLS_DATE_FORMAT=‘yyyy/mm/dd hh24:mi:ss‘" >> /home/oracle/.bash_profile
echo "umask 022">> /home/oracle/.bash_profile
 
echo "The Groups and users has been created"
echo "The Environment for oracle also has been set successfully"
[root@localhost inst_env_scripts]# cat 2predir.sh 
#!/bin/bash
#Purpose:Create the necessary directory for oracle users and change the authention to oracle users.
#Usage:Log on as the superuser(‘root‘),and then execute the command:#./2predir.sh
#Author:ding liqing
 
echo "Now create the necessary directory for oracle users and change the authention to oracle users..."
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chmod -R 775 /u01
echo "The necessary directory for oracle users and change the authention to oracle users has been finished"
[root@localhost inst_env_scripts]# cat 3prelimits.sh 
#!/bin/bash
#Purpose:Change the /etc/security/limits.conf.
#Usage:Log on as the superuser(‘root‘),and then execute the command:#./3prelimits.sh
#Author:ding lq
 
echo "Now modify the /etc/security/limits.conf,but backup it named /etc/security/limits.conf.bak before"
cp /etc/security/limits.conf /etc/security/limits.conf.bak
echo "oracle soft nproc 2047" >>/etc/security/limits.conf
echo "oracle hard nproc 16384" >>/etc/security/limits.conf
echo "oracle soft nofile 1024" >>/etc/security/limits.conf
echo "oracle hard nofile 65536" >>/etc/security/limits.conf
echo "Modifing the /etc/security/limits.conf has been succeed."
#Usage:Log on as the superuser(‘root‘),and then execute the command:#./4presysctl.sh
#Author:ding liqing
 
echo "Now modify the /etc/sysctl.conf,but with a backup named /etc/sysctl.bak"
cp /etc/sysctl.conf /etc/sysctl.conf.bak
 
echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "kernel.shmall = 2097152" >> /etc/sysctl.conf
echo "kernel.shmmax = 1054472192" >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 9000 65500" >> /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 = 1048586" >> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = 262144 262144 262144" >> /etc/sysctl.conf
echo "net.ipv4.tcp_rmem = 4194304 4194304 4194304" >> /etc/sysctl.conf
 
echo "Modifing the /etc/sysctl.conf has been succeed."
echo "Now make the changes take effect....."
sysctl -p

3. 将A机器上的zip包copy到B机器上

[root@localhost inst_env_scripts]# scp 192.168.199.163:/home/oracle/db_1.zip /home/oracle/
The authenticity of host ‘192.168.199.163 (192.168.199.163)‘ can‘t be established.
RSA key fingerprint is cc:d0:c3:de:37:33:a7:cb:91:40:c5:5f:18:07:06:9f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.199.163‘ (RSA) to the list of known hosts.
root@192.168.199.163‘s password: 
db_1.zip                                                                                                                                                                100% 2366MB  30.0MB/s   01:19

 

4. 解压zip文件

[root@localhost oracle]# unzip -d / db_1.zip 
[root@localhost oracle]# chown -R oracle.oinstall /u01/

5.执行Clone命令

[oracle@localhost ~]$ cd /u01/app/oracle/product/11.2.0/db_1/clone/bin/
[oracle@localhost bin]$ $ORACLE_HOME/perl/bin/perl clone.pl ORACLE_BASE="/u01/app/oracle/" ORACLE_HOME="/u01/app/oracle/product/11.2.0/db_1" OSDBA_GROUP=dba OSOPER_GROUP=oper -defaultHomeName
请使用浏览器的分享功能分享到微信等