浅析Centos7安装Oracle12数据库

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提示,不管他。这回再尝试连接数据库,你会发现可能就好用了。写死了当然好用了啊!

相关推荐
小费的部落13 分钟前
记 etcd 无法在docker-compose.yml启动后无法映射数据库目录的问题
数据库·docker·etcd
两点王爷2 小时前
docker 运行自定义化的服务-后端
运维·docker·容器
woshilys2 小时前
mysql 删除表等待
数据库·mysql
邪恶的贝利亚3 小时前
FFMEPG常见命令查询
linux·运维·网络·ffmpeg
SEO-狼术3 小时前
dbForge Documenter for Oracle Crack
数据库·oracle
搜搜秀3 小时前
find指令中使用正则表达式
linux·运维·服务器·正则表达式·bash
弧襪3 小时前
Ubuntu vs CentOS:Shell 环境加载机制差异分析
linux·ubuntu·centos
极限实验室4 小时前
如何使用 Grafana 连接 Easyearch
数据库
文or野4 小时前
MySQL 在 CentOS 7 环境安装完整步骤
数据库·mysql·adb
牧羊狼的狼4 小时前
主键索引和唯一索引的区别
数据库·sql·oracle