1、Centos7下安装Oracle11gR2及多实例
实验环境:
系统: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及多实例的更多相关文章
- centos7下安装oracle11gR2
Centos7安装oracle11gR2说明 Centos7安装oracle11gR2说明 环境准备 安装Oracle前准备 创建运行oracle数据库的系统用户和用户组 创建oracle数据库安装目 ...
- centos7下安装oracle11gR2的详细步骤
环境准备 安装包: CentOS-7-x86_64-DVD linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip 本教 ...
- centos7.5安装Oracle11gR2
centos7.5安装Oracle11gR2 说明:由于上一台旧的笔记本电脑(CPU:i5-7200,内存:8G,硬盘:128SSD+1T机械)卸任,所以打算在家搭建一个个人服务器(主要是换不锈钢盆不 ...
- Centos7下安装redis实战(单机版以及集群)
一.背景 因项目需要,要引入redis做缓存,就在centos7下亲自安装了一遍redis,刚好趁着这个机会就来把redis的概念以及单机版和集群版redis安装步骤记录下来,在此和大家一起分享. 二 ...
- 在Centos7下安装与部署.net core
在Centos7下安装与部署.net core 2018年02月28日 19:36:16 阅读数:388 个人安装流程,参照文档 https://www.cnblogs.com/Burt/p/6566 ...
- centos7下安装zookeeper&zookeeper集群的搭建
一.centos7下安装zookeeper 1.zookeeper 下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 2.安装步骤 ...
- 在CentOS7下安装Oracle11教程
前言 安装oracle时,发现网上的文章总是缺少一些信息,导致安装不顺利,因为我对一些文章进行了整合,用以备忘. Oracle安装 首先下载linux版本的oracle安装文件,然后通过XFTP上传到 ...
- CentOS7 下 安装 supervisor以及使用
CentOS7 下 安装 supervisor 以及使用 手动安装 [注] linux环境必须安装 python 1.获取supervisor包:[https://pypi.python.org/py ...
- Linux CentOs7 下安装 redis
Linux CentOs7 下安装 redis 请将以下命令放入linux命令行中运行 如果安装过程前没有安装GCC请先安装 命令如下 $ yum install gcc-c++ $ wget ht ...
随机推荐
- gparted 当分区空间大于1T 用gparted分区
lsblkfdisk -lparted -s /dev/sdb mklabel msdos parted -s /dev/sdb mkpart primary 0 100%lsblk dfparted ...
- CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址、服务启动等)
CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址.服务启动等) 原 一事能狂便少年 发布于 2016/12/27 11:16 字数 1113 阅读 1.3K 收藏 0 ...
- MySQL报错ERROR 1436 (HY000): Thread stack overrun:
今天搭私服的时候,卡在角色创建画面,日志报错如上. 这是MySQL报错ERROR 1436 (HY000): Thread stack overrun: 修改方法 vim /etc/my.cnf ...
- Linux_计划任务理论概述
一.计划任务概述 1.计划任务概述: 计划任务分为: 一次性任务 周期性任务 在Linux系统的计划任务服务crond 可以满足周期性执行任务的需求. crond进程每分钟会处璇一次计划任务,计划任务 ...
- shell基础之for循环语句
For语句 格式:for name [ [ in [ word ... ] ] ; ] do list ; done for 变量名 in 取值列表; do 命令 done 或者 for 变量名 in ...
- Centos7.3 进入救援模式,解决虚拟机开机引导只能看到一个横杠
问题描述:搭建在CAS服务器中的虚拟机开机后只能看到一个横杠,因为开发同事的一些操作使glibc库/lib64/libc.so.6软链接失效 1.libc.so.6 是c运行时库 glibc的软链接, ...
- 完全理解Python 迭代对象、迭代器、生成器
在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...
- 10.16-17 mailq&mail:显示邮件传输队列&发送邮件
mailq命令 是mail queue(邮件队列)的缩写,它会显示待发送的邮件队列,显示的条目包括邮件队列ID.邮件大小.加入队列时间.邮件发送者和接受者.如果邮件进行最后一次尝试后还没有将邮件投递出 ...
- 报错: Uncaught TypeError: Cannot read property 'prototype' of undefined(Day_43)
报错原因 引入的js顺序错误,elementUI需要依赖于Vue,调整顺序即可. 调整后
- Lidar激光雷达市场
Lidar激光雷达市场 近年来,激光雷达技术在飞速发展,从一开始的激光测距技术,逐步发展了激光测速.激光扫描成像.激光多普勒成像等技术,如今在无人驾驶.AGV.机器人等领域已相继出现激光雷达的身影. ...