vlambda博客
学习文章列表

CentOS 7静默(无图形化界面)安装Oracle 11g

文本无图形化界面的(最小安装的服务器版)CentOS 7 系统安装Oracle 11g的详细过程,由于是使用静默模式(silent)安装的,无需使用图形化界面。原作者写的操作方便,作备忘。



准备CentOS 7 系统环境

我以 CentOS-7-x86_64-DVD-1511.iso 为例,简述Oracle 11g的安装过程。

由于是使用静默模式(silent)安装的,无需使用图形化界面,我选择了最小安装的服务器版的CentOS 7(建议安装带桌面的)

安装过程可参考 https://jingyan.baidu.com/article/fd8044fade8ac35031137a82.html

安装完成后,只有命令行界面。

 

下载 Oracle 11g

Oracle官方网站

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

我的机器安装的是CentOS7 64位系统,因此下载的Oracle版本也是64位的

 

11.2.0.2.0 zlinux64版本的Oracle是安装在IBM服务器的,CentOS 7是无法安装的。

下载完成后,有两个压缩文件

linux.x64_11gR2_database_1of2.zip  linux.x64_11gR2_database_2of2.zip

 

通过Xftp将压缩文件上传到 /db/

安装依赖包

安装依赖包之前,个人建议将yum源修改为aliyun源,下载速度快些,执行如下命令即可:

cd /etc

mv yum.repos.dyum.repos.d.bak

mkdir yum.repos.d

wget -O/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all

yum makecache

 

修改成功后,安装如下依赖包:

yum -y installbinutils \

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

安装完成后显示如下界面

 

使用如下命令检查依赖是否安装完整

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"

发现 pdksh 没有安装

 

执行 yum -y install pdksh,发现CentOS 7 没有相关安装包可用

通过wget命令直接下载pdkshrpm包,我下载到了/tmp/

wget -O/tmp/pdksh-5.2.14-37.el5_8.1.x86_64.rpm http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm

下载完成后,进入 /tmp/

rpm -ivhpdksh-5.2.14-37.el5_8.1.x86_64.rpm

 

再次检查依赖包是否安装完整

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"

 

到此依赖包安装完整

添加oracle用户组和用户

groupadd oinstall

groupadd dba

groupadd asmadmin

groupadd asmdba

useradd -g oinstall-G dba,asmdba oracle -d /home/oracle

添加完成后,查看oracle用户

id oracle

初始化oracle用户的密码

passwd oracle

 

配置hostname(本机IP映射)

vim /etc/hosts

192.168.154.154centos-oracle

测试hostname

ping -c 3centos-oracle

 

优化OS内核参数

kernel.shmmax 参数设置为物理内存的一半

vim /etc/sysctl.conf

fs.aio-max-nr=1048576

fs.file-max=6815744

kernel.shmall=2097152

kernel.shmmni=4096

kernel.shmmax =1073741824

kernel.sem=25032000 100 128

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

使参数生效

sysctl -p

 

限制oracle用户的shell权限

vim/etc/security/limits.conf

oracle             soft   nproc   2047

oracle             hard   nproc   16384

oracle              soft   nofile  1024

oracle             hard   nofile  65536

vim /etc/pam.d/login

session required   /lib64/security/pam_limits.so

session required   pam_limits.so

vim /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

创建oracle安装目录

mkdir-p /db/app/oracle/product/11.2.0

mkdir /db/app/oracle/oradata

mkdir /db/app/oracle/inventory

mkdir /db/app/oracle/fast_recovery_area

chown -Roracle:oinstall /db/app/oracle

chmod -R775 /db/app/oracle

配置oracle用户环境变量

su - oracle

vim .bash_profile

umask 022

exportORACLE_HOSTNAME=centos-orcl

export ORACLE_BASE=/db/app/oracle

exportORACLE_HOME=$ORACLE_BASE/product/11.2.0/

exportORACLE_SID=ORCL

exportPATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH

exportLC_ALL="en_US"

exportLANG="en_US"

export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"

exportNLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"

以上配置完成后,个人建议重启下系统

reboot

解压oracle压缩文件到 /db

cd /db/

unziplinux.x64_11gR2_database_1of2.zip -d /db

unziplinux.x64_11gR2_database_2of2.zip -d /db

 

解压完成后

mkdir /db/etc/

cp/db/database/response/* /db/etc/

vim /db/etc/db_install.rsp

 

oracle.install.option=INSTALL_DB_SWONLY

DECLINE_SECURITY_UPDATES=true

UNIX_GROUP_NAME=oinstall

INVENTORY_LOCATION=/u01/app/oracle/inventory

SELECTED_LANGUAGES=en,zh_CN

ORACLE_HOSTNAME=centos-oracle

ORACLE_HOME=/db/app/oracle/product/11.2.0

ORACLE_BASE=/db/app/oracle

oracle.install.db.InstallEdition=EE

oracle.install.db.isCustomInstall=true

oracle.install.db.DBA_GROUP=dba

oracle.install.db.OPER_GROUP=dba

 

开始安装

su - oracle

./runInstaller-silent -ignorePrereq -responseFile /db/etc/response/db_install.rsp

安装期间可以使用tail命令监看oracle的安装日志

tail -f /db/app/oracle/inventory/logs/installActions2017-07-12_03-48-29PM.log

 

安装完成,提示Successfully Setup Software.

根据提示完成配置

 

su root

sh/db/app/oracle/inventory/orainstRoot.sh

sh/db/app/oracle/product/11.2.0/root.sh

配置静默监听

su - oracle

netca /silent /responsefile/db/etc/netca.rsp

 

查看监听端口

netstat -tnulp | grep1521

静默创建数据库

TOTALMEMORY 设置为总内存的80%

vi /db/etc/dbca.rsp

GDBNAME ="orcl"

SID ="orcl"

SYSPASSWORD ="oracle"

SYSTEMPASSWORD ="oracle"

SYSMANPASSWORD ="oracle"

DBSNMPPASSWORD = "oracle"

DATAFILEDESTINATION=/db/app/oracle/oradata

RECOVERYAREADESTINATION=/db/app/oracle/fast_recovery_area

CHARACTERSET ="AL32UTF8"

TOTALMEMORY ="1638"

执行静默建库

dbca -silent-responseFile /db/etc/dbca.rsp

 

查看oracle实例进程

ps -ef | grep ora_ |grep -v grep

 

查看监听状态

lsnrctl status

 

登录sqlplus,查看实例状态

sqlplus / as sysdba

select status fromv$instance;

 

查看数据库编码

selectuserenv('language') from dual;

 

查看数据库版本信息

select * fromv$version;

 

激活scott用户

alter user scottaccount unlock;

alter user scott identifiedby tiger;

selectusername,account_status from all_users;

 

Navicat远程连接Oracle

开放1521端口

firewall-cmd--zone=public --add-port=1521/tcp --permanent

firewall-cmd --reload

官方网站

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

下载 instantclient-basic,解压压缩文件

 

下载Navicat

http://pan.baidu.com/s/1c2GP9U4

打开Navicat,工具→选项

打开OCI界面,在右侧OCI library一栏中选择instantclient-basic解压目录下的oci.dll,然后点击确定。

 

重启Navicat,点击连接,选中Oracle

 

select instance_namefrom v$instance;

 

用户名使用刚激活的scott,密码为tiger,填完以上信息后点击连接测试

 

到此Navicat远程连接Oracle数据库成功

设置Oracle开机启动

vi /db/app/oracle/product/11.2.0/bin/dbstart

ORACLE_HOME_LISTNER=$ORACLE_HOME

vi/db/app/oracle/product/11.2.0/bin/dbshut

ORACLE_HOME_LISTNER=$ORACLE_HOME

vi /etc/oratab

orcl:/db/app/oracle/product/11.2.0:Y

vi/etc/rc.d/init.d/oracle

#! /bin/bash# oracle: Start/Stop Oracle Database 11g R2## chkconfig: 345 90 10# description: The Oracle Database is an Object-Relational Database Management System.## processname: oracle
. /etc/rc.d/init.d/functions
LOCKFILE=/var/lock/subsys/oracle
ORACLE_HOME=/db/app/oracle/product/11.2.0
ORACLE_USER=oraclecase "$1" in'start')
   if [ -f $LOCKFILE ]; then
      echo $0 already running.
      exit 1
   fi
   echo -n $"Starting Oracle Database:"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
   touch $LOCKFILE
   ;;'stop')
   if [ ! -f $LOCKFILE ]; then
      echo $0 already stopping.
      exit 1
   fi
   echo -n $"Stopping Oracle Database:"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
   rm -f $LOCKFILE
   ;;'restart')
   $0 stop
   $0 start
   ;;'status')
   if [ -f $LOCKFILE ]; then
      echo $0 started.
      else
      echo $0 stopped.
   fi
   ;;
*)
   echo "Usage: $0 [start|stop|status]"
   exit 1esacexit 0

 

开机启动oracle

systemctl enableoracle

开机启动问题

oracle ORA-12547:TNS:lost contact

cd/db/app/oracle/product/11.2.0/bin/

chmod 6751 oracle

TNS-12555:TNS:permission denied

cd /var/tmp

chown -Roracle:oinstall .oracle