静默安装oracle 11gR2, 适用于 RHEL5/6 CENTOS5/6 

一、保证系统有足够的空间来安装oracle

另外

tmp目录必须大于120M

swap必须大于150M


二、需要安装的软件:


binutils-2.17.50.0.6 

compat-libstdc++-33-3.2.3

elfutils-libelf-0.125

elfutils-libelf-devel-static-0.125

gcc-4.1.2 

gcc-c++-4.1.2

glibc-2.5-24

glibc-common-2.5  

glibc-devel-2.5  

glibc-headers-2.5  

kernel-headers-2.6.18     

ksh-20060214  

libaio-0.3.106  

libaio-devel-0.3.106   

libgcc-4.1.2  

libgomp-4.1.2  

libstdc++-4.1.2   

libstdc++-devel-4.1.2  

make-3.81  

numactl-devel-0.9.8.i386  

sysstat-7.0.2



x86_64

yum -y install binutils  compat-libstdc++-33  elfutils-libelf elfutils-libelf-devel-static gcc  gcc-c++ glibc glibc-devel glibc-common glibc-headers kernel-headers ksh  libgcc libgomp libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC* libaio-devel libaio-devel* unixODBC-devel unixODBC-devel*



binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat

i386

yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 elfutils-libelf-devel gcc gcc-c++ glibc*.i686 glibc glibc-devel

 glibc-devel*.i686 ksh libgcc*.i686 libgcc libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686 libaio libaio*.i686 libaio-devel libaio-d

evel*.i686 make sysstat sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686



三、创建用户组

/usr/sbin/groupadd oinstall

/usr/sbin/groupadd dba

/usr/sbin/groupadd oper

/usr/sbin/useradd -g oinstall -G dba,oper -d /home/oracle oracle

echo "oracle" |passwd --stdin oracle


四、修改内核参数

vim /etc/sysctl.conf 


net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 536870912

kernel.shmall = 2097152

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

fs.aio-max-nr = 1048576

fs.file-max = 6815744

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586


sysctp -p



五、修改oracle用户的系统资源限制和权限

grep 'limits' /etc/pam.d/system-auth  

session     required      pam_limits.so  

vim /etc/security/limits.conf 

oracle              soft    nproc   2047  

oracle              hard    nproc   16384  

oracle              soft    nofile  1024  

oracle              hard    nofile  65536  

oracle              soft    stack   10240





六、配置oracle用户环境变量 

vim  /home/oracle/.bash_profile


ORACLE_BASE=/DataBase/oracle  

ORACLE_HOME=$ORACLE_BASE/db11g  

ORACLE_SID=umpay

export ORACLE_OWNER=oracle

PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$PATH 

export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID  


 .  /home/oracle/.bash_profile

 

 env |grep ORA 


创建oraInst.loc

vi /etc/oraInst.loc


inventory_loc=/DataBase/oracle/oraInventory

inst_group=oinstall


chown oracle:oinstall /etc/oraInst.loc

chmod 664 /etc/oraInst.loc 




六、解压安装包


mkdir -pv /DataBase/oracle/oraInventory

unzip linux.x64_11gR2_database_1of2.zip -d /DataBase/

unzip linux.x64_11gR2_database_2of2.zip -d /DataBase/

chown -R oracle.oinstall /DataBase/


七、修改oracle silent安装时读取的配置文件

切换到oracle用户

su - oracle


新建一个文件或者copy模板,命名为 db_install.rsp 内容为下(根据实际环境修改):


oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0

oracle.install.option=INSTALL_DB_SWONLY

ORACLE_HOSTNAME=dbserver

UNIX_GROUP_NAME=oinstall

INVENTORY_LOCATION=/DataBase/oracle/oraInventory

SELECTED_LANGUAGES=en,zh_CN

ORACLE_HOME=/DataBase/oracle/db11g

ORACLE_BASE=/DataBase/oracle

oracle.install.db.InstallEdition=EE

oracle.install.db.isCustomInstall=false

oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.ne

twork:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.or

aolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0

oracle.install.db.DBA_GROUP=dba

oracle.install.db.OPER_GROUP=oinstall

oracle.install.db.CLUSTER_NODES=

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

oracle.install.db.config.starterdb.globalDBName=umpay

oracle.install.db.config.starterdb.SID=umpay

oracle.install.db.config.starterdb.characterSet=AL32UTF8

oracle.install.db.config.starterdb.memoryOption=true

oracle.install.db.config.starterdb.memoryLimit=1024

oracle.install.db.config.starterdb.installExampleSchemas=false

oracle.install.db.config.starterdb.enableSecuritySettings=true

oracle.install.db.config.starterdb.password.ALL=pass

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.dbcontrol.enableEmailNotification=false

oracle.install.db.config.starterdb.dbcontrol.emailAddress=

oracle.install.db.config.starterdb.dbcontrol.SMTPServer=

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=

DECLINE_SECURITY_UPDATES=true

PROXY_HOST=

PROXY_PORT=

PROXY_USER=

PROXY_PWD=


运行安装:


 ./runInstaller -silent -responseFile /DataBase/db_install.rsp (读取的文件路径一定要是绝对路径,否则安装会报错-ignorePrereq)

Starting Oracle Universal Installer...


Checking Temp space: must be greater than 120 MB.   Actual 90617 MB    Passed

Checking swap space: must be greater than 150 MB.   Actual 15999 MB    Passed

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2014-04-22_03-26-43AM. Please wait ...[oracle@dbserver database]$ [WARNING] [INS-32055] The Central Inventory is located in the Oracle base.

   CAUSE: The Central Inventory is located in the Oracle base.

   ACTION: Oracle recommends placing this Central Inventory in a location outside the Oracle base directory.

[WARNING] [INS-32055] The Central Inventory is located in the Oracle base.

   CAUSE: The Central Inventory is located in the Oracle base.

   ACTION: Oracle recommends placing this Central Inventory in a location outside the Oracle base directory.

You can find the log of this install session at:

 /DataBase/oracle/oraInventory/logs/installActions2014-04-22_03-26-43AM.log

The following configuration scripts need to be executed as the "root" user. 

 #!/bin/sh 

 #Root scripts to run


/DataBase/oracle/oraInventory/orainstRoot.sh

/DataBase/oracle/db11g/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 


Successfully Setup Software.   ----安装大概几分钟,看机器性能


 

 


八、以root用户身份执行root.sh脚本并验证安装是否成功

[root@dbserver db11g]# /DataBase/oracle/db11g/root.sh 

Check /DataBase/oracle/db11g/install/root_dbserver_2014-04-22_03-40-29.log for the output of root script


[root@dbserver db11g]# su - oracle

[oracle@dbserver ~]$ sqlplus /nolog


SQL*Plus: Release 11.2.0.1.0 Production on Tue Apr 22 03:41:04 2014


Copyright (c) 1982, 2009, Oracle.  All rights reserved.


SQL> 

SQL> 

SQL> 


九、配置侦听器,新建文件netca.rsp修改相关内容如下

[oracle@dbserver database]$ more ../netca.rsp 

[GENERAL]

RESPONSEFILE_VERSION="11.2"

CREATE_TYPE="CUSTOM"

[oracle.net.ca]

INSTALLED_COMPONENTS={"server","net8","javavm"}

INSTALL_TYPE=""custom""

LISTENER_NUMBER=1

LISTENER_NAMES={"LISTENER"}

LISTENER_PROTOCOLS={"TCP;1521"}

LISTENER_START=""LISTENER""

NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}

NSN_NUMBER=1

NSN_NAMES={"EXTPROC_CONNECTION_DATA"}

NSN_SERVICE={"PLSExtProc"}

NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}


运行安装侦听器:

[oracle@dbserver database]$ netca -silent -responseFile /DataBase/netca.rsp 

****DISPLAY environment variable not set!

    Oracle Net Configuration Assistant is a GUI tool

    which requires that DISPLAY specify a location

    where GUI tools can display.

    Set and export DISPLAY, then re-run.报这种错后声明DISPLAY变量

[oracle@dbserver database]$ export DISPLAY=10.10.73.132:0.0

[oracle@dbserver database]$ netca -silent -responseFile /DataBase/netca.rsp 


Parsing command line arguments:

    Parameter "silent" = true

    Parameter "responsefile" = /DataBase/netca.rsp

Done parsing command line arguments.

Oracle Net Services Configuration:

Configuring Listener:LISTENER

Listener configuration complete.

Oracle Net Listener Startup:

    Running Listener Control: 

      /DataBase/oracle/db11g/bin/lsnrctl start LISTENER

    Listener Control complete.

    Listener started successfully.

Profile configuration complete.

Oracle Net Services configuration successful. The exit code is 0


[oracle@dbserver database]$ netstat -nutlp 

(Not all processes could be identified, non-owned process info

 will not be shown, you would have to be root to see it all.)

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   

tcp        0      0 :::5989                     :::*                        LISTEN      -                   

tcp        0      0 :::1521                     :::*                        LISTEN      8846/tnslsnr        

tcp        0      0 :::22                       :::*                        LISTEN      -                   

[oracle@dbserver database]$




十、安装数据库,新建文件dbca.rsp修改相关内容如下

[oracle@dbserver database]$ more ../dbca.rsp 

[GENERAL]

RESPONSEFILE_VERSION = "11.2.0"

OPERATION_TYPE = "createDatabase"

[CREATEDATABASE]

GDBNAME = "dbserver"

SID = "umpay"

TEMPLATENAME = "General_Purpose.dbc"

[createTemplateFromDB]

SOURCEDB = "myhost:1521:orcl"

SYSDBAUSERNAME = "system"

TEMPLATENAME = "General_Purpose.dbc"

[createCloneTemplate]

SOURCEDB = "orcl"

TEMPLATENAME = "My Clone TEMPLATE"

[DELETEDATABASE]

SOURCEDB = "orcl"

[generateScripts]

TEMPLATENAME = "New Database"

GDBNAME = "orcl11.us.oracle.com"

[CONFIGUREDATABASE]

[ADDINSTANCE]

DB_UNIQUE_NAME = "orcl11g.us.oracle.com"

NODELIST=

SYSDBAUSERNAME = "sys"

[DELETEINSTANCE]

DB_UNIQUE_NAME = "orcl11g.us.oracle.com"

INSTANCENAME = "orcl11g"

SYSDBAUSERNAME = "sys"

EMCONFIGURATION = "LOCAL" 

SYSMANPASSWORD = "123456" 

DBSNMPPASSWORD = "123456"


运行安装数据库:

[oracle@dbserver database]$ dbca -silent -createdatabase -responseFile /DataBase/dbca.rsp 

Enter SYS user password: 

 

Enter SYSTEM user password: 

 

Copying database files

1% complete

3% complete

11% complete

18% complete

26% complete

37% complete

Creating and starting Oracle instance

40% complete

45% complete

50% complete

55% complete

56% complete

60% complete

62% complete

Completing Database Creation

66% complete

70% complete

73% complete

85% complete

96% complete

100% complete

Look at the log file "/DataBase/oracle/cfgtoollogs/dbca/dbserver/dbserver.log" for further details.

[oracle@dbserver database]$ netstat -nutlp 

(Not all processes could be identified, non-owned process info

 will not be shown, you would have to be root to see it all.)

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   

tcp        0      0 :::5989                     :::*                        LISTEN      -                   

tcp        0      0 :::1521                     :::*                        LISTEN      8846/tnslsnr        

tcp        0      0 :::42291                    :::*                        LISTEN      9467/ora_d000_umpay 

tcp        0      0 :::22                       :::*                        LISTEN      -                   

udp        0      0 ::1:9123                    :::*                                    9467/ora_d000_umpay 

udp        0      0 :::29367                    :::*                                    9463/ora_mmon_umpay 

udp        0      0 ::1:53190                   :::*                                    9435/ora_pmon_umpay 

udp        0      0 ::1:21703                   :::*                                    9469/ora_s000_umpay 


十一、验证安装是否成功


[oracle@dbserver database]$ sqlplus /nolog


SQL*Plus: Release 11.2.0.1.0 Production on Tue Apr 22 03:52:29 2014


Copyright (c) 1982, 2009, Oracle.  All rights reserved.


SQL> conn /as sysdba

Connected.

SQL> show user;

USER is "SYS"

SQL> show sga; 


Total System Global Area 1653518336 bytes

Fixed Size                  2213896 bytes

Variable Size             956303352 bytes

Database Buffers          687865856 bytes

Redo Buffers                7135232 bytes

SQL> 





END




脚本实现自动安装oracle


自动安装脚本


脚本运行必须条件: 在脚本同目录下必须有linux.x64_11gR2_database_1of2.zip,linux.x64_11gR2_database_2of2.zip 以及编辑好的的 dbca.rsp  db_install.rsp  netca.rsp 文件,否则脚本不会运行


 


#!/bin/sh 


###############################

# auto install oracle #

# DATE: 2014-04-18 #

# Last Update: 2014-07-2 #

###############################


 



. /etc/sysconfig/network

. /etc/sysconfig/selinux


[ $UID -ne 0 ] && exit 2 

[ $NETWORKING == no ] && exit 2 

[ $SELINUX != "Disabled" ] && setenforce 0 >> /dev/null 2>&1;sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config 

[ `hostname` == $HOSTNAME ] || exit 2 

/etc/init.d/iptables status|grep -q "stopped" || /sbin/iptables -F


for i in linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip dbca.rsp db_install.rsp netca.rsp 

do 

[ -f $i ] || exit 2 

done


echo -n 'Input ORACLE_BASE: '

read ORACLE_BASE

echo -n 'Input ORACLE_HOME: '

read ORACLE_HOME

echo -n 'Input ORACLE_SID: '

read ORACLE_SID


 



uname -a|grep -q "x86_64" && export OS="x86_64" || export OS="i386"

if [ $OS == "x86_64" ];then 

yum -y install gcc* gcc-* gcc-c++-* glibc-devel-* glibc-headers-* compat-libstdc* libstdc* elfutils-libelf-devel* libaio-devel* sysstat* unixODBC-* pdksh-*


else 

yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 elfutils-libelf-devel gcc gcc-c++ glibc*.i686 glibc glibc-devel glibc-devel*.i686 ksh libgcc*.i686 libgcc libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686 libaio libaio*.i686 libaio-devel libaio-devel*.i686 make sysstat sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686

fi



for j in iptables rhnsd isdn avahi-daemon avahi-dnsconfd bluetooth cpuspeed hidd ip6tables mcstrans pcscd gpm xinetd portmap yum-updatesd restorecond setroubleshoot yum-updatesd libvirtd xendomains xend iptables sendmail postfix


do 

/etc/init.d/$j stop 

/sbin/chkconfig --level 2345 $j off 

done


 


/usr/sbin/groupadd oinstall

/usr/sbin/groupadd dba

/usr/sbin/groupadd oper

/usr/sbin/useradd -g oinstall -G dba,oper -d /home/oracle

echo "oracle" | passwd --stdin oracle



mv /etc/sysctl.conf /etc/sysctl.conf-`date +%Y-%m-%d`

cat << EOF >/etc/sysctl.conf

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

kernel.core_uses_pid = 1

kernel.sysrq = 0

net.ipv4.tcp_syncookies = 1

kernel.shmall = 2097152

kernel.shmmax = 536870912

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.aio-max-nr = 1048576

fs.aio-max-nr = 1048576

fs.aio-max-nr = 1048576

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_default = 262144 

EOF


/sbin/sysctl -p


cat << EOF >> /etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

EOF


cat << EOF >> /etc/pam.d/login

session required pam_limits.so

EOF


cat << EOF >> /etc/profile

if [ \$USER = "oracle" ]; then

if [ \$SHELL = "/bin/ksh" ]; then

ulimit -p 16384

ulimit -n 65536


else 

ulimit -u 16384 -n 65536

fi 

fi 

EOF


LOCAL_IP=`/sbin/ifconfig |grep "inet addr"|grep -v "127.0"|sed -e 's/.*addr://g' -e 's/Bcast.*//g'|head -1`


cat << EOF >> /home/oracle/.bash_profile

ORACLE_BASE=$ORACLE_BASE

ORACLE_HOME=$ORACLE_HOME

ORACLE_SID=$ORACLE_SID

DISPLAY=$LOCAL_IP:0.0

PATH=\$ORACLE_HOME/bin:\$PATH

export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID DISPLAY

EOF


cat << EOF >> /etc/oraInst.loc

inventory_loc=$ORACLE_BASE/oraInventory

inst_group=oinstall

EOF


chown oracle:oinstall /etc/oraInst.loc

chmod 664 /etc/oraInst.loc


[ -d $ORACLE_HOME ] && mv $ORACLE_HOME $ORACLE_HOME-`date +%Y-%m-%d`


mkdir -p $ORACLE_BASE/oraInventory

mkdir -p $ORACLE_HOME


unzip linux.x64_11gR2_database_1of2.zip -d $ORACLE_BASE/

unzip linux.x64_11gR2_database_2of2.zip -d $ORACLE_BASE/

cp dbca.rsp db_install.rsp netca.rsp $ORACLE_BASE/

chown -R oracle:oinstall $ORACLE_BASE



su - oracle -c "$ORACLE_BASE/database/runInstaller -silent -ignorePrereq -responseFile $ORACLE_BASE/db_install.rsp" && sh $ORACLE_HOME/root.sh 

su - oracle -c "netca -silent -responseFile $ORACLE_BASE/netca.rsp"

su - oracle -c "dbca -silent -createdatabase -responseFile $ORACLE_BASE/dbca.rsp"




oracle修改字符编码为utf8


shutdown immediate;

startup mount;

alter session set sql_trace=true;

alter system enable restricted session;

alter system set job_queue_processes=0;

alter system set aq_tm_processes=0;

alter database open;

alter database character set internal_use utf8;

alter session set sql_trace=false;

shutdown immediate;

startup;