linux下oracle的静默安装

时间:2022-08-11 08:36:51

一、环境检查

使用以下命令检查环境所用的依赖包是否安装
rpm -q binutils compat-libstdc++-33 \
elfutils-libelf elfutils-libelf-devel \
expat gcc gcc-c++ glibc glibc-common \
glibc-devel glibc-headers libaio \
libaio-devel libgcc libstdc++ \
libstdc++-devel make pdksh sysstat \
unixODBC unixODBC-devel | grep "not installed"

如果显示“package xxxx is not installed”,则需要手动安装。

一般缺少以下包

libaio
unixODBC

unixODBC-devel

同时以上包可能依赖到其他包,需要提前安装

unixODBC-libs

执行rpm -ivh *.rpm即可

二、安装准备


2.1) 下载安装包

从oracle官网下载oracle11gR2的安装包
linux.x64_11gR2_database_1of2.zip

linux.x64_11gR2_database_2of2.zip


2.2) 解压安装包

将两个安装包拷贝到/home下
cd /home
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip

解压完毕后会得到一个database的文件夹
注意:解压后大约需要2.4G的磁盘空间


2.3) 创建用户组和用户

id oracle (确认oracle用户是否存在)
groupadd oinstall (建立产品清单管理组)
groupadd dba (建立数据库安装组)
useradd -g oinstall -G dba oracle -d /home   (oinstall 为主要组)

echo 123456 | passwd oracle --stdin


2.4) 修改内核参数

修改/etc/sysctl.conf,在后面加上以下内容
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=2097152
kernel.shmmax=536870912
kernel.shmmin=4093
kernel.sem=25032000100128
net.ipv4.ip_local_port_range=900065500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586

为使上述配置生效而不重启系统,执行以下命令:
/sbin/sysctl -p


2.5) 修改oracle用户限制

修改/etc/security/limits.conf,在最后加上以下内容
oracle    soft    nofile    1024
oracle    hard    nofile    65536
oracle    soft    nproc     2047
oracle    hard    nproc     16384
在/etc/pam.d/login中增加以下内容:
session    required    /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


2.6) 关闭SELinux

检查/etc/sysconfig/selinux文件的内容是否为SELINUX=disabled,不是则修改
#SELINUX=enforcing
SELINUX=disabled


2.7) 修改oracle用户环境变量

执行以下命令切换到oracle用户下:
su - oracle
编辑~/.bash_profile,在最后增加以下内容:
umask 022
unset USERNAME
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=cloud

完成后退出oracle,然后在登录查看环境变量是否设置好:
exit
su - oracle
env | grep ORA

执行后能够看到上面设置的ORACLE_BASE和ORACLE_SID两个变量。
最后记得退出oracle用户

exit

三、静默安装


3.1) 修改目录权限

给oracle用户增加访问安装包目录的权限:
chown -R oracle:oinstall database
给oracle用户增加访问oracle基础目录权限:
mkdir  -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle


3.2) 创建oraInst.loc

创建/etc/oraInst.loc文件,内容为:
inventory_loc=/u01/app/oracle/oraInventory
inst_group=oinstall

修改该文件的属性
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc


3.3) 创建静默安装响应文件

执行以下命令切换到oracle用户下:
su - oracle
先拷贝出来一份
mkdir ~/ora_etc
cp /home/database/response/* ~/ora_etc

编辑~/ora_etc/db_install.rsp文件,修改以下内容:
#安装类型:1.只安装数据库软件 2.安装数据库软件并建库 3.升级数据库
oracle.install.option=INSTALL_DB_SWONLY
#指定操作系统主机名,通过hostname命令获得
ORACLE_HOSTNAME=nodehost
#指定oracle inventory目录的所有者,通常会是oinstall或者dba
UNIX_GROUP_NAME=oinstall
#指定产品清单oracle inventory目录的路径
INVENTORY_LOCATION=/u01/app/oracle/oraInventory
#指定数据库语言,可以选择多个,用逗号隔开。选择en,zh_CN(英文和简体中文)
SELECTED_LANGUAGES=en,zh_CN
#设置ORACLE_HOME的路径
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
#设置ORACLE_BASE的路径
ORACLE_BASE=/u01/app/oracle
#选择oracle安装数据库软件的版本(企业版)
oracle.install.db.InstallEdition=EE
#是否自定义oracle的组件,false为使用默认的组件
oracle.install.db.isCustomInstall=false
#指定拥有OSDBA、OSOPER权限的用户组,通常会是dba组
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
#选择数据库的用途,一般用途/事物处理,数据仓库
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
#指定GlobalName
oracle.install.db.config.starterdb.globalDBName=ora11g
#指定SID
oracle.install.db.config.starterdb.SID=cloud
#设定所有数据库用户使用同一密码,其他数据库用户就不用单独设置了
oracle.install.db.config.starterdb.password.ALL=123456
#Response File中必须指定为true,否则会提示错误
DECLINE_SECURITY_UPDATES=true

最后记得退出oracle用户

exit


3.4) 安装

执行以下命令切换到oracle用户下:
su - oracle
执行以下命令开始静默安装:
cd /home/database
./runInstaller -silent -debug -force -responseFile ~/ora_etc/db_install.rsp

出现类似如下的安装表示安装完成:
#-------------------------------------------------------------------
...
/u01/app/oracle/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/dbhome_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 
 
Successfully Setup Software.
#-------------------------------------------------------------------

安装期间查看安装日志信息了解安装进度
cd $ORACLE_BASE/oraInventory/logs
tail -100f installActions*.log

退出oracle用户并使用root用户执行$ORACLE_HOME下的root.sh来建立/etc/oratab,/etc/dbhome,/etc/oraenv,/etc/coraenv文件, 如果提示则一直回车:
exit
/u01/app/oracle/product/11.2.0/dbhome_1/root.sh
more /etc/oratab

执行以下命令切换到oracle用户下:
su - oracle
然后修改~/.bash_profile文件,设置环境变量:
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data

执行以下命令使改动立即生效:
source ~/.bash_profile
最后记得退出oracle用户

exit


四、配置


4.1) 启动监听

执行以下命令切换到oracle用户下:
su - oracle
执行以下命令:
netca /silent /responseFile ~/ora_etc/netca.rsp
屏幕上将打印一些提示信息:
正在对命令行参数进行语法分析:
 参数"silent" = true
 参数"responsefile" = ~/ora_etc/netca.rsp
 完成对命令行参数进行语法分析。
 Oracle Net Services 配置:
 完成概要文件配置。
 Oracle Net 监听程序启动:
  正在运行监听程序控制:
    /u01/app/oracle/product/11.2.0/db_1/bin/lsnrctl start LISTENER
  监听程序控制完成。
  监听程序已成功启动。
 监听程序配置完成。
 成功完成 Oracle Net Services 配置。退出代码是0

成功运行后,在/u01/app/oracle/product/11.2.0/db_1/network/admin目录下生成sqlnet.ora和listener.ora两个文件。
通过netstat -tlnp 命令,看到
tcp  0   0 :::1521        :::*      LISTEN      5477/tnslsnr
说明监听器已经在1521端口上开始工作了。
最后记得退出oracle用户
exit


4.2) 创建实例和数据库

执行以下命令切换到oracle用户下:
su - oracle
修改~/orc_etc/dbca.rsp文件
RESPONSEFILE_VERSION = "11.2.0"  //不能更改
 OPERATION_TYPE = "createDatabase"
 GDBNAME = "ora11g.nodehost"  //全局数据库的名字=SID+主机域名
 SID = "cloud"    //对应的实例名字
 TEMPLATENAME = "General_Purpose.dbc" //建库用的模板文件
 SYSPASSWORD = "123456"   //SYS管理员密码
 SYSTEMPASSWORD = "123456"  //SYSTEM管理员密码
 DATAFILEDESTINATION = /u01/data/app/oradata/cloud // 数据文件存放目录
 RECOVERYAREADESTINATION=/u01/data/app/oradata/cloud_bak // 恢复数据存放目录
 CHARACTERSET = "AL32UTF8"   //字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。
 TOTALMEMORY = "5120"    //oracle内存5120MB

执行静默安装命令如下:
dbca -silent -responseFile ~/orc_etc/dbca.rsp
屏幕将打印一些提示信息:
复制数据库文件
 1% 已完成
 3% 已完成
 11% 已完成
 18% 已完成
 26% 已完成
 37% 已完成
 正在创建并启动 Oracle 实例
 40% 已完成
 45% 已完成
 50% 已完成
 55% 已完成
 56% 已完成
 60% 已完成
 62% 已完成
 正在进行数据库创建
 66% 已完成
 70% 已完成
 73% 已完成
 85% 已完成
 96% 已完成
 100% 已完成
 有关详细信息, 请参阅日志文件 "/u01/app/oracle/cfgtoollogs/dbca/cloud/cloud.log"。

数据库创建完成

最后记得退出oracle用户

exit

4.3) 检查运行状态

执行以下命令切换到oracle用户下:
su - oracle
建库后实例检查
ps -ef | grep ora_ | grep -v grep
oracle    9743  0.0  1.7 743204 18664 ?        Ss   23:47   0:00 ora_pmon_cloud
oracle    9745  0.4  1.4 740956 15356 ?        Ss   23:47   0:01 ora_vktm_cloud
oracle    9749  0.0  1.4 740956 15504 ?        Ss   23:47   0:00 ora_gen0_cloud
oracle    9751  0.0  1.4 740956 15320 ?        Ss   23:47   0:00 ora_diag_cloud
oracle    9753  0.0  2.1 741492 23412 ?        Ss   23:47   0:00 ora_dbrm_cloud
oracle    9755  0.0  1.4 740956 15524 ?        Ss   23:47   0:00 ora_psp0_cloud
oracle    9757  0.0  1.7 741468 18820 ?        Ss   23:47   0:00 ora_dia0_cloud
oracle    9759  0.0  2.6 740956 28544 ?        Ss   23:47   0:00 ora_mman_cloud
oracle    9761  0.0  2.1 746712 23984 ?        Ss   23:47   0:00 ora_dbw0_cloud
.....


查看监听状态:
lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 14-MAR-2012 07:09:03
 Copyright (c) 1991, 2009, Oracle.  All rights reserved.
 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
 STATUS of the LISTENER

 ------------------------
 Alias                     LISTENER
 Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
 Start Date                14-MAR-2012 06:16:50
 Uptime                    0 days 0 hr. 52 min. 15 sec
 Trace Level               off
 Security                  ON: Local OS Authentication
 SNMP                      OFF
 Listener Parameter File   /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
 Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle11gcentos6/listener/alert/log.xml
 Listening Endpoints Summary...
   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
 Services Summary...
 Service "cloudXDB.nodehost" has 1 instance(s).
   Instance "cloud", status READY, has 1 handler(s) for this service...
 Service "ora11g.nodehost" has 1 instance(s).
   Instance "cloud", status READY, has 1 handler(s) for this service...
 The command completed successfully

最后记得退出oracle用户

exit


4.4) 修改数据库为归档模式

执行以下命令切换到oracle用户下:
su - oracle
连接数据库并操作
export ORACLE_SID=cloud
sqlplus "/ as sysdba"

 SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 14 07:18:16 2012
 Copyright (c) 1982, 2009, Oracle.  All rights reserved.
 Connected to:
 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

 With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select name,log_mode from v$database;
  NAME   LOG_MODE
 ------   ------------
 ORA11G  NOARCHIVELOG
 SQL> shutdown immediate;
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
 SQL> startup mount
 ORACLE instance started.
 Total System Global Area 1603411968 bytes
 Fixed Size                  2213776 bytes
 Variable Size             402655344 bytes
 Database Buffers         1191182336 bytes
 Redo Buffers                7360512 bytes
 Database mounted.
 SQL> alter database archivelog;
 Database altered.
 SQL> alter database flashback on;
 Database altered.
 SQL> alter database open;
 Database altered.
 SQL> execute utl_recomp.recomp_serial();
 PL/SQL procedure successfully completed.
 SQL> alter system archive log current;
 System altered.
 SQL> exit

最后记得退出oracle用户
exit


4.5) 修改oracle启动配置文件

执行以下命令切换到oracle用户下:
su - oracle
编辑/etc/oratab文件,修改内容为:
racl:/u01/app/oracle/product/11.2.0/db_1:Y  //把“N”改成“Y”
这样就可以通过dbstart启动此实例,也可以通过dbshut关闭此实例
测试: 
 dbshut $ORACEL_HOME
 Processing Database instance "cloud": log file /u01/app/oracle/product/11.2.0/db_1/shutdown.log
 此时所有oracle的进程关闭,监听器也停止。
 dbstart $ORACEL_HOME
 Processing Database instance "cloud": log file /u01/app/oracle/product/11.2.0/db_1/startup.log
最后记得退出oracle用户
exit


==================
至此,linux下oracle的静默安装完成。