SHELL 스크립트를 통해 Oracle11gR2 소프트웨어를 신속하게 설치

13447 단어 shell각본oracle11gR2
항상 손에 테스트 환경을 만들어야 하는데 Oracle 소프트웨어가 이리저리 설치돼 반복되는 절차가 짜증난다.이런 문제를 해결하려면 가상 컴퓨터로 복제하는 것이 일종의 방법이다.내가 여기 스크립트로 중복된 동작을 해내는 것도 방법이야.나는 네 개의 각본으로 나누어 한다.
하나.서버 설정과 필요한 패키지가 부족한지 확인하십시오.
둘.스크립트화 자동화 설정 시스템 매개 변수와 undo 기능을 제공합니다.
셋.글로벌 및 Oracle 사용자에 대한 환경 변수를 스크립트화하여 구성합니다.
넷.스크립트를 통해 Oracle 소프트웨어 설치
자동화 스크립트는 나에게 많은 일을 절약할 수 있는데, 중간에 수동으로 조작해야 하는 몇 가지 절차만 있을 뿐이다.스크립트 내용은 참고만 할 수 있고 정부 지침과 실제 환경을 기준으로 해야 한다.
환경: Linux 플랫폼용 Oracle 11gR2 전용
하나.서버 설정 및 필수 패키지 부족 확인
############################
#
#author:xiongchuanliang
#create date:2012-12-25
#desc:
############################
#Oracle 11g
####################################################################################
#To determine the distribution and version of Linux installed.
cat /proc/version
#To determine whether the required kernel is installed.
uname -r
#On Linux x86-64
# At least 4 GB of RAM
    grep MemTotal /proc/meinfo
#To determine the size of the configured swap space,enter the following command:
  grep SwapTotal /proc/meminfo
####################################################################################
#Checking the Software Requirements
####################################################################################
#Package Requirements
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})
' binutils \ compat-libstdc++-33 \ elfutils-libelf \ elfutils-libelf-devel \ gcc \ gcc-c++ \ glibc \ glibc-common \ glibc-devel \ glibc-headers \ ksh \ libaio \ libaio-devel \ libgcc \ libstdc++ \ libstdc++-devel \ make \ sysstat \ unixODBC \ unixODBC-devel #yum install unixODBC #yum install unixODBC-devel #################################################################################### #To determine if the Oracle Inventory group exit grep oinstall /etc/group #To determine whether the oraInstall.loc file exists. cat /etc/oraInst.loc ####################################################################################

위 부분은 운영체제 환경을 보여 줍니다. 가운데는 패키지를 검사하고, 뒤에는 파일을 검사해서 설치되었는지 확인합니다.cat로 존재하면 파일 내용을 보여 줍니다.
둘.스크립트화 자동화 설정 시스템 매개 변수와 undo 기능을 제공합니다.
2.1 스크립트는 세 부분으로 나뉜다
a. Oracle 설치를 위한 관련 그룹 및 사용자 생성
b. 소프트웨어 설치 디렉토리 작성 및 권한 부여
c. 관련 시스템 매개변수를 구성하고 확인을 위해 마지막에 표시할 수 있습니다.
#! /bin/sh
############################
#
#author:xiongchuanliang
#create date:2012-12-25
#desc: Oracle 11g for Linux
############################
######################################
DATE=`date +%Y+%m+%d`
mkdir /bak
#Creating Required Operating System Groups and Users
groupadd -g 507 oinstall
groupadd -g 502 dba
groupadd -g 503 oper
groupadd -g 504 asmadmin
groupadd -g 505 asmoper
groupadd -g 506 asmdba
useradd -g oinstall -G dba,asmdba,oper -d /home/oracle oracle
useradd -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
id oracle
id grid
passwd oracle
passwd grid
######################################
mkdir -p /u01/app/grid
mkdir -p /u01/app/crs_base
mkdir -p /u01/app/crs_home
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown -R oracle:oinstall /u01/app/oracle
chown -R grid:oinstall /u01/app/crs*
chown -R grid:oinstall /u01/app/grid
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/
ls -al /u01
######################################
#CheckResource Limits for the Oracle Software Installation Users
yes|cp /etc/security/limits.conf /bak/bak_limits.conf
#Installation Owner Resource Limit Recommended Ranges
echo "#xcl "${DATE} >> /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 nofile 1024" >> /etc/security/limits.conf
echo "oracle hard nofile 65536" >> /etc/security/limits.conf
###########
#aio
yes|cp /proc/sys/fs/aio-max-nr /bak/aio-max-nr
echo > /proc/sys/fs/aio-max-nr 1048576
###########
#Configuring Kernel Parameters for Linux
yes|cp /etc/sysctl.conf /bak/sysctl.conf
echo " ########### " >> /etc/sysctl.conf
echo "#xcl "${DATE} >> /etc/sysctl.conf
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 = 536870912" >> /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 = 1024 65000" >> /etc/sysctl.conf
echo "net.core.rmem_default=262144" >> /etc/sysctl.conf
echo "net.core.rmem_max=262144" >> /etc/sysctl.conf
echo "net.core.wmem_default=262144" >> /etc/sysctl.conf
echo "net.core.wmem_max=262144" >> /etc/sysctl.conf
/sbin/sysctl -p
###########
cp /etc/pam.d/login /bak/login
#64bit
echo "#xcl "${DATE} >> /etc/pam.d/login
echo "session required /lib/security/pam_limits.so" >> /etc/pam.d/login
echo "session required pam_limits.so" >> /etc/pam.d/login
#32bit
#session required pam_limits.so
######################################
#Limits
cat /etc/security/limits.conf
#AIO
cat /proc/sys/fs/aio-max-nr
#pam_limits.so
cat /etc/pam.d/login
#Displaying and Changing Kernel Parameter Values
cat /etc/sysctl.conf
######################################

참고:/etc/sysctl.conf 파일에 kernel과 같은 인자가 있습니다.shmmax와kernel.shmmni 따위
예제의 매개 변수는 Oracle 설치 지침의 예이며 실제로는 서버의 실제 구성을 기준으로 합니다.구체적인 값을 정확하게 확정하지 못하면 Oracle 설치 마법사의 9단계에서 잘못된 매개 변수 마법사도 참고 값을 제공합니다.
2.2 위의 스크립트가 자동으로 처리되는 부분을 제외하고 다른 부분은 내가 스크립트에 쓰지 않았기 때문에 수동으로 조작해야 한다.
# host  ip    ,em   
cat /etc/hosts
hosts:
xx.xx.xx.xx	erpdbserver.com	erpdbserver
#       ,  /etc/hosts         
/etc/sysconfig/network
HOSTNAME=erpdbserver

#        
#        
service ntpd stop
chkconfig ntpd off

#       
vi /etc/selinux/config
SELINUX=disabled

service iptables stop
chkconfig iptables off

2.2 위의 스크립트에 대해 만약에 오류가 발견되면 위의 스크립트가 관련 파일을 변경할 때 모두 백업을 했기 때문에 아래의 스크립트를 이용하여 변경할 수 있다.
스크립트의 내용은 주로 사용자와 그룹을 삭제하고 백업을 복원하는 것입니다.
#! /bin/sh
############################
#
#author:xiongchuanliang
#create date:2012-12-25
#desc: Oracle 11g for Linux
############################
######################################
yes|cp /bak/bak_limits.conf /etc/security/limits.conf
yes|cp /bak/aio-max-nr /proc/sys/fs/aio-max-nr
yes|cp /bak/sysctl.conf /etc/sysctl.conf
/sbin/sysctl -p
yes|cp /bak/login /etc/pam.d/login
######################################
userdel oinstall
userdel dba
userdel oper
userdel asmadmin
userdel asmoper
userdel asmdba
groupdel dba
groupdel oper
groupdel asmadmin
groupdel asmoper
groupdel asmdba
######################################
#Limits
cat /etc/security/limits.conf
#AIO
cat /proc/sys/fs/aio-max-nr
#pam_limits.so
cat /etc/pam.d/login
#Displaying and Changing Kernel Parameter Values
cat /etc/sysctl.conf
#SELINUX=disabled
cat /etc/selinux/config
ls /home
######################################

셋.글로벌 및 Oracle 사용자에 대한 환경 변수를 스크립트화하여 구성합니다.
3.1 환경 변수 구성 스크립트
스크립트의 관련 변수를 원하는 대로 변경한 후 실행하면 됩니다.정력적으로 응답식으로 바꾸는 것도 쉽다.
#! /bin/sh
############################
#
#author:xiongchuanliang
#create date:2012-12-25
#desc: User specific environment and startup programs
############################
DATE=`date +%Y-%m-%d`
env_etc_profile="/etc/profile"
env_profile="/home/oracle/.bash_profile"
######################################
env_ORACLE_HOSTNAME="erpdbserver"
env_ORACLE_OWNER="oracle"
env_ORACLE_BASE="/u01/app/oracle"
env_ORACLE_HOME="/product/11.2.0/db_1"
env_ORACLE_UNQNAME="xcldb"
env_ORACLE_SID="xcldb"
#AMERICAN_AMERICA.AL32UTF8
env_NLS_LANG="AMMERICAN_AMERICA.ZHS16GBK"
######################################
yes|cp ${env_etc_profile} ${env_etc_profile}"_bak"
yes|cp ${env_profile} ${env_profile}"_bak"
######################################
echo " " >> ${env_etc_profile}
echo "###########################" >> ${env_etc_profile}
echo "###xcl "${DATE} >> ${env_etc_profile}
echo "if [ \$USER = \"oracle\" ]; then" >> ${env_etc_profile}
echo " if [ \$SHELL = \"/bin/ksh\" ]; then" >> ${env_etc_profile}
echo " ulimit -p 16384" >> ${env_etc_profile}
echo " ulimit -n 65536" >> ${env_etc_profile}
echo " else" >> ${env_etc_profile}
echo " ulimit -u 16384 -n 65536" >> ${env_etc_profile}
echo " fi" >> ${env_etc_profile}
echo "fi" >> ${env_etc_profile}
echo "###########################" >> ${env_etc_profile}
######################################
echo "###########################" >> ${env_profile}
echo "###xcl "${DATE} >> ${env_profile}
echo "TMP=/tmp" >> ${env_profile}
echo "TMPDIR=\$TMP" >> ${env_profile}
echo "export TMP TMPDIR" >> ${env_profile}
echo " " >> ${env_profile}
#export ORACLE_HOSTNAME="${env_ORACLE_HOSTNAME} >> ${env_profile}
echo "ORACLE_OWNER="${env_ORACLE_OWNER} >> ${env_profile}
echo "ORACLE_BASE="${env_ORACLE_BASE} >> ${env_profile}
echo "ORACLE_HOME=\$ORACLE_BASE"${env_ORACLE_HOME} >> ${env_profile}
echo "ORACLE_UNQNAME="${env_ORACLE_UNQNAME} >> ${env_profile}
echo "ORACLE_SID="${env_ORACLE_SID} >> ${env_profile}
echo "export ORACLE_OWNER ORACLE_BASE ORACLE_HOME ORACLE_UNQNAME ORACLE_SID" >> ${env_profile}
echo " " >> ${env_profile}
echo "CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib" >> ${env_profile}
echo "LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib" >> ${env_profile}
echo "export CLASSPATH LD_LIBRARY_PATH" >> ${env_profile}
echo " " >> ${env_profile}
echo "ORACLE_TERM=xterm" >> ${env_profile}
#export ORACLE_TERM=vt100
echo "NLS_LANG="${env_NLS_LANG} >> ${env_profile}
echo "TNS_ADMIN=\$ORACLE_HOME/network/admin" >> ${env_profile}
#echo "SQLPATH=~/mydba/sql:\$ORACLE_HOME/sqlplus/admin" >> ${env_profile}
#echo "export ORACLE_TERM NLS_LANG TNS_ADMIN SQLPATH" >> ${env_profile}
echo "export ORACLE_TERM NLS_LANG TNS_ADMIN " >> ${env_profile}
echo " " >> ${env_profile}
echo "PATH=\$ORACLE_HOME/bin:/usr/local/bin:/bin:/usr/sbin:/usr/bin:\$PATH" >> ${env_profile}
echo "export PATH" >> ${env_profile}
echo " " >> ${env_profile}
#echo "PS1='\`whoami\`@\`hostname -s\`' [\$PWD]" >> ${env_profile}
#echo "export PS1" >> ${env_profile}
echo "PS1='[\`whoami\`@\`hostname -s\`] :'" >> ${env_profile}
echo " " >> ${env_profile}
echo "umask 022" >> ${env_profile}
echo "###########################" >> ${env_profile}
echo ""

3.2 환경 변수를 즉시 적용하도록 구성
  source/home/oracle/.bash_profile
넷.스크립트를 통해 Oracle 소프트웨어 설치
자동 설치 전, 준비 후 응답 파일을 설치하고 파라미터를 설정합니다.
a. 응답 파일:
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=xclora.localdomain
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN,zh_TW
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.install.db.customComponents=oracle.rdbms.partitioning:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.memoryOption=false
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true

b. Oracle 설치 명령을 실행하고 설치가 완료될 때까지 기다립니다.
./runInstaller -silent -ignoreSysPrereqs -force -ignorePrereq -responseFile/home/oracle/oracle_install.rsp
c. 많은 패키지와 설정 파라미터가 정확하면 설치 명령에 마지막으로 다른 세션에서 루트 사용자로 스크립트를 실행할 수 있는 알림이 나타납니다.
스크립트를 다른 세션에서 루트 사용자로 실행하면 전체 데이터베이스 소프트웨어의 마지막 설치를 완성할 수 있다는 알림이 나타납니다.
[oracle@xclora] :The following configuration scripts need to be executed as the "root" user.
 #!/bin/sh
 #Root scripts to run
/u01/app/oracle/product/11.2.0/db_1/root.sh
To execute the configuration scripts:
         1. Open a terminal window
         2. Log in as "root"
         3. Run the scripts
         4. Return to this window and hit "Enter" key to continue

이로써 4개의 스크립트를 통해 데이터베이스 소프트웨어 설치를 완료할 수 있다.스크립트는 상호작용 기능을 추가하지 않았지만, 내가 평소에 설치하는 데 쓰기에는 충분하다.
MAIL: [email protected]
BLOG: http://blog.csdn.net/xcl168
저자: xcltapestry 2014-2-20 21:59:04
보기: 66 댓글: 0 댓글 보기

좋은 웹페이지 즐겨찾기