`
阅读更多

 本文地址:

http://peihexian.iteye.com/blog/2397975

 朋友请求帮忙在linux下面部署oracle 11.2,折腾了两天,整理下脚本以备后用。

1.准备工作

 centos 7 安装时建立一个root以外的账户,我本地虚拟机测试时只选择了最小安装,也没有图形界面,也没有其他账户,在安装完依赖包以后重启时会要求我建立一个root以外的管理员账号,要是linux已经安装完了也无所谓,看到提示时同意许可协议再按提示建账号也是可以的。

 

2.安装过程

centos 7用的是firewalld防火墙,不是iptables,先禁用firewalld防火墙,后期需要启用时注意放开1521端口。

#systemctl stop firewalld.service
systemctl stop firewalld
systemctl disable firewalld

 

3.因为我的脚本是在windows 里面编辑的,在通过ssh上传到linux时运行脚本用不了,需要通过dos2unix转一下格式,所以先安装一下dos2unix。

yum install dos2unix 

 另外后面解压缩oracle linux 安装zip需要用unzip解压缩工具,同样也安装一下

yum install unzip
yum install –setopt=protected_multilib=false glibc-devel.i686

 

4. 上传oracle for linux 两个压缩zip文件到linux里面的/tmp目录中,解压缩准备使用

cd /tmp

unzip linux.x64_11gR2_database_1of2.zip

unzip linux.x64_11gR2_database_2of2.zip

 解压缩以后会在/tmp里面生成database目录。

 

5.运行静默安装脚本1,用来创建oracle用户及dba,oinstall等组,修改oracle用户.bash_profile里面的环境变量等参数的脚本,vi /tmp/oracle_install.sh  ,脚本内容如下

 

#!/bin/bash
# oracle 11g R2 for linux 安装辅助脚本
# Redkey
# version 1.2
# date 2017.10.28
#定义常量
SYSCTL=/etc/sysctl.conf
LIMITS=/etc/security/limits.conf
PAM=/etc/pam.d/login
PROFILE=/etc/profile
BASH_PROFILE=/home/oracle/.bash_profile
#循环变量
i=1
#定义显示颜色
#颜色定义 信息(33黄色) 警示(31红色) 过程(36浅蓝)
#判断执行用户是否root
isroot()
{
    if [ $USER != "root" ];then
        echo -e "\n\e[1;31m the user must be root,and now you user is $USER,please su to root. \e[0m"
        exit4
    else
        echo -e "\n\e[1;36m check root ... OK! \e[0m"
    fi
}
#挂在光盘到/mnt/cdrom目录下
mount_cdrom()
{
echo -e "\n\e[1;31m please insert RHEL to CDROM,press any key ...\e[0m"
read -n 1
if [ -d /mnt/cdrom ];then
     mount -t auto -o ro /dev/cdrom /mnt/cdrom
else
    mkdir -p /mnt/cdrom
    mount -t auto -o ro /dev/cdrom /mnt/cdrom
fi
if [ $? -eq 0 ];then
    echo -e "\n\e[1;36m CDROM mount on /mnt/cdrom ... OK! \e[0m"
fi
}
#设置yum本地光盘源
yum_repo()
{
    rm -rf /etc/yum.repos.d/* && cat <<EOF >> /etc/yum.repos.d/Server.repo
[Server]
name=MyRPM
baseurl=file:///mnt/cdrom/Server
enabled=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
EOF
if [ $? -eq 0 ];then
echo -e "\n\e[1;36m  /etc/yum.repos.d/Server.repo  ... OK! \e[0m"
fi
}
#添加oracle用户,添加oracle用户所属组oinstall及附加组dba
ouseradd()
{
    if [[ `grep "oracle" /etc/passwd` != "" ]];then
    userdel -r oracle
    fi
    if [[ `grep "oinstall" /etc/group` = "" ]];then
        groupadd oinstall
    fi
    if [[ `grep "dba" /etc/group` = "" ]];then
        groupadd dba
    fi
    useradd oracle -g oinstall -G dba && echo $1 |passwd oracle --stdin
    if [ $? -eq 0 ];then
        echo -e "\n\e[1;36m oracle's password updated successfully  --- OK! \e[0m"
    else
        echo -e "\n\e[1;31m oracle's password set faild.   --- NO!\e[0m"
    fi
}
#检查oracle所需软件包并安装
packagecheck()
{
for package in binutils compat-libcap1 compat-libstdc++ gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat unzip elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static kernel-headers unixODBC unixODBC-devel compat-libstdc++-33 libaio.i686 glibc.i686 glibc-devel.i686 libaio-devel.i686 libstdc++-devel.i686 numactl-devel compat-libstdc++-33.i686;
do
    rpm -q $package 2> /dev/null
    if [ $? != 0 ];then
        yum -y install $package
        echo  -e "\n\e[1;36m $package is already installed ... OK! \e[0m"
    fi
done
}
#安装桌面套件 X Window System / Desktop
xdesk()
{
    LANG=C yum -y groupinstall "X Window System" "Desktop"
    if [ $? -eq 0 ];then
        echo  -e "\n\e[1;36m $package is already installed ... OK! \e[0m"
    fi
}
# 设置内核参数
kernelset()
{
    cp $SYSCTL{,.bak} && cat <<EOF >>$SYSCTL
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
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 = 1048575
EOF
    if [ $? -eq 0 ];then
        echo -e "\n\e[1;36m kernel parameters updated successfully --- OK! \e[0m"
    fi
sysctl -p
}
#设置oracle资源限制
oralimit()
{
    cp $LIMITS{,.bak} && cat <<EOF >> $LIMITS
oracle      soft    nproc   2047
oracle      hard    nproc   16384
oracle      soft    nofile  1024
oracle      hard    nofile  65536
oracle      soft    stack   10240
EOF
    if [ $? -eq 0 ];then
        echo  -e "\n\e[1;36m $LIMITS updated successfully ... OK! \e[0m"
    fi
}
#设置login文件
setlogin()
{
    cp $PAM{,.bak} && cat <<EOF >>$PAM
session     required    pam_limits.so
EOF
    if [ $? -eq 0 ];then
        echo -e "\n\e[1;36m  $PAM updated successfully ... OK! \e[0m"
    fi
}
#设置profile文件
setprofile()
{
    cp $PROFILE{,.bak} && cat <<EOF >>$PROFILE
if [ $USER = "oracle" ];then
    if [ $SHELL = "/bin/ksh" ];then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi
EOF
    if [ $? -eq 0 ];then
        echo -e "\n\e[1;36m  $PROFILE updated successfully ... OK! \e[0m"
    fi
}
#设置oracle的profile文件
setbash_profile()
{
    cp $BASH_PROFILE{,.bak} && cat <<EOF >> $BASH_PROFILE
umask 022
ORACLE_BASE=$1
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
ORACLE_SID=$2
PATH=$ORACLE_HOME/bin/:$PATH
LANG=en_US.UTF-8
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
EOF
    if [ $? -eq 0 ];then
        echo -e "\n\e[1;36m $BASH_PROFILE updated successfully ... OK! \e[0m"
    fi
. $BASH_PROFILE
}
#系统环境检查
oscheck()
{
#查看内存大小是否大于1G
echo -e "\n check MEM Size ..."
if [ `cat /proc/meminfo | grep MemTotal | awk '{print $2}'` -lt 1048576 ];then
    echo  -e "\n\e[1;33m Memory Small \e[0m"
    exit 1
else
    echo -e "\n\e[1;36m Memory checked PASS \e[0m"
fi
#查看tmp空间大小
echo -e "\n check tmpfs Size ..."
cp /etc/fstab{,.bak}
while true;do
if [ `df | awk '/tmpfs/ {print $2}'` -lt 1048576 ];then
    echo -e "\n\e[1;33m tmpfs Smaill \e[0m"
    sed -i '/tmpfs/s/defaults/defaults,size=1G/' /etc/fstab && mount -o remount /dev/shm
    if [ $? != 0 ];then
    i=i+1
        if [ $i -eq 3 ];then
            echo -e "\n\e[1;31m set tmpfs faild. \e[0m"
            exit 3
        fi
    else
        echo -e "\n\e[1;36 tmpfs updated successfully. \e[0m"
        break
    fi
else
    echo -e "\n\e[1;36m tmpfs checked PASS \e[0m"
    break
fi
done
}
#停止防火墙IPTABLES
service iptables stop
chkconfig iptables off
#关闭SELINUX
cp /etc/selinux/config{,.bak} && sed -i '/SELINUX/s/enforcing/disabled/;/SELINUX/s/permissive/disabled/'   /etc/selinux/config
setenforce 0
#执行以上函数
isroot
oscheck
#yum_repo
#mount_cdrom
packagecheck
xdesk
kernelset
oralimit
setlogin
setprofile
echo -e "\n\e[1;33m please input oracle's user passwd: \e[0m"
read oraclepw
ouseradd $oraclepw
setbash_profile
echo -e "\n\e[1;33m please input oracle install PATH(default /oracle/db) \e[0m"
read oraclepath
if [ -z $oraclepath ];then
    oraclepath=/oracle/db
fi
echo -e "\n\e[1;33m  please input oracle_sid (default police) \e[0m"
read orasid
if [ -z orasid ];then
    orasid=police
fi
setbash_profile $oraclepath $orasid
mkdir -p $oraclepath && chown -R oracle:oinstall $oraclepath && chmod -R 755 $oraclepath
unset i
echo -e "\n\e[1;35m Oracle install pre-setting finish! && please run oracle installer as user oracle \e[0m"

 

  要是在windows平台编辑的oracle_install.sh脚本文件或者下载附件传到/tmp目录使用的话,需要运行dos2unix oracle_install.sh 修改字符编码格式,否则执行脚本会报错。

 

上面脚本中默认将oracle软件安装到/oracle/db目录,oracle sid默认是police,这两个参数根据自己的项目需要进行修改,注意后边要反复使用这两个参数的值,一定要记好自己将oracle文件安装到哪个路径去了,SID也要记好。

 

6.给脚本权限,运行

chmod 777 /tmp/oracle_install.sh

/tmp/oracle_install.sh

 7.脚本运行后,再次修改一些环境变量参数

su - oracle

vi .bash_profile

   上面的oracle_install.sh脚本自动创建的oracle .bash_profile文件内容有问题,一个是重复,另外参数值也需要修改,修改ORACLE_BASE为oracle安装路径,如脚本默认的/oracle/db,修改ORACLE_HOME值,如/oracle/db/product/11.2.0/db_1 ,修改SID值,如police,删除掉重复的配置参数值后保存。

source .bash_profile

   执行以上命令让修改的配置立即生效。

 

8.切回root用户,给oracle用户读取安装源的权限

su - root
chmod -R 777 /tmp/database
chown -R oracle:oinstall /tmp/database

 

9.切换到oracle 用户,修改静默安装参数文件内容

su - oracle
vi /tmp/database/response/db_install.rsp

 

  需要修改的关键参数有:

oracle.install.option=INSTALL_DB_SWONLY   #这个用于说明只安装软件,先不创建数据库呢
ORACLE_HOSTNAME=oracle  # 当前oracle主机hostname
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/oracle/db/oraInventory #这个注意在前面修改了ORACLE_BASE值的话这里也要改一下,用ORACLE_BASE下面的子路径会在安装时有个警告,要是确实要放到ORACLE_BASE以外的路径的话,注意需要自己手动创建及给oracle用户及dba,oinstall组写入权限,没有特殊需求就放到ORACLE_BASE路径下就行了。

SELECTED_LANGUAGES=en,zh_CN,zh_TW
ORACLE_HOME=/oracle/db/product/11.2.0/db_1  #这个要设置的和oracle用户的.bash_profile里面的配置参数一致。
ORACLE_BASE=/oracle/db #这个也是,和oracle用户的.bash_profile里面的配置值一样
oracle.install.db.InstallEdition=EE  #安装企业版
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE  #别动脑筋整什么自定义,这个是直接拷贝复制文件,没有执行建库脚本过程,巨快。
oracle.install.db.config.starterdb.globalDBName=police   #数据库名称,我们是给公安用的,你们自己改成自己的。

oracle.install.db.config.starterdb.SID=police  #还是,改成和oracle用户.bash_profile里面的值一样。
oracle.install.db.config.starterdb.characterSet=ZHS16GBK 
oracle.install.db.config.starterdb.memoryOption=true 
oracle.install.db.config.starterdb.password.ALL=123456   #这个密码是sys和system用户的密码,改成自己想要的值.
DECLINE_SECURITY_UPDATES=true #这个很重要,11.2.0.4不配置这个就不能安装

改到这应该就差不多了,要是安装不了用我提供的附件文件吧。

 

10.好了,万事具备,开始把oracle软件安装到linux系统中吧

su - oracle
cd /tmp/database
./runInstaller -silent -ignorePrereq -responseFile /tmp/database/response/db_install.rsp

 

   会有个警告,不用搭理,耐心的等着吧,等啥时候屏幕提示你另外需要用root用户执行脚本的时候,另外开个ssh窗口或者终端窗口,按照屏幕提示的内容去执行两个sh脚本即可(需要用root用户去执行)

#脚本名称叫啥记不住了,你就看那边屏幕提示的是啥就去执行啥就行了,好像第二个是root.sh什么什么的
/oracle/db/xxxx/xxx.sh
/oracle/db/xxxx/root.sh

 

    这边两个脚本执行完成以后,回到那边按回车就算完事,oracle软件安装这就结束了。

 

11.创建监听器

 

su - oracle
/oracle/db/product/11.2.0/db_1/bin/netca /silent /responseFile /tmp/database/response/netca.rsp

    

    我这边估计是哪些步骤配置有问题,缺实例名称,创建出来的监听器配置参数listener.ora还需要进一步修改,后面再说。 

 

12.dbca建库

   修改dbca静默建库参数文件

su - oracle
vi /tmp/database/response/dbca.rsp

 

需要修改的参数名称及内容如下:

GDBNAME = "police"
SID = "police"
SYSPASSWORD = "123456"    #SYS用户密码,注意和前面的一样
SYSTEMPASSWORD = "123456" #SYSTEM用户密码
CHARACTERSET = "ZHS16GBK"

 

开始建库,注意用oracle用户执行以下命令

su - oracle
/oracle/db/product/11.2.0/db_1/bin/dbca -silent -responseFile /tmp/database/response/dbca.rsp

 

13.建完以后,修改以下listener.ora 文件内容,把实例加进去

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc) 
      (Oracle_HOME = /oracle/db/product/11.2.0/db_1)
      (PROGRAM = extproc) 
     )
  (SID_DESC =
      (GLOBAL_DBNAME = police)
      (ORACLE_HOME = /oracle/db/product/11.2.0/db_1)
      (SID_NAME = police)
    )
)

 

14 启动监听器,启动数据库

 

su - oracle #注意以下命令用oracle用户执行
/oracle/db/product/11.2.0/db_1/bin/lsnrctl stop LISTENER
/oracle/db/product/11.2.0/db_1/bin/lsnrctl start LISTENER

sqlplus / as sysdba
startup;

 

   到这客户机就可以访问oracle服务器了。

 

15.配置oracle为开机启动的linux服务

 

su - root
vi /etc/init.d/oracle

 

  脚本内容为:

#!/bin/bash
#chkconfig: 2345 80 90
#description:auto_run
### END INIT INFO
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_USER=oracle
export ORACLE_BASE=/oracle/db
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=police


# see how we are called:
case $1 in
    start)
    su - "$ORACLE_USER"<<EOO
    lsnrctl start
    sqlplus /nolog<<EOS
    connect / as sysdba
    startup
EOS
    emctl start dbconsole
EOO
touch /var/lock/subsys/$scriptname
    ;;
    stop)
su - "$ORACLE_USER"<<EOO
    lsnrctl stop
    sqlplus /nolog<<EOS
    connect / as sysdba
    shutdown immediate
EOS
    emctl stop dbconsole
EOO
rm -f /var/lock/subsys/scriptname
    ;;
    *)
    echo "Usage: $0 {start|stop}"
    ;;
esac

 

    保存以上脚本后,设置权限等

    

chown root.root /etc/init.d/oracle
chmod 755 /etc/init.d/oracle
service oracle start  #启动服务
chkconfig oracle on   #设置为开机自动启动

 

16.后边还有一些oracle参数可以进一步优化,如关闭审计,归档,修改最大连接用户数等,为了便于编辑,可以考虑安装一个支持sqlplus命令上下滚动的程序,具体见这里

http://blog.itpub.net/16381228/viewspace-758767/

 

//关闭空表不分配表空间的问题

alter system set deferred_segment_creation=false;

//关闭审计

alter system set audit_trail=FALSE scope=spfile;

shutdown immediate;

startup mount;

//关闭归档

alter database noarchivelog;

alter database open;

 

 

 

 

 

 

分享到:
评论

相关推荐

    centos7静默安装oracle11g

    本教程将详述如何在CentOS 7操作系统上进行Oracle 11g的静默安装,这是一种自动化程度较高的安装方式,适用于批量部署或避免手动交互安装的场景。 首先,你需要下载Oracle 11g的安装文件,包括所有必要的组件,如...

    CentOS下Oracle10gR2之静默安装

    在CentOS环境下进行Oracle 10g R2的静默安装和手工建库的过程中,涉及到诸多知识点和操作步骤。以下是对这些知识点的详细说明: 1. 安装前的准备工作 在开始安装Oracle 10g R2之前,需要做好一系列的准备工作,以...

    centos7_静默安装oracle11g离线安装RPM及步骤.zip

    本压缩包"centos7_静默安装oracle11g离线安装RPM及步骤.zip"提供了一种在CentOS7上离线静默安装Oracle 11g数据库的方法,这适用于没有网络连接或网络不稳定的情况。以下将详细解释这个过程涉及的知识点。 首先,...

    oracle 11g for centos6.5静默安装

    标题中的知识点:“oracle 11g for centos6.5静默安装”说明本文是关于如何在CentOS 6.5操作系统上通过静默方式安装Oracle 11g数据库的过程。静默安装是指无需人工干预,通过预设参数或脚本实现自动安装的过程。这种...

    最小化CentOS7 静默安装Oracle11GR2.pdf

    在进行Oracle 11g R2的最小化静默安装时,首先需要准备好最小化安装的CentOS7环境。然后,安装过程中需要的两个必要工具是vim和unzip,前者用于编辑配置文件,后者用于解压Oracle安装包。 接下来,安装系统依赖包是...

    Centos 无图形化静默安装oracle 12c

    【正文】 ...总之,虽然无图形化安装Oracle 12c在CentOS上相对复杂,但通过遵循上述步骤,你可以成功地在没有桌面环境的服务器上部署Oracle数据库。这种方法节省了资源,更适合服务器环境的高效管理。

    CentOS 7 静默安装 Oracle 11g

    ### CentOS 7 静默安装 Oracle 11g #### 一、前言 本文将详细介绍如何在 CentOS 7 系统上进行 Oracle 11g 的静默安装过程。静默安装(Silent Installation)是一种自动化安装方式,通过预设好所有必要的配置参数来...

    Linux 静默部署oracle19c.rar

    首先,静默部署Oracle 19c需要了解以下几个关键概念: 1. **Oracle Database 19c**: Oracle 19c是Oracle数据库的一个主要版本,它提供了高性能、高可用性和安全性。19c中的“c”代表连续性(Continuity),意味着这...

    centos5.6上安装oracle 11g rac

    - 安装Oracle 11g RAC是一个复杂的过程,建议在正式环境部署前,在测试环境中多次验证配置的有效性和稳定性。 综上所述,CentOS 5.6上安装Oracle 11g RAC涉及操作系统安装、软件包准备、网络与磁盘规划、用户创建...

    centos7_oracle_11g安装.docx

    ### CentOS 7 下 Oracle 11g 安装详尽指南 #### 一、环境准备:CentOS 图形化界面的安装 为了更好地进行Oracle 11g的安装与配置,我们首先需要确保CentOS 7环境具备基本的图形化界面。这一步骤虽然不是必须的,但...

    oracle linux 7.6 下oracle 19c (19.3.0)静默安装.pdf

    Oracle Linux 7.6环境下Oracle 19c的静默安装是一项涉及多个配置步骤的过程,旨在...通过本文的解析,安装者应该能够掌握Oracle 19c在Oracle Linux 7.6上的静默安装技巧,进而实现高效、自动化地部署Oracle数据库环境。

    linux静默安装oracle11g配置文件参考

    在Linux环境中,静默安装Oracle 11g是一项复杂但重要的任务,尤其对于自动化部署和大规模服务器管理来说。本文将详细解析如何通过配置文件实现Oracle 11g的静默安装,以提高效率并减少手动操作错误。 首先,了解...

    Oracle 11g +CentOS6 RAC+NFS集群静默安装指导书1

    Oracle 11g RAC (Real Application Clusters) 是Oracle数据库的一种高可用性解决方案,它允许多台服务器共享同一数据库实例,从而提供故障转移和负载均衡能力。在 CentOS 6 上进行 RAC 集群的静默安装,通常涉及多个...

    centOS7.6.1810静默安装oracle12.2.0.1.0

    在安装Oracle 12.2.0.1.0数据库软件的过程中,对于CentOS 7.6.1810操作系统来说,静默安装是一种高效且适用于自动化部署的方法。以下是一份详细的步骤指南,涵盖了从环境准备到安装的全过程。 首先,确保你的系统...

    龙蜥anolis系统oracle11g安装包

    在这个“龙蜥anolis系统oracle11g安装包”中,我们聚焦于在龙蜥Anolis操作系统上安装Oracle 11g数据库的过程以及如何利用提供的安装脚本来自动化这个过程,并进行数据库dmp文件的还原。 首先,让我们了解一下龙蜥...

    CentOS 6.3 X64上64位Oracle11gR2 静默安装,静默设置监听,静默建库(备份记录)

    静默安装Oracle 11gR2在CentOS 6.3 X64上是一个涉及多个步骤的过程,每个环节都需要细心操作,确保所有配置符合Oracle的要求,以确保安装成功并能正常运行。在整个过程中,可能会遇到各种问题,如权限不足、依赖缺失...

    Oracle11gR2全静默安装攻略.doc

    Oracle 11g R2 全静默安装是一项复杂但重要的任务,尤其对于自动化部署和大规模环境来说。本攻略将详细解释如何在 CentOS 5.8 x86_64 操作系统上进行静默安装,确保遵循最佳实践和配置要求。 首先,操作系统的选择...

    Centos7.3最小装模式下Oracle静默安装.docx

    ### CentOS 7.3 最小化安装环境下Oracle 11g R2静默安装知识点 #### 一、安装系统 1. **下载CentOS 7.3 Minimal ISO镜像** - 地址:`...

    1key-install-oracle11g-oem.sh

    本文将深入探讨如何在CentOS操作系统上进行Oracle 11g的静默安装,以及如何利用"1key-install-oracle11g-oem.sh"这个一键安装脚本来简化这一过程。 首先,静默安装Oracle 11g是一种自动化的方法,它通过在命令行中...

Global site tag (gtag.js) - Google Analytics