如果你需要安装的数据库服务器比较多,使用图形化方式安装数据库软件的速度还是很慢,而且也比较麻烦。Oracle 11g 提供了Clone安装的方法。
步骤如下:
-
使用正常方法在服务器A上安装好Oracle。
-
将A机器上的$ORACLE_HOME打包,db_home1.zip 。
-
将B机器的环境准备好,如建立用户、建立用户、修改内核参数,修改环境变量等等。
-
将zip包copy到B服务器,解压到任意目录。
-
执行Clone命令
-
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