# ORACLE 11G R2静默安装,配置 ## 目录 * [准备工作](#-2) * [开始安装](#-3) * [安装后工作](#-4) * [建库](#-5) * [配置监听](#-6) * [测试](#-7) ## 准备工作 1.依赖性准备 #yum install make gcc binutils gcc-c++ compat-libstdc++ elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel glibc.i686 2.用户和组准备 #groupadd oinstall #groupadd dba #useradd -g oinstall -G dba -d /home/oracle oracle #passwd oracle //设置oracle密码 3.目录准备及权限调整 #mkdir -p /export/servers/oracle/11.2.0 //数据库系统安装目录 #mkdir /export/data/oradata //数据库数据安装目录 #mkdir /export/data/oradata_back //数据备份目录 #mkdir /home/oracle/inventory //清单目录 #chown -R oracle:oinstall /export/servers/oracle #chown -R oracle:oinstall /home/oracle/inventory #chown -R oracle:oinstall /export/data #chomod -R 775 /export/servers/oracle #chomod -R 775 /export/data 以上工作可通过招待 pre-install.sh 脚本完成. 4.内核参数调整 #vim /etc/sysctl.conf 在文件最后增加 fs.aio-max-nr = 1048576 fs.file-max = 6553600 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 保存文件。 #/sbin/sysctl -p //让参数生效 5.用户的限制文件修改 #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 保存文件。 修改/etc/pam.d/login文件,增加如下: session required /lib64/security/pam_limits.so //64为系统,千万别写成/lib/security/pam_limits.so,否则导致无法登录 session required pam_limits.so 修改/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 6.oracle安装包准备 下载并解压安装包到 /home/oracle/database ## 开始安装 1.打开另外一个终端,用oracle用户登录 2.复制并修改应答文件 复制应答文件 $cp -R /home/oracle/database/response/db_install.rsp /home/oracle/database/response/my_db_install.rsp #复制一份模板文件,以便改错后回滚 修改应答文件 $vim /home/oracle/database/response/my_db_install.rsp,按实际情况修改以下项 oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=oracle11g.jd.com UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/home/oracle/inventory/ ORACLE_HOME=/export/servers/oracle/11.2.0 ORACLE_BASE=/export/servers/oracle oracle.install.db.InstallEdition=EE oracle.install.db.isCustomInstall=false oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=dba DECLINE_SECURITY_UPDATES=true 修改好的应答文件,保存在 /vagrant/zhs16gbk/db_install.rsp 文件中,可直接使用。 3.根据应答文件,开始安装 $ sudo su - oracle $ cd /home/oracle/database/ $ ./runInstaller -silent -responseFile /vagrant/zhs16gbk/db_install.rsp 4.按提示切换到root用户的终端,依次执行脚本 #/home/oracle/inventory/orainstRoot.sh #/opt/oracle/11.2.0/root.sh 脚本位置会提示 5.切换到oracle用户的终端,敲”回车“,完成安装 6.修改oracle用户环境变量 $vim ~/.bash_profile 添加以下内容 # User specific environment and startup programs export ORACLE_SID=orcl export ORACLE_BASE=/app/server/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib PATH=$PATH:$ORACLE_HOME/bin 7.执行`$source ~/.bash_profile` 刷新环境变量 ## 安装后工作 #### 建库 1.复制并修改建库应答文件 复制应答文件 $cp -R /home/oracle/database/response/dbca.rsp /home/oracle/database/response/my_dbca.rsp 修改应答文件 $vim /home/oracle/database/response/my_dbca.rsp 修改以下项 OPERATION_TYPE = "createDatabase" GDBNAME = "orcl11g" SID = "orcl" SYSPASSWORD = "OraPwd11" SYSTEMPASSWORD = "OraPwd11" DATAFILEDESTINATION = /app/data/oradata RECOVERYAREADESTINATION = /app/data/oradata_back SYSDBAUSERNAME = "system" SYSDBAPASSWORD = "OraPwd11" #以上2项可选 INSTANCENAME = "orcl11g" CHARACTERSET = "ZHS16GBK" #按需求设置,建议使用UTF-8 NATIONALCHARACTERSET= "" #可选 "UTF8" or "AL16UTF16" 建议UTF-8 TOTALMEMORY = "5120" #Oracle使用的最大内存,单位M建库 修改好的应答文件,保存在 /vagrant/zhs16gbk/dbca.rsp 文件中,可直接使用。 2.使用dbca静默建库 $dbca -silent -responseFile /vagrant/zhs16gbk/dbca.rsp #### 配置监听 1.使用netca静默方式创建监听 $netca /silent /responsefile /vagrant/zhs16gbk/netca.rsp 执行完成会在 $ORACLE_HOME/network/admin目录下生成sqlnet.ora和listener.ora两个文件。 同时,注意一下关闭iptables防火墙,否则连接不上: sudo chkconfig ip6tables off sudo chkconfig iptables off 2.注册sid * 注意: 测试一下,不需要修改这个文件,甚至可以不要这个文件。 vim $ORACLE_HOME/network/admin/listener.ora 在 LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) ) 之前添加以下内容: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = orcl) (PROGRAM = extproc) (ORACLE_HOME = /app/server/oracle/product/11.2.0/db_1) ) ) 执行`$lsnrctl reload`重启监听 3.编辑 `/etc/oratab` 把 `orcl11g:/export/servers/oracle/11.2.0:N`的‘N’,改为‘Y’,这样就可以通过`dbstart`启动此实例,也可以通过`dbshut`关闭此实例了。 ## 测试 1.查看监听状态 $lsnrctl status 类似以下返回,说明监听状态正常 Service "ORCL" has 1 instance(s). Instance "orcl11g", status UNKNOWN, has 1 handler(s) for this service... Service "db1" has 1 instance(s). Instance "orcl11g", status READY, has 1 handler(s) for this service... Service "orcl11gXDB" has 1 instance(s). Instance "orcl11g", status READY, has 1 handler(s) for this service... 2.sqlplus连接测试 $export $ORACLE_SID=orcl11g $sqlplus / as sysdba 正常登陆说明实例正常启动。 ## 自启动脚本 加入 /etc/init.d/oracledb 文件: #!/bin/sh -e # chkconfig: 3 56 10 # description: Oracle 11g custom start/stop script DAEMON=oracle ORACLE_HOME=/app/server/oracle/product/11.2.0/db_1 ORACLE_OWNER=oracle restart() { stop start } case $1 in 'start') su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/lsnrctl start" su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/dbstart ${ORACLE_HOME}" #su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/emctl start dbconsole" #su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/isqlplusctl start" ;; 'stop') #su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/isqlplusctl stop" #su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/emctl stop dbconsole" su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/dbshut ${ORACLE_HOME}" su - ${ORACLE_OWNER} -c "${ORACLE_HOME}/bin/lsnrctl stop" ;; restart) restart ;; *) echo "Usage: $0 {start|stop}" exit ;; esac exit $? 加入自动启动: $ sudo chkconfig --add oracledb ## 文档约定 #开头的命令 说明需要使用root用户执行 $开头的命令 说明需要用oracle用户执行