Centos7.3自动化脚本安装oracle11数据库
以下内容实验过几次了,可能还存在些小问题,如果在跑以下脚本中遇到问题,自己仔细排查即可,一般也就一些换行在复制时有错误或者文件名不一样
本来想一个脚本搞定的,但是安装过程中涉及到切换用户执行命令等操作,不容易实现,故目前只能通过依次执行多个脚本来安装,起码比以前一行一行复制粘贴和修改要方便
注意事项:这里我们需要用到两个oracle压缩文件,下载地址为https://pan.baidu.com/s/1c3zNv4 请自行下载1of7和2of7这两个文件,将这两个文件放到oracle家目录下,注意文件权限问题。
环境:
系统:centos7.3
内存:4G
ps:该安装步骤仅适用于测试环境。其中脚本中标红部分需要根据自己的实际情况修改
一、执行脚本安装oracle数据库
注意红色部分,一般为需要根据具体情况修改的
1. root用户运行以下脚本修改主机名,重启后生效
#!/bin/bash #以root用户运行 echo "172.16.1.110请更换为你的IP orcl orcl" >> /etc/hosts cat >> /etc/sysconfig/network <<EOF network=yes hostname=orcl EOF
2. root用户执行以下脚本配置基础环境
#!/bin/bash #以root用户运行 yum install -y binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel ksh numactl-devel zip unzip > /dev/null cat >> /etc/sysctl.conf <<EOF fs.file-max = 6815744 fs.aio-max-nr = 1048576 #内核参数kernel.shmall,内存16G时建议设为4194304类推8G应为2097152,类似4G:1048576 kernel.shmall = 1048576 #kernel.shmmax设置为物理内存的一半,8G:4294967296计算方式为4*1024*1024*1024,所以4G应为2147483648 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 EOF #使配置文件生效 sysctl -p cat >> /etc/security/limits.conf <<EOF oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 EOF cat >> /etc/pam.d/login <<EOF session required /lib/security/pam_limits.so session required pam_limits.so EOF cat >> /etc/profile <<EOF if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi EOF groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle mkdir -p /u01/app/oracle/product/11.2.0/db_1 mkdir -p /u01/app/oracle/oradata mkdir -p /u01/app/oraInventory mkdir -p /u01/app/oracle/fast_recovery_area chown -R oracle:oinstall /u01/app/oracle chown -R oracle:oinstall /u01/app/oraInventory chmod -R 755 /u01/app/oracle chmod -R 755 /u01/app/oraInventory systemctl disable firewalld systemctl stop firewalld setenforce 0 sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
3. oracle用户执行以下脚本开始安装数据库
#!/bin/bash
#以oracle用户运行,su - oracle cat >> .bash_profile <<EOF ORACLE_BASE=/u01/app/oracle ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/db_1 ORACLE_SID=orcl export NLS_LANG=AMERICAN_AMERICA.UTF8 PATH=\$PATH:\$ORACLE_HOME/bin export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH umask 022 EOF source .bash_profile
#修改以下文件名为对应下载的安装包名 unzip 解压文件1.zip unzip 解压文件2.zip chown -R oracle:oinstall database cd database/response cp db_install.rsp db_install.rsp.bak sed -i "s/^oracle.install.option=/oracle.install.option=INSTALL_DB_SWONLY/g" db_install.rsp sed -i "s/^ORACLE_HOSTNAME=/ORACLE_HOSTNAME= orcl/g" db_install.rsp sed -i "s/^UNIX_GROUP_NAME=/UNIX_GROUP_NAME=oinstall/g" db_install.rsp sed -i "s/^INVENTORY_LOCATION=/INVENTORY_LOCATION=\/u01\/app\/oraInventory/g" db_install.rsp sed -i "s/^SELECTED_LANGUAGES=en/SELECTED_LANGUAGES=en,zh_CN/g" db_install.rsp sed -i "s/^ORACLE_HOME=/ORACLE_HOME=\/u01\/app\/oracle\/product\/11.2.0\/db_1/g" db_install.rsp sed -i "s/^ORACLE_BASE=/ORACLE_BASE=\/u01\/app\/oracle/g" db_install.rsp sed -i "s/^oracle.install.db.InstallEdition=/oracle.install.db.InstallEdition=EE/g" db_install.rsp sed -i "s/^oracle.install.db.DBA_GROUP=/oracle.install.db.DBA_GROUP=dba/g" db_install.rsp sed -i "s/^oracle.install.db.OPER_GROUP=/oracle.install.db.OPER_GROUP=dba/g" db_install.rsp sed -i "s/^DECLINE_SECURITY_UPDATES=/DECLINE_SECURITY_UPDATES=true/g" db_install.rsp cd .. ./runInstaller -silent -ignorePrereq -responseFile /home/oracle/database/response/db_install.rsp
第三脚本执行时可能会遇到以下问题
(1)报INS-13014目标不满足一些可选要求
解决:查看日志,如果是pdksh缺少的话,可以忽略直接进行下一步。没有异常,不报错的话会在三两分钟后出现使用root用户执行orainstRoot.sh和root.sh的提示
第三脚本执行成功结果截图,需要等到最后那行提示success才可以回车,大概需要三四分钟。
现在我们根据提示另开一个端口,以root用户身份执行对应脚本即可
sh /u01/app/oraInventory/orainstRoot.sh sh /u01/app/oracle/product/11.2.0/db_1/root.sh
至此,我们的oracle数据库就算是安装完成了
二、初始化数据库
1. oracle用户运行以下脚本
ps:执行以下脚本之前需要先检测以下oracle用户环境变量是否设置正确,测试方法输入netc然后tab补全,如果不能自动补全为netca,则需要在oracle家目录下再次执行source .bash_profile,直到可以自动补全netca和dbca等命令为止
#/bin/bash
#以oracle用户运行 netca /silent /responseFile /home/oracle/database/response/netca.rsp #静默方式配置监听 ls $ORACLE_HOME/network/admin/ #正常情况下会自动生成listener.ora sqlnet.ora cd /home/oracle/database/response cp dbca.rsp db sed -i '78s/.*/GDBNAME= "orcl"/' dbca.rsp sed -i '170s/.*/SID = "orcl"/' dbca.rsp sed -i '211s/.*/SYSPASSWORD = "123456"/' dbca.rsp sed -i '221s/.*/SYSTEMPASSWORD = "123456"/' dbca.rsp sed -i '252s/.*/SYSMANPASSWORD = "123456"/' dbca.rsp sed -i '262s/.*/DBSNMPPASSWORD = "123456"/' dbca.rsp sed -i '360s/.*/DATAFILEDESTINATION=\/u01\/app\/oracle\/oradata/' dbca.rsp sed -i '370s/.*/RECOVERYAREADESTINATION=\/u01\/app\/oracle\/fast_recovery_area/' dbca.rsp sed -i '418s/.*/CHARACTERSET= "ZHS16GBK"/' dbca.rsp sed -i '553s/.*/TOTALMEMORY= "3276"/' dbca.rsp #值设置为物理内存的60% dbca -silent -responseFile /home/oracle/database/response/dbca.rsp #开始静默安装,安装结束后会提示100%,数据库也跟着起来了 ps -ef | grep ora_ | grep -v grep #检测oracle进程 lsnrctl status
2. 测试本地连接数据库
创建一个用户,从外部进行连接,如果可以正常连接,说明整个安装步骤都是成功的。以下命令单独执行即可
sqlplus / as sysdba #进入数据库
select status from v$instance; #查看数据库运行状态,open状态即为正常 create user test identified by test; #创建数据库用户,连接时数据库实例名为orcl,用户名test密码test grant connect to test; grant resource to test;
3.测试远程连接数据库
使用navicat从另一台电脑上连接oracle数据库,测试效果
·