• 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,安装完成

    环境配置脚本

    1. 使用root用户登录
    2. 确保系统iso驱动器已连接(/dev/cdrom可mount)
    3. 复制脚本到主机并给予可执行权限,执行脚本完成后即可开始安装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 '$afs.aio-max-nr = 1048576' /etc/sysctl.conf
    	sed -i '$afs.file-max = 6815744' /etc/sysctl.conf
    	sed -i '$akernel.shmall = 2097152' /etc/sysctl.conf
    	sed -i '$akernel.shmmax = 536870912' /etc/sysctl.conf
    	sed -i '$akernel.shmmni = 4096' /etc/sysctl.conf
    	sed -i '$akernel.sem = 250 32000 100 128' /etc/sysctl.conf
    	sed -i '$a
    et.ipv4.ip_local_port_range = 9000 65500' /etc/sysctl.conf
    	sed -i '$a
    et.core.rmem_default = 262144' /etc/sysctl.conf
    	sed -i '$a
    et.core.rmem_max = 4194304' /etc/sysctl.conf
    	sed -i '$a
    et.core.wmem_default = 262144' /etc/sysctl.conf
    	sed -i '$a
    et.core.wmem_max = 1048586' /etc/sysctl.conf
    	sysctl -p
    }
    
    function set_system_limit_parm() {
    	sed -i '$aoracle		soft		nproc		2048' /etc/security/limits.conf
    	sed -i '$aoracle		hard		nproc		16384' /etc/security/limits.conf
    	sed -i '$aoracle		soft		nofile		1024' /etc/security/limits.conf
    	sed -i '$aoracle		hard		nofile		65536' /etc/security/limits.conf
    	sed -i '$aoracle		soft		stack		10240' /etc/security/limits.conf
    }
    
    function set_profile_parm() {
    	sed -i '$asession  required   pam_limits.so' /etc/pam.d/login
    	sed -i '$aif [[ $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 '$afi' /etc/profile
    	source /etc/profile
    }
    
    function set_oracle_env() {
    	sed -i '$aexport ORACLE_BASE=/u01/app/oracle' /home/oracle/.bash_profile
    	sed -i '$aexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1' /home/oracle/.bash_profile
    	sed -i '$aexport ORACLE_SID=orcl' /home/oracle/.bash_profile
    	sed -i '$aexport PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH' /home/oracle/.bash_profile
    	sed -i '$aexport LANG="en_US.UTF-8"' /home/oracle/.bash_profile
    	sed -i '$aexport NLS_LANG=american_AMERICA.UTF8' /home/oracle/.bash_profile
    	sed -i '$aexport 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  
  • 相关阅读:
    Visual Studio使用阿里云Code Git服务器的常见问题
    使用Quartz.net来执行定时任务
    DirectorySearcher.Filter 属性(转)
    angular2的ElementRef在组件中获取不到
    angular2 ngfor循环
    angular2 日期格式化
    angular2在模板中使用属性引发Cannot read property 'xxx' of undefined
    Java ConcurrentHashMap存入引用对象时也是线程安全的
    FtpHelper实现ftp服务器文件读写操作(C#)
    Window服务项目脚手架
  • 原文地址:https://www.cnblogs.com/huilixieqi/p/13793217.html
Copyright © 2020-2023  润新知