引言

   上一篇文章带领大家在redhat6.4上一步一步安装了oracle11g,并且详细讲解了每一步操作,图文并茂相信可以帮到一些有需要朋友!

   成功动手搭建过一次的朋友们有没有发现,在redhat上安装Oracle没有什么难得技术,只是操作步骤比较繁琐,总结出来主要步骤大概分为以下8个步骤:

1、安装依赖包

2、网络、主机名配置

3、内核参数修改

4、创建oracle安装对应的路径

5、修改oracle用户的策略(软硬限制),策略要每次登录生效

6、增加组、oracle用户及设置密码

7、资源配置文件修改(在~/bash_profile文件中设置环境变量)

8、关闭防火墙、selinux

oracle安装脚本

      以上这8步操作其实没有什么技术含量,我们可以把这8步操作封装成5个脚本,以后我们就不需要再一步一步配置了,只要sh执行你的脚本就可以,脚本还可以复用,这样方便很多。

     下面和大家分享一下我写的oracle安装准备脚本,这是一版比较基础的。朋友们把我的脚本看明白了,可以在我的脚本基础上,定制编写属于你自己的脚本。

1prepare.sh

#!/bin/sh

cat < /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=DB88
EOF

hostname DB88

cat < /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.88 DB88
EOF

`sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth0`

service iptables stop

setenforce 0

`sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config`

mount -o loop /dev/cdrom /mnt

rm -rf /etc/yum.repos.d/*

cat < /etc/yum.repos.d/server.repo
[server]
name=server
baseurl=file:///mnt/Server
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF

yum -y install binutils-* \
compat-libstdc++-* \
compat-libcap1-* \
elfutils-libelf-* \
elfutils-libelf-devel-* \
gcc* \
gcc-c++-* \
glibc* \
glibc-common-* \
glibc-devel-* \
glibc-headers-* \
ksh-* \
libaio-* \
libaio-devel-* \
libgcc-* \
libstdc++-* \
libstdc++-devel* \
make-* \
sysstat-* \
unixODBC-* \
unixODBC-devel-* \
numactl-devel-* \
pdksh-* \
kernel-headers* \
wget

groupadd oinstall

groupadd dba

useradd -g oinstall -G dba oracle

echo "oracle" | passwd --stdin oracle

echo "umask 022" >>/home/oracle/.bash_profile
echo "stty erase ^H" >>/home/oracle/.bash_profile
echo "PATH=\$PATH:\$HOME/bin" >>/home/oracle/.bash_profile
echo "TMP=/tmp" >>/home/oracle/.bash_profile
echo "TMPDIR=\$TMP" >>/home/oracle/.bash_profile
echo "ORACLE_BASE=/home/oracle/app/oracle" >>/home/oracle/.bash_profile
echo "ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/db_1" >>/home/oracle/.bash_profile
echo "ORACLE_SID=ecom" >>/home/oracle/.bash_profile
echo "ORACLE_TERM=xterm" >>/home/oracle/.bash_profile
echo "PATH=\$PATH:\$HOME/bin:\$ORACLE_HOME/bin" >>/home/oracle/.bash_profile
echo "LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib" >>/home/oracle/.bash_profile
echo "CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib" >>/home/oracle/.bash_profile
echo 'NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"'>>/home/oracle/.bash_profile
echo "NLS_LANG=AMERICAN_AMERICA.ZHS16GBK" >>/home/oracle/.bash_profile
echo "export EDITOR=vi" >>/home/oracle/.bash_profile
echo "export TMP TMPDIR ORACLE_TERM CLASSPATH NLS_DATE_FORMAT ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH NLS_LANG EDITOR" >>/home/oracle/.bash_profile

mkdir -p /home/oracle/app/oracle

chmod -R 777 /home/oracle/app/oracle

chown -R oracle.oinstall /home/oracle

cd /tmp

unzip p10404530_112030_Linux-x86-64_1of7.zip

unzip p10404530_112030_Linux-x86-64_2of7.zip

rm -rf p10404530_112030_Linux-x86-64_1of7.zip p10404530_112030_Linux-x86-64_2of7.zip

chmod -R 777 /tmp/database

chown -R oracle.oinstall /tmp/database

2prelimits.sh

#!/bin/bash
#Purpose:Change the /etc/security/limits.conf.
#Usage:Log on as the superuser('root'),and then execute the command:#./3prelimits.sh
#Author:Asher Huang

echo "Now modify the /etc/security/limits.conf,but backup it named /etc/security/limits.conf.bak before"
cp /etc/security/limits.conf /etc/security/limits.conf.bak
echo "oracle soft nproc 2047" >>/etc/security/limits.conf
echo "oracle hard nproc 16384" >>/etc/security/limits.conf
echo "oracle soft nofile 1024" >>/etc/security/limits.conf
echo "oracle hard nofile 65536" >>/etc/security/limits.conf
echo "grid soft nproc 2047" >>/etc/security/limits.conf
echo "grid hard nproc 16384" >>/etc/security/limits.conf
echo "grid soft nofile 1024" >>/etc/security/limits.conf
echo "grid hard nofile 65536" >>/etc/security/limits.conf
echo "Modifing the /etc/security/limits.conf has been succeed."

3prelogin.sh

#!/bin/bash
#Purpose:Modify the /etc/pam.d/login.
#Usage:Log on as the superuser('root'),and then execute the command:#./4prelimits.sh
#Author:Asher Huang

echo "Now modify the /etc/pam.d/login,but with a backup named /etc/pam.d/login.bak"
cp /etc/pam.d/login /etc/pam.d/login.bak

echo "session required /lib/security/pam_limits.so" >>/etc/pam.d/login
echo "session required pam_limits.so" >>/etc/pam.d/login

echo "Modifing the /etc/pam.d/login has been succeed."

4preprofile.sh

#!/bin/bash
#Purpose:Modify the /etc/profile.
#Usage:Log on as the superuser('root'),and then execute the command:#./5preprofile.sh
#Author:Asher Huang

echo "Now modify the /etc/profile,but with a backup named /etc/profile.bak"
cp /etc/profile /etc/profile.bak
echo 'if [ $USER = "oracle" ]||[ $USER = "grid" ]; then' >> /etc/profile
echo 'if [ $SHELL = "/bin/ksh" ]; then' >> /etc/profile
echo 'ulimit -p 16384' >> /etc/profile
echo 'ulimit -n 65536' >> /etc/profile
echo 'else' >> /etc/profile
echo 'ulimit -u 16384 -n 65536' >> /etc/profile
echo 'fi' >> /etc/profile
echo 'fi' >> /etc/profile
echo "Modifing the /etc/profile has been succeed."

5presysctl.sh

#!/bin/bash
#Purpose:Modify the /etc/sysctl.conf.
#Usage:Log on as the superuser('root'),and then execute the command:#./6presysctl.sh
#Author:Asher Huang

echo "Now modify the /etc/sysctl.conf,but with a backup named /etc/sysctl.bak"
cp /etc/sysctl.conf /etc/sysctl.conf.bak

echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "kernel.shmall = 2097152" >> /etc/sysctl.conf
echo "kernel.shmmax = 1054472192" >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.wmem_max = 1048586" >> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = 262144 262144 262144" >> /etc/sysctl.conf
echo "net.ipv4.tcp_rmem = 4194304 4194304 4194304" >> /etc/sysctl.conf

echo "Modifing the /etc/sysctl.conf has been succeed."
echo "Now make the changes take effect....."
sysctl -p

至此,oracle安装前期准备脚本编写完成了,下面让我们来测试一下劳动成果,进行后续的操作吧!

实战操作

1、挂载光盘

oracle拨云见日第4篇之脚本安装11g_database

oracle拨云见日第4篇之脚本安装11g_linux_02

2、编写脚本

我们的脚本内容太多,只截取了一部分

oracle拨云见日第4篇之脚本安装11g_linux_03

3、给脚本授权

oracle拨云见日第4篇之脚本安装11g_linux_04

4、手工执行脚本

脚本运行时,输出的内容过多,只截取了开始部分

oracle拨云见日第4篇之脚本安装11g_oracle_05

5、图形化详细安装

1、使用Oracle用户运行(图形界面)

oracle拨云见日第4篇之脚本安装11g_oracle_06

2、安装oracle软件详细步骤

a、配置安全更新

是否通过oracle帐号,接收来自于oracle的安全更新

如果你有oracle帐号,在上面填写你的邮箱地址,然后勾选选项。如果没有oracle帐号,上面的邮箱不用填写,此处也不用勾选。

oracle拨云见日第4篇之脚本安装11g_oracle_07

你没有设置一个邮箱地址。你不想了解配置中的关键安全问题?

oracle拨云见日第4篇之脚本安装11g_linux_08

b、下载更新软件

本次安装是为了更新软件,软件更新包括对安装程序系统要求检查补丁集更新(PSUS)的建议更新,和其他推荐的修补程序。

(1)通过oracle帐号下载

(2)使用提前下载好的软件更新

(3)跳过更新       

oracle拨云见日第4篇之脚本安装11g_database_09

我们是安装oracle,所以选择第3项,跳过更新

c、安装选项

选择下面这些安装的选项之这

注意:如果你想更新一个已经存在的oracle 11gR2实例,请选择"Upgrade an existing database"选项

(1)创建和配置一个数据库

(2)只安装数据库软件

(3)升级一个已经存在的数据库

oracle拨云见日第4篇之脚本安装11g_linux_10

此处选择:只安装数据库软件。后面我们再单独定制的,安装数据库实例。

d、Grid安装选项

选择一种你想安装的数据库类型

(1)安装单实例数据库

(2)安装oracle RAC集群数据库

(3)安装oracle RAC集群的一个节点

oracle拨云见日第4篇之脚本安装11g_自动化_11

此处选择:安装单实例数据库。后面我们再单独讲RAC集群的安装

e、选择语言

选择 英语。虽然有简体中文,但是不建议选择,翻译的非常不舒服

oracle拨云见日第4篇之脚本安装11g_linux_12

f、数据库版本

你想安装哪个版本的数据库?

此处有2类选择,一种是企业版,一种是标准版(功能有限制)。在生产中我们选择企业版,它的功能是最全的。

oracle拨云见日第4篇之脚本安装11g_linux_13

g、安装位置

在oracle用户设置环境变量时,在.bash_profile中配置了ORACLE_BASE和ORACLE_HOME的路径,此处在安装oracle时,它会自动识别。

oracle拨云见日第4篇之脚本安装11g_linux_14

h、Create Inventory

选择Inventory的位置,保持默认即可。这个位置是ORACLE_BASE下创建的oraInventory目录,用于注册ORACLE_HOME下安装的数据库组件及其版本,存放oracle软件安装的目录信息。oracle数据库软件的升级、增删组件,都要用到Inventory。oracle的界面会创建一个有oraInst.ora的文件,指定全局的Inventory。

oracle拨云见日第4篇之脚本安装11g_11g_15

i、操作系统组

选择oracle使用的操作系统用户组

oracle拨云见日第4篇之脚本安装11g_11g_16

j、依赖条件检查

此处依赖检查时,提示:物理内存小了,少一个rpm包。可以忽略,并不影响我们安装oracle。

oracle拨云见日第4篇之脚本安装11g_11g_17

oracle拨云见日第4篇之脚本安装11g_database_18

k、汇总信息

oracle拨云见日第4篇之脚本安装11g_11g_19

l、安装产品

oracle拨云见日第4篇之脚本安装11g_11g_20

安装过程中,弹框提示:使用root用户执行如下2个脚本

oracle拨云见日第4篇之脚本安装11g_自动化_21

编辑更改/home/oracle/app/oraInventory的权限。

正在为组添加读写权限。

正在删除world的读、写、执行权限。

正在将/home/oracle/app/oraInventory的组名更改为oinstall。

脚本的执行已完成。

oracle拨云见日第4篇之脚本安装11g_11g_22

设置环境变量

oracle拨云见日第4篇之脚本安装11g_linux_23

oracle拨云见日第4篇之脚本安装11g_oracle_24

m、完成

oracle拨云见日第4篇之脚本安装11g_oracle_25

3、创建数据库详细步骤  

a、在命令行下直接输入dbca

oracle拨云见日第4篇之脚本安装11g_11g_26

b、欢迎界面

oracle拨云见日第4篇之脚本安装11g_11g_27

c、创建一个数据库

如果已经有数据库了,此处还可以:修改数据库、删除数据库、管理模板

oracle拨云见日第4篇之脚本安装11g_自动化_28

d、数据库模板

我们安装的是单实例数据库,此处选择默认项事务型数据库即可。如果安装的是RAC集群,要选择Custom Database。如果做的是OLAP,选项Data Warehouse。

oracle拨云见日第4篇之脚本安装11g_database_29

e、设置全局库名和实例名

在oracle用户设置环境变量时,在.bash_profile中配置了ORACLE_SID,此处填写的值要和ORACLE_SID一样,注意大小写。

oracle拨云见日第4篇之脚本安装11g_自动化_30

f、配置OEM

OEM是页面形式的监控和管理程序,此处不用安装,后面可以单独配置。

oracle拨云见日第4篇之脚本安装11g_database_31

g、设置oracle软件中的用户密码

此处建议,所有用户设置成相同的密码,方便好记。

oracle拨云见日第4篇之脚本安装11g_oracle_32

h、存储设置

我们安装的是单实例,所以使用默认的FileSystem即可。如果安装的是RAC集群,就可选择ASM磁盘组了。

oracle拨云见日第4篇之脚本安装11g_11g_33

i、闪回配置

闪回区用于恢复数据,以免系统发生故障时丢失数据, 启用归档用于将数据库设置为ARCHIVELOG模式,使当数据库出现失败时可以完全恢复数据库数据。

oracle拨云见日第4篇之脚本安装11g_11g_34

为了加快安装速度,此处不配置了,后面可以手工单独配置。

j、安装演示数据

如果选择,它会自动帮你创建几个用户、表、视图、数据。我们不用选择,后面可以自己根据需求来创建。

oracle拨云见日第4篇之脚本安装11g_11g_35

k、初始化参数

Memooey选项

默认是Typical,Oracle自动分配SGA和PGA,推荐物理内存的70%-80%

oracle拨云见日第4篇之脚本安装11g_database_36

Sizing选项

同时连接到数据库的客户端进程最大数目,和java的数据库连接池结合使用。

oracle拨云见日第4篇之脚本安装11g_自动化_37

Character Set选项

设置字符符集为UTF-8

oracle拨云见日第4篇之脚本安装11g_oracle_38

Connection Mode选项

选择数据库工作在专用模式还是共享模式,生产中使用专用模式比较多,性能好一些。

oracle拨云见日第4篇之脚本安装11g_11g_39

l、数据库存储

此处用来设置:数据文件、控制文件、日志文件组

oracle拨云见日第4篇之脚本安装11g_linux_40

m、开始创建库

oracle拨云见日第4篇之脚本安装11g_linux_41

oracle拨云见日第4篇之脚本安装11g_oracle_42

oracle拨云见日第4篇之脚本安装11g_自动化_43

解锁scott用户,并为其设置密码

oracle拨云见日第4篇之脚本安装11g_database_44

oracle拨云见日第4篇之脚本安装11g_11g_45

退出结束

oracle拨云见日第4篇之脚本安装11g_oracle_46

至此,完成数据库建立的全部过程。

4、验证oracle安装结果

登录到oracle数据库环境下,查看当前库状态

oracle拨云见日第4篇之脚本安装11g_oracle_47

从上图的查询结果,我们可以看出来,当前数据库是可读可写状态,oracle已经成功的安装了。

结束语

到此本篇文章就结束了,送给那些:

       1、准备学习Oracle的朋友们

       2、已经学习了Oracle,但是没有在Linux环境下安装成功oracle的朋友们

       3、对Oracle感兴趣、对Linux感兴趣的朋友们

       4、Oracle刚入门的朋友们

    有一段时间没有写关于Oracle的博文了,感谢一直关注我的新老朋友,有你们的支持我会一起写下去!