Oracle-11g-R2安装教程

1 安装Oracle前准备

1.1 创建运行oracle数据库的系统用户和用户组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[sonny@localhost ~]$ su root  #切换到root
Password:
[root@localhost sonny]# groupadd oinstall  #创建用户组oinstall
[root@localhost sonny]# groupadd dba  #创建用户组dba
[root@localhost sonny]# useradd -g oinstall -g dba -m oracle  #创建oracle用户,并加入到oinstall和dba用户组
[root@localhost sonny]# passwd oracle  #设置用户oracle的登陆密码,不设置密码,在CentOS的图形登陆界面没法登陆
Changing password for user oracle.
New password:   # 密码
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:   # 确认密码
passwd: all authentication tokens updated successfully.
[root@localhost sonny]# id oracle # 查看新建的oracle用户
uid=1001(oracle) gid=1002(dba) groups=1002(dba)
[root@localhost sonny]#

1.2 创建oracle数据库安装目录

1
2
3
4
5
6
7
8
9
10
11
12
[sonny@localhost ~]$ su root
Password:
[root@localhost sonny]# mkdir -p /data/oracle  #oracle数据库安装目录
[root@localhost sonny]# mkdir -p /data/oraInventory  #oracle数据库配置文件目录
[root@localhost sonny]# mkdir -p /data/database  #oracle数据库软件包解压目录
[root@localhost sonny]# cd /data
[root@localhost data]# ls  #创建完毕检查一下(强迫症)
database oracle oraInventory
[root@localhost data]# chown -R oracle:oinstall /data/oracle  #设置目录所有者为oinstall用户组的oracle用户
[root@localhost data]# chown -R oracle:oinstall /data/oraInventory
[root@localhost data]# chown -R oracle:oinstall /data/database
[root@localhost data]#

1.3 修改OS系统标识

oracle默认不支持CentOS系统安装,Oracle Database 11g Release 2 的 OS要求参考: https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1106

我安装是64位数据库,On Linux x86-64:Red Hat Enterprise Linux 7 (RHEL 7)

另外,CentOS7.0.1511 基于 RHEL7.2 参考:http://www.linuxidc.com/Linux/2015-12/126283.htm

修改文件 /etc/RedHat-release

1
2
3
4
5
6
7
8
9
10
[sonny@localhost data]$ su root
Password:
[root@localhost data]# cat /proc/version
Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015
[root@localhost data]# cat /etc/redhat-release  
CentOS Linux release 7.2.1511 (Core)
[root@localhost data]# vi /etc/redhat-release
[root@localhost data]# cat /etc/redhat-release
redhat-7
[root@localhost data]#

1.4 安装oracle数据库所需要的软件包

重复一遍,我安装时Oracle Database 11g Release 2 64位数据库。

Oracle Database Package Requirements for Linux x86-64 如下:(参考:https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#BABCFJFG)

1
2
3
4
操作系统:Oracle Linux 7 and Red Hat Enterprise Linux 7
The following packages (or later versions) must be installed:

$ yum install binutils compat-libstdc++ compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel glibc-headers ksh libaio-devel libstdc++-devel make sysstat unixODBC-devel binutils-* compat-libstdc++* elfutils-libelf* glibc* gcc-* libaio* libgcc* libstdc++* make* sysstat* unixODBC* wget unzip

1.5 关闭防火墙 CentOS 7.2默认使用的是firewall作为防火墙

1
2
$ systemctl disable firewalld
$ systemctl stop firewalld

1.6 关闭selinux(需重启生效)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost /]# vi /etc/selinux/config
[root@localhost /]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled #此处修改为disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

1.7 修改内核参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[sonny@localhost /]$ su root
Password:
[root@localhost /]# vi /etc/sysctl.conf
[root@localhost /]# cat /etc/sysct.conf


cat: /etc/sysct.conf: No such file or directory
[root@localhost /]# cat /etc/sysctl.conf
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744 #设置最大打开文件数
fs.aio-max-nr = 1048576
kernel.shmall = 2097152 #共享内存的总量,8G内存设置:2097152*4k/1024/1024
kernel.shmmax = 2147483648 #最大共享内存的段大小
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范围
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576
[root@localhost /]#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
使配置参数生效

[root@localhost /]# sysctl -p

net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
sysctl: setting key "fs.file-max": Invalid argument
fs.file-max = 6815744 #设置最大打开文件数
fs.aio-max-nr = 1048576
sysctl: setting key "kernel.shmall": Invalid argument
kernel.shmall = 2097152 #共享内存的总量,8G内存设置:2097152*4k/1024/1024
sysctl: setting key "kernel.shmmax": Invalid argument
kernel.shmmax = 2147483648 #最大共享内存的段大小
sysctl: setting key "kernel.shmmni": Invalid argument
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
sysctl: setting key "net.ipv4.ip_local_port_range": Invalid argument
net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范围
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
[root@localhost /]#

1.8 解压安装包

1
2
3
4
5
6
7
8
9
10
11
[oracle@localhost /]$ cd /usr/local/src  #进入/usr/local/src目录
[oracle@localhost src]$ ls
linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip
[oracle@localhost src]$ unzip linux.x64_11gR2_database_1of2.zip -d /data/database/  #解压
(省略...)
[oracle@localhost src]$ unzip linux.x64_11gR2_database_2of2.zip -d /data/database/  #解压
(省略...)
[oracle@localhost src]$ su root
Password:
[root@localhost src]# chown -R oracle:oinstall /data/database/database/
[root@localhost src]#

2 oracle安装

1.图形界面登陆oracle用户:

警报
root用户切换到oracle用户无法安装报错,必须使用oracle直接登录,否则报如下错误
Exception in thread “main” java.lang.NoClassDefFoundError

图1

2.启动oralce安装,到/data/database/database/目录下,执行runInstaller
图2
3.去掉勾,懒得填,个人使用环境不需要自动接收Oracle的安全更新。
图3
4.下一步,只安装数据库软件,个人用不要那些玩意~~
图4
5.选择单例安装,前面的所有配置均为单例安装。
图5
6.添加语言
图6
7.默认安装版本企业版-Enterprise Edition
8.确定数据软件的安装路径,自动读取前面Oracle环境变量中配置的值。
图8
9.理论上要创建Database Operation(OSOPER)Group:oper ,个人用,懒得建,就使用dba用户组
图9
10.安装检查,按照提示信息一个一个解决。
图10
11.一个一个检查package,在准备阶段中漏掉的,此处再安装,有些系统报错是因为现有的包的版本比检测要高,最后忽略即可。(点击Check_Again 多检查几次)
图11
12.准备完毕,fuck “Finish”开始安装。
图12
14.提示安装成功。安装日志懒得看,再说。
图14

3 配置监听listener

警告
创建监听和实例前,一定要用root用户运行/data/oracle/product/11.2.0/db_1/root.sh 脚本,否则无法生成/etc/oratab文件 及造成实例无法注册等异常现象,无法设置自动等

3.1 执行netca 报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[@localhost ~]$ netca

Oracle Net Services Configuration:
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# SIGSEGV (0xb) at pc=0x00007f69a69fcb9d, pid=8033, tid=140092892297024
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (1.5.0_17-b03 mixed mode)
# Problematic frame:
# C [libclntsh.so.11.1+0x62ab9d] snlinGetAddrInfo+0x1b1
#
# An error report file with more information is saved as hs_err_pid8033.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
/data/oracle/product/11.2.0/db_1/bin/netca: line 178: 8033 Aborted (core dumped) $JRE $JRE_OPTIONS -classpath $CLASSPATH oracle.net.ca.NetCA $*
[oracle@localhost ~]$

错误原因:安装操作系统是默认主机名localhost造成错误

解决办法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[racle]# cat /etc/sysconfig/network
# Created by anaconda

[root@localhost oracle]# vi /etc/sysconfig/network  #增加HOSTNAME
[root@localhost oracle]# cat /etc/sysconfig/network
# Created by anaconda
HOSTNAME=odb-sonny
[root@localhost oracle]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@localhost oracle]# vi /etc/hosts  #增加HOSTNAME</strong>
[root@localhost oracle]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 odb-sonny
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@localhost oracle]# hostname odb-sonny  #执行
[root@localhost oracle]#

最后注销当前oracle用户,重新登陆即可!!这次发现打开配置界面正常,安装windows下面配置即可。
图15

4 创建Oracle数据实例Orcl

执行dbca命令,启动oracle实例安装界面,剩下的与Windows上安装一样,不废话了:

注意:必须先创建监听,并且监听是启动中,否则报错。
图16

5 配置oracle自启

参考:https://blog.51cto.com/meiling/2071260

5.1 编辑文件/etc/oratab

1
2
3
4
5
6
7
dbca建库时都会自动创建/etc/oratab文件

#vi /etc/oratab
将“orcl:/u01/app/oracle/product/12.1.0/dbhome_1:N”,
改为“orcl:/u01/app/oracle/product/12.1.0/dbhome_1:Y”。
修改完成后,保存退出
--<N|Y>选项代表开机是否自启动

说明:o
rcl为实例名;/u01/app/oracle/product/12.1.0/dbhome1为oracle安装目录;会因安装的情况不同而有所不同。

1

5.2 编辑/etc/rc.d/rc.local启动文件,添加数据库启动脚本dbstart

1
2
3
4
5
6
7
8
9
10
#vi /etc/rc.d/rc.local
末尾添加:
su oracle -lc "/u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start"
su oracle -lc /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart

或启动指定实例
su - oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start ORCL"
su - oracle -lc /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart

--命令中-c代表执行脚本,脚本dbstart中指定启动的实例,脚本lsnrctl中启动配置的监听

说明:
/u01/app/oracle/product/12.1.0/dbhome1为oracle的安装目录,要根据实际情况进行修改。

2

5.3 修改DB启动配置文件

1
2
3
4
5
6
7
# vim /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart
找到ORACLE_HOME_LISTNER这行
# First argument is used to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=$1

$1修改为如下(你的路径):
ORACLE_HOME_LISTNER=/u01/app/oracle/product/11.2.0/dbhome_1

5.4 重启主机,查看数据库和监听是自启动

开机自启动多个监听及多个实例

1
2
3
4
5
# vim /etc/rc.d/rc.local
su - oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start orcl1"
su - oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start orcl2"
su - oracle -lc /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart
监听写多个启动,实例用一个dbstart命令去启动,它会去读oratab文件,读到Y就会把对应的实例开机自启动

6 小结

linux下设置实例自启动有关脚本:

oratab:实例是否自启动的注册信息

dbstart:开机启动脚本文件会读取oratab信息

rc.local:开机后立即要做的文件

  • “启动监听”
    lsnrctl start
  • “启动数据库实例”
    dbstart

  • “关闭数据库实例”
    dbshut

  • “关闭监听”
    lsnrctl stop

7 问题总结

7.1 问题一:

问题一i
root用户切换到oracle用户无法安装报错,必须使用oracle直接登录,否则报如下错误

Exception in thread “main” java.lang.NoClassDefFoundError

7.2 问题二:

问题二
Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法

出现这种错误是因为主机名和/etc/hosts 文件不一致,只需要把主机名和其IP 写入/etc/hosts 文件,就ok了。

7.3 问题三:

问题三
在ORACLE11G R2 安装ORACLE时出现以下错误:

[INS-08109] Unexpected error occurred while validating inputs at state ‘getOCMDetails’.

经GOOGLE看到

http://www.linkedin.com/groups/I-try-clone-oracle-grid-77941.S.38808726

说是使用了 LD_LIBRARY_PATH 环境参数,经查看.bash_profile ,有如下设置:

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

注释掉后,问题解决。

7.4 问题四:

问题四
Error in invoking target ‘install’ of makefile ‘/data/oracle/product/11.2.0/db_1/ctx/lib/ins_ctx.mk
解决方法:打开一个新的终端,使用root身份登入,

#vi ORACLE_HOME/ctx/lib/ins_ctx.mk
找到
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
修改为(添加红色部分): ctxhx: $(CTXHXOBJ)
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/libc.a

7.5 问题五:

warning
Error in invoking target ‘agent nmhs’ of makefile ‘/home/oracle_11/app/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk
解决方法:打开一个新的终端,使用root身份登入,

#vi $ORACLE_HOME/sysman/lib/ins_emagent.mk
找到
$(MK_EMAGENT_NMECTL)
修改为(添加红色部分):
$(MK_EMAGENT_NMECTL) -lnnz11
完成后在错误提示框上retry既可

7.6 问题六

问题六
弹出窗口乱码
原因:系统默认语言中文,没有相应的中文字体包
解决办法: 修改默认系统系统语言为英文

7.7 问题七

问题七
创建实例报错 java
可以使用非oracle自带的java
安装java

-------------本文结束感谢您的阅读-------------

本文标题:Oracle-11g-R2安装教程

文章作者:OperationMAN

发布时间:2018年08月20日 - 07:08

最后更新:2022年03月31日 - 13:03

原始链接:https://kxinter.gitee.io/2018/08/20/Oracle-11g-R2安装教程/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!