在经历了一番安装Oracle数据库的折腾后,感觉有必要为自己所踩过的坑做个记录(本篇文章几乎包含了在安装Oracle中会遇到的所有问题)。我在安装过程中也参考了网上的一些教程,但发现大部分都是随手复制粘贴,安装过程中还会遇到问题。由于Oracle安装过程中,一旦哪里配置出现问题,很难排除,最后很可能得重装,所以我决定将自己的安装过程做一个完整的记录,以备不时之需。本文介绍在CentOS7上安装Oracle11g数据库。
文章目录
一、环境准备与检查
1.添加用户和用户组
2.下载oracle的安装包
3.上传安装包,解压
4.硬件检查
5.软件检查
6.配置内核参数
7.为Oracle用户添加shell配置
8.创建并配置环境变量
二、正式安装
1.使用oracle用户登录图形界面
2.图形化界面配置
三、测试连接数据库
一、环境准备与检查
1.添加用户和用户组
添加oracle用户,后续安装过程中需要使用oracle用户权限,来创建文件等操作,将其归为oinstall用户组,附加用户组为dba。
[root@Main-node ~]# groupadd oinstall
[root@Main-node ~]# groupadd dba
[root@Main-node ~]# useradd -g oinstall -G dba oracle
使用id oracle查看创建的oracle用户信息。
2.下载oracle的安装包
官网地址为:Database Software Downloads | Oracle
3.上传安装包,解压
我个人喜欢将安装的软件放在/usr/local目录下
[root@Main-node ~]# mkdir -p /usr/local/oracle
[root@Main-node ~]# cd /usr/local/oracle
[root@Main-node oracle]# ls -lh
total 2.2G
-rw-r--r--. 1 root root 1.2G Nov 7 19:10 linux.x64_11gR2_database_1of2.zip
-rw-r--r--. 1 root root 1.1G Nov 7 19:10 linux.x64_11gR2_database_2of2.zip
使用unzip命令依次解压
[root@Main-node oracle]# unzip linux.x64_11gR2_database_1of2.zip
[root@Main-node oracle]# unzip linux.x64_11gR2_database_2of2.zip
解压后就会得到一个database的文件夹
4.硬件检查
- 内存要求,至少1G的RAM
[root@Main-node database]# grep MemTotal /proc/meminfo
MemTotal: 4028432 kB
我这有将近4G的内存,然后要检查RAM与交换分区之间的要求
RAM | 需要交换空间大小 |
1GB~2GB | RAM的1.5倍 |
2GB~16GB | 等于RAM大小 |
超过16GB | 16GB |
- 查看交换分区大小
[root@Main-node database]# grep SwapTotal /proc/meminfo
SwapTotal: 4063228 kB
因为我这内存在4G左右,交换分区大小与之接近,因此无需修改。我之前也修改过交换分区的大小,挺简单的,计算好了就没错。增加交换分区方法(原来不够的,只需添加少的空间即可):
- 在根目录生成swapfile,if表示输入,of表示输出,cout设定块数,bs设定块大小(单位可选:k, M, G),生成8G的swap代码如下:
dd if=/dev/zero of=/var/swapfile bs=1024k count=8192
- 格式化为交换分区,路径和上面的一致
mkswap /var/swapfile
- 启动交换分区,路径依然一致
swapon /var/swapfile
- 将交换分区写入/etc/fstab中
echo "/var/swapfile swap swap defaults 0 0">>/etc/fstab
也可用vi /etc/fstab手工写入方式,如下图
- 硬盘检查,保证/tmp目录至少有1GB的可用空间
[root@Main-node database]# df -h /tmp
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 46G 8.4G 37G 19% /
5.软件检查
- 修改系统标识
centos系统本质其实是redhat,我们在安装Oracle的过程中,为了防止后面出现问题,最好是将系统标识修改为redhat。
[root@Main-node database]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@Main-node database]# vim /etc/redhat-release
[root@Main-node database]# cat /etc/redhat-release
redhat-7
- 查看是否安装需要的软件包
- 需要安装的软件包,比较官方的请看文档:Oracle Database Preinstallation Tasks
安装上述所有软件包的语句:
yum install -y binutils compat-gcc* compat-glibc* compat-libcap1 compat-libstd* compat-libstdc++-33 compat-libstdc++-33.i686 compat-libstdc++-33*.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-devel.i686 glibc-devel*.i686 glibc-headers glibc.i686 glibc*.i686 ksh libaio libaio-devel libaio-devel.i686 libaio-devel*.i686 libaio.i686 libaio*.i686 libgcc libgcc.i686 libgcc*.i686 libstdc++ libstdc++-devel libstdc++-devel*.i686 libstdc++.i686 libstdc++*.i686 libXp make numactl sysstat unixODBC unixODBC-devel unixODBC-devel*.i686 unixODBC*.i686
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
部分软件包显示已经安装,我们只需要执行以下语句,将软件包全部安装一遍即可。
yum install -y binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel compat-libcap1* libXi* libXtst* glibc-devel.i686 compat-libstdc++-33.i686
glic-devel.i686 和 compat-libstdc++-33.i686(不同版本可能需要安装的32位的glibc-devel包的名称有所不同,反正尽量把包都装了),否则在最后安装Oracle过程中会提示Error in invoking target 'installer' of makefile错误。(此处我也是踩了很多坑了,所以在安装软件包时要尽量全一点。)
然后我们再一次检查,软件包是否已全部安装。
rpm -qa binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel compat-libcap1* libXi* libXtst* glibc-devel.i686
好了,这样我们的软件包就全部安装了,接着进行下一步。
6.配置内核参数
因为我们只是简单的在自己的虚拟机上安装一个Oracle数据库用于练习,所以只需要最简单的配置就行了。此外可以参考官方文档进行详细配置。Database Installation Guide - Contents
/etc/sysctl.conf文件,在文档末尾添加以下内容。
vim /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
- 输入 /sbin/sysctl -p,使配置快速生效。
7.为Oracle用户添加shell配置
vim /etc/security/limits.conf 添加以下参数
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
vim /etc/pam.d/login 添加一行配置内容
session required pam_limits.so
vim /etc/profile,添加脚本
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
8.创建并配置环境变量
- 为了方便操作,我们在根目录下创建一个oracle目录。
[root@Main-node ~]# mkdir -p /oracle/app
[root@Main-node ~]# chown -R oracle:oinstall /oracle
[root@Main-node ~]# chmod -R 775 /oracle
- 配置oracle用户环境变量
[root@Main-node ~]# su - oracle
[oracle@Main-node ~]$ vim .bash_profile
- 添加以下环境变量
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/app
export ORACLE_SID=oracleSID
export PATH=$ORACLE_HOME/bin:$PATH
前期的准备工作就告一段落了,下面就可以进入正式安装环节!
二、正式安装
在安装之前有一点需要先说明,因为Oracle的安装需要用到图形界面,所以我们需要先打开一个图形化界面。我们有很多种方式可以打开图形界面:
方式1:直接在虚拟机上操作,只是将命令行模式换成图形界面模式。
systemctl set-default graphical.target
换成图形界面后需要重启虚拟机
shutdown -r now
方式2:使用xstart
方式3:使用vnc
接下来我们只需采用其中的一种方式进行以下安装步骤即可。若是不想安装其他软件,可以使用方式1。
下面进入正题。
1.使用oracle用户登录图形界面
[root@Main-node ~]# su - oracle
进入之前解压好的database文件夹,执行./runInstaller
[oracle@Main-node ~]$ cd /usr/local/oracle/database
[oracle@Main-node database]$ ./runInstaller -jreLoc /usr/local/java/jdk1.8.0_221/
./runInstaller的时候加上我们的jdk的目录来指定jre所在的位置可以解决后面安装过程中出现的弹窗显示不全问题(可以先看后面,后面我也讲了这个问题),即执行./runInstaller -jreLoc /usr/local/java/jdk1.8.0_221/(这个目录是你自己本地的jdk的目录位置) ,
运行上述脚本,在我们以上配置都正确的情况下,一般会出现下面的界面,提示我们监视器颜色未通过。我们只需要为oracle用户设置DISPLAY变量即可。
(1)切换回root,执行xdpyinfo,若提示unable to open display " ". 则执行
export DISPLAY=:0
备注:1.这里DISPLAY=:0表示设置在本地监视器,即在用本地的可视化,若使用xstart或者vnc则需要暴露其他端口,如export DISPLAY=:1,否则会一直提示unable to open display ...
2.暴露的端口一定要对应,若把端口1暴露给了vnc,而又是在xstart中运行的./runInstaller,那么此时安装oracle的界面已经起在vnc中(我这里碰到的这个问题,在xstart中等了老半天,还以为哪里配置错了,结果打开vnc之后发现安装界面的窗口已经起起来了)
再次执行xdpyinfo,可以看到信息显示,我们此时只需记住name of display后面的信息,因为我们暴露的是本地0端口,那么这里显示出来就肯定是 :0
(2)执行xhost +,提示access control disabled, clients can connect from any host,此时表示可以从oracle用户接入。
[root@Main-node database]# xhost +
access control disabled, clients can connect from any host
(3)切换到oracle用户,执行export DISPLAY=:0(这里的端口 0 一定要是你自己设置的暴露的端口)
[root@Main-node database]# su - oracle
Last login: Sat Nov 9 17:46:56 CST 2019 on pts/1
[oracle@Main-node ~]$ export DISPLAY=:0
xdpyinfo,即可看到信息输出
此时我们再次进入database目录下,执行./runInstaller,然后就可以看到三项检测都通过进入到了oracle的安装界面,当显示出下图,即表示可以进行安装了。
[oracle@Main-node ~]$ cd /usr/local/oracle/database/
[oracle@Main-node database]$ ./runInstaller
2.图形化界面配置
接下来,我们主要在Oracle安装的图形化界面上进行设置。
这里在多说一句,若安装界面为乱码,则需要配置语言为英文。若没有出现该问题,可以跳过该步骤直接从下面的(1)开始继续安装。
出现安装界面为乱码,按以下步骤解决。退出安装界面,切换回root用户,编辑/etc/profile
[oracle@Main-node ~]$ su
Password:
[root@Main-node oracle]# vim /etc/profile
添加一行代码
export LANG=en_US.UTF-8
保存,退出。执行source /etc/profile使配置生效
[root@Main-node oracle]# source /etc/profile
切换回oracle用户,进入database目录,运行.runInstaller 继续安装。
Oracle的安装总共21步,请耐心!下面开始。
(1) 去掉勾,下一步,表示不接受更新。在弹出的窗口中提示没有提供邮箱,不用管,直接点yes即可。
(2)默认选择创建并配置数据库,下一步。
(3)因为我们不是在自己的笔记本桌面上安装Oracel,所以需要选择服务器类型,下一步。
(4)选择单实例数据库安装,下一步。
(5)典型安装会执行所有的数据库安装,我们这里选择高级安装,可以为不同的账户提供不同的密码等,下一步。
(6)语言选择英文和简体中文,下一步。
(7)选择版本为企业版,下一步。
(8)选择Orace软件安装的配置路径,这里默认即可,因为我们前面已经在配置中配置好了,然后点下一步。
(9)Inventory Directory我们选择放在/home/oracle/inventory下,该目录记录一些清单信息。
(10)选择通用目的,下一步。
(11)Oracle服务标识,SID我们设置为oracleSID,下一步。
(12)分配的内存默认即可(一般是40%),这一步中我们需要修改字符集为UTF-8,下一步。
(13)邮件通知不用配置,直接下一步。
(14)默认选择即可,文件系统进行数据库存储 ,下一步。
(15)自动备份我们不需要,看个人的实际需求即可,下一步。
(16)选择使用相同的密码,最好设置一个包含大小写和数字的密码,并记住,若采用简单密码提示警告其实也可以不用管,然后继续下一步。
(17)数据库管理组,默认即可,下一步。
(18)检查内核参数和软件包时会提示failed,但是实际上我们的前期工作已经做好了,软件包的版本不会低于最小需求的版本,所以我们这里选择忽略全部,然后下一步。
(19)给出的一些总结信息,我们可以直接点Finish。
(20)等待安装完成。
安装过程中会弹出如下图所以的一个界面,看不到内容,我们可以将鼠标移动到小窗口边缘拖拉以显示信息(也可以直接右键点两次关闭)。
提示:小窗口的解决还可以在运行./runInstaller的时候加上我们的jdk的目录来指定jre所在的位置,即执行./runInstaller -jreLoc /usr/local/java/jdk1.8.0_221/(这个目录是你自己本地的jdk的目录位置)
./runInstaller -jreLoc /usr/local/java/jdk1.8.0_221/
Password Management...来配置一下密码。
此处未显示出来的错误为 Error in invoking target "install " of makefile 的错误,多半是因为我们软件包没装全而导致的,在xshell中安装前面额外提到的两个软件包之后continue
点击后再次弹出小窗口,同样可以将鼠标移动到小窗口边缘,左键拖动调整窗口,调整至下图所示。
然后我们可以解锁scott账户,修改SYS, SYSTEM, SCOTT三者密码,可以设置成相同的,然后点击OK。
再次点击ok后,若弹出小窗口继续鼠标移动到边缘,左键拖拉调整即可完整显示。这里需要执行一下脚本,我们点击OK执行一下就好了。
(21)安装完成,点击close。
三、测试连接数据库
1.使用以下命令进行连接
[oracle@Main-node ~]$ sqlplus / as sysdba
开启数据库实例:startup,关闭数据库实例:shutdown immediate
2.用scott登录,输入密码后查询。
经过上述的辛苦配置,Oracle终于成功安装! 还有疑问可以在底下评论备注。