一、环境检查
使用以下命令检查环境所用的依赖包是否安装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”,则需要手动安装。
一般缺少以下包
libaiounixODBC
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用户
exit4.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的静默安装完成。