【Oracle】在RedHat上静默安装Oracle 11g及初始化配置全过程
阅读数:
之前我们给大家介绍了专门用于开发的超精简RedHat系统的安装过程。今天这个教程,可以看做是在那篇文章之上的一个进阶版,就是如何在命令行中静默安装oracle数据库。
开发环境
- RedHat6.7
- Oracle 11g
安装包
确保你的系统中已经成功下载有了oracle11g的zip包,如果你的linux系统已经安装成功了,那么你可能还需要rhel的iso镜像文件,因为在oralce的安装过程中,我们需要一些依赖。当然,如果你是按照我之前的那篇博文进行安装的,就没什么问题了。
oracle 11g :
- Oracle.11gR2.Linux.x64_CD1.zip
- Oracle.11gR2.Linux.x64_CD2.zip
另外有一些依赖需要用 yum 加载linux iso 安装光盘的方式来安装,所以最好需要 linux 的安装文件
- rhel-server-6.7-x86_64-dvd.iso
用户创建和目录配置
这里我们是按照oracle官方给的文档,创建几个相关的用户和用户组。
用户组创建
用root用户登录之后,首先创建下面几个用户组:
1 | groupadd dba |
用户创建和密码设定
接着来创建几个用户:
1 | useradd -g oinstall -G dba,asmdba oracle |
输入密码后,给oracle用户设定了密码。
新建oracle的根目录
1 | mkdir -p /oracle/orahome |
上面相当于把oracle 装在根目录下(/oracle),每个人的硬盘空间和规划不一样,请自行设置
hosts配置
编辑/etc/hosts
文件,加入正确的主机名。修改之后的hosts文件里面,有类似于下面的内容
1 | ... |
同时修改/etc/sysconfig/network
文件,配置网络中的主机名。修改之后的文件类似:
1 | NETWORKING=YES |
设置环境变量
修改/etc/profile
文件设置环境变量,这样所有用户都能生效。 在文件结尾添加下面内容:
1 | export ORACLE_BASE=/oracle |
注: ORACLE_SID处填写你自己打算安装的数据库名字
依赖检测
因为oracle11g的安装需要依赖很多其他程序,所以在安装之前我们先检测下安装环境:
1 | rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel | grep "not installed" |
上面的命令会显示出诸如下面的结果:
1 | package libaio-devel is not installed |
也就是告诉我们哪些是还没有安装的程序,我们要做的就是去安装这些依赖。
yum安装依赖
一般来说,这些依赖都可以通过linux的iso文件中进行安装。这里就大致介绍下如果通过iso文件进行安装吧。
其实原理是把yum
源设置成iso文件,然后通过yum来进行安装
挂载光盘
假设 iso 文件的路径为/app/software/rhel-server-6.7-x86_64-dvd.iso
执行以下命令
1 | mount -o loop /app/software/rhel-server-6.7-x86_64-dvd.iso /mnt/cdrom |
如果
/mnt
目录下没有 cdrom 文件夹,则先创建一个目录。
挂载成功之后 可以df -h
看到 iso 文件成功挂载到指定的目录下。
取消挂载的命令:
1 | umount /mnt/cdrom |
设置yum源为本地iso文件
修改/etc/yum.repos.d/rhel-source.repo
设置yum源
1 | [rhel-source] |
保存之后在命令行执行
1 | yum update |
这样就可以用yum install xxx
来安装之前提示未安装的那些依赖程序了
静默安装oracle
接下来就是正式进行oracle的安装了
解压安装包
之后的所有操作均是在oracle用户下进行,所以我们首先要切换到oracle用户下,并解压安装包(安装包移动到/home/oracle 目录下)
1 | su - oracle |
解压完成之后,我们会发现在当前目录有一个database
的文件夹,在database/response/
目录下,会看到有3个默认的安装配置文件:
- db_install.rsp 用于安装oracle时的配置
- dbca.rsp 用于静默建库
- netca.rsp 用于静默配置监听
这3个配置响应文件我们今天都会需要用到。
修改安装时响应文件
首先是修改安装响应文件,执行vim database/response/db_install.rsp
,然后修改下面的内容:
1 | oracle.install.option=INSTALL_DB_SWONLY //29 行 安装类型 |
注意:
- 37 行 主机名称, 165行 globalDBName 和 170行 SID 按照自己的设定修改
- 233行 设定所有数据库用户使用同一个密码, 这个密码在后面还要被用到
清理安装环境
如果在安装过程中出现了错误,需要我们重新进行安装,请执行下面的命令清理一下环境
1 | rm -rf /etc/oratab |
再次强调,每个人的 oracle 目录可能和我的设置不一样,请执行命令前自行修改相关路径名称
静默安装
静默安装的意思就是不在命令行中弹出各种安装进程。安装的速度和你的服务器配置相关,几分钟到十几分钟不同。
执行下面的命令:
1 | cd database |
- silent 表示以静默方式安装,不会有任何提示
- ignorePrereq 忽略检测中错误
- force 允许安装到一个非空目录
- noconfig 表示不运行配置助手netca
- responseFile 表示使用哪个响应文件,必需使用绝对路径
执行脚本
安装顺利的话,会看到下面的提示:
1 | ... |
我们就按照提示,新开一个终端窗口,然后切换到root用户,执行下面两个shell脚本:
1 | /oracle/oraInventory/orainstRoot.sh |
整个oracle就算安装成功了!!
静默配置监听
还记得解压出来的3个resp文件么,我们只用到了一个,接下来就是配置监听和建库了。
监听不需要太多额外的配置,可以看我这个配置好的监听响应文件
我们需要重新切回oracle
用户:
1 | su -c oracle |
接下来在命令行中依次执行,
1 | netca /silent /responsefile /home/oracle/database/response/netca.rsp |
注:
- 这里各个参数用用
/
来表示,而不是安装oracle时的-
号了。- 监听配置好之后,如果有问题,先不要着急,稍后我们统一来介绍如果正确配置监听
静默建库
最后一个resp文件,用来静默建库,修改建库响应文件vim database/response/dbca.rsp
1 | [CREATEDATABASE] |
接下来在命令行中输入下面的命令
1 | dbca -silent -responseFile /home/oracle/database/response/dbca.rsp |
注:
- 这里各个参数用用
-
来表示,而不是上一步时的/
号了(尴尬 - -!, 估计这几个程序不是同一个人写的。。。) - 建库过程中会要求输入多次密码,这个密码就是我们之前安装oracle时,在
db_install.rsp
中233行 设定所有数据库用户使用同一个密码
中设定的密码了。
启用数据库
执行下面的命令:
1
2lsnrctl start
dbstart $ORACLE_HOME修改
/etc/oratab
,最后的N改成Y
设置自动启动:root用户修改
/etc/rc.d/rc.local
,最后加入1
2su - oracle -c "lsnrctl start"
su - oracle -c "dbstart $ORACLE_HOME"
配置监听(修改监听端口)
如果上面的步骤你都执行的很顺利,那么是真的要恭喜你。但是90%的同学,在监听程序上会消耗很长时间,这里我们来统一总结一下如何正确配置监听。
如果我们用的是默认的监听文件,那么 oracle 的监听程序会建立在1521端口上,如果你想要修改到其他端口,或者你的监听程序不正确,这一章节我们统一来看如何处理。
正确的监听程序配置好是什么样子的
1 | [root@linux2 oradata]# lsnrctl status |
上面的代码是正确的监听程序的样子,注意到在 Services Summary 部分,是能看到2个实例的,
而如果你的监听程序有问题,那么这里会显示:
The listener supports no services
接下来我们来看如何处理。
修改 listener.ora 文件
我们看到在上面的程序输出部分有一个Listener Parameter File
,这个就是你的监听程序的配置文件,我们把它修改成下面的样子:
1 | LISTENER = |
其实就是修改 LISTENER 部分,把 HOST 换成我们之前设置的 host 名称(如果你有困惑,就把所有的 host 设置成一样的),PORT 就是我们的监听端口,如果你想换成其他的,就在这里替换掉。
修改tnsnames.ora 文件
在同一个目录中,修改’tnsnames.ora’文件,这样你才可以从本机正常登录
1 | linux2 = |
这里是一样的,注意 SERVICE_NAME字段和你之前安装是设置的保持一致。
修改 oracle 中的参数
接下来,我们需要到数据库中进行相关设置。
先切换到 oracle 用户1
su oracle
然后输入下面的命令免密进入 oracle 数据库sqlplus / as sysdba
然后输入show parameter local_listener
查看 listener 的配置,下面的代码是我已经配置好的,
1 | [oracle@linux2 oradata]$ sqlplus / as sysdba |
我们接着执行下面的命令alter system set local_listener="(address = (protocol = tcp)(host = linux2)(port = 1521))"
来配置监听,其实这里的配置和我们第1步设置的 listener.ora中的基本是一样的。
配置好了之后,我们可以再检查一下listener,看看是不是得到和我之前一样的效果了?
如果没有:
1 | lsnrctl reload |
如果还是不行,请自行 google。。。
其他
这里附上一些备用的东西
启动和添置数据库的脚本
- 手动启动shell
vim start_oracle.sh
1 |
|
- 手动停止shell
vim stop_oracle.sh
1 |
|
- 停止sql脚本
vim stop.sql
1 | shutdown immediate |
建表和新建用户语句
用sys或者sysdba用户登录oracle数据库,然后执行下面的命令来新建表空间和用户
1 | create tablespace data datafile '/oracle/oradata/sms/data01.dbf' size 32000m |
解释:
/oracle/oradata/
是表空间的存储地址- create user命令 我们新建了一个用户 test,密码是 test1234
取消用户密码180天有效期
oracle11g之后的版本,默认的每个用户的密码有效期是 180天。 180天后,原先的密码就失效了。所以,偷懒的方法我们就把这个策略关闭就好了。
1 | alter profile default limit PASSWORD_LIFE_TIME unlimited; |