Centos下Oracle11gR2安装教程与自动化配置脚本
系统环境准备
开发组件与依赖库安装

安装centos时选择Server with GUI,右面的可以不勾选,后面统一来装
配置本地yum源
以上包如果缺乏可配置本地yum源进行安装
sudo mount /dev/cdrom /mnt/
[galen@localhost yum.repos.d]$ sudo vim /etc/yum.repos.d/cdrom.repo
[galen@localhost yum.repos.d]$ cat cdrom.repo
[c7-media]
name=isofile
baseurl=file:///mnt
enable=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[galen@localhost yum.repos.d]$ sudo mv CentOS-Base.repo CentOS-Base.repo-bak
[galen@localhost yum.repos.d]$ sudo mv CentOS-Media.repo CentOS-Media.repo-bak
[galen@localhost yum.repos.d]$ sudo mv cdrom.repo CentOS-Media.repo
配置好yum源后开始安装依赖库,如下
yum install glibc glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh compat-libcap1 compat-libstdc++ elfutils-libelf-devel gcc-c++
关闭防火墙
[galen@localhost ~]$ systemctl stop firewalld.service
[galen@localhost ~]$ systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
关闭selinux
编辑/etc/sysconfig/selinux文件,保存退出后执行 setenforce 0命令
vim /etc/sysconfig/selinux
SELINUX=disabled
#SELINUXTYPE=targeted #注释掉
创建oracle用户、修改系统参数
创oracle建用户和组
[root@localhost galen]# groupadd oinstall
[root@localhost galen]# groupadd dba
[root@localhost galen]# useradd -g oinstall -G dba oracle
[root@localhost galen]# passwd oracle
[root@localhost galen]# id oracle
uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba)
系统参数设置
官方推荐值:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912 #推荐超过一半的物理内存
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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 = 1048576
通过 /sbin/sysctl -a |grep xxx 查看系统各参数,如果大于官方推荐值不修改,如果小于官方推荐值则修改为官方推荐值,写入/etc/sysctl.conf文件中,使用sysctl -p使其生效,示例如下
[root@localhost etc]# cat sysctl.conf
fs.aio-max-nr = 6815744
kernel.sem = 250 32000 100 128
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 = 1048576
修改资源限制如下
[root@localhost etc]# vim /etc/security/limits.conf
oracle soft nproc 2048
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
添加以下内容到/etc/pam.d/login
[root@localhost ~]# vim /etc/pam.d/login
session required pam_limits.so
添加以下内容到/etc/profile
[root@localhost ~]# 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
保存后执行source /etc/profile生效
配置oracle用户环境变量,在/home/oracle/.bash_profile中加入如下内容
[root@localhost ~]# vim /home/oracle/.bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LANG="en_US.UTF-8"
export NLS_LANG=american_AMERICA.UTF8
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
创建oracle安装目录
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app
安装oracle 11g
挂载oracle11g安装包iso(也可以通过其他方式将oracle安装包传到主机),将安装文件复制到oracle home目录下,修改文件权限给oracle用户
[root@localhost /]# mkdir /mnt/oracle11g
[root@localhost /]# mount /dev/cdrom /mnt/oracle11g/
[root@localhost /]# cp -r /mnt/oracle11g /home/oracle/
# 复制到oracle home目录下并修改权限
[root@localhost oracle]# chown -R oracle:oinstall /home/oracle/oracle11g/
[root@localhost oracle]# chmod -R 775 /home/oracle/oracle11g/
接下来使用oracle用户登录桌面

执行./runInstaller开始安装,Centos 7安装的时候错误弹框有时候会变成一条竖线,安装无法进行下去,所以运行时执行
./runInstaller -jreLoc /etc/alternatives/jre_1.8.0

每项操作如下
[Configure Security Updates] 取消勾选 I wish to receive security updates via My Oracle Support,Next
[Installation Option] Install database software only,Next
[Grid Options] Next
[Product Languages] Next
[Enterprise Edition] Next
[Installation Location] Next
[Create Inventory] Next
[Operating System Groups] Next
[Prerequisite Checks] Next
[Summary] Finish,开始安装oracle 11g
安装到84%的时候可能会出现ins_ctx.mk相关的错误,如下

修改/u01/app/oracle/product/11.2.0/db_1/ctx/lib/ins_ctx.mk文件
# 源文件
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
# 修改为
ctxhx: $(CTXHXOBJ)
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
修改/u01/app/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk文件
# 源文件
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL)
# 修改为
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL) -lnnz11
retry继续安装到94%时,弹出

使用root用户ssh到主机到上述目录分别执行orainstRoot.sh与root.sh,执行root.sh时根据提示填入路径
/u01/app/oracle/product/11.2.0/dbhome_1/bin,执行完成后到UI点击OK,安装完成
环境配置脚本
- 使用root用户登录
- 确保系统iso驱动器已连接(/dev/cdrom可mount)
- 复制脚本到主机并给予可执行权限,执行脚本完成后即可开始安装oracle 11g
oracle 11g环境配置脚本
#!/bin/bash
# 配置yum源为本地iso
function set_yum_media() {
cd /etc/yum.repos.d/
for repo_file in `ls /etc/yum.repos.d/ | grep -v Media`
do
new_file=$repo_file.bak
mv $repo_file $new_file
done
mkdir -p /mnt/media-dir
mount /dev/cdrom /mnt/media-dir
sed -i -e 's/baseurl=file:\/\/\/.*/baseurl=file:\/\/\/mnt\/media-dir\//g' -e 's/enabled=0/enabled=1/g' `ls /etc/yum.repos.d/ | grep Media`
cd -
rm -rf /var/run/yum.pid
yum -y update
}
function install_packages() {
for package in glibc glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh compat-libcap1 compat-libstdc++ elfutils-libelf-devel gcc-c++
do
yum -y install $package
done
}
function create_oracle_user() {
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
# 设置oracle用户密码为oracle
echo oracle|passwd --stdin oracle
}
function set_system_parm() {
sed -i '$a\fs.aio-max-nr = 1048576' /etc/sysctl.conf
sed -i '$a\fs.file-max = 6815744' /etc/sysctl.conf
sed -i '$a\kernel.shmall = 2097152' /etc/sysctl.conf
sed -i '$a\kernel.shmmax = 536870912' /etc/sysctl.conf
sed -i '$a\kernel.shmmni = 4096' /etc/sysctl.conf
sed -i '$a\kernel.sem = 250 32000 100 128' /etc/sysctl.conf
sed -i '$a\net.ipv4.ip_local_port_range = 9000 65500' /etc/sysctl.conf
sed -i '$a\net.core.rmem_default = 262144' /etc/sysctl.conf
sed -i '$a\net.core.rmem_max = 4194304' /etc/sysctl.conf
sed -i '$a\net.core.wmem_default = 262144' /etc/sysctl.conf
sed -i '$a\net.core.wmem_max = 1048586' /etc/sysctl.conf
sysctl -p
}
function set_system_limit_parm() {
sed -i '$a\oracle soft nproc 2048' /etc/security/limits.conf
sed -i '$a\oracle hard nproc 16384' /etc/security/limits.conf
sed -i '$a\oracle soft nofile 1024' /etc/security/limits.conf
sed -i '$a\oracle hard nofile 65536' /etc/security/limits.conf
sed -i '$a\oracle soft stack 10240' /etc/security/limits.conf
}
function set_profile_parm() {
sed -i '$a\session required pam_limits.so' /etc/pam.d/login
sed -i '$a\if [[ $USER = "oracle" ]]; then' /etc/profile
sed -i '$a\ if [[ $SHELL = "/bin/ksh" ]]; then' /etc/profile
sed -i '$a\ ulimit -p 16384' /etc/profile
sed -i '$a\ ulimit -n 65536' /etc/profile
sed -i '$a\ else' /etc/profile
sed -i '$a\ ulimit -u 16384 -n 65536' /etc/profile
sed -i '$a\ fi' /etc/profile
sed -i '$a\fi' /etc/profile
source /etc/profile
}
function set_oracle_env() {
sed -i '$a\export ORACLE_BASE=/u01/app/oracle' /home/oracle/.bash_profile
sed -i '$a\export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1' /home/oracle/.bash_profile
sed -i '$a\export ORACLE_SID=orcl' /home/oracle/.bash_profile
sed -i '$a\export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH' /home/oracle/.bash_profile
sed -i '$a\export LANG="en_US.UTF-8"' /home/oracle/.bash_profile
sed -i '$a\export NLS_LANG=american_AMERICA.UTF8' /home/oracle/.bash_profile
sed -i '$a\export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"' /home/oracle/.bash_profile
source /home/oracle/.bash_profile
}
function create_oracle_dir() {
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app
}
function disable_firewall() {
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
setenforce 0
}
if [ `whoami` == "root" ]
then
set_yum_media
install_packages
create_oracle_user
echo "set system parm"
set_system_parm
echo "set limits"
set_system_limit_parm
echo "set /etc/profile"
set_profile_parm
echo "set oracle env"
set_oracle_env
echo "create oracle dir"
create_oracle_dir
echo "disable firwall"
disable_firewall
fi
Centos下Oracle11gR2安装教程与自动化配置脚本的更多相关文章
- CentOS下Mysql安装教程
CentOS下Mysql安装教程 本人学习Linux时使用的是CentOs5.5版本,在该环境中,Mysql的安装方法有很多种,下面我只讲我这次成功了的方法,作为一个记录,供大家参考,同时给自己做一个 ...
- Elasticsearch 在docker和centos下的安装教程
前言 新版本的Elasticsearch不能以root用户来运行.因此,MAC下建议使用Docker来安装. 国内各版本镜像:点击这 Centos7.4 64位 第一步 下载.tar.gz的安装包 不 ...
- CentOS下Neo4j安装教程
本文记录一下在CentOS 6.7上,安装neo4j图数据库,本文安装的版本为neo4j-community-2.3.9-unix.tar.gz. 下载Neo4j安装包 使用wget命令获取Neo4j ...
- centos下JDK安装及环境变量配置
由于centos安装自带openjdk,需要将其卸载后安装自己的jdk 卸载centos自带jdk 1.查找java :rpm -qa | grep java 2.卸载时提示权限不够,进入root目录 ...
- Linux下Java开发环境搭建—CentOS下Mysql安装教程
本人学习Linux时使用的是CentOs5.5版本,在该环境中,Mysql的安装方法有很多种,下面我只讲我这次成功了的方法,作为一个记录,供大家参考,同时给自己做一个笔记. MySQL下载 1.进入网 ...
- (转载)Centos下Elasticsearch安装详细教程
原文地址:http://www.cnblogs.com/sunny1009/articles/7874251.html Centos下Elasticsearch安装详细教程 1.Elasticsear ...
- Centos下Elasticsearch安装详细教程
Centos下Elasticsearch安装详细教程 1.Elasticsearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 ...
- centOS下yum安装配置samba
centOS下yum安装配置samba 2010-03-29 15:46:00 标签:samba yum centOS 安装 休闲 注意:本文的原则是只将文件共享应用于内网服务器,并让将要被共享的目 ...
- CentOS下Redisserver安装配置
1.CentOS 6.6下Redis安装配置记录 2.CentOS下Redisserver安装配置
随机推荐
- GLSL 着色器程序
除了使用Cg/HSL 着色器程序以外, OpenGL 着色器语言(GLSL)着色器可以直接书写shader. 然而,使用原生的GLSL只推荐作为测试使用,或者你清晰的知道你的目标平台是 Mac OS ...
- 【python】迭代器与生成器到底是什么?看完你就知道
迭代器跟生成器,与上篇文章讲的装饰器一样,都是属于我的一个老大难问题. 通常就是遇到的时候就去搜一下,结果在一大坨各种介绍博客中看了看,回头又忘记了. 你是不是也是这样呢? 俗话说:好记性不如烂笔头, ...
- 类文件的结构、JVM 的类加载过程、类加载机制、类加载器、双亲委派模型
一.类文件的结构 我们都知道,各种不同平台的虚拟机,都支持 "字节码 Byte Code" 这种程序存储格式,这构成了 Java 平台无关性的基石.甚至现在平台无关性也开始演变出 ...
- .net core中使用jwt进行认证
JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息.由于此信息是经过数字签名的,因此可以被验证和信任 ...
- 13_Python的面向对象编程-类class,对象object,实例instance
1.面向对象概述 1.类是用来描述对象的工具,把拥有相同属性和行为的对象分为一组 2.对象是由类实例化出来的一个具体的对象 属性: 对象拥有的名词,用变量表示 ...
- C++11的decltype关键字
C++11的decltype关键字 概述 decltype关键字和auto有异曲同工之处 有时我们希望从表达式的类型推断出要定义的变量类型,但是不想用该表达式的值初始化变量(如果要初始化就用auto了 ...
- C:把算术表达式分成Token
代码: #include "stdafx.h" #include <stdio.h> #include <string.h> #include <st ...
- Vue 事件的高级使用方法
Vue 事件的高级使用方法 事件方法 在Vue中提供了4中事件监听方法,分别是: $on(event: string | Array, fn) $emit(event: string) $once(e ...
- spring5源码 -- IOC容器设计理念和核心注解的作用
一. spring源码整体脉络介绍及源码编译 二. Spring IOC的源码深入学习 2.1 ioc容器的加载过程(重要) 2.2 bean的生命周期源码深度剖析 2.3 循环依赖总结讲解 2.4 ...
- access数据库一般注入方法及偏移注入
1.access数据库与mysql数据库的差别 access没有数据库,access数据库每个数据都是单个文件,每个access只有表结构 mysql : 库名,表名,列名,字段内容 access:表 ...