Linux安装Oracle服务器贡献版

原创文章,转载请保留或注明出处:https://www.jianshu.com/p/54a2d8bd8da7

目录
1 编写目的
2 安装前准备
   2.1 安装方式
   2.2 操作系统的选择
   2.3 JDK的安装
   2.4 下载Oracle
3 Centos系统配置
   3.1 网络配置
   3.2 修改主机名
   3.3 修改系统标识
   3.4 修改系统时间
   3.5 关闭selinux
   3.6 永久性关闭防火墙
   3.7 重启电脑
4 Oracle安装参数配置
   4.1 修改内核参数
   4.2 修改验证登录配置资源
   4.3 修改操作系统对Oracle用于资源的限制
   4.4 修改Oracle用户最大进程数
   4.5 创建Oracle用户
   4.6 设置Oracle环境变量
   4.7 安装必需的补丁矩阵
5 正式安装Oracle
6 创建数据库实例
7 Oracle创建监听
8 Oracle开机自启
9 Oracle常用操作
   9.1 启动数据库和监听
   9.2 停止数据库和监听
   9.3 查询锁表和解锁
   9.4 更多操作
10 Oracle性能优化
11 总结

1 编写目的

前些时候公司需要对某系统做压力测试,提供了几台装了Window的退役服务器用于本次压测,需要安装一台Linux服务器作为DB服务器,已经很多年没有接触过Oracle的安装,期间遇到了一些问题,网上也看了许多关于Linux安装Oracle的文章,如果全部照搬,Oracle未必能够顺利的安装起来,这篇文章借鉴了大量的网络资料和个人的经验,希望这篇文章有所突破,对大家有所帮助,在与大家的交流过程中,我会尽力的把所有关键细节和注意事项记录于此,供大家学习交流之用。

2 安装前的准备

2.1 安装方式

在安装Oracle的过程中,需要用到大量的库,安装这些库我们有两种方式,本文采用的是第二种安装方式:

  • rpm离线安装(需要提前准备需要的库及依赖库);
  • yum命令在线安装,简洁方便一步到位,这种方式必须联网。

2.2 操作系统的选择

本次使用的是64位的Centos6.9,注意Centos默认安装Oracle是装不上去的,需要做一定的修改,装Oracle的时候建议大家选择RedHat,安装Oracle的时候需要调出它的图形化界面进行安装,所以在Centos的时候最好安装桌面版的Linux系统,如果安装的是非桌面版的Linux系统,在安装Oracle的时候,需要单独给系统安装桌面化工具。

关于服务器操作系统的安装,不是本文重点,大家若有兴趣,以后再单独讲解。

2.3 JDK的安装

官网下载rpm包,用rpm命令直接安装即可,JDK安装后用命令# java –version确认是否正确,如果服务器只用于Oracle的安装,可以不配置JDK环境变量:


JDK版本号

2.4 下载Oracle

版本号为Oracle?11.2.0.1.0确保一下两个文件都下载,并在执行安装之前将它们解压缩到同一个目录中,下载地址:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linx8664soft-100572.html

Oracle下载页面

3 Centos系统配置

3.1 网络配置

常用的有两种方式,本文采用的是第二种基于图形化界面的配置,本次压测只在局域网测试,故本文中的网络配置也只满足局域网:

  • 第一种,通过配置文件配置,修改/etc/sysconfig/network-scripts中的ifcfg-em1或者ifcfg-eth0文件
    图3-1-1

    本次压测服务器有4个网络配置文件ifcfg-em1、ifcfg-em2、ifcfg-em3、ifcfg-em4,对应不同的网口,通常情况下,我们选择第一个即可。

  • 第二种,用图形化界面配置,root下输入命令:#setup会出来一个配置窗口,按下图操作保存即可。
    图3-1-2 图形化界面配置网络

3.2 修改主机名

在安装Centos的过程中,会输入主机名,默认为localhost,系统安装好后,如果需要再次修改主机名,需要修改两个地方:

  • 第一处,编辑# vi /etc/sysconfig/network保存,再执行# source/etc/sysconfig/network
    图3-2-1 修改主机名
  • 第二处,编辑#vi /etc/hosts把hostname添加进去,保存。
    图3-2-2 把主机名添加到hosts

3.3 修改系统标识

前面我们提到Oracle无法识别Centos会导致安装失败,也就是Oracle默认不支持在Centos系统上的安装,需要修改系统标识。

执行# vi /etc/redhat-release查看当前系统标识:
图3-3-1 当前系统标识

修改后的系统标识

注意:具体修改成Red Hat为哪个版本需要根据你选择的系统版本来决定
图3-3-2 修改后的系统标识

3.4 修改系统时间

  • 执行命令:#date -s “yyyy-MM-dd HH:mm:ss”
  • 执行命令:#hwclock –w,将当前时间和日期写入BIOS,避免重启后失效

3.5 关闭selinux

执行命令:#vi /etc/selinux/config,将SELINUX的值修改为disabled,如下图:
图3-5 关闭selinu

3.6 永久性关闭防火墙

在安装Oracle的时候,建议把防火墙彻底关闭,一劳永逸,等安装好后,再根据需要打开防火墙配置需要的端口,依次执行命令:

// 关闭防火墙
# chkconfig iptables off
// 停止防火墙服务
# service iptables stop
//执行命令,查看关闭状态:
# chkconfig --list iptables

如下图所示:


图3-6-1
//查看防火墙状态
# service iptables status

如下图所示:


图3-6-2

3.7 重启电脑

以上我们做了许多参数的配置修改,重启电脑,以保证参数是生效,本章节作为Oracle安装过程中非常重要的环节,所以这里强调了要重启下电脑,为下面Oracle的安装做充分铺垫。

4 Oracle安装参数配置

4.1 修改内核参数

  • 第一步,执行#vi /etc/sysctl.conf,在文件最后加上以下参数:
// 在/etc/sysctl.conf后面增加以下参数
#文件系统最大异步io
fs.aio-max-nr= 1048576??
#文件系统中文件的最大个数
fs.file-max= 6815744?????
kernel.shmall= 2097152
#这个参数非常关键,不能小于给Oracle分配的内存值,Oracle安装时,默认为总内存的40%
kernel.shmmax= 536870912??
#最小共享内存大小bytes
kernel.shmmni= 4096??
kernel.sem= 250 32000 100 128
#端口的范围9000 65500
net.ipv4.ip_local_port_range= 9000 65500
net.core.rmem_default= 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048586
  • 第二步,执行#sysctl –p使参数生效

4.2 修改验证登录配置资源

执行命令# vi /etc/pam.d/login在最后一行加上session? required /lib64/security/pam_limits.so,如下图:
图4-2

4.3 修改操作系统对Oracle用于资源的限制

执行:# /etc/security/limits.conf,在文件末尾加上以下配置:

oracle?soft??? nproc?? 2047
oracle?hard??? nproc?? 16384
oracle?soft??? nofile? 1024
oracle?hard??? nofile? 65536
oracle?hard??? stack?? 10240

如下图所示:
图4-3

4.4 修改Oracle用户最大进程数

执行命令# vi /etc/profile,在该文件最后加上以下内容:

if [ $USER = "oracle" ]; then
? if [ $SHELL ="/bin/ksh" ]; then
??? ulimit -p16384
??? ulimit -n65536
? else
??? ulimit -u16384 -n 65536
? fi
fi

如下图所示:
图4-4

4.5 创建Oracle用户

逐个执行以下命令,在Centos上创建Oracle用户

# groupadd oinstall
# groupadd dba
# useradd –g oinstall –G dba oracle //把创建的oracle用户加入到oinstall和dba附属组
# passwd oracle //给oracle用户设置登录密码,提示会输入两次密码

4.6 设置Oracle环境变量

  • 安装Oracle时,必须要保证环境变量中的安装目录和实际的安装目录一致,有部分同学在安装的时候就是吃了安装目录的亏,本文我们将Oracle安装到/home/oracle/app目录下。
  • 配置Oracle环境变量时,必须切换到新创建的Oracle用户下,执行命令:#su – oracle
  • 修改oracle用户私有的环境变量,执行命令# vi .bash_profile,在文件末尾加入以下配置:
export ORACLE_BASE=/home/oracle/app
export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl? //SID注意和自己即将建立的SID对应
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

4.7 安装必需的补丁矩阵

  • 系统默认的yum安装源支持不是很好,最好把它修改成阿里或者网易的镜像YUM源,阿里的可以访问http://mirrors.aliyun.com/help/centos,首先备份原文件,执行以下命令:# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup,然后再执行命令:# wget-O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-6.repo下载阿里的YUM,最后使用命令:#yum makecache重新缓存。
  • 在安装Oracle之前,需要安装以下的rpm软件包,加括号32bit注解的是软件包32位版本,对应同名未加注解的则是该软件包的64位版本,在64位版本的操作系统上,两种版本都需要安装。
- binutils-2.17.50.0.6
- compat-libstdc++-33-3.2.3
- compat-libstdc++-33-3.2.3 (32 bit)
- elfutils-libelf-0.125
- elfutils-libelf-devel-0.125
- gcc-4.1.2
- gcc-c++-4.1.2
- glibc-2.5-24
- glibc-2.5-24 (32 bit)
- glibc-common-2.5
- glibc-devel-2.5
- glibc-devel-2.5 (32 bit)
- glibc-headers-2.5
- ksh-20060214
- libaio-0.3.106
- libaio-0.3.106 (32 bit)
- libaio-devel-0.3.106
- libaio-devel-0.3.106 (32 bit)
- libgcc-4.1.2
- libgcc-4.1.2 (32 bit)
- libstdc++-4.1.2
- libstdc++-4.1.2 (32 bit)
- libstdc++-devel 4.1.2
- make-3.81
- sysstat-7.0.2
  • 采用yum安装,执行以下命令:
// 逐个执行
#yum install -y binutils*
#yum install -y compat-libstdc*
#yum install -y elfutils-libelf*
#yum install -y gcc*
#yum install -y glibc*
#yum install -y ksh*
#yum install -y libaio*
#yum install -y libgcc*
#yum install -y libstdc*
#yum install -y make*
#yum install -y sysstat*
#yum install libXp* -y
#yum install -y glibc-kernheaders
  • 检查lib是否安装齐全,执行以下命令:
#rpm -q --queryformat %-{name}-%{version}-%{release}-%{arch}"\n" \compat-libstdc++-33 glibc-kernheaders glibc-headers libaio libgcc glibc-develxorg-x11-deprecated-libs
  • 如果缺少包,就继续安装缺失的软件包。

5 安装Oracle

  • 前面的工作都是为这一步工作做铺垫,在正式安装Oracle之前,以上操作完成后,最好重启一下服务器,使用oracle用户登录服务器
  • 将下载好的Oracle压缩文件用ftp上传到”/home/oracle”目录下,逐个执行以下命令解压:
# unzip linux.x64_11gR2_database_1of2.zip
# unzip linux.x64_11gR2_database_1of2.zip

解压的文件在/home/oracle/database目录下。

  • 具体安装步骤如下:
    5.1 使用oracle用户,执行命令:
// 进入挤压目录执行runInstaller
# cd /home/oracle/database
# ./runInstaller

当检查通过,会出现Oracle的安装界面

如果此时安装界面出现乱码,可能是系统语言为中文导致,需要临时修改系统语言。

//查看Linux系统语言
#echo $LANG?
//修改Linux系统语言
#echo LANG=’en_US’

若修改了Linux系统语言,需要关闭安装程序,再重新执行安装命令。
5.2 去掉勾选I wish to receive security updates via My Oracle Support选项,点击Next


图5-2

5.3 选择只安装数据库,不创建实例。我们可以等数据库安装完成后再安装实例,当然也可以选择第一个选项,安装数据库的同时创建数据库实例一步到位,只是安装时间会稍微长一点,如下图:


图5-3

5.4 选择单实例数据库,如下图:
图5-4

5.5 从左边列表选择简体中文和繁体中文支持加入到右边的列表,也可以只选择简体中文,English需要保留,如下图:
图5-5

5.6 选择第一个选项,安装企业版本,如下图:


图5-6

5.7 这里的Oracle Base目录,需要和“4.6章节设置Oracle环境变量”中的.bash_profile文件中配置的ORACLE_BASE变量值保持一致,如下图:
图5-7

5-8 这里的两个Group与前面“4.5章节创建Oracle用户”中的两个group保持一致,如下图:
图5-8

5.9 安装到这一步的时,可能会报以下类似的错误,发生这种情况的时候,按“4.7安装必需的补丁矩阵”中需要的必须库清单进行检查,我们会发现有的库实际上已经安装成功了,只是版本号对不上,实际安装的版本号比推荐的版本号还要高,遇到这种情况是Centos版本较高,所以Oracle 11g check的时候识别不到高版本的lib,我们可以勾选”Ignore All”忽略,继续安装,如下图:
图5-9-1

图5-9-2

5-10 如果出现下图的这种情况,需要切换到root用户执行下这两个路径的.sh脚本,执行第二个.sh脚本的时候,会提示输入参数,不用输入直接执行即可,执行这两个脚本的时候,不要关闭Oracle安装界面,执行完成后,继续安装。
图5-10

5-11 安装完成,如下图:
图5-11

6 创建数据库实例

以上的步骤,我们已经完成了Oracle的安装,接下来,我们要为Oracle创建数据库,也就是Oracle实例。使用oracle用户登录,新开启一个终端,执行命令:

// 打开Oracle 图形化界面命令
# dbca

会弹出如下界面,按步骤执行即可:


图6-1

图6-2

图6-3

图6-4

图6-5

图6-6

图6-7

图6-8

图6-9

图6-10

图6-11

安装完成,用oracle用户登录,在终端我们可执行#sqlplus命令,然后分别输入用户名和密码,验证是否安装成功,单纯的使用Sqlplus命令时,不用启动监听,需要注意的时候,这一步操作如果远程机器没有安装sqlplus的话,需要在oracle服务器上面来完成操作。

7 Oracle创建监听

同样使用oracle用户登录,新开启一个终端,执行命令:

// 打开Oracle 图形化界面命令
# netca

会弹出如下界面:


图7-1

创建监听服务,让其他Oracel客户端可以远程连接Oracle服务器,如下图:


图7-2

图7-3

图7-4

图7-5

图7-6

配置本地网络服务名,充当Oracle客户端,如下图:


图7-7

输入上面章节“6 创建数据库”创建的Oracle数据库的实例名“orcl”,如下图:
图7-8

图7-9

输入Oracle服务器的IP地址,这里可以输入本文中IP:192.168.1.118或者127.0.0.1,如下图:
图7-10

图7-11

图7-12

图7-13

图7-14

图7-15

8 Oracle开机自启

Oracle服务器一般来说最好是手动启动,方便及时定位和解决问题,在不通的OS下,启动的设置有些出入,这里只介绍Centos中Oracle开机自启的设置方式。
用root账户登录,执行命令#vi /etc/rc.local在文件的最后加上如下内容:

su - oracle -lc"/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start"
su - oracle -c"/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/dbstart"

如图所示:


图8-1

重启DB服务器生效。

9 Oracle常用操作

9.1 启动数据库和监听

用oracle用户登录,启动监听执行命令:

// 查看监听状态:
# lsnrctl status
// 启动监听:
# lsnrctl start
// 启动数据库,必须以dba身份进入sqlplus才能启动:
# sqlplus / as sysdba
SQL>startup

9.2 停止数据库和监听

用oracle用户登录,启动监听执行命令:

// 停止监听:
# lsnrctl stop
// 关闭数据库,必须以dba身份进入sqlplus才能启动:
# sqlplus / as sysdba
SQL>shutdown immediate

9.3 查询锁表和解锁

在使用数据库的时候,锁表是很难避免的,可以通过以下SQL查询锁表情况和解锁:

// 查询锁表情况:
select * from v$session t1, v$locked_object t2 wheret1.sid = t2.SESSION_ID;
// 解锁:
alter system kill session '176,58';? --SID和serial#

9.4 更多操作

网络上资料很多,这里只做介绍,不做具体操作,Oracle安装好后,如果作为系统服务器,需要考虑的问题有很多,如下:

  • A. 创建新用户:授予特定的权限,指定表空间
  • B. 表空间:系统默认使用的表空间是USERS,每个表空间的单元块是32G,很快就会爆满,所以我们要定义自己的表空间,并将其设置为自动扩容

10 Oracle性优化

Oracle11g的SGA和PGA设置为多大最合适?

  • Oracle官方文档推荐:
    MEMORY_TARGET=物理内存x 80%
    MEMORY_MAX_SIZE=物理内存x 80%

  • 对于OLTP系统:
    SGA_TARGET=(物理内存x 80%) x 80%
    SGA_MAX_SIZE=(物理内存x 80%) x80%
    PGA_AGGREGATE_TARGET=(物理内存x 80%) x20%

  • 对于DSS系统:
    SGA_TARGET=(物理内存x 80%) x 50%
    SGA_MAX_SIZE=(物理内存x 80%) x50%
    PGA_AGGREGATE_TARGET=(物理内存 x 80%) x 50%

11 总结

在安装Oracle的过程中,受不同硬件和软件环境的影响,可能会出现各种千奇百怪的问题,不过不要紧,百度几乎都能找到答案,笔者在安装过程中就遇到过虚拟内存不足类似的问题,都非常容易解决。很多技术或者工具,可能只是在某个企业或者某段时间用过,若多年不用,再次用的时候可能就会忘记某些细节,多年前,笔者在红帽子上面装Oracle感觉非常顺利,这次在Centos上也相当于从头再来,若有疑问,欢迎留言交流。

多年的工作,不同的阅历,认真写好每一篇文字,这是一种生活态度

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345