实验环境:

系统: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. [DB] Spark Streaming

    概述 流式计算框架,类似Storm 严格来说不是真正的流式计算(实时计算),而是把连续的数据当做不连续的RDD处理,本质是离散计算 Flink:和 Spark Streaming 相反,把离散数据当成 ...

  2. 使用 parted 命令可以查看系统采用什么类型的分区表 gpt/mbr/msdos/ext/ext/ext2/ext3/ext4

      Linux磁盘表示方式 Linux以字母标识磁盘的个数 a:第一块 b:第二块 Linux用数字标识分区:1-4标识主分区或扩展分区 逻辑分区从5开始 例如:sda.sda1.sda2 低级格式化 ...

  3. mate-notification-daemon stopping, Mate notifications timeout

    mate-notification-daemon stopping, Mate notifications timeout Ask Question Asked 9 days ago Viewed 1 ...

  4. Python对比两个txt文件内容

    difflib模块作为python的标准库模块,无需安装,作用是比对文本之间的差异,且支持输出可读性比较强的html格式.#!coding=utf-8 # 2018-9-19 import sys i ...

  5. 二:使用VS2019 + .net 6创建 webapi 项目

    0.创建一个.net 6项目.由于目前.net 6还是预览版,所以需要添加预览版SDK功能.工具 -> 选项 -> 环境 -> 预览功能 ,勾选使用.net sdk预览版. 1.新建 ...

  6. Python+Selenium - js操作

    js操作:日期框 本部分涉及两个知识点:DOM树和js DOM树教程链接: https://www.w3school.com.cn/htmldom/index.asp js教程链接 https://w ...

  7. 共享CUDA内存

    共享CUDA内存 进程间共享 此功能仅限于Linux. 将设备阵列导出到另一个进程 使用CUDA IPC API,可以与同一台计算机上的另一个进程共享设备阵列.为此,请使用.get_ipc_handl ...

  8. 骑士CMS<6.0.48 模板注入文件包含漏洞复现及遇到的坑

    1.坑 payload:variable=1&tpl=<?php phpinfo(); ob_flush();?>/r/n<qscms/company_show 列表名=&q ...

  9. python接口自动化之读取excel表的数据(使用openpyxl模块)

    1.安装openpyxl:pip install openpyxl 2.基础知识,直接上代码 import openpyxl #导入模块 wd2=openpyxl.load_workbook('stu ...

  10. 教你三种jQuery框架实现元素显示及隐藏动画方式

    摘要:在jQuery框架中对元素对象进行显示和隐藏有三种方式,分别是"默认方式显示和隐藏"."滑动方式显示和隐藏"."淡入淡出显示和隐藏". ...