社会犹如一条船,没跟人都要有掌舵的准备。——易卜生
CentOS7安装Oracle11g
项目 | 版本 |
---|---|
操作系统 | CentOS 7.6.1810 x86_64(Py3.7.9) |
oracle | linux.x64_11g_11.2.0.4 |
Oracle11g版本选择:
强烈建议下载 11.2.0.4版本的,oracle版本是官网下载的11.2.0.1有点小坑在里面,我是后来遇到坑后换成的 11.2.0.4版本。
准备工作
兵马未动,粮草先行。
在安装之前,我们要做一些简单的准备工作,大致如下:
1:创建oracle用户和组
2:图形化的操作环境:VNC远程或者直接本地图形化操作。
参考网站
一键安装和配置VNC图形化相关
root执行以下命令 可以直接整体复制粘贴到终端就行(不用一行一行复制)。
代码语言:shell复制#图形界面必备`X Window System`
yum -y groupinstall "X Window System"
#安装epel源
yum -y install epel-release
#安装VNC 图形需要的软件
yum -y install tigervnc-server openbox xfce4-terminal tint2 cjkuni-ukai-fonts network-manager-applet
#自动修改/etc/xdg/openbox/autostart配置文件
echo 'if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then' > /etc/xdg/openbox/autostart
echo ' eval `dbus-launch --sh-syntax --exit-with-session`' >> /etc/xdg/openbox/autostart
echo 'fi' >> /etc/xdg/openbox/autostart
echo 'tint2 &' >> /etc/xdg/openbox/autostart
echo 'nm-applet &' >> /etc/xdg/openbox/autostart
echo 'xfce4-terminal &' >> /etc/xdg/openbox/autostart
echo ' ' >> /etc/xdg/openbox/autostart
#防火墙放行VNC端口
firewall-cmd --add-port=5901/tcp
firewall-cmd --add-port=5901/tcp --permanent
创建用户
为了安全起见,不建议使用root
做为vnc
用户。单独创建一个用户比较安全。
既然安装oracle
,用户名我使用oracle
。
root执行以下命令 可以直接整体复制粘贴到终端就行(不用一行一行复制)。
代码语言:shell复制#创建database用户组
groupadd database
#创建oracle用户并放入database组中
useradd oracle -g database
#设置oracle密码
passwd oracle
执行完之后会提示new password
设置用户密码 我这里设置的:admin
开启 VNC服务
切换到oracle用户
代码语言:shell复制su oracle
#首次运行,生成~/.vnc/xstartup等配置文件
vncserver :1 -geometry 1024x768
我这里设置的密码是 :vncadmin
oracle用户执行以下命令,可以直接整体复制粘贴到终端就行(不用一行一行复制)。
代码语言:shell复制#配置VNC默认启动openbox
echo "openbox-session &" > ~/.vnc/xstartup
# 停止服务
vncserver -kill :1
#重新开启vnc服务
vncserver :1 -geometry 1024x768
客户端连接VNC实现远程控制
使用你的VNC客户端连接就行了,会的就略过吧。
我用的是:VNC Viewer点击下载
我的地址如下:47.99.54.83:5901
公网IP 端口回车就可以,如果提示Timed out waiting for a response from the computer
端口未被开放,我这里是阿里云服务器给安全组配置好端口就可以连接上了,输入设置的密码就可以
如果你连接的时候发现,没有界面,是黑屏的只有一个鼠标,那么可以重启一下VNC服务试试。
切换到oracle用户su oracle
命令:
代码语言:shell复制vncserver -kill :1
vncserver :1 -geometry 1024x768
安装oracle安装程序依赖程序包
root用户执行以下命令:su root
yum -y install binutils compat-libcap1 compat-libstdc -33 compat-libstdc -33*.i686 elfutils-libelf-devel gcc gcc-c glibc*.i686 glibc glibc-devel glibc-devel*.i686 ksh libgcc*.i686 libgcc libstdc libstdc *.i686 libstdc -devel libstdc -devel*.i686 libaio libaio*.i686 libaio-devel libaio-devel*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686 libXp
安装中文字体解决中文乱码问题
默认情况下,因CentOS 中缺少中易宋体18030所以会导致中文显示成□□□□□的问题。
中文是世界上最美的文字,不能显示太可惜了。很简单增加所需字体就行了。操作如下:
下载字体:
https://download.csdn.net/download/lxyoucan/14968070
root执行以下命令:
新建文件夹
代码语言:shell复制mkdir -p /usr/share/fonts/zh_CN/TrueType
~~~
`zysong.ttf`上传到/usr/share/fonts/zh_CN/TrueType目录
```shell
chmod 75 /usr/share/fonts/zh_CN/TrueType/zysong.ttf
代码语言:txt复制字体安装完成,这样安装oracle就不会中文乱码了。
就喜欢英文安装界面,想用英文界面怎么办呢?
如果不想用中文界面安装,安装前运行以下命令,临时使用英文环境。
```shell
LANG=en_US
代码语言:txt复制## 上传并解压安装包
安装包我上传到网盘上了需要直接 [下载](https://pan.baidu.com/s/1ocf-jBwHwk0mDQm7eUBTRw)
提取码:366c
上传安装包到 CentOS7服务器。我上传到 `/home/oracle/`目录了。
上传以后,文件路径和名称如下:
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414151341.png)
我这里是使用宝塔面板上传解压的,也可以使用unzip解压
如果没有unzip工具,安装unzip用于文件解压root执行以下面
```shell
yum install unzip
unzip 需要解压的文件
代码语言:txt复制安装oracle实战
准备工作已经结束了,接下来的安装工作就跟在windows下安装oracle差不多了。先总结一下,基本就是根据界面提示就可以一路“下一步(N)”就可以完成了。
需要稍微注意的就是:
桌面类与服务器类的选择
超级管理员密码的设置
先决条件检查
其它的根据自己的需要,或者一路“下一步(N)”就可以完成了。为了一些朋友更直观的观看,我把每一步都截图了,可以跳着看。
oracle用户登录vnc远程桌面。
进入`~/database/`目录。
```shell
#进入安装目录
cd ~/database/
#运行安装程序
./runInstaller
代码语言:txt复制## 配置安全更新
根据需要设置,我这里就不设置了。![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414151535.png)
## 网络安装选项
选择“`创建和配置数据库(C)`”
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414151716.png)
## 桌面类 or 服务器类
描述中已经说的很清楚了,根据自己需要选择。这里我选择的是`服务器类(S)`。
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414151940.png)
## 安装类型
我选默认的,`单实例数据库安装(S)`根据实际需要选择。
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414152014.png)
## 典型安装
默认`典型安装(T)`即可。
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414152103.png)
## 典型安装配置
主要设置一下密码,其他默认即可。这里密码要在大写字母 小写字母 数字组合。比如:我设置的是`Admin0102`。
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414152410.png)
## 创建产品清单
默认即可。
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414152438.png)
执行先决条件检查
这一步要稍花一些时间处理。每个人的显示可能略有不同。比如:物理内存的检测,我这个1G内存就会提示小于预期。
处理方法:
根据提示信息做处理即可,比如:内存小了,加大内存啊。
执行修补并再次检查(F) 可以自动修复
方法上面描述的很清楚。
root权限执行:
~~~shell
/tmp/CVU_11.2.0.1.0_oracle/runfixup.sh
~~~
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414153544.png)
修复之后,警告我全部忽略了。
## 概要
这里显示了安装配置的概要部分,检查一下是否正确。没问题就开始安装吧!
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414162916.png)
## 安装产品
上面折腾了这么久终于迎来了真正的安装操作了。
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414163116.png)
## 进度70% ins_emagent.mk错误弹框
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414165108.png)
编辑:
/home/oracle/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
约176行,可以搜索`$(MK_EMAGENT_NMECTL)` 关键字快速找到。
修改后如下:
~~~shell
#===========================
# emdctl
#===========================
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL) -lnnz11
#===========================
# nmocat
#===========================
~~~
点击重试。
## 复制数据库文件
上面的问题解决后,安装一会儿就会出现如下的界面。耐心等待即可。
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414165220.png)
## 数据库创建完成
经过一段时间的等待,终于弹出如下界面。
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414170035.png)
## 执行配置脚本
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414170238.png)
根据上图提示,root 执行上面两个脚本就可以了。
执行结果如下:
[root@localhost ~]# /home/oracle/app/oraInventory/orainstRoot.sh
更改权限/home/oracle/app/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。
更改组名/home/oracle/app/oraInventory 到 database.
脚本的执行已完成。
```shell
root@localhost ~# /home/oracle/app/oraInventory/orainstRoot.sh
更改权限/home/oracle/app/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。
更改组名/home/oracle/app/oraInventory 到 database.
脚本的执行已完成。
root@localhost ~# /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
代码语言:txt复制ORACLE_OWNER= oracle
代码语言:txt复制ORACLE_HOME= /home/oracle/app/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 script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
root@localhost ~#
代码语言:txt复制执行完点击Ok
## Oracle Database 的安装已成功
经过我们的努力,终于走到了这一步。
Oracle Database 的安装已成功。
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414170343.png)
点击`关闭`即可。
# 防火墙放行1521
默认端口是1521
```shell
防火墙放行1521oracle端口
firewall-cmd --add-port=1521/tcp
firewall-cmd --add-port=1521/tcp --permanent
代码语言:txt复制# 配置环境变量
```shell
su oracle
代码语言:txt复制切换到oracle用户操作。
编辑配置文件
```shell
vi ~/.bash_profile
代码语言:txt复制文件末尾加入以下内容,ORACLE_HOME中换成你实际安装的路径
```shell
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1/
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
代码语言:txt复制使用配置文件立即生效。
```shell
source ~/.bash_profile
代码语言:txt复制# 日常运维 启动oracle
```shell
su oracle
sqlplus /nolog
SQL> connect /as sysdba
SQL> startup
代码语言:txt复制## sys用户登录
```shell
oracle@localhost ~$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Tue Feb 2 02:59:38 2021
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> connect as sysdba
Enter user-name: sys
Enter password:
Connected.
SQL> select 1 from dual;
代码语言:txt复制 1
代码语言:txt复制 1
SQL>
代码语言:txt复制如果启动报错:ORA-27154: post/wait create failed
还会伴随以下几个错误:
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates
查看当前设置
```shell
cat /proc/sys/kernel/sem
代码语言:txt复制4个数据分别对应:SEMMSL SEMMNS SEMOPM SEMMNI
具体的意义这里不作説明,只说下修改方案。
将`/proc/sys/kernel/sem`下的`kernel.sem`改成`kernel.sem =5010 641280 5010 128`
然后执行
```shell
sysctl -p
代码语言:txt复制然后重新连接就可以了。
![](https://minking.oss-cn-beijing.aliyuncs.com/img/20220414173944.png)
没有问题,说明oracle本地连接oracle成功。
## 启动监听
```shell
lsnrctl start
使用Navicat16连接测试!
到此结束!!!