实验环境:

系统:2核8G内存60G硬盘,centos7.4;

优化操作:已经关闭了防火墙、selinux,/etc/hosts文件中以添加"172.16.1.92 slave-node2"的主机解析记录;

设置umask文件权限:[root@slave-node2 ~]# echo 'umask 022' >>/etc/profile && source /etc/profile

yum的base和epel源仓库已经更改为阿里云的yum仓库;

1.1、oracle软件包下载:

1、下载地址:

https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

2、软件包选择:

#官方手册:https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm#BHCJCBAF

3、使用xftp上传软件包:

[root@slave-node2 ~]# mkdir -p /tools/

1.2、创建oracle用户和用户组:

[root@slave-node2 ~]# groupadd oinstall

[root@slave-node2 ~]# groupadd dba

[root@slave-node2 ~]# useradd -g oinstall -G dba oracle

[root@slave-node2 ~]# id oracle

uid=1000(oracle) gid=1000(oinstall) 组=1000(oinstall),1001(dba)

1.3、创建oracle工作目录:

[root@slave-node2 tools]# cd /tools/

[root@slave-node2 tools]# unzip linux.x64_11gR2_database_1of2.zip 1>/dev/null

[root@slave-node2 tools]# unzip linux.x64_11gR2_database_2of2.zip 1>/dev/null

[root@slave-node2 tools]# cd ~

[root@slave-node2 ~]# ls -ld /tools/database/ #解压包目录;

drwxr-xr-x 8 root root 128 8月 21 2009 /tools/database/

[root@slave-node2 ~]# mkdir /application/{Oracle11gR2,oraInventory} -p

#Oracle11gR2是oracle的安装目录,oraInventory是oracle的配置文件目录;

[root@slave-node2 ~]# ln -s /application/Oracle11gR2/ /application/oracle

[root@slave-node2 ~]# chown -R oracle:oinstall /tools/database/

[root@slave-node2 ~]# chown -R oracle:oinstall /application/Oracle11gR2/

[root@slave-node2 ~]# chown -R oracle:oinstall /application/oraInventory/

#上面三行是授权;

1.4、修改系统标识:

oracle默认是不支持CentOS系统安装的,所以要修改OS标识文件;

[root@slave-node2 ~]# cp -a /etc/redhat-release{,.ori}

#备份文件;

[root@slave-node2 ~]# vim /etc/redhat-release

redhat-7

1.5、安装oracle所需的依赖包:

[root@slave-node2 ~]# yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 \

compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 \

glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ \

libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC \

unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686

1.6、修改内核参数:

[root@slave-node2 ~]# 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

#限制未完成的并发请求,避免I/O系统故障

kernel.shmall = 2097152

##########################################################################

#共享内存分页总量,应不小于shmmax/page_size缺省值就是2097152,8G(2097152*4k/1024/1024)

#推荐设置为物理内存大小除以分页大小,分页默认大小是4k;

##########################################################################

kernel.shmmax = 4294967296

#最大共享内存段大小,不小于物理内存的一半(推荐70%),且大于数据库实例的SGA,单位是字节

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@slave-node2 ~]# sysctl -p

#使内核参数生效;

1.7、对oracle用户设置限制:

[root@slave-node2 ~]# vim /etc/security/limits.conf

#@student - maxlogins 4

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 10240

oracle hard stack 32768

# End of file

1.8、配置oracle环境变量:

[root@slave-node2 ~]# vim /home/oracle/.bash_profile

export ORACLE_BASE=/application/oracle

#oracl安装目录

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

#oracle路径

export ORACLE_SID=orcl

#oracle启动数据库实例名

export ORACLE_TERM=xterm

#xterm窗口模式安装

export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH

#添加系统环境变量

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

#添加系统环境变量

export LANG=en_US.UTF-8

#防止安装过程出现乱码

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

#设置Oracle客户端字符集,必须和oracle安装时的字符集保持一致

[root@slave-node2 ~]# source /home/oracle/.bash_profile

#使环境变量生效;

1.9、安装oracle:

1、使用Xbrower中的Xstart连接linux:

#具体的关于Xstart的相关配置,请参考“linux架构_02-1(1、如何通过xstart远程连接桌面)”;

2、安装:

(1)切换用户:

[root@slave-node2 ~]# su - oracle

上一次登录:四 8月 1 01:43:49 CST 2019pts/2 上

(2)设置DISPLAY环境变量:

[oracle@slave-node2 ~]$ export DISPLAY=172.16.1.254:0.0

[oracle@slave-node2 ~]$ echo $DISPLAY

172.16.1.254:0.0

(3)启动oracle安装程序:

[oracle@slave-node2 ~]$ cd /tools/database/

[oracle@slave-node2 database]$ ./runInstaller

#提示:启动oracle安装程序后会在windows中跳出oracle安装图形界面;

(4)oracle图形界面安装步骤:

1)

2)

3)

4)

5)

6)

7)

8)

9)

10)

11)

12)

13)

14)

15)

16)

17)

18)

19)

20)

#检查时出现swap分区不足的解决办法如下:

[root@slave-node2 ~]# dd if=/dev/zero of=/root/swap bs=1024 ‬count=8500000

#创建一个8G的swap分区;

[root@slave-node2 ~]# mkswap /root/swap

#格式化swap分区;

[root@slave-node2 ~]# chmod 0600 /root/swap

#赋权swap分区;

[root@slave-node2 ~]# swapon /root/swap

#挂载swap分区;

[root@slave-node2 ~]# free -m | grep Swap

Swap: 10348 0 10348

#查看现在swap分区量;

[root@slave-node2 ~]# chmod +x /etc/rc.d/rc.local

[root@slave-node2 ~]# echo 'swapon /root/swap' >>/etc/rc.local

#将swap分区挂载加入到开机自启动;

#重新检测

21)

22)

#当安装到68%时会出现上图所示报错,解决办法如下:

[root@slave-node2 ~]# vim /application/oracle/product/11.2.0/db_1/ctx/lib/ins_ctx.mk +11

-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/libc.a

#修改第11行的参数;

#再点击"Retry"时会出现如下报错;

#解决上图报错的方法如下:

[root@slave-node2 ~]# vim /application/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk +190

$(MK_EMAGENT_NMECTL) -lnnz11

#修改第190行的参数;

#再点击"Retry"后安装正常进行;

23)安装完成:

24)执行脚本:

[root@slave-node2 ~]# sh /application/oraInventory/orainstRoot.sh

[root@slave-node2 ~]# sh /application/oracle/product/11.2.0/db_1/root.sh

………………………………………………………………………………………………………………………………

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 ...

………………………………………………………………………………………………………………………………

#到此处oracle安装成功,关闭oracle安装界面,以上创建了一个'orcl'全局数据库和其下面的'orcl'实例;

[root@slave-node2 ~]# netstat -tunlp | grep 1521

tcp6 0 0 :::1521 :::* LISTEN 1241/tnslsnr

1.10、启动数据库:

1、登录到服务器,切换到oracle用户;

[root@slave-node2 ~]# su - oracle

上一次登录:四 8月 1 14:15:24 CST 2019pts/3 上

[oracle@slave-node2 ~]$

2、打开oracle的监听服务:

(1)开启服务:

[oracle@slave-node2 ~]$ lsnrctl start

(2)查看监听服务:

[oracle@slave-node2 ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 01-AUG-2019 16:11:45

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

STATUS of the LISTENER

------------------------

Alias LISTENER

Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production

Start Date 01-AUG-2019 16:11:20

Uptime 0 days 0 hr. 0 min. 24 sec

Trace Level off

Security ON: Local OS Authentication

SNMP OFF

Listener Parameter File /application/oracle/product/11.2.0/db_1/network/admin/listener.ora

Listener Log File /application/oracle/diag/tnslsnr/slave-node2/listener/alert/log.xml

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=slave-node2)(PORT=1521)))

The listener supports no services

The command completed successfully

3、启动oracle实例:

[oracle@slave-node2 ~]$ sqlplus system/123456 as sysdba

……………………………………………………………………………………

SQL> startup

ORACLE instance started.

Total System Global Area 3340451840 bytes

Fixed Size 2217952 bytes

Variable Size 1811941408 bytes

Database Buffers 1509949440 bytes

Redo Buffers 16343040 bytes

Database mounted.

Database opened.

SQL>

4、通过sqldeveloper连接oracle:

5、补充:如何关闭oracle数据库:

(1)关闭实例:

[oracle@slave-node2 ~]$ sqlplus system/123456 as sysdba

SQL> shutdown immediate;

(2)关闭监听:

[oracle@slave-node2 ~]$ lsnrctl stop

1.11、设置oracle开机自启动:

1、查看dbstart和dbshut命令:

[oracle@slave-node2 ~]$ dbstart

ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener

Usage: /application/oracle/product/11.2.0/db_1/bin/dbstart ORACLE_HOME

[oracle@slave-node2 ~]$ dbshut

ORACLE_HOME_LISTNER is not SET, unable to auto-stop Oracle Net Listener

Usage: /application/oracle/product/11.2.0/db_1/bin/dbshut ORACLE_HOME

#错误原因是dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER设置有问题;

2、修改dbstart和dbshut脚本:

(1)修改dbstart脚本:

[oracle@slave-node2 ~]$ vim $ORACLE_HOME/bin/dbstart +80

ORACLE_HOME_LISTNER=$ORACLE_HOME

#修改第80行处如上:

(2)修改dbshut脚本:

[oracle@slave-node2 ~]$ vim $ORACLE_HOME/bin/dbshut +50

ORACLE_HOME_LISTNER=$ORACLE_HOME

#修改第50行处如上;

3、修改/etc/oratab文件开启oracle实例开机自启动功能:

[oracle@slave-node2 ~]$ vim /etc/oratab

orcl:/application/oracle/product/11.2.0/db_1:Y

#将N改为Y如上,格式为:"$ORACLE_SID:$ORACLE_HOME:<N|Y>"

4、自启动方法:

(1)登录到root用户:

[oracle@slave-node2 ~]$ su - root

Password:

Last login: Thu Aug 1 17:08:50 CST 2019 on pts/0

(2)方法一:将dbstart加入/etc/rc.local开机自启动文件中:

[root@slave-node2 ~]# chmod +x /etc/rc.d/rc.local

[root@slave-node2 ~]# echo 'su - oracle /application/oracle/product/11.2.0/db_1/bin/dbstart' >>/etc/rc.local

(3)方法二:创建oracle自启动脚本:

1)编写脚本:

[root@slave-node2 ~]# cat /etc/init.d/oracled

#!/bin/sh

#chkconfig: 2345 61 61

#description: Oracle 11g R2 AutoRun Servimces

#location: /etc/init.d/oracle

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

#ORACLE_SID="orcl"

#AUTHOR:LIUCHANG

ORACLE_BASE="/application/oracle"

ORACLE_HOME="$ORACLE_BASE/product/11.2.0/db_1"

ORA_OWNR="oracle"

PORT=`netstat -tunlp | grep 1521 | awk -F '[ :]+' '{print $4}'`

[ $UID -eq 0 ] || {

echo "This Shell only root execute"

exit 1

}

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

echo "Oracle startup: cannot start"

exit 1

fi

RETVAL=0

function check() {

RETVAL=$?

if [ $RETVAL -eq 0 ]; then

echo -e "$1\033[1;32m Success! \033[0m"

else

echo -e "$1\033[1;31m Faild! \033[0m"

fi

}

function start() {

PORT=`netstat -tunlp | grep 1521 | awk -F '[ :]+' '{print $4}'`

if [ "$PORT" = "1521" ]; then

echo "Oracle already Start!"

else

su - $ORA_OWNR $ORACLE_HOME/bin/dbstart &>/dev/null

check "Oracle Start"

fi

}

function stop() {

PORT=`netstat -tunlp | grep 1521 | awk -F '[ :]+' '{print $4}'`

if [ "$PORT" = "1521" ]; then

su - $ORA_OWNR $ORACLE_HOME/bin/dbshut &>/dev/null

check "Oracle Stop"

else

echo "Oracle already Stop!"

fi

}

function status() {

PORT=`netstat -tunlp | grep 1521 | awk -F '[ :]+' '{print $4}'`

if [ "$PORT" = "1521" ]; then

echo "Oracle is Running!"

else

echo "Oracle is Stop!"

fi

}

function Usage() {

echo "Usage:$0{start|stop|status|reload|reload}"

exit 1

}

function main() {

if [ $# -eq 1 ]; then

case "$1" in

start)

start

;;

stop)

stop

;;

status)

status

;;

reload|restart)

stop

sleep 30

start

;;

*)

Usage

esac

else

Usage

fi

}

main $*

2)将脚本加入到开机自启动:

[root@slave-node2 ~]# chmod u+x /etc/init.d/oracled

[root@slave-node2 ~]# chkconfig --add oracled

[root@slave-node2 ~]# chkconfig --list oracled

oracled 0:关 1:关 2:开 3:开 4:开 5:开 6:关

#在linux7版本上会报建议使用Systemctl命令的提示,忽略即可;

1.12、设置oracle监听:

oracle监听分为服务端和客户端两部分,服务端监听必须在安装oracle数据库的服务器上,而客户端网络服务可以配置在

任何一台能连接到oracle服务器的服务器上,也可以将两者都配置在oracle服务器上,本实验使用的是将两者都配置了oracle

服务器上;

上面的实验在建数据库"orcl"实例的时候已经创建好了服务端监听和客户端"orcl"数据库实例的网络

服务,这里我将其删除重新配置;

1、使用xstart登录到oracle用户:

[root@slave-node2 ~]# su - oracle

上一次登录:五 8月 2 23:17:46 CST 2019pts/2 上

[oracle@slave-node2 ~]$ export DISPLAY=172.16.1.254:0.0

[oracle@slave-node2 ~]$ netca

2、配置服务端监听:

(1)

(2)

(3)

(4)

(5)

(6)

(7)

#当oracle监听配置完成后,在控制台会输出"Listener started successfully"的提示;

3、配置客户端网络服务:

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

#控制端输出配置成功信息如下:

(12)

1.13、添加新的oracle实例:

1、使用xstart登录到oracle用户:

[root@slave-node2 ~]# su - oracle

上一次登录:五 8月 2 23:20:34 CST 2019pts/2 上

[oracle@slave-node2 ~]$ export DISPLAY=172.16.1.254:0.0

[oracle@slave-node2 ~]$ dbtca

2、添加实例:

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

使用自动内存管理,当点击Sizing设置时会报如下错误,原因是默认的/dev/shm空间不足;

解决办法如下:

[oracle@slave-node2 ~]$ su - root

Password:

Last login: Sat Aug 3 00:11:21 CST 2019 on pts/2

[root@slave-node2 ~]# df -h /dev/shm

文件系统 容量 已用 可用 已用% 挂载点

tmpfs 3.9G 1.9G 2.1G 49% /dev/shm

#/dev/shm使用的是内存的空间,默认大小是物理内存的一半,最大不超过物理内存的80%,可以看到/dev/shm可用

#大小只有2.1G(2068M),而警告的要求是3185M,所以(8*0.8-1.9)*1024M>3185M,我这里将tmpfs设置为6G;

[root@slave-node2 ~]# vim /etc/fstab

tmpfs /dev/shm tmpfs defaults,size=6G 0 0

#在/etc/fstab配置文件中添加如上配置;

[root@slave-node2 ~]# mount -o remount /dev/shm

#将/dev/shm重新挂载;

[root@slave-node2 ~]# df -h /dev/shm

文件系统 容量 已用 可用 已用% 挂载点

tmpfs 6.0G 1.9G 4.2G 32% /dev/shm

#可以看到/dev/shm的空间已经增大了;

点击"ok"继续配置;

(11)

(12)

(13)

(14)

(15)

(16)安装完成:

3、提示:

"oa"数据库实例安装完成后使用的是服务端默认监听(1521),会根据默认服务器监听自动配置"oa"数

据库实例的客户端网络服务,如果想使用新的端口号访问新建的"oa"数据库实例,可以添加新的服务端

监听,然后删除客户端网络服务重新配置;

4、修改数据库实例开机自启动"/etc/oratab"文件如下,将"oa"数据库实例开机自启服务打开:

[root@slave-node2 ~]# vim /etc/oratab

oa:/application/oracle/product/11.2.0/db_1:Y

到此,oracle数据库多实例操作就完成了;

#oracle是通过端口号来区分不同的数据库实例的,而oracle是通过不同的数据库实例名来区分不同的数据库实例的;

1、Centos7下安装Oracle11gR2及多实例的更多相关文章

  1. centos7下安装oracle11gR2

    Centos7安装oracle11gR2说明 Centos7安装oracle11gR2说明 环境准备 安装Oracle前准备 创建运行oracle数据库的系统用户和用户组 创建oracle数据库安装目 ...

  2. centos7下安装oracle11gR2的详细步骤

    环境准备 安装包: CentOS-7-x86_64-DVD linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip 本教 ...

  3. centos7.5安装Oracle11gR2

    centos7.5安装Oracle11gR2 说明:由于上一台旧的笔记本电脑(CPU:i5-7200,内存:8G,硬盘:128SSD+1T机械)卸任,所以打算在家搭建一个个人服务器(主要是换不锈钢盆不 ...

  4. Centos7下安装redis实战(单机版以及集群)

    一.背景 因项目需要,要引入redis做缓存,就在centos7下亲自安装了一遍redis,刚好趁着这个机会就来把redis的概念以及单机版和集群版redis安装步骤记录下来,在此和大家一起分享. 二 ...

  5. 在Centos7下安装与部署.net core

    在Centos7下安装与部署.net core 2018年02月28日 19:36:16 阅读数:388 个人安装流程,参照文档 https://www.cnblogs.com/Burt/p/6566 ...

  6. centos7下安装zookeeper&zookeeper集群的搭建

    一.centos7下安装zookeeper 1.zookeeper 下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 2.安装步骤 ...

  7. 在CentOS7下安装Oracle11教程

    前言 安装oracle时,发现网上的文章总是缺少一些信息,导致安装不顺利,因为我对一些文章进行了整合,用以备忘. Oracle安装 首先下载linux版本的oracle安装文件,然后通过XFTP上传到 ...

  8. CentOS7 下 安装 supervisor以及使用

    CentOS7 下 安装 supervisor 以及使用 手动安装 [注] linux环境必须安装 python 1.获取supervisor包:[https://pypi.python.org/py ...

  9. Linux CentOs7 下安装 redis

    Linux CentOs7 下安装 redis 请将以下命令放入linux命令行中运行 如果安装过程前没有安装GCC请先安装  命令如下 $ yum install gcc-c++ $ wget ht ...

随机推荐

  1. [bug] CDH 安装 Error : No matching Packages to list

    信息 分析 我的系统是CentOS 7,而 cm 安装包是配合 redhat 6 的,应该选择 redhat 7 目录下的包 参考 https://community.cloudera.com/t5/ ...

  2. shell中 -eq,-ne,-gt,-lt,-ge,-le数字比较符

    使用说明:     -eq //equals等于    -ne //no equals不等于    -gt //greater than 大于    -lt //less than小于    -ge ...

  3. MegaRAID BIOS设置阵列

    MegaRAID BIOS设置阵列 1.在初始界面可以看到physical View的界面,或者在左侧的菜单栏中点击选中即可,可以看到物理磁盘. 2.点击上一步的配置向导可以进入到配置向导界面 3.选 ...

  4. Mysql不知道默认密码情况下登录/重置/忘记密码

    场景一: 基础系统:linux 镜像:LAMP环境(Ubuntu 18.04 Apache PHP7.0) 问题:ERROR 1405 (28000): Access denied for user ...

  5. 第7讲 | ICMP与ping:投石问路的侦察兵

    第7讲 | ICMP与ping:投石问路的侦察兵 ping 是基于 ICMP 协议工作的.ICMP 全称 Internet Control Message Protocol,就是互联网控制报文协议. ...

  6. ASP.Net Core5.0 EF Core使用记录

    打算把之前开源的 基于ASP.Net Core开发一套通用后台框架 重新用ASP.Net Core 5写一遍,也算是巩固一下旧知识,学习下新知识.本文是项目搭建初期关于 EF Core 的使用记录 1 ...

  7. 一探即将到来的 C# 10

    前言 本来因为懒不想写这篇文章,但是不少人表示有兴趣,于是最后决定还是写一下. .NET 6 最近几个预览版一直都在开发体验(如 hot reload.linker 等).平台支持(如 Android ...

  8. Linux基础服务——Bind DNS服务 Part2

    Linux基础服务--Bind DNS服务 Part2 DNS反向解析与区域传送 实验环境延续Part1的实验环境. 反向区域配置 正向解析是域名到IP地址的映射,反向解析则是IP地址到域名的解析,在 ...

  9. npm ERR! Error: tunneling socket could not be established的解决问题

    一般是代理问题 可以通过在命令行运行下列命令解决: npm run server npm run webdriver-update

  10. 高并发Flask服务部署

    高并发Flask服务部署 AI模型持久化 OOP: 利用面向对象思想,实现算法在内存上的实例化及持久化.即一次模型加载,多次请求调用. class ocr_infer_class(threading. ...