原创文章,转载请保留或注明出处: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环境变量:
2.4 下载Oracle
版本号为Oracle?11.2.0.1.0确保一下两个文件都下载,并在执行安装之前将它们解压缩到同一个目录中,下载地址:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linx8664soft-100572.html
3 Centos系统配置
3.1 网络配置
常用的有两种方式,本文采用的是第二种基于图形化界面的配置,本次压测只在局域网测试,故本文中的网络配置也只满足局域网:
-
第一种,通过配置文件配置,修改/etc/sysconfig/network-scripts中的ifcfg-em1或者ifcfg-eth0文件
本次压测服务器有4个网络配置文件ifcfg-em1、ifcfg-em2、ifcfg-em3、ifcfg-em4,对应不同的网口,通常情况下,我们选择第一个即可。
-
第二种,用图形化界面配置,root下输入命令:#setup会出来一个配置窗口,按下图操作保存即可。
3.2 修改主机名
在安装Centos的过程中,会输入主机名,默认为localhost,系统安装好后,如果需要再次修改主机名,需要修改两个地方:
-
第一处,编辑# vi /etc/sysconfig/network保存,再执行# source/etc/sysconfig/network
-
第二处,编辑#vi /etc/hosts把hostname添加进去,保存。
3.3 修改系统标识
前面我们提到Oracle无法识别Centos会导致安装失败,也就是Oracle默认不支持在Centos系统上的安装,需要修改系统标识。
修改后的系统标识
注意:具体修改成Red Hat为哪个版本需要根据你选择的系统版本来决定
3.4 修改系统时间
- 执行命令:#date -s “yyyy-MM-dd HH:mm:ss”
- 执行命令:#hwclock –w,将当前时间和日期写入BIOS,避免重启后失效
3.5 关闭selinux
执行命令:#vi /etc/selinux/config,将SELINUX的值修改为disabled,如下图:3.6 永久性关闭防火墙
在安装Oracle的时候,建议把防火墙彻底关闭,一劳永逸,等安装好后,再根据需要打开防火墙配置需要的端口,依次执行命令:
// 关闭防火墙
# chkconfig iptables off
// 停止防火墙服务
# service iptables stop
//执行命令,查看关闭状态:
# chkconfig --list iptables
如下图所示:
//查看防火墙状态
# service iptables status
如下图所示:
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.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.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.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.3 选择只安装数据库,不创建实例。我们可以等数据库安装完成后再安装实例,当然也可以选择第一个选项,安装数据库的同时创建数据库实例一步到位,只是安装时间会稍微长一点,如下图:
5.4 选择单实例数据库,如下图:
5.5 从左边列表选择简体中文和繁体中文支持加入到右边的列表,也可以只选择简体中文,English需要保留,如下图:
5.6 选择第一个选项,安装企业版本,如下图:
5.7 这里的Oracle Base目录,需要和“4.6章节设置Oracle环境变量”中的.bash_profile文件中配置的ORACLE_BASE变量值保持一致,如下图:
5-8 这里的两个Group与前面“4.5章节创建Oracle用户”中的两个group保持一致,如下图:
5.9 安装到这一步的时,可能会报以下类似的错误,发生这种情况的时候,按“4.7安装必需的补丁矩阵”中需要的必须库清单进行检查,我们会发现有的库实际上已经安装成功了,只是版本号对不上,实际安装的版本号比推荐的版本号还要高,遇到这种情况是Centos版本较高,所以Oracle 11g check的时候识别不到高版本的lib,我们可以勾选”Ignore All”忽略,继续安装,如下图:
5-10 如果出现下图的这种情况,需要切换到root用户执行下这两个路径的.sh脚本,执行第二个.sh脚本的时候,会提示输入参数,不用输入直接执行即可,执行这两个脚本的时候,不要关闭Oracle安装界面,执行完成后,继续安装。
5-11 安装完成,如下图:
6 创建数据库实例
以上的步骤,我们已经完成了Oracle的安装,接下来,我们要为Oracle创建数据库,也就是Oracle实例。使用oracle用户登录,新开启一个终端,执行命令:
// 打开Oracle 图形化界面命令
# dbca
会弹出如下界面,按步骤执行即可:
安装完成,用oracle用户登录,在终端我们可执行#sqlplus命令,然后分别输入用户名和密码,验证是否安装成功,单纯的使用Sqlplus命令时,不用启动监听,需要注意的时候,这一步操作如果远程机器没有安装sqlplus的话,需要在oracle服务器上面来完成操作。
7 Oracle创建监听
同样使用oracle用户登录,新开启一个终端,执行命令:
// 打开Oracle 图形化界面命令
# netca
会弹出如下界面:
创建监听服务,让其他Oracel客户端可以远程连接Oracle服务器,如下图:
配置本地网络服务名,充当Oracle客户端,如下图:
输入上面章节“6 创建数据库”创建的Oracle数据库的实例名“orcl”,如下图:
输入Oracle服务器的IP地址,这里可以输入本文中IP:192.168.1.118或者127.0.0.1,如下图:
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"
如图所示:
重启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上也相当于从头再来,若有疑问,欢迎留言交流。
多年的工作,不同的阅历,认真写好每一篇文字,这是一种生活态度