暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Oracle云上静默安装Oracle Database 11g

凛冬未至 2017-06-12
797

本文将演示在Oracle公有云上,采用静默安装的方式,部署Oracle Database 11gR2

 

开始之前,有人会问:为什么要静默安装呢? 放着好好的图形化界面不用,搞什么静默安装?

没错,多数情况下, 界面友好的图形化安装方式,确实能给我们带来很多便利,尤其是Oracle初学者。但是在很多场景下,无法使用图形化界面。例如,很多公司基于安全或者性能的考虑,在数据库服务器上只允许安装了一些系统必须的软件,而那些X-windowsKDEGnome等图形环境被严令禁止,另外,一些防火墙的安全策略,会阻止用户远程登录服务器的图形环境,而且使用图形环境对网络带宽有一定要求,在那些网络带宽有限的环境,无法顺畅的使用图形界面。同时,图形化环境对操作系统的环境也有要求,经常会因为操作系统缺少一些软件包,导致图形化界面无法启动。以前在做数据库服务的时期,以上这些环境,老余都遇到过。如果当时只会图形化安装这一招,那老余就早被客户赶出门了,所以多学几招没坏处,技不压身嘛。

 

除了上面的客观原因外,一些业务上的新变化,也促使我们去了解Oracle的静默安装。据我所知,Oracle软件的授权协议中,有一种嵌入式软件授权协议(Embedded Software License ESL),把Oracle的软件打包到ISV(独立软件供应商)的解决方案中,是所有授权协议中最便宜的一种,很多Oracle合作伙伴都会选择这种协议,但是这种协议中明文规定:ISV必须封装Oracle的软件,以打包的方式交付给最终用户,在部署过程中,是不能看到OracleLOGO,所以Oracle公司要求这些合作伙伴必须掌握Oracle产品的静默安装技能。另外,很多公司都在搭建和推出自己的云平台,他们的云平台需要以服务的方式,为最终用户提供Oracle数据库服务、Oracle中间件服务,这就要求他们的云平台具备将Oracle产品的安装和部署整合进去的能力,因此静默安装也就成为了他们的唯一选择。

 

做了这么多铺垫,大家现在应该明白,掌握Oracle产品的静默安装技术有多重要。来吧,跟着老余一起静默安装吧。

 

今天,我将给大家演示,在Oracle云上静默安装Oracle Database 11g R2

别问我为什么又是Oracle云呢? 因为它好用,套用官方的说法:高效、安全、稳定,还便宜。

 

首先,我在Oracle云上创建了一个 Oracle Linux 6.8的实例,(略过创建过程,具体流程参见本公众号的其他文章Oracle云上创建Oracle Linux实例)。

[root@bc1c3b opc]# uname -a

Linux bc1c3b 4.1.12-61.1.22.el6uek.x86_64 #2 SMP Fri Dec 2 09:36:32 PST 2016 x86_64 x86_64 x86_64 GNU/Linux

[root@bc1c3b opc]# cat etc/oracle-release

Oracle Linux Server release 6.8

 

概况一下, 静默安装过程总体上分为两个步骤:环境准备安装部署

其中,环境准备最为重要,尤其是在LinuxUnix环境。在这些环境中安装过Oracle的朋友应该很清楚,这一步最为关键,在安装过程中,遇到多数问题都跟环境准备有关。如果这一步做好了,后面的安装部署就会非常顺利。

 

一、环境准备

创建用户和属组

#/usr/sbin/groupadd -g 501 oinstall

#/usr/sbin/groupadd -g 502 dba

 

#/usr/sbin/useradd -u 500 -g oinstall -G dba oracle

 

修改root和oracle用户密码

# passwd root

 

# passwd oracle

密码均修改为Welcome1

 

修改oracle用户的资源限制

root用户修改配置文件/etc/security/limits.conf

新增以下内容:

oracle   soft   nofile    1024

oracle   hard   nofile    65536

oracle   soft   nproc    2047

oracle   hard   nproc    16384

oracle   soft   stack    10240

oracle   hard   stack    32768

 

设置oracle用户缺省资源限制,修改配置文件/etc/profile,在文件最后,加入以下内容:

if [ $USER = "oracle" ] ; then

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

ulimit -p 16384

ulimit -n 65536

  else

ulimit -u 16384 -n 65536

  fi

   umask 022

fi

 

修改/etc/pam.d/login文件,新增以下内容:

session required pam_limits.so

 

修改内核参数,编辑内核参数配置文件/etc/sysctl.conf,加入以下内容

# vi etc/sysctl.conf

fs.file-max = 6815744

kernel.sem = 250 32000 100 128

kernel.shmmni = 4096

kernel.shmall = 1073741824

kernel.shmmax = 4398046511104

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

fs.aio-max-nr = 1048576

net.ipv4.ip_local_port_range = 9000 65500

 

 

 

执行以下命令,使修改参数立刻生效

# /sbin/sysctl -p

[root@bc1c3b opc]# sysctl -p

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 2

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 = 68719476736

kernel.shmall = 4294967296

kernel.panic = 1

error: "xen.independent_wallclock" is an unknown key

fs.file-max = 6815744

kernel.sem = 250 32000 100 128

kernel.shmmni = 4096

kernel.shmall = 1073741824

kernel.shmmax = 4398046511104

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

fs.aio-max-nr = 1048576

net.ipv4.ip_local_port_range = 9000 65500

 

 

检查操作系统软件包安装情况:

#rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \

compat-libstdc++-33 \

elfutils-libelf \

elfutils-libelf-devel \

gcc \

gcc-c++ \

glibc \

glibc-common \

glibc-devel \

glibc-headers \

ksh \

libaio \

libaio-devel \

libgcc \

libstdc++ \

libstdc++-devel \

make \

sysstat \

unixODBC \

unixODBC-devel \

expect

 

binutils-2.20.51.0.2-5.44.el6 (x86_64)

package compat-libstdc++-33 is not installed

elfutils-libelf-0.164-2.el6 (x86_64)

package elfutils-libelf-devel is not installed

gcc-4.4.7-18.el6 (x86_64)

package gcc-c++ is not installed

glibc-2.12-1.209.0.3.el6_9.1 (x86_64)

glibc-2.12-1.209.0.3.el6_9.1 (i686)

glibc-common-2.12-1.209.0.3.el6_9.1 (x86_64)

glibc-devel-2.12-1.209.0.3.el6_9.1 (x86_64)

glibc-headers-2.12-1.209.0.3.el6_9.1 (x86_64)

package ksh is not installed

libaio-0.3.107-10.el6 (x86_64)

package libaio-devel is not installed

libgcc-4.4.7-18.el6 (x86_64)

libstdc++-4.4.7-17.el6 (x86_64)

package libstdc++-devel is not installed

make-3.81-23.el6 (x86_64)

package sysstat is not installed

package unixODBC is not installed

package unixODBC-devel is not installed

 

 

安装缺少的软件包

# yum -y install compat-libstdc++-33 elfutils-libelf-devel gcc-c++ ksh libaio-devel libstdc++-devel sysstat unixODBC unixODBC-devel expect

 

再次确认软件包的安装情况,确保都已经安装后,进入下一步。

 

创建文件/etc/oraInst.loc,指定inventory目录的绝对路径

# vi /etc/oraInst.loc

inventory_loc=/u01/app/oraInventory

inst_group=oinstall

 

 

 

修改Oracle用户的环境变量

# su - oracle

$ cd $HOME

$ vi .bash_profile

 

增加以下内容

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORACLE_SID=ora11

export ORACLE_TERM=xterm

export ORA_NLS10=$ORACLE_HOME/nls/data

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

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

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export THREADS_FLAG=native

#export DISPLAY=:0.0

 

export EDITOR=vi

set -o vi

umask 022

 

执行.bash_profile文件,是环境变量生效

# . .bash_profile

 

二、安装部署

创建软件安装目录

# mkdir -p u01/app/oracle

# chown -R oracle:oinstall /u01

# chmod -R 775 /u01

 

下载数据库安装介质

Oracle 11gR2的安装介质可以从OTN和E-delivery下载。

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

 

https://edelivery.oracle.com

 

将安装介质拷贝到相关目录下:

[oracle@bc1c3b software]$ pwd

/home/oracle/software

[oracle@bc1c3b software]$ ll

total 2295600

-rw-r--r-- 1 oracle oinstall 1239269270 May 31 22:38 V17530-01_1of2.zip

-rw-r--r-- 1 oracle oinstall 1111416131 May 31 22:38 V17530-01_2of2.zip

 

解压

$ unzip V17530-01_1of2.zip

$ unzip V17530-01_2of2.zip

 

 

创建数据库软件安装的响应文件:

./createRsp.sh -o INSTALL_DB_SWONLY \

-H $(hostname) \

-G oinstall \

-I $ORACLE_INVENTORY \

-L en,zh_CN,zh_TW \

-E EE \

-M $ORACLE_HOME \

-B $ORACLE_BASE \

-P Welcome1 \

-T GENERAL_PURPOSE \

-N ora11 \

-S ora11 \

-C ZHS16GBK \

--dbagroup dba \

--opergroup oinstall \

--dataloc $ORACLE_BASE/oradata \

--recoveryloc $ORACLE_BASE/recovery > log/install.log

以上的参数均能自定义,有几个关键的参数需要重点关注:

-E EE  安装数据库企业版

-M $ORACLE_HOME 设置ORACLE_HOME

-B $ORACLE_BASE 设置ORACLE_BASE

-P Welcome1 设置数据库用户的口令,所有用户均采用同一个口令

-T GENERAL_PURPOSE 数据库类型,本例选择通用类型,还有数据仓库等类型,主要影响数据库的初始化参数设置

-N ora11 设置全局数据库名

-S ora11 设置数据库实例名

-C ZHS16GBK 设置字符集

备注:如需createRsp.sh脚本,请发邮件到邮箱cheney.yu@outlook.com索取。


[oracle@bc1c3b software]$ ./createRsp.sh -o INSTALL_DB_SWONLY \

> -H $(hostname) \

> -G oinstall \

> -I $ORACLE_INVENTORY \

> -L en,zh_CN,zh_TW \

> -E EE \

> -M $ORACLE_HOME \

> -B $ORACLE_BASE \

> -P Welcome1 \

> -T GENERAL_PURPOSE \

> -N ora11 \

> -S ora11 \

> -C ZHS16GBK \

> --dbagroup dba \

> --opergroup oinstall \

> --dataloc $ORACLE_BASE/oradata \

> --recoveryloc $ORACLE_BASE/recovery

oracle.install.option=INSTALL_DB_SWONLY

ORACLE_HOST=bc1c3b

UNIX_GROUP_NAME=oinstall

INVENTORY_LOCATION=-L

oracle.install.db.InstallEdition=EE

ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

ORACLE_BASE=/u01/app/oracle

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

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

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

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

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

oracle.install.db.DBA_GROUP=dba

oracle.install.db.OPER_GROUP=oinstall

oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/u01/app/oracle/oradata

oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/u01/app/oracle/recovery

 

执行以上命令后,将在当前目录生成一个响应文件

[oracle@bc1c3b software]$ ll db_install.rsp

-rw-r--r-- 1 oracle oinstall 22761 May 31 22:58 db_install.rsp

 

 

安装数据库软件,只安装软件,不创建数据库

export basepath=/home/oracle/software

export O_HOME=/u01/app/oracle/product/11.2.0/db_1

export O_HOME_NAME=OraDb11g_home1

export O_BASE=/u01/app/oracle

$basepath/database/runInstaller -silent -noconfig -ignorePrereq -ignoreSysPrereqs -waitforcompletion -responseFile $basepath/db_install.rsp ORACLE_HOME=$O_HOME ORACLE_HOME_NAME=$O_HOME_NAME ORACLE_BASE=$O_BASE

 

[oracle@bc1c3b software]$ export basepath=/home/oracle/software

[oracle@bc1c3b software]$ export O_HOME=/u01/app/oracle/product/11.2.0/db_1

[oracle@bc1c3b software]$ export O_HOME_NAME=OraDb11g_home1

[oracle@bc1c3b software]$ export O_BASE=/u01/app/oracle

[oracle@bc1c3b software]$ $basepath/database/runInstaller -silent -noconfig -ignorePrereq -ignoreSysPrereqs -waitforcompletion -responseFile $basepath/db_install.rsp ORACLE_HOME=$O_HOME ORACLE_HOME_NAME=$O_HOME_NAME ORACLE_BASE=$O_BASE

Starting Oracle Universal Installer...

 

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

Checking swap space: 0 MB available, 150 MB required.    Failed <<<<

 

>>> Ignoring required pre-requisite failures. Continuing...

 

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-05-31_11-00-14PM. Please wait ...You can find the log of this install session at:

 /u01/app/oraInventory/logs/installActions2017-05-31_11-00-14PM.log

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

 #!/bin/sh

 #Root scripts to run

 

/u01/app/oracle/product/11.2.0/db_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.

 

手工切换到root用户,执行脚本/u01/app/oracle/product/11.2.0/db_1/root.sh

[root@bc1c3b opc]#  /u01/app/oracle/product/11.2.0/db_1/root.sh

Check /u01/app/oracle/product/11.2.0/db_1/install/root_bc1c3b_2017-05-31_23-07-53.log for the output of root script

 

启动监听器

切换到Oracle用户

$ lsnrctl start

 

 

以静默方式使用DBCA建库

export basepath=/home/oracle/software

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export ORACLE_SID=ora11

export ORACLE_GLOBAL_NAME=ora11

cd $ORACLE_HOME/assistants/dbca/templates

dbca -silent \

-createDatabase \

-templateName General_Purpose.dbc \

-gdbName $ORACLE_GLOBAL_NAME \

-sid $ORACLE_SID \

-SysPassword Welcome1 \

-SystemPassword Welcome1 \

-emConfiguration NONE \

-datafileDestination $ORACLE_BASE/oradata \

-storageType FS \

-characterSet ZHS16GBK \

-memoryPercentage 40

以上的参数均能自定义,有几个关键的参数需要重点关注:

-sid 设置数据库实例名

-SysPassword Welcome1   设置SYS用户口令,本例Welcome1

-SystemPassword Welcome1 设置SYSTEM用户口令,本例Welcome1

-emConfiguration NONE  设置EM,本例中不设置EM

-datafileDestination $ORACLE_BASE/oradata 设置数据库数据文件的安装目录

-storageType FS 设置数据文件的存储类型,本例为文件系统

-characterSet ZHS16GBK 设置数据库的字符集

-memoryPercentage 40  设置SGAPGA,本例为SGAPGA的总大小占总内存的40%

 

[oracle@bc1c3b templates]$ dbca -silent \

> -createDatabase \

> -templateName General_Purpose.dbc \

> -gdbName $ORACLE_GLOBAL_NAME \

> -sid $ORACLE_SID \

> -SysPassword Welcome1 \

> -SystemPassword Welcome1 \

> -emConfiguration NONE \

> -datafileDestination $ORACLE_BASE/oradata \

> -storageType FS \

> -characterSet ZHS16GBK \

> -memoryPercentage 40

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 "/u01/app/oracle/cfgtoollogs/dbca/ora11/ora11.log" for further details.

数据库创建成功!

 

检查数据库状态:

[oracle@bc1c3b ~]$ sqlplus system/Welcome1@bc1c3b.compute-a431015.oraclecloud.internal:1521/ora11

 

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 1 02:16:19 2017

 

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 * from v$version;

 

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

PL/SQL Release 11.2.0.1.0 - Production

CORE    11.2.0.1.0      Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 - Production

 

至此,数据库静默安装顺利完成,是不是没有想象中的复杂。通过静默安装,大家可以清楚了数据库安装和部署的主要步骤,再遇到问题时,就能快速定位,快速解决,这是图形化界面无法达到的。

 

另外,静默安装还有一个好处,就是装*。没错,作为一个资深的攻城狮,只会操作图形化界面多Low啊,不会命令行,你好意思说自己是攻城狮吗?想象一下, 打开电脑,在眼花缭乱的黑白字符中挥斥方遒,指点江山,在客户和师妹仰慕的眼神中,你轻轻的合上电脑,转身离去,不带走一片云彩。。。 别问我怎么知道这么多,因为哥就这么干过,屡试不爽!

 


备注:本文中用到一个脚本createRsp.sh,由于微信公众号无法上传附件,所以无法随文提供,如需createRsp.sh脚本,请发邮件到邮箱cheney.yu@outlook.com索取。


文章转载自凛冬未至,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论