本文地址:
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 unzipyum 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;
相关推荐
本教程将详述如何在CentOS 7操作系统上进行Oracle 11g的静默安装,这是一种自动化程度较高的安装方式,适用于批量部署或避免手动交互安装的场景。 首先,你需要下载Oracle 11g的安装文件,包括所有必要的组件,如...
在CentOS环境下进行Oracle 10g R2的静默安装和手工建库的过程中,涉及到诸多知识点和操作步骤。以下是对这些知识点的详细说明: 1. 安装前的准备工作 在开始安装Oracle 10g R2之前,需要做好一系列的准备工作,以...
本压缩包"centos7_静默安装oracle11g离线安装RPM及步骤.zip"提供了一种在CentOS7上离线静默安装Oracle 11g数据库的方法,这适用于没有网络连接或网络不稳定的情况。以下将详细解释这个过程涉及的知识点。 首先,...
标题中的知识点:“oracle 11g for centos6.5静默安装”说明本文是关于如何在CentOS 6.5操作系统上通过静默方式安装Oracle 11g数据库的过程。静默安装是指无需人工干预,通过预设参数或脚本实现自动安装的过程。这种...
在进行Oracle 11g R2的最小化静默安装时,首先需要准备好最小化安装的CentOS7环境。然后,安装过程中需要的两个必要工具是vim和unzip,前者用于编辑配置文件,后者用于解压Oracle安装包。 接下来,安装系统依赖包是...
【正文】 ...总之,虽然无图形化安装Oracle 12c在CentOS上相对复杂,但通过遵循上述步骤,你可以成功地在没有桌面环境的服务器上部署Oracle数据库。这种方法节省了资源,更适合服务器环境的高效管理。
### CentOS 7 静默安装 Oracle 11g #### 一、前言 本文将详细介绍如何在 CentOS 7 系统上进行 Oracle 11g 的静默安装过程。静默安装(Silent Installation)是一种自动化安装方式,通过预设好所有必要的配置参数来...
首先,静默部署Oracle 19c需要了解以下几个关键概念: 1. **Oracle Database 19c**: Oracle 19c是Oracle数据库的一个主要版本,它提供了高性能、高可用性和安全性。19c中的“c”代表连续性(Continuity),意味着这...
- 安装Oracle 11g RAC是一个复杂的过程,建议在正式环境部署前,在测试环境中多次验证配置的有效性和稳定性。 综上所述,CentOS 5.6上安装Oracle 11g RAC涉及操作系统安装、软件包准备、网络与磁盘规划、用户创建...
### CentOS 7 下 Oracle 11g 安装详尽指南 #### 一、环境准备:CentOS 图形化界面的安装 为了更好地进行Oracle 11g的安装与配置,我们首先需要确保CentOS 7环境具备基本的图形化界面。这一步骤虽然不是必须的,但...
Oracle Linux 7.6环境下Oracle 19c的静默安装是一项涉及多个配置步骤的过程,旨在...通过本文的解析,安装者应该能够掌握Oracle 19c在Oracle Linux 7.6上的静默安装技巧,进而实现高效、自动化地部署Oracle数据库环境。
在Linux环境中,静默安装Oracle 11g是一项复杂但重要的任务,尤其对于自动化部署和大规模服务器管理来说。本文将详细解析如何通过配置文件实现Oracle 11g的静默安装,以提高效率并减少手动操作错误。 首先,了解...
Oracle 11g RAC (Real Application Clusters) 是Oracle数据库的一种高可用性解决方案,它允许多台服务器共享同一数据库实例,从而提供故障转移和负载均衡能力。在 CentOS 6 上进行 RAC 集群的静默安装,通常涉及多个...
在安装Oracle 12.2.0.1.0数据库软件的过程中,对于CentOS 7.6.1810操作系统来说,静默安装是一种高效且适用于自动化部署的方法。以下是一份详细的步骤指南,涵盖了从环境准备到安装的全过程。 首先,确保你的系统...
在这个“龙蜥anolis系统oracle11g安装包”中,我们聚焦于在龙蜥Anolis操作系统上安装Oracle 11g数据库的过程以及如何利用提供的安装脚本来自动化这个过程,并进行数据库dmp文件的还原。 首先,让我们了解一下龙蜥...
静默安装Oracle 11gR2在CentOS 6.3 X64上是一个涉及多个步骤的过程,每个环节都需要细心操作,确保所有配置符合Oracle的要求,以确保安装成功并能正常运行。在整个过程中,可能会遇到各种问题,如权限不足、依赖缺失...
Oracle 11g R2 全静默安装是一项复杂但重要的任务,尤其对于自动化部署和大规模环境来说。本攻略将详细解释如何在 CentOS 5.8 x86_64 操作系统上进行静默安装,确保遵循最佳实践和配置要求。 首先,操作系统的选择...
### CentOS 7.3 最小化安装环境下Oracle 11g R2静默安装知识点 #### 一、安装系统 1. **下载CentOS 7.3 Minimal ISO镜像** - 地址:`...
本文将深入探讨如何在CentOS操作系统上进行Oracle 11g的静默安装,以及如何利用"1key-install-oracle11g-oem.sh"这个一键安装脚本来简化这一过程。 首先,静默安装Oracle 11g是一种自动化的方法,它通过在命令行中...