CentOS 7 安装 Oracle 11g R2

操作系统

CentOS 7.4.1708

数据库版本 Oracle 11g R2

linux.x64_11gR2_database_1of2.zip

linux.x64_11gR2_database_2of2.zip

二、安装oracle准备操作

1、创建运行oracle数据库系统用户和用户组

参考 http://www.oracle.com/technetwork/cn/articles/hunter-rac11gr2-iscsi-083834-zhs.html#6

$ su root #切换到root
# groupadd oinstall  #创建用户组 oinstall
# groupadd dba # 创建用户组dba
# useradd -g oinstall -G dba oracle #创建oracle用户,并加入到oinstall和dba用户组
# passwd oracle # 设置oracle用户密码 Ycyj2018
# id oracle # 查看新建的oracle用户和分组信息

2、创建oracle数据库安装目录

# mkdir -p /data/oracle  #oracle数据库安装目录。-p 创建多级目录
# mkdir -p /data/oraInventory  #oracle数据库配置文件目录
# mkdir -p /data/database  #oracle数据库软件包解压目录
# cd /data/ #创建完毕检查一下
# ls
# chown -R oracle:oinstall /data/oracle/ #设置目录所有者为oinstall用户组的oracle用户
# chown -R oracle:oinstall /data/oraInventory/
# chown -R oracle:oinstall /data/database/

3、修改系统标识
修改文件 /etc/redhat-release 内容为redhat-7

# cat /proc/version
  Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) 
  (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) 
  1 SMP Tue Aug 22 21:09:27 UTC 2017
# vim /etc/redhat-release
# cat /etc/redhat-release
  redhat-7

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

所需安装包参考
[https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#BABCFJFG]

不写出具体的所需安装包版本,尽量使用yum在线安装,解决不同的软件包之间的依赖,这里的32位 .i686软件包必须需要安装

yum install binutils-*.x86_64
yum install compat-libcap1-*.x86_64
yum install compat-libstdc++-*.i686
yum install compat-libstdc++-*.x86_64
yum install elfutils-libelf*
yum install gcc-*.x86_64
yum install gcc-c++-*.x86_64
yum install glibc-*.i686
yum install glibc-*.x86_64
yum install glibc-*.i686
yum install glibc-devel-*.x86_64
yum install ksh
yum install libaio-*
yum install libaio-*.i686
yum install libaio-*.x86_64
yum install libaio-devel-*.i686
yum install libaio-devel-*.x86_64
yum install libgcc-*.i686
yum install libgcc-*.x86_64
yum install libstdc++-*.i686
yum install libstdc++-*.x86_64
yum install libstdc++-devel-*.i686
yum install libstdc++-devel-*.x86_64
yum install libXi-*.i686
yum install libXi-*.x86_64
yum install libXtst-*.i686
yum install libXtst-*.x86_64
yum install make-*.x86_64
yum install sysstat-*.x86_64
yum install unixODBC*

在database/stage/cvu/cvu_prereq.xml中依赖的包

讲i386改为i686 就不会报包缺少依赖

5、关闭防火墙

CentOS7.4 默认使用的是firewall作为防火墙

# systemctl status firewalld.service #查看防火墙状态
# systemctl stop firewalld.service #关闭防火墙
# systemctl disable firewalld.service #禁止使用防火墙(重启也是禁止的)

6、关闭selinux(需重启生效)

# vim /etc/selinux/config

把 SELINUX=enforcing 改为 SELINUX=disabled

7、修改内核参数

# vim /etc/sysctl.conf
内容如下
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.semmni = 128
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
    250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目
    32000是参数semmns的值,表示系统内可允许的信号量最大数目
    100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量
    128是参数semmni的值,表示系统信号量集合总数
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
# sysctl -p #使配置参数生效

Sysctl是一个允许改变正在运行中的Linux系统的接口,它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项。

参考 https://link.jianshu.com/?t=http://www.cnblogs.com/shanyou/archive/2012/01/29/2330997.html

在database/stage/cvu/cvu_prereq.xml 这个文件中有参数值和依赖包,是oralce安装所依赖的,静默安装时会进行检测.

8、修改操作系统对oracle用户设置限制,提高软件运行性能

# cat /etc/security/limits.conf
# vim /etc/security/limits.conf #添加如下内容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle hard stack 10240

9、开启操作系统一步IO(AIO)

安装软件依赖包中已经包含了 libaio-* ,默认开启一步I/O

检查操作系统中AIO是否运行

# cat /proc/slabinfo | grep kio

注:如数据库使用的是文件系统,且要使用异步IO,则需要修改该数据库的初始化参数

  • 设置disk_asynch_io参数值为TRUE(默认值)
  • 设置filesystemio_options参数值为ASYNCH
10、修改主机名称

/etc/hosts内有两个localhost的主机名称,oracle 监听会发生冲突,会报Oracle监听lsnrctl命令启动报错(TNS-12537,TNS-12560,TNS-00507)

1、修改静态主机名
# hostnamectl set-hostname dbserver
2、修改主机名为 dbserver
# hostname dbserver
3、在/etc/hosts 增加主机名对应的ip地址

内容如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 dbserver

4、编辑
# vim /etc/sysconfig/network
  NETWORKING=yes
  HOSTNAME=dbserver

重启生效

11、配置oracle用户的环境变量

修改oracle用户目录下的 .bash_profile

# vim /home/oracle/.bash_profile 
内容如下
export ORACLE_BASE=/data/oracle   # oracle数据库安装目录,是admin和product
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1  #oracle数据库路径
export ORACLE_HOSTNAME=ycyj01 # oracle启动数据库实例名,如果有多个在配置
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export ORACLE_TERM=xterm  #xterm窗口模式安装
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH  #添加系统环境变量
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/lib64  #添加系统环境变量
export TEMP=$ORACLE_BASE/tmp  #设置tmp文件路径
export TMPDIR=$ORACLE_BASE/tmp  #设置tmp文件目录
export LANG=C #防止安装过程出现乱码
# export LANG=en,zh_CN
# 设置Oracle客户端字符集,必须与Oracle安装时设置的字符集保持一致,如:ZHS16GBK,否则出现数据导入导出中文乱码问题
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export DISPLAY=127.0.0.1:1.0

#####12、解压安装包
将两个压缩包解压和并到一个目录中,进行安装
解压到 /data/database/ 目录下

# unzip linux.x64_11gR2_database_1of2.zip # 解压
# unzip linux.x64_11gR2_database_2of2.zip # 解压

三、开始安装oracle
此安装为图形界面安装,安装好之后,可以将图形界面关闭
1、 图形界面登录oracle用户
2、 启动oracle安装,到/data/database/ 目录下 启动 ./runInstaller

# su oracle  #切换到Oracle用户,用Oracle用户来进行安装
# startx
$ ./runInstaller  #打开database文件然后运行

会出现乱码情况,执行 export LANG=en_US.UTF-8
3、安装需要安装的进行安装
4、添加语言,选择English(united Kingdom)
5、默认安装版本企业版-Enterprise Edition
8、确定数据软件的安装路径,自动读取前面Oracle环境变量中配置的值,我是默认安装路径。
9、理论上要创建Database Operation(OSOPER)Group:oper ,个人用,可以就使用dba用户组
10、安装检查,按照提示信息一个一个解决。
11、swap空间不足解决 :(要求2.67G 实际2G)

[root@localhost oracle]# free -m  #查看当前虚拟内存
total        used        free      shared  buff/cache  available
Mem:          1824        1369          93          10        361        250
Swap:          2048          20        2028
[root@localhost oracle]# dd if=/dev/zero of=/home/swap bs=1024 count=1024000  #将当前swap空间由2048M 增加到 3048M 新增一个2014的swap文件
1024000+0 records in
1024000+0 records out
1048576000 bytes (1.0 GB) copied, 29.4051 s, 35.7 MB/s
[root@localhost oracle]# mkswap /home/swap
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=5e3d39d7-285e-4c74-b321-1e2b3ffabf83
[root@localhost oracle]# free -m
total        used        free      shared  buff/cache  available
Mem:          1824        1275          95          10        454        342
Swap:          2048        141        1907
[root@localhost oracle]# swapon /home/swap  #增加并启用虚拟内容
swapon: /home/swap: insecure permissions 0644, 0600 suggested.
[root@localhost oracle]# free -m  #再次查看
total        used        free      shared  buff/cache  available
Mem:          1824        1275          94          10        454        342
Swap:          3048        141        2907

注:增加swap的时候注意后面是几个,不要写错了,我第一次少写了一个0,后来又增加了一个swap1。
12、一个一个检查package,在准备阶段中漏掉的,此处再安装,有些系统报错是因为现有的包的版本比检测要高,最后忽略即可。
13、准备完毕,fuck “Finish”开始安装。
14、安装过程是一个漫长的过程,中间有几次卡住,没有出现任何画面,屏幕中间有条小线,尝试多次,发现光标在该线上,右键点击Closed。
注:这里的线是一个消息提示框,可以拉伸开来,查看具体信息。

15、提示安装成功
注:安装过程中(我是第8步,安装路径那里),有时会出现界面卡着一直不动,我就遇到了这种情况,点击关闭什么的都没有反应,没办法只好用kill杀死进程。这里大概遇到了4、5次,最后请教别人才发现,我的空间不够,因为安装了好几次,所以安装日志就有好多,删了前面的那些安装日志,再重新开始运行./runInstaller就可以了。

查看进程号:ps -ef | grep java

杀死进程方法:kill -9 进程号

四、配置监听listener

1.执行netca 报错如下,以下错误是因为主机名称是 localhost,安装操作系统是默认主机名localhost造成错误,搜索CentOS7修改主机名称

[Oracle@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数据实例Orcl

如果安装的时候没有创建数据库,则可以使用创建数据库实例
注意:必须先创建监听,并且监听是启动中,否则报错。

# su oracle  #切换到oracle用户
$ dbca  #启动oracle实例安装界面

Next
选择第一项:创建数据库
Next
默认选择第一项:一般用途或事务处理
Next
全局数据库名:orcl
SID:orcl
Next
默认即可,Next
口令配置,可以为每个账户设置不同的口令,也可以为所有账户设置一个相同的口令
选择第二项:所有账户使用同一管理口令
Next
存储类型:文件系统
存储位置:使用模版中的数据库文件位置
Next
默认选择:指定快速恢复区
Next
快速恢复区大小设置,如果系统剩余空间小于设置值会出现上面的提示
Next
默认,Next
切换到调整大小:进程300(可以根据服务器配置设置)
切换到字符集设置
选择第三项:从字符集列表中选择
选择:ZHS16GBK- GBK 16-bit Simplified Chinese
国家字符集:AL16UTF16-Unicode UTF-16 Universal character set
默认语言:Simplified Chinese
默认地区:China
切换到连接模式,选择:专用服务器模式
Next
全部设置完成之后,点Finish
勾选:创建数据库
勾选:生成数据库创建脚本
点Finish
Ok
Ok
Ok
注意:这里如果出现上面的提示,可以等安装完成之后用root账号登录,执行下面两个命令

# /data/oracle/product/11.2.0/db_1/root.sh
# /data/oraInventory/orainstRoot.sh

生成/etc/oratab文件
正在创建数据库
数据库创建完成,点Exit退出

#####六、启动oracle数据库

# su oracle #切换到oracle用户
$ sqlplus /nolog #进入sqlplus
SQL> conn / as sysdba #以超级管理员权限登录
SQL> startup #启动数据库实例
SQL> quit #退出
$ lsnrctl start #启动监听

startup参数说明:
startup #不带任何参数,启动数据库实例并打开数据库,一般选择这种启动方式
startup nomount #只启动数据库实例,不打开数据库,一般用于创建新的数据库时使用
startup mount #启动数据库实例,并加载数据库,但不打开数据库,一般用于修改数据库名称等管理时使用

七、关闭oracle数据库

# su oracle #切换到oracle用户
$ lsnrctl stop #关闭监听器
$ sqlplus /nolog #进入sqlplus
SQL> conn / as sysdba #以超级管理员权限登录
SQL> shutdown immediate #关闭数据库实例
SQL> quit #退出

注:sqlplus /nolog /nolog是不登陆到数据库服务器的意思,如果不加 /nolog sqlplus会提示输入用户名和密码。

shutdown参数说明:
normal #等待所有的用户断开连接,执行命令后不允许新连接
immediate #等待用户完成当前的语句后,再断开用户连接,不允许新用户连接
transactional #等待用户完成当前的事务后断开连接,不允许新用户连接
abort #强行断开连接并直接关闭数据库
前面三种方法不会导致数据库出错,最后一种方法非特殊状况不建议使用, 一般使用shutdown immediate关闭数据库
备注:如果执行shutdown immediate出现ORA-01012: not logged on错误

请先执行以下语句
ps -ef | grep ora_dbw0_$orcl
kill -9 pid  #pid为进程号
其中orcl 是数据库的SID

八、启动oracle的em服务
使用oracle用户执行
$ emctl start dbconsole #启动

启动日志
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright © 1996, 2009 Oracle Corporation. All rights reserved.
http://localhost:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control … started.

Logs are generated in directory /data/oracle/product/11.2.0/dbhome_1/localhost_orcl/sysman/log

九、关闭oracle的em服务

使用oracle用户执行

$ emctl stop dbconsole #关闭

关闭日志

Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0

Copyright © 1996, 2009 Oracle Corporation. All rights reserved.

http://localhost:1158/em/console/aboutApplication

Stopping Oracle Enterprise Manager 11g Database Control …

… Stopped.

十、设置oracle开机启动

linux下默认安装oracle,不会开机启动,如有需要设置开机启动

1、root 用户执行

cd /data/oracle/product/11.2.0/dbhome_1

./root.sh #执行脚本,生成 /etc/oratab 脚本

Running Oracle 11g root.sh script…

The following environment variables are set as:

ORACLE_OWNER= oracle

ORACLE_HOME= /data/oracle/product/11.2.0/dbhome_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:

Copying dbhome to /usr/local/bin …

Copying oraenv to /usr/local/bin …

Copying coraenv to /usr/local/bin …

Creating /etc/oratab file…

Entries will be added to the /etc/oratab file as needed by

Database Configuration Assistant when a database is created

Finished running generic part of root.sh script.

Now product-specific root actions will be performed.

Finished product-specific root actions.

2、编辑/etc/oratab

[root@localhost dbhome_1]# vim /etc/oratab #编辑 内容修改如下

orcl:/data/oracle/product/11.2.0/dbhome_1:Y #orcl为oracle数据库实例名称

修改执行权限

chmod 750 /etc/oratab

或者# chmod a+x /etc/oratab

chown oracle.oinstall /etc/init.d/oracle #更改文件所有者

3、编辑 $ vim /data/oracle/product/11.2.0/dbhome_1/bin/dbstart

找到:ORACLE_HOME_LISTNER=$1

修改为:ORACLE_HOME_LISTNER=$ORACLE_HOME

4、编辑 $ vim /data/oracle/product/11.2.0/dbhome_1/bin/dbshut

找到:ORACLE_HOME_LISTNER=$1

修改为:ORACLE_HOME_LISTNER=$ORACLE_HOME

5、创建oracle启动脚本

$ vim /etc/init.d/oracle #添加以下代码

修改执行权限

chmod 750 /etc/init.d/oracle #添加执行权限

#!/bin/sh

chkconfig: 0356 99 10

description: Oracle 11g R2 AutoRun Servimces

/etc/init.d/oracle

Run-level Startup script for the Oracle Instance, Listener, and

Web Interface

export ORACLE_BASE=/data/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

export ORACLE_SID=fmdb

export PATH= P A T H : PATH: PATH:ORACLE_HOME/bin

ORA_OWNR=“oracle”

if the executables do not exist – display error

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]

then

echo “Oracle startup: cannot start”

exit 1

fi

depending on parameter – startup, shutdown, restart

of the instance and listener or usage display

case “$1” in

start)

Oracle listener and instance startup

su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart

echo “Oracle Start Succesful!OK.”

;;

stop)

Oracle listener and instance shutdown

su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut

echo “Oracle Stop Succesful!OK.”

;;

reload|restart)

$0 stop

$0 start

;;

*)

echo $“Usage: basename $0 {start|stop|reload|restart}”

exit 1

esac

exit 0

6、检查 /etc/init.d/oracle 能否正确执行

cd vim /etc/init.d/

./oracle start

./oracle stop

7、添加到系统服务

chkconfig --add oracle #将 oracle 添加到 chkconfig中

可使用service 命令测试启动、关闭oracle数据库

service oracle start

service oracle stop

service oracle restart #重启

8、设置开机启动,关机关闭

ln -s /etc/init.d/oracle /etc/rc1.d/S99oracle #添加系统启动级别1软连接

ln -s /etc/init.d/oracle /etc/rc2.d/S99oracle #添加系统启动级别2软连接

ln -s /etc/init.d/oracle /etc/rc3.d/S99oracle #添加系统启动级别3软连接

ln -s /etc/init.d/oracle /etc/rc5.d/S99oracle #添加系统启动级别5软连接

ln -s /etc/init.d/oracle /etc/rc0.d/K01oracle #添加系统关机软连接

ln -s /etc/init.d/oracle /etc/rc6.d/K01oracle #添加系统重启软连接

chkconfig oracle on #设置开机启动

备注:# chkconfig: 0356 99 10

0356:定义运行级别

99:开机启动优先级(数字越大启动越晚)

10:关机停止优先级(数字越小关闭越早)

9、测试

shutdown -r now #重启系统

service oracle start #启动oracle

service oracle stop #关闭oracle

/etc/init.d/oracle restart #重启oracle

su – oracle #切换到oracle用户

dbstart #启动oracle

dbshut #关闭oracle

ps -ef | grep ora #查看oracle进程

ps -ef | grep LISTEN | grep -v gre #查看oracle端口监听

lsnrctl status #查看oracle运行状态

十一、后续操作

1、恢复操作系统标识

vim /etc/redhat-release #编辑

将redhat-7 修改为 CentOS Linux release 7.4.1708 (Core)

2、更改系统默认启动级别为3

vim /etc/inittab #编辑

id:3:initdefault: #修改5为3

十二、注意事项

为使系统安全可以设置主机的防火墙端口号

在开启了防火墙时,做如下设置,开启相关端口,以下是在centos6中,centos7另相参考

修改/etc/sysconfig/iptables 文件,添加以下内容:  tcp 是协议

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1158 -j ACCEPT

修改防火墙配置文件,所在目录/etc/sysconfig/iptables,在里面增加需要开通的端口号, 如下:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1158 -j ACCEPT

#增加的代码必须放在以下代码之上,否则不会起作用.

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

完成之后重新启动防火墙即可

service iptables restart .

此端口号将可以被访问.

**##当安装出现一下问题时,请重新安装

Enterprise manager configuration faile due to the following error -Failed to all ocate prot(s) in the specified range(s) follow process(es) :

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值