1、准备工作
VirtualBox:https://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html
RHEL 7.6:http://www.redhat.com(在redhat官网顺便加入开发者:https://developers.redhat.com/,开发者可以获得RHEL的Developer订阅,这样就可以使用yum安装一些软件
Oracle 18C:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html,下载linux x86-64的的RPM文件oracle-database-ee-18c-1.0-1.x86_64.rpm,这是18C最大的变革,支持RPM了,用yum安装则会非常简单,不像12c,需要手动安装依赖软件包、创建用户与组、添加GUI支持。
2、建立rhel-7虚拟机,使用2048M内存,2个CPU,128M显存,显卡控制器使用VBoxVGA,不然安装时找不到鼠标,40G硬盘,网络设置的高级选项里,端口转发添加主机2222到子系统22、主机1521到子系统1521的规则。
3、安装RHEL 7.6,软件选择带GUI的服务器,只选KDE,图形界面才能方便在安装后同意许可与管理订阅信息。
创建主机名,开启网络,因为oracle不支持127.0.0.1,所以有必要设置主机名与IP地址,而DHCP分配的地址好像一直都是固定的,比如案列中的IP 10.0.2.15下文会加入到/etc/hosts中,还有路由也要记下来,它是主机虚拟IP。
创建一个用户,并放入管理员组里,这个用户用来登录ssh。
安装完毕,首次重启后需要接受许可证
并且注册系统,如果有**码则选择**码,点击下一步
没有**码,在下一步输入redhat开发者账号和密码,点击注册,系统会自动下载“Redhat Developer Subscription”,只管点击“附加”即可。
4、打开xshell或者putty,用ssh连接上虚拟机
首先修改sudo的免密权限
$sudo vi /etc/sudoers
%wheel ALL=(ALL) ALL 之前加上#
#%wheel ALL=(ALL) NOPASSWD: ALL 之前的#号去掉
oracle ALL=(ALL) NOPASSWD: ALL 加在最后一行
强制保存退出(:wq!)
接着修改主机的IP地址
$sudo vi /etc/hosts
127.0.0.1 localhost ***
::1 localhost***
#新增一行,这个IP就是DHCP分配的IP地址,可以用ifconfig命令查看
10.0.2.15 redhat
保存退出
$sudo vi /etc/sysconfig/network
hostname=redhat
networking=yes
保存退出
使用hostname命令查看当前主机名,务必保持一致
5、如果OS不是Oracle Linux 7,则需添加oracle 18c的repos
$cd /etc/yum.repos.d
$sudo wget http://public-yum.oracle.com/public-yum-ol7.repo
$sudo wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
然后直接安装oracle 18c的预安装包
$sudo yum install oracle-database-preinstall-18c
如果没有oracle linux 7的repos支持,需要手动安装
$sudo rpm -Uvh https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm
首次运行会提示缺少依赖包,按照所给提示用yum install安装依赖包,而libstdc++-33在RHEL7的默认yum里没有,需要添加repos支持
$sudo yum-config-manager --enable rhel-7-server-optional-rpms
这样libstdc++-33就能安装了
而fedora-29系统里,没有compat-libcap1,需要引用centos的
$sudo rpm -Uvh http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libcap1-1.10-7.el7.x86_64.rpm
同时fedora需要重新连接libnsl
$sudo rm -f /usr/lib64/libnsl.so.1
$sudo rm -f /usr/lib/libnsl.so.1
$sudo ln -s /usr/lib64/libnsl.so.2.0.0 /usr/lib64/libnsl.so.1
$sudo ln -s /usr/lib/libnsl.so.2.0.0 /usr/lib/libnsl.so.1
然后再次运行rpm命令安装oracle preinstall,
接着
$cat /etc/group
可以发现oracle用户及相关组已经自动创建了。
6、将下载的oracle 18c rpm传给虚拟机,方法有很多,比如共享文件夹,而我用的方法比较老土,我把rpm保存在主机的网站根目录下,然后在虚拟里用wget获取
$cd /tmp
$wget http://10.0.2.2/oracle-database-ee-18c-1.0-1.x86_64.rpm
$sudo yum -y localinstall oracle-database-ee-18c-1.0-1.x86_64.rpm
fedora 29用yum或dnf安装不上oracle 18c,它有个no digest错误,只有用rpm安装
$sudo rpm -ivh --nodigest oracle-database-ee-18c-1.0-1.x86_64.rpm
安装完毕后,根据提示初始化数据库
$sudo /etc/init.d/oracledb_ORCLCDB-18c configure
这个过程会很漫长,漫长到喝完一壶茶,打完《影之刃》两个角色的所有任务之后,它还没有完成。
7、安装后的配置
$sudo vi /etc/oratab
ORCLCDB:/opt/oracle/product/18c/dbhome_1:N
把最后一个字符N改成Y
$sudo chkconfig oracledb_ORCLCDB-18c on
这是设置oracle开机启动,该脚本即/etc/init.d/oracledb_ORCLCDB-18c
$sudo passwd oracle
这是设置oracle的密码
$sudo vi /etc/profile
在文件末尾添加
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/18c/dbhome_1
export ORACLE_SID=ORCLCDB
export ORACLE_OWNER=oracle
export PATH=$PATH:$ORACLE_HOME/bin
重新开机,输入
$ps -ef | grep ora | grep -v grep
发现N多的ora_xxxx_ORCLCDB,表示oracle已经自动启动啦。
$su - oracle
$sqlplus / as sysdba