使用VirtualBox安装CentOS并安装Oracle数据库.md

本文最后更新于:2025年6月25日 晚上

由于最近需要学习Oracle,又苦于没有现成可用的服务器,所以选用Virtual Box虚拟机,在里面安装一个CentOS7系统当作云服务器使用。

本文环境如下:

主机:Windows 10 LTSC企业版

VirtualBox:VirtualBox 7.0

安装VirtualBox

直接去官网下载:Oracle VM VirtualBox,选择Windows hosts

下载完安装,一路下一步就行

在VirtualBox中安装CentOS7

下载CentOS7镜像

官网下载链接:http://isoredirect.centos.org/centos/7/isos/x86_64/

开源镜像站:https://mirrors.aliyun.com/centos/7/isos/x86_64/

下载:CentOS-7-x86_64-DVD-1804.iso

各个版本的ISO镜像文件说明:

CentOS-7-x86_64-DVD-1708.iso 标准安装版(推荐)

CentOS-7-x86_64-Everything-1708.iso 完整版,集成所有软件(以用来补充系统的软件或者填充本地镜像)

CentOS-7-x86_64-LiveGNOME-1708.iso GNOME桌面版

CentOS-7-x86_64-LiveKDE-1708.iso KDE桌面版

CentOS-7-x86_64-Minimal-1708.iso 精简版,自带的软件最少

CentOS-7-x86_64-NetInstall-1708.iso 网络安装版(从网络安装或者救援系统)

安装CentOS7

  1. 打开VirtualBox

  2. 选择主页右侧的新建

  3. 填写配置

    • 名称随便填

    • 文件夹(用于存放数据的位置,建议选在比较大的磁盘)

    • 虚拟光盘(下载的原版系统镜像,像上述下载的CentOS7) - 可以先不选,等开机的时候再挂载

    下一步

    • 内存调整,处理器建议调整至主机的一半

    下一步

    • 虚拟磁盘空间(镜像系统需要使用的磁盘大小)
  4. 双击系统安装,选择原版镜像

  5. 启动之后 建议选择带GONE桌面的系统 以及 网络连接上

为了方便主机与虚拟机之间粘贴命令,开启双向复制粘贴共享:

右键安装的虚拟机系统 -> 设置 -> 存储 -> 控制器:SATA -> 勾选[使用主机输入输出(I/O)缓存] -> 选择具体下方SATA盘符 -> 勾选 [固态驱动器]

常规 -> 高级 -> 共享粘贴板 -> [双向] -> 拖放 -> [双向]

虚拟机联网

虽然目前为止虚拟机是可以上网的

ping www.baidu.com
PING www.a.shifen.com (14.119.104.189) 56(84) bytes of data.
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=1 ttl=52 time=84.3 ms
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=2 ttl=52 time=56.9 ms

但是,主机ping不通虚拟机,虚拟机也ping不通主机,所以需要再设置一下

VirtualBox主页 -> 管理-> 工具 -> 网络管理器 -> NAT网络 -> 创建

虚拟机关机,右键虚拟机 -> 设置 -> 网卡1 -> 连接方式 [NAT] -> 高级混杂模式 [拒绝] -> 网卡2 -> 连接方式 [仅主机] -> 高级混杂模式 [全部允许]

现在再试试主机与虚拟机互ping吧

安装增强工具

用于调整分辨率等

启动虚拟机,打开终端窗口,使用 [root] 用户

安装 gcc-c++ 编译器

yum  -y   install    gcc-c++

安装内核Kernal库

yum   -y   install   kernel   kernel-devel

需要联网使用 yum 命令!!!

重启系统

init 6

选择上方 设备 -> 分配光驱 -> VBoxGuestAdditions.iso

虚拟机内运行就可以,要是没弹出运行,双击桌面上的 [VBox_GAs_7.0.12] -> VBoxLinuxAdditions.run 这个文件拖到有 [root] 权限的 终端窗口内回车

在CentOS7中安装Oracle的前置条件

主机上下载Oracle11G安装文件:

《Oracle11GR2_Linux》 https://www.aliyundrive.com/s/HA2YMBtkUTS

关闭防火墙

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service

[root@localhost ~]# vim /etc/selinux/config
将SELINUX=active改为SELINUX=disabled

# 退出
:wq 

安装依赖包

[root@localhost ~]# yum install -y automake autotools-dev binutils bzip2 elfutils expat \
gawk gcc gcc-multilib g++-multilib lib32ncurses5 lib32z1 \
ksh less lib32z1 libaio1 libaio-dev libc6-dev libc6-dev-i386 \
libc6-i386 libelf-dev libltdl-dev libodbcinstq4-1 libodbcinstq4-1:i386 \
libpth-dev libpthread-stubs0-dev libstdc++5 make openssh-server rlwrap \
rpm sysstat unixodbc unixodbc-dev unzip x11-utils zlibc unzip cifs-utils \
libXext.x86_64  glibc.i686

如果上述命令报错,则直接直接下面的命令。

[root@localhost ~]# yum -y install xz wget gcc-c++ ncurses ncurses-devel \
cmake make perl openssl openssl-devel gcc* libxml2 \
libxml2-devel curl-devel libjpeg* libpng* freetype* \
make gcc-c++ cmake bison perl perl-devel  perl perl-devel \
glibc-devel.i686 glibc-devel libaio readline-devel \
zlib.x86_64 zlib-devel.x86_64 libcurl-* net-tool*  \
sysstat lrzsz dos2unix telnet.x86_64 iotop unzip \
ftp.x86_64 xfs* expect vim psmisc openssh-client* \
libaio bzip2  epel-release automake binutils bzip2 \
elfutils expat gawk gcc  ksh less make openssh-server \
rpm sysstat unzip unzip cifs-utils libXext.x86_64  \
glibc.i686 binutils compat-libstdc++-33 \
elfutils-libelf elfutils-libelf-devel \
expat gcc gcc-c++ glibc glibc-common \
glibc-devel glibc-headers libaio \
libaio-devel libgcc libstdc++ libstdc++-devel \
make sysstat unixODBC unixODBC-devel libnsl

创建oracle用户

1.[root@localhost ~]# groupadd oinstall
2.[root@localhost ~]# groupadd dba
# 新增oracle用户,该用户初始组为oinstall,控制软件和补丁的安装;附加组为dba,负责控制数据库的创建和管理等
3.[root@localhost ~]# useradd -g oinstall -G dba -m oracle
# 上述命令执行完毕后,为oracle用户设置密码,例如,我这里设置的密码为123456
4.[root@localhost ~]# passwd oracle
更改用户 oracle 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
5.[root@localhost ~]# groups oracle
oracle : oinstall dba
6.[root@localhost ~]# id oracle
uid=1001(oracle) gid=1001(oinstall)=1001(oinstall),1002(dba)

创建Oracle需要的文件夹

# 切换至oracle用户并进入用户主目录
[root@localhost ~]# su - oracle
# 创建app文件夹
[root@localhost ~]# mkdir app
[root@localhost ~]# ls
app
#在app目录内创建文件夹,oracle是数据库安装目录,oraInventory存放所有日志
[root@localhost app]# mkdir oracle
[root@localhost app]# mkdir oraInventory
[root@localhost app]# ls
oracle oraInventory

解压Oracle数据库安装包

将Oracle 11gR2安装文件上传(可以使用sftp上传)到该操作目录/app下面,然后顺序解压安装文件到该目录。

[oracle@localhost app]# unzip linux.x64_11gR2_database_1of2.zip 
[oracle@localhost app]# unzip linux.x64_11gR2_database_2of2.zip
#解压安装程序后自动生成的安装包目录database
[oracle@localhost app]# ls
database  linux.x64_11gR2_database_1of2.zip  linux.x64_11gR2_database_2of2.zip  oracle  oraInventory

# 使用root用户给app下的所有文件授权
[oracle@localhost app]# cd ..
[root@localhost oracle]# chown -R oracle:oinstal  app/
[root@localhost oracle]# chmod -R 777 app/

修改操作系统配置

使用 [root] 用户

服务器名写入hosts

# 192.168.56.102 这个是虚拟机的IP地址,注意更改
[root@localhost ~]# echo '192.168.56.102 localhost localhost.localdomain' >> /etc/hosts
[root@localhost ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.102 localhost localhost.localdomain

设置内核参数

[root@localhost ~]# vim /etc/sysctl.conf 
# 在最后添加下面内容
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
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 = 1048576

# sysctl -p 使之生效
[root@localhost ~]# sysctl -p 

对oracle用户设置限制,提高软件运行性能

[root@localhost ~]# vim /etc/security/limits.conf 
# 在文件的末尾添加如下配置项。
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle soft core unlimited
oracle hard core unlimited
oracle soft memlock 50000000
oracle hard memlock 50000000

修改用户登录认证

[root@localhost ~]# vim /etc/pam.d/login
# 末尾添加两条内容
session required /lib64/security/pam_limits.so
session required pam_limits.so

修改环境变量(重要)

[root@localhost app]# vi /etc/profile

# 注意ORACLE_HOME目录,就是创建的那个app文件夹,后面的先这样配置
#oracle
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

# 刷新配置文件
[root@localhost app]# source /etc/profile

修改Oracle用户环境变量(重要)

[oracle@localhost database]$ cd ~/
[oracle@localhost ~]$ vi .bash_profile 
# 在文件末尾添加如下配置项
export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export NLS_LANG=.AL32UTF8
export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

[oracle@localhost ~]$ source .bash_profile 

在CentOS7中安装Oracle

DISPLAY变量是用来设置将图形显示到何处.比如CENTOS,你用图形界面登录进去,DISPLAY自动设置为

DISPLAY=:0.0表示显式到本地监视器,那么通过终端工具(例如:xshell)进去,运行图形界面的程序,如果没有设置,系统

是不允许程序启动的。

[root@localhost ~]# su - root
上一次登录:一 1030 10:51:55 CST 2023pts/0 上
[root@localhost ~]# DISPLAY=:0.0
[root@localhost ~]# export DISPLAY
[root@localhost ~]# echo $DISPLAY
:0.0

# 在执行xhost +命令(使得所有客户都可以访问)
[root@localhost ~]# xhost
access control enabled, only authorized clients can connect
SI:localuser:root
SI:localuser:oracle
[root@localhost ~]# xhost +
access control disabled, clients can connect from any host

# 切换到oracle用户
[root@localhost ~]# su - oracle
上一次登录:一 1030 10:44:24 CST 2023:0 上
[oracle@localhost ~]$ DISPLAY=:0.0
[oracle@localhost ~]$ export DISPLAY
[oracle@localhost ~]$ echo $DISPLAY
:0.0

[oracle@localhost ~]$ cd /home/oracle/app/database/
#  临时修改编码,不然乱码,显示弹框,不设置的话,弹框特别难看
[oracle@localhost database]$ export LANG=en_US.UTF-8
[oracle@localhost database]$ ./runInstaller -jreLoc /etc/alternatives/jre_1.8.0

接下来会弹出oracle的安装界面

  1. 订阅邮件 -> 取消勾选 -> Next -> Yes

  2. 选择第二个 install database software only -> Next

  3. Single Instance database installation -> Next

  4. 右侧选择 English -> Next

  5. 默认企业版 Enterprise Edition -> Next

  6. 注意看 [Oracle Base] 和 [Software Location] 是不是上面环境配置文件里面的参数,如果不是记得修改 -> Next

  7. 注意看 [清单目录] 是不是 刚才创建的那个 oraInventory文件夹 以及 [oraInventory组名] 是不是 oinstall -> Next

  8. 注意看 [OSDBA组] 和 [OSOPER组] 是不是 dba 和 oinstall -> Next

  9. Finish

  10. 最后 会弹出来一个提示框,新开一个终端,使用root用户执行那两个脚本

    [root@localhost ~]# cd /home/oracle/app
    [root@localhost app]# sh oraInventory/orainstRoot.sh 
    更改权限/home/oracle/app/oraInventory.
    添加组的读取和写入权限。
    删除全局的读取, 写入和执行权限。
    
    更改组名/home/oracle/app/oraInventory 到 oinstall.
    脚本的执行已完成。
    [root@localhost app]# sh oracle/product/11.2.0/dbhome_1/root.sh 
    Running Oracle 11g root.sh script...
    
    The following environment variables are set as:
        ORACLE_OWNER= oracle
        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.sh script.
    Now product-specific root actions will be performed.
    Finished product-specific root actions.
  11. 返回安装界面,点击确定,关闭

  12. 安装完成后还需要创建数据库,还是同样在Oracle用户桌面环境下,重新打开一个终端,输入 dbca 命令即可弹出相应的数据库创建向导。

    [oracle@localhost ~]$ su - oracle
    密码:
    上一次登录:一 1030 16:54:50 CST 2023pts/1 上
    [oracle@localhost ~]$ echo $DISPLAY
    
    [oracle@localhost ~]$ DISPLAY=:0.0
    [oracle@localhost ~]$ export DISPLAY
    [oracle@localhost ~]$ echo $DISPLAY
    :0.0
    [oracle@localhost ~]$ export LANG=en_US.UTF-8
    [oracle@localhost ~]$ dbca -jreLoc /etc/alternatives/jre_1.8.0
    # 若提示这个,直接输入 dbca
    -jreLoc is an invalid command line argument.
  13. Next -> Create a Database -> Next -> Next -> 填写全局数据库与SID 注意:这里必须填写orcl,不然后续会出问题 ->取消勾选 [Configure Enterprise Manager] -> Next -> 选择下面 [Use The Same Administrative Password for all accounts] -> 填写密码 -> Next -> Next -> Next -> 勾选 [Samples Schemas] -> Next -> 上方菜单对应:内存、调整大小、字符集、连接模式,更改字符集为 [AL32UTF-8] -> Next -> Next -> 勾选 [Generate Database Creation Scripts] -> Finish

  14. 安装完成点击 [Password Management] -> 解锁scott账户, 去掉前面的紫色小勾,输入密码。同样可以输入平常用的短小的密码

    如果错过了 Password Management,不要怕,将Oracle启动之后手动配置

    sqlplus / as sysdba
    alter user scott account unlock;
    # 修改scott密码为tiger
    alter user scott identified by tiger;

可能会遇到的错误:

  • ​ This is a prerequisite condition to test whether the OS kernel parameter “semmni” is properly set. (more details)

    Expected Value : 128
    Actual Value : 0

    这个错误不用管,直接勾选右上角的 [ignore all]

  • 调用 makefile ‘/home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk’ 的目标 ‘install’ 时出错。

    网上说是glibc的版本2.17过高所致(高于2.14),解决办法:
    进入管理员权限安装glibc-static

    [root@localhost logs]# su - root
    [root@localhost logs]# yum -y install glibc-static
    # 该软件包包含一个静态链接库,地址是:/usr/lib64/libc.a
    [root@localhost logs]# vi /home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk 
    
    ctxhx: $(CTXHXOBJ)
           $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
    修改为:
    ctxhx: $(CTXHXOBJ)
           -static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/libc.a
    点击Retry继续安装。
  • Error ininvoking target agent nmhs of makefile ‘/home/oracle/app/oracle/product/11.2.0、sysman/lib/ins_emagent.mk.’

    解决方法:在makefile中添加链接libnnz11库的参数

    [root@localhost logs]#  vi /home/oracle/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk 
    $(MK_EMAGENT_NMECTL)
    修改为:
    $(MK_EMAGENT_NMECTL) -lnnz11

启动Oracle

启动监听

启动已经安装的数据库orcl。 操作用户oracle 启动监听,才能进行远程连接

[oracle@localhost ~]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 30-OCT-2023 17:25:29
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Starting /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Log messages written to /home/oracle/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                30-OCT-2023 17:25:29
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
The listener supports no services
The command completed successfully
[oracle@localhost ~]$ 

启动数据库

[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Mon Oct 30 17:26:39 2023

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

SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area 1586708480 bytes
Fixed Size		    2213736 bytes
Variable Size		  922749080 bytes
Database Buffers	  654311424 bytes
Redo Buffers		    7434240 bytes
Database mounted.
Database opened.

大功告成!!!!!!

CentOS7卸载Oracle

1. 通过自带的软件卸载

[oracle@localhost home]$ cd $ORACLE_HOME/deinstall
# 一直回车就完事了
[oracle@localhost deinstall]$ ./deinstall 

2. 自定义卸载

[oracle@localhost oracle]$ su - oracle
[oracle@localhost oracle]$ sqlplus / as sysdba

# 停止oracle数据库服务
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> quit;

# 停止监听
[oracle@localhost oracle]$ lsnrctl stop
# 卸载数据库实例
[oracle@localhost oracle]$ dbca
# 退出oracle用户
[oracle@localhost oracle]$ exit
logout

# 删除oracle的相关文件
[root@localhost oracle]# cd  /usr/local/bin
[root@localhost oracle]#  rm -rf coraenv
[root@localhost oracle]#  rm -rf dbhome
[root@localhost oracle]#  rm -rf oraenv
# 删除/opt目录下的三个文件
[root@localhost oracle]# cd /opt/
[root@localhost oracle]# rm -rf ORCLfmap
[root@localhost oracle]# rm -rf oracle
[root@localhost oracle]# rm -rf oraInventory
# 删除/home/oracle/下的所有文件
[root@localhost oracle]# cd /home/oracle/
[root@localhost oracle]# rm -rf *
[root@localhost oracle]# 
# 删除oracle相关的用户和用户组
[root@localhost oracle]# userdel -r  oracle
[root@localhost oracle]# groupdel oinstall
[root@localhost oracle]# groupdel dba

使用PLSQL连接远程Oracle数据库

下载PLSQL客户端:

官方:https://www.allroundautomations.com/

如果想下载plsql历史版本,官网上已经没有直接的链接,可以直接访问此链接地址:

https://www.allroundautomations.com/registered-plsqldev/

下载Oracle Instant Client

使用plsql连接oracle的时候是需要本地先安装oracle客户端,英文名就是Oracle Instant Client。

官网:https://www.oracle.com/database/technologies/instant-client/downloads.html

阿里云:https://www.aliyundrive.com/s/gGiCzTBz13T

32或63位版本需要与plsql的位数匹配,不然也无法运行。

点击相应的版本后,打开下载页面,不同的version一般对应不同的oracle数据库版本。所以也不建议下载太

新的版本。
每一个版本中包含很多包,只用下载”Instant Client Package – Basic“对应的包即可。

比如oracle数据库版本是11,就下载11版本的客户端basic包。

oracle版本可以登录到oracle服务器用sqlplus登录服务器,然后使用sysdba登录:

sqlplus /nolog
connect / as sysdba
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE	11.2.0.1.0	Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

下载完成之后两个解压至同一文件夹

例如我们CentOS中的oracle版本是 11.2.0.1.0,下载的Oracle Instant Client解压出来就是 instantclient_11_2,解压之后备用

PLSQL安装和配置

PLSQL直接双击安装即可,安装完毕应该是下面这样:

点击 [cancel] 进入plsql,上方工具栏点击 [Configure 配置] -> [Perference 首选项] -> [Connection 连接] ->Oracle Home

Oracle Home:填写上方下载解压出来的 Oracle Instant Client 路径

,即 instantclient_11_2 文件夹所在的路径

OCI Library:填写上方下载解压出来的 Oracle Instant Client 目录中的 oci.dll 文件的路径

配置完之后会提示在下次打开plsql时生效,现在重启plsql。

重启之后下方红框位置有这个Normal即表示配置成功,现在连接远程的Oracle数据库开始你的Oracle之旅叭~~~


使用VirtualBox安装CentOS并安装Oracle数据库.md
https://codeofhh.cn/2023/10/30/使用VirtualBox安装CentOS并安装Oracle数据库/
作者
hhu
发布于
2023年10月30日
许可协议