Linux下的Oracle数据库实在是太难安装了,事贼多,我都怀疑能安装成功是不是运气的成分更高一些。这里操作系统是Centos7,Oracle版本是Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production。
Oracle下载链接: https://pan.baidu.com/s/1koFPbw26lxCcsIdPEsuZXQ?pwd=nwvk 提取码: nwvk
1、在虚拟机上安装Centos7
要求:
a、物理内存:2G【建议啊】
b、硬盘:40G【默认20G是不够的】
c、 swap交换分区:3G【小于3G则Oracle安装检查环境时会提示swap大小不足,当然右上角有相关选项,勾选是可以略过这步的,但没必要,不至于穷到连3G都不能给swap】
d、带GUI的服务器【不能最小安装,因为Oracle12的安装是带有图形界面的】
e、为Centos7设置固定IP【这个想当服务器用的都得有固定IP吧】
开始:
创建新的虚拟机
选择【典型】,点击【下一步】按钮
选择【稍后安装操作系统】,点击【下一步】
选择【Linux】与【CentOS 7 64位】,点击【下一步】
改好Centos7要安放的位置后点击【下一步】
硬盘改为40G,默认的20G不够,点击【下一步】
点击【自定义硬件】
点击【关闭】按钮后再点击【完成】按钮。
点击【编辑虚拟机设置】
将你的Centos7的镜像文件【我的是CentOS-7-x86_64-DVD-1810.iso】挂载到光盘上准备运行。点击【确定】按钮。
点击【开启此虚拟机】,等待安装。
鼠标点击进入安装界面【注:一定要点击进去啊,不会就点击屏幕中央位置,然后鼠标会改变形状】后按向上的方向键,使【Install CentOs 7】选项变白,回车开始安装。这时鼠标是在安装界面里的,要想出来可按【Ctrl+Alt】。
安装界面语言选择【中文】(鼠标要点入安装界面啊),点击【继续】按钮。
进入安装选择界面后要多等待一会,程序要检查软件安装依赖关系,这时不要乱点。
先改日期时间
亚洲+上海,改完日期与时间后点击左上角【完成】按钮。
点击【软件选择】,默认是最小安装,这个不行,得改为带GUI的服务器。
点击【完成】按钮后程序会重新检查软件依赖关系,等会,别乱动,这个看机器性能,我机器慢,等了好几分钟呢。
点击【安装位置】,我们要手工分区。
点击【我要配置分区】,再点击【完成】按钮。
将新挂载点将使用的分区方案改为【标准分区】
再点击【+】按钮
首先是挂载【/boot】引导分区,容量1G就够了。点击【添加挂载点】
将文件系统改为【ext4】格式。再点击左下角的【+】按钮
其次选择【swap】交换分区,容量3G,这个很重要,点击【添加挂载点】
文件系统默认是swap格式的,不用动。再点击【+】按钮
最后挂载【/】根目录,容量不用填。点击【添加挂载点】按钮。
将文件系统改为【ext4】格式。点击左上角的【完成】按钮
点击【接受更改】按钮完成安装位置选项。
点击【KDUMP】按钮
去掉【启用kdump】选项,点击【完成】按钮。
点击【网络和主机名】
修改主机名,再点击【应用】按钮。
再点击右上角【打开/关闭】按钮
打开网络连接。这里要记住路由与DNS的地址,后面配置固定IP要用到。点击【完成】按钮。
点击【SECURITY POLICY】选项。
点击【打开/关闭】按钮,取消密码安全性限制。
点击【完成】按钮。
点击【开始安装】按钮
先设置root密码
我设的密码太简单,需要点2次【完成】按钮才能成功。再点击【创建用户】
密码简单,再点击2次【完成】按钮才创建用户成功。
耐心等待安装就行......
漫长的时间啊,终于等到了,点击【重启】按钮。
这里要接受许可。
点击【完成】按钮。
网络和主机名我们前面配置过,这里就不用再配置了。点击【完成配置】按钮。

这里点击【未列出】,我们要用root登录系统。
输入密码后进入系统界面。
点击右上角【前进】按钮,再点击【前进】按钮
这里关闭隐私,再点击【前进】按钮,再点击下一界面的【跳过】按钮,再点击下一界面的开始使用按钮。
点击右上角的【X】退出。终于进来正常的界面了。
2、为安装Oracle数据库做准备工作
换yum源:
我发现yum原来默认的国外镜像网站不好用了,你说操蛋不,我得换成阿里云的镜像网站,你的yum要是没事就可以略过此步。
鼠标右键点击桌面,右键菜单选择【打开终端】
我执行yum list提示如下
真的不好用了啊,必须为yum换源了。
bash
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清除本地yum缓存、索引、头文件、插件
bash
yum clean all
把服务器的包信息下载到本地电脑缓存起来
bash
yum makecache

更新已安装软件版本,防止与原来yum源安装的软件依赖发生意外冲突。但不更新linux内核。
bash
yum -y upgrade

这个时间有点长,等待。更新完成后测试了一下yum,发现OK。
yum search ifconfig

设置固定IP :
编辑网络配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33

首先将 BOOTPROTO="dhcp" 改为 BOOTPROTO="static",我这里将其注释了然后重新复制一份再修改。
最后再在最后面补充以下内容
IPADDR="192.168.126.100"
NETMASK="255.255.255.0"
GATEWAY="192.168.126.2"
DNS1="192.168.126.2"

按【esc】键,再按【:wq】保存退出。
IPADDR是本机固定IP,NETMASK是掩码,GATEWAY是网关,DNS1是首选DNS。前面安装网络与主机名时有下面的界面显示了IP相关信息,我们原样拿过来用就行,我就把IP改了一下,100好记。
若前面安装忘记了网络相关信息也不怕,点击虚拟机VMware的菜单【编辑】
下的【虚拟网络编辑器】菜单

点击【NAT】模式,再点击【NAT设置】按钮
在这里也能看到网络IP相关信息。
执行下列代码让网络马上生效
systemctl restart network
再执行下面代码查看网络具体信息。
ifconfig

关闭防火墙:
关闭防火墙为了防止安装过程中的某些操作被防火墙阻止,确保安装程序可以正常访问所需要的端口与服务。安装完成后再重新启动防火墙并开放oracle的1521端口就行。
执行下面3条命令
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
【systemctl stop firewalld.service】是关闭防火墙
【systemctl disable firewalld.service】是禁止防火墙的开机自启
【systemctl status firewalld.service】是查看防火墙状态

安装依赖包:
yum install -y binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libX11 libX11.i686 libXau libXau.i686 libXi libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libxcb libxcb.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext.i686 zlib-devel zlib-devel.i686
这些都是要安装Oracle数据库的软件依赖包,好多啊,有些依赖包前面安装系统时已经安装过了,还有些未安装过的。这些依赖包内容可以在Oracle官网上的文档中查到。

执行下面命令检查依赖包是否全部安装完成
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils compat-libcap1 compat-libstdc++-33 cpp gcc gcc-c++ glibc glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make mpfr sysstat

基本上不会有什么问题。
创建组:
groupadd oinstall
groupadd dba
groupadd oper
groupadd osoper
这里创建了4个组。
创建用户并修改密码:
useradd -g oinstall -G dba,oper oracle
passwd oracle

这里创建oracle用户来管理Oracle数据库的安装及后面的日常操作。该用户隶属于【oinstall】组,附加组是【dba】与【oper】。
修改内核限制参数:
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

按【esc】键,再按【:wq】保存退出。
其中【oracle soft nproc 2047】是单用户可使用进程数量
【oracle soft nofile 1024】是用户可打开文件数量
【oracle soft stack 10240】是堆栈设置
手动配置内核参数:
vim /etc/sysctl.conf
在配置文件末尾插入下面内容
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

按【esc】键,再按【:wq】保存退出。
刷新内核参数,使其马上生效。
sysctl -p

修改login配置文件:
vim /etc/pam.d/login
在配置文件末尾插入下面内容
session required /lib64/security/pam_limits.so
session required pam_limits.so

按【esc】键,再按【:wq】保存退出。
修改profile文件:
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
umask 022
fi

按【esc】键,再按【:wq】保存退出。
配置环境变量:
创建Oracle安装软件的存放目录,后面我们会把该文件拷贝到此目录下。
mkdir -p /setup/oracle
创建Oracle数据库软件安装目录,后面安装时会将Oracle数据库安装到此目录下。
mkdir -p /app/oracle/product/12.1.0/dbhome_1
配置oracle用户的环境变量,后面我们要用前面创建的oracle用户来专门安装管理Oracle12数据库,因此这里要特意为该用户配置一下环境变量,别的用户是不能管理Oracle数据库的。
vim /home/oracle/.bash_profile
在配置文件末尾插入下面内容
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH

按【esc】键,再按【:wq】保存退出。
刷新配置,使其马上生效。
source /home/oracle/.bash_profile
进入到Oracle软件存放目录
cd /setup/oracle
将oracle安装软件拷贝到该目录,我用的是MobaXterm软件,用啥软件都行,能把文件拷贝过来就行。

拷贝完毕后回到Centos的终端窗口,查看文件
ls

2个文件都已经拷贝过来了,下面解压这2个文件。
【注】:若无unzip软件可先安装【yum -y install unzip】
unzip V46095-01_1of2.zip
unzip V46095-01_2of2.zip
重新查看一下该目录下文件
ls

2个压缩文件已经解压到 /setup/oracle/database目录下了。
文件授权:
后面我们要用oracle用户登录来安装Oracle数据库,而前面的所有操作都是用root用户来完成的,所以必须把Oracle数据库的安装软件授权给oracle用户,否则无权管理这些文件。
chown -R oracle:oinstall /setup/oracle/database/
查看一下授权后内容
ll

可以看到 /setup/oracle/databae/ 目录及其下属所有文件都已经改为oracle用户所有了。
同理我们再把Oracle数据库软件要安装到的目录也更改一下权限,因为该目录也是用root用户建立的,不改不行啊!
chown -R oracle:oinstall /app/
建议现在重启,然后在虚拟机上以oracle用户登录
reboot
因为改了很多东西,也不知道有没有问题,改没改错,重启看一下。

这里我们用oracle用户登录
没问题,进来了,由于头一次使用oracle用户登录,需要一些配置,与前面的相同,这里略。
在桌面上按右键选择【打开终端】,这回真的要开始安装Oracle了。
若不想重启系统的话也没毛病,切换用户即可。
su - oracle
【
设置DISPLAY变量:
我是在虚拟机上直接安装Oracle数据库,因此不用设置DISPLAY变量。但若你是在客户端连接软件上的话那就麻烦了,需安装支持图形界面的软件,还得设置DISPLAY变量
export DISPLAY=192.168.126.100:0.0
xclock
】
临时将系统换成英文
因为Oracle安装包提供的jdk内缺少中文字体,安装时显示的都是乱码,因此最简单的方法就是临时将系统的中文改为英文。
export LANG=en_us
进入Oracle软件存放目录
cd /setup/oracle/database
显示目录内容
ll

运行该文件
./runInstaller

检测通过,可以启动Oralce安装界面了。
我服了,分辨率不够,看不到安装界面全景啊。继续改!
选择Centos左上角菜单【应用程序】->【系统工具】->【设置】
点击【设备】

修改高分辨率
点击【应用】按钮,再点击【保留更改】按钮。拉动底下向右滚动条,点击右上角的【X】退出即可。这回就能看全了。
去掉勾选,点击【next】按钮。【上面2图中的下图是从网上找的中文对照,省得看得不习惯】
选择【yes】按钮
点击【next】按钮。
选择【Server class】,点击【next】按钮。
选择【Single instance database installation】,点击【next】按钮。
选择【Typical install】典型安装,点击【next】按钮。
翻译不完全一样,大致对照理解一下就行。输入新数据库登录密码,去掉【Create Container databae】勾选,点击【next】按钮。
密码太简单,提示安全问题,不管它,选【Yes】继续。
点击【next】按钮。
上面是检测安装环境,若是前面swap未设置3G这里就会有提示。我们继续
没问题,点击【install】按钮
安装中。。。

这是2个shell文件,需要以root用户权限来执行
回到终端窗口,先按一下回车显示正常状态,然后切换用户
su
输入密码后执行第一条命令
/app/oraInventory/orainstRoot.sh
再执行第二条命令
/app/oracle/product/12.1.0/dbhome_1/root.sh
这里会有个提示,停顿一下,回车即可。
回到Oralce安装窗口点击刚才那个弹出窗口中的【ok】按钮,继续安装中。。。
Oracle安装程序开始创建数据库了

点击【ok】按钮。

数据库安装成功,点击【close】按钮结束。
收尾工作:
【确保我们现在是以root用户登录,刚才前面执行2个shell命令时已经改过了。】
数据库自启动
重启linux后oracle数据库是不会自动启动的,得我们手工配置一下才行。
a、修改Oracle的配置文件
vim /etc/oratab
将 【orcl:/app/oracle/product/12.1.0/dbhome_1:N】
改为【orcl:/app/oracle/product/12.1.0/dbhome_1:Y】
就是将最后一个字母N改为Y就ok了。
按【esc】键,再按【:wq】保存退出。
b、修改Centos的自启动配置文件
vim /etc/rc.d/rc.local
rc.local是开机启动文件,通过编辑该文件,用户可以自定义开机启动程序。
将需要开机启动的程序命令或脚本路径添加到该文件中,系统启动时该文件将被自动执行。
将下面的内容添加到该配置文件中。
su oracle -lc "/app/oracle/product/12.1.0/dbhome_1/bin/dbstart"
su oracle -lc "/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start"

按【esc】键,再按【:wq】保存退出。
为该启动文件设置可执行权限【默认该文件是没有可执行权限的,不改重启时它不执行啊】
chmod u+x /etc/rc.d/rc.local
启动防火墙
systemctl start firewalld.service
防火墙很重要,不可能因为Oralce数据库就永远关闭吧,前面安装需要关闭一下,现在安装完事了,只要开放Oracle的1521端口就行了。
systemctl enable firewalld.service
查看一下防火墙现在的状态
systemctl status firewalld.service

开放Oracle数据库的1521端口
firewall-cmd --permanent --add-port=1521/tcp
让设置马上生效
firewall-cmd --reload
查看防火墙是否成功开放了1521端口
firewall-cmd --query-port=1521/tcp

OK,到此我们的收尾工作已经全部完成,马上重启,看看是否成功!
reboot
我们还是用oracle用户登录,桌面上点击右键,选择【打开终端】。
查看Oracle数据库是否启动,这里我们只要查看是否有Oracle的进程就可以了。
ps -ef | grep pmon

查看Oracle的监听是否启动
lsnrctl status

完全没问题,都正常启动了。
【
若Oracle数据库未启动,则需输入下列命令启动。
sqlplus / as sysdba
#启动命令
startup
#查看启动状态
select status from v$instance;
#关闭
shutdown immediate
若监听未启动,则需输入下列命令启动。
lsnrctl start
】
测试连接:
用datagrip测试一下连接,成功!

搞定,收工!
【
如果,我是说如果连接不成功,总是提示:
ORA-12505: 无法连接到数据库。SID orcl 未注册到 host 192.168.126.100 port 1521 中的监听程序。
也就是说监听程序不认你给出的SID,拒绝连接。
问题是给出的SID是正确的,啥毛病也没有啊,但监听就是不认,咋办啊!
那就硬改一下试试,把SID写死!
监听程序是listener.ora文件,编辑该文件。
vim /app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
在后面加上如下内容
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /app/oracle/product/12.1.0/dbhome_1/)
)
)

SID_LIST_LISTENER是Oracle数据库监听器配置文件listener.ora中的一个条目,用于定义静态注册的服务信息。静态注册是指将数据库实例的信息硬编码在监听器配置文件中,以便在数据库实例关闭时也能通过监听器连接到数据库。
这也是实在没招了啊!
按【esc】键,再按【:wq】保存退出。
先停止监听程序
lsnrctl stop
再重新启动监听程序
lsnrctl start

有UNKNOWN提示,不管他。这回再尝试连接数据库,你会发现可能就好用了。写死了当然好用了啊!
】