因为公司需要将数据库服务器切换成linux版本的,所以需要在linux系统下安装oracle。
以下安装过程为自己亲自安装的,走了很多弯路,网上其他博客也是五花八门,不适合我实际情况下的安装,现在记录一下,希望对于读者能有帮助并且能够交流。
在安装oracle之前,必须要明白,直接把Ubuntu、ret hat、centos、SUSE、OracleLinux叫做linux是不正确的,他们只是linux的发行版本。更确切地说,应该叫作“以Linux为核心的操作系统软件包。其中OracleLinux是甲骨文公司推行出来专门用于安装oracle的,但是实际上和ret hat、centos差不太多。
所以在选择安装oracle之前,首先要选好linux的发行版本。本人在Ubuntu版本下进行安装oracle失败在Net configuer上,并且在于各种rpm安装包。
oracle安装时需要各种rpm安装包,而且版本多为x86_64、i386,这是Ubuntu版本所不支持的,这是我的实验结果,如果有哪位大佬在Ubuntu系统上成功安装oracle了,请一定教教我
,拜谢!
除此之外,oracle18以及之后,甲骨文公司推出了在Linux上快速安装oracle的版本(oracle下载地址),rpm版本:
但是如果想真正的进行全自动安装,还缺少一个安装包oracle-database-preinstall-18c,这个安装包得要用外网才能下载,否则实际上和安装oracle11、12都差不多。
我就按照自己的习惯来了,可能跟别的博客先后不一样,而且会多一些配置。
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
为新用户设置密码
passwd oracle
密码随便你输入
[root@oraclehost database]# passwd oracle
更改用户 oracle 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
我选择在home目录下创建
mkdir /home/oracle
切记要将该文件夹权限赋给oracle用户
chown -R oracle /home/oracle
chmod -R 775 /home/oracle
这时我们看一下文件夹权限
[oracle@oraclehost home]$ ll
总用量 8
drwx------. 16 aaron aaron 4096 7月 6 16:16 aaron
drwxrwxr-x. 18 oracle oinstall 4096 7月 6 14:06 oracle
其他人都没有提及这布操作,其实在我看来,这步操作是很重要的,可以免了很多麻烦!就不用还要su oracle了。
打开文件sudoers
sudo vi /etc/sudoers
找到
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
添加
oracle ALL=(ALL) ALL
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
aaron ALL=(ALL) ALL
oracle ALL=(ALL) ALL
这样我们在切换用户,或者重启动电脑会有oracle用户,否则oracle用户不能进行sudo命令。
查看是否建立好
id oracle
显示如下
[oracle@oraclehost ~]$ id oracle
uid=1001(oracle) gid=1001(oinstall) 组=1001(oinstall),1002(dba)
新建用户之后,登陆到oracle用户可能会有这种显示,不显示用户名,只显示bash-4.1~
在linux新建用户的时候,应该会自动将root用户下的环境文件给复制到新用户环境下的,但是不知道为什么我会遇到这个问题,这个时候复制一下文件就可以了。
ls -a /etc/skel/
[oracle@oraclehost ~]$ ls -a /etc/skel/
. .bash_logout .bashrc .mozilla
.. .bash_profile .kshrc
将这些文件复制到用户空间下就好了。
切换到oacle用户或者使用su oracle,将下载好的文件放入oracle用户环境中,我是放在:
/home/oracle/soft/oracle/
下的,这个时候就体现切换好oracle用户的好处,如果是在自己环境下直接进行复制的话,文件的用户以及用户组是不对的,先到文件目录下,用ll命令查看一下:
ll
显示:
[oracle@oraclehost oracle]$ ll
总用量 2295592
-rw-------. 1 oracle root 1239269270 7月 6 10:10 linux.x64_11gR2_database_1of2.zip
-rw-------. 1 oracle root 1111416131 7月 6 10:10 linux.x64_11gR2_database_2of2.zip
这样显示是对的,或者是
[oracle@oraclehost oracle]$ ll
总用量 2295592
-rw-------. 1 oracle oinstall 1239269270 7月 6 10:10 linux.x64_11gR2_database_1of2.zip
-rw-------. 1 oracle oinstall 1111416131 7月 6 10:10 linux.x64_11gR2_database_2of2.zip
如果是这样就是错的,aaron是我之前的用户名:
[oracle@oraclehost oracle]$ ll
总用量 2295592
-rw-------. 1 aaron aaron 1239269270 7月 6 10:10 linux.x64_11gR2_database_1of2.zip
-rw-------. 1 aaron aaron 1111416131 7月 6 10:10 linux.x64_11gR2_database_2of2.zip
因为过会我们解压后会导致解压出来的安装包用户是我之前的用户,这样安装到最后会导致使用空间的不正确,如果实在是不知道用户怎么切换,可以使用下面命令将文件所属进行切换:
chown -R oracle /home/oracle/soft/oracle
这个命令在上面使用过,不用多说拉。
unzip ./linux.x64_11gR2_database_1of2.zip
unzip ./linux.x64_11gR2_database_2of2.zip
解压后会出现database文件夹,这个时候再确认一下安装文件的所属:
ll
显示如下就对了:
[oracle@oraclehost oracle]$ ll
总用量 2295592
drwxr-xr-x. 8 oracle oinstall 128 8月 21 2009 database
-rw-------. 1 oracle root 1239269270 7月 6 10:10 linux.x64_11gR2_database_1of2.zip
-rw-------. 1 oracle root 1111416131 7月 6 10:10 linux.x64_11gR2_database_2of2.zip
这个直接下载就好
yum install binutils compat-libstdc+±33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc+±devel make sysstat unixODBC unixODBC-de -y
systemctl stop firewalld.service
systemctl disable firewalld.service
这两行命令前者是关闭防火墙,但是关机后重启还是会启动
后者是禁用防火墙,但是我自己使用,重启动后还是会防火墙开启,这点一定要注意!
禁用防火墙原因:如果不禁用,在安装过程中,会在最后配置database config时卡住。
echo “192.168.3.71 oraclehost” >> /etc/hosts
ip地址和ip名,这个看你自己怎么配置。
打开文件.bash_profile
vi ~/.bash_profile
输入
export ORACLE_BASH=/home/oracle/app/oracle
export ORACLE_HOME=/home/oracle/app/oracle/11.2.0/db_1
export ORACLE_UNQNAME=szxndb
export ORACLE_SID=szxndb
export PATH=$PATH:/home/oracle/app/oracle/11.2.0/db_1/bin
ORACLE_UNQNAME和ORACLE_SID可以不用默认的orcl,这个是用于安装oracle后,建立空间用的,我就用我公司的名字代替的。
其他什么语言类,例如export LANG=en_US,NLS_LAN=AMER…等其实是不用配置的。
保存退出,使其生效
source ~/.bash_profile
查看配置后对不对
env | grep ORACLE
显示如下就对了,记得在~目录下进行命令阿
[oracle@oraclehost ~]$ env | grep ORACLE
ORACLE_UNQNAME=szxndb
ORACLE_SID=szxndb
ORACLE_BASH=/home/oracle/app/oracle
ORACLE_HOME=/home/oracle/app/oracle/11.2.0/db_1
有些博客说的很多配置都不需要再做的,只是做个提醒,如果自己修改的话可能会影响后期其他软件的使用,如果有兴趣可以自己查查参数的意思。
(1)有一些配置现在并不需要再做了,如果有兴趣可以自己查一查各个参数的意义。
[root@oraclehost]# vi /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的最低标准是肯定能达得到,只要你自己没有动过这些参数,可以自己先查看一下这些参数的大小。最低的stack内存、文件数量是一定能够达到大小,达到我们所需要的配置。
(2)修改登陆配置文件,编辑(不需要做)
vim /etc/pam.d/login
在该文件的最下面的行下添加
这边做个提醒,在该文件下本身就是有这两句话。
(3)设置内核参数,为了保障安装检查能通过(这个步骤现在不需要做,oracle在安装时,会帮我们做)
vim /etc/sysctl.conf
添加以下信息:
kernel.shmall = 4194304
kernel.shmmax = 4147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
如果想使用图形话界面安装,必须要使用java包,否则会导致图形话界面安装中间的中文乱码,或者中间弹窗显示不出来,只有一条杠。
java在安装ret hat时是默认安装好的,我们只要查看一下版本就好。
java -version
显示:
[oracle@oraclehost ~]$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
版本为1.8.0
进入database目录,执行(记住不要使用root权限)
./runInstaller -jreLoc /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre
显示:
[oracle@oraclehost database]$ ./runInstaller -jreLoc /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre
正在启动 Oracle Universal Installer...
检查临时空间: 必须大于 120 MB。 实际为 45945 MB 通过
检查交换空间: 必须大于 150 MB。 实际为 7931 MB 通过
检查监视器: 监视器配置至少必须显示 256 种颜色。 实际为 16777216 通过
准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2020-07-06_06-07-37PM. 请稍候...[oracle@oraclehost database]$
10.根据自己设置ORACLE_SSID设置,我是已经设置过了,所以会报红,下一步
11.选择字符集
12.根据自己需要选择字符集,我是直接unicode,下一步
13.下一步
15.设置管理员密码,我是图省事,直接一个密码
16.下一步
17,oracle会检查先觉条件
这里就要开始注意了
这个时候有两种情况,1.swap交换区不够,2.oracle本身并没有检测出来。
前者就要自己设置swap交换区
后者自己查看一下/tmp内存够不够
df -l /tmp
显示:/tmp是挂在/dev/mapper/rhel-root
[root@oraclehost database]# df -l /tmp
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 52403200 5354740 47048460 11% /
df -h
显示:/dev/mapper/rhel-root的容量是50G,肯定是够用的,则可以忽略这个问题
[root@oraclehost database]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 50G 5.2G 45G 11% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.8G 1.9G 2.0G 49% /dev/shm
tmpfs 3.8G 9.1M 3.8G 1% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/sda2 1014M 172M 843M 17% /boot
/dev/sda1 200M 9.8M 191M 5% /boot/efi
/dev/mapper/rhel-home 873G 14G 859G 2% /home
tmpfs 772M 48K 772M 1% /run/user/1001
tmpfs 772M 24K 772M 1% /run/user/1000
点击修补并再次检查按钮
执行/tmp/CVU_11.2.0_oracle/runfixup.sh脚本。
但是很多情况下,再次检查发现还是报以上内核参数错误,这是因为oracle本身check机制有bug,检测不出来的原因。
这个时候就需要自己进行查看/etc/sysctl.conf,参照步骤四,第4条其它,第三点,如果配置和oracle需要配置不一样,进行手工配置
kernel.shmmax = 536870912
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
如果一样则不需要配置,进行忽略就可。
如果需要配置,配置完后执行
sysctl -p
其实还是由于oracle自己check不出来,按照它的配置要求,只要版本在其之上就可以了,这个时候需要我们查看一下是否存在该安装包,不存在则安装,如果前面安装包步骤没有出错,这个时候应该都安装上了。
查看安装包是否存在:
rpm -qa | grep libaio
显示:
[root@oraclehost database]# rpm -qa | grep libaio
libaio-devel-0.3.109-13.el7.x86_64
libaio-0.3.109-13.el7.x86_64
显示中版本为x86_64,但是所需的可能是i386或者i68的,这个并不影响,i386是指x86。
然后我们发现没有安装pcksh包,这个已经被弃用了,我们之前安装了一个ksh包代替了
18.勾选全部忽略,下一步安装
19.点击安装,到%68可能就会出错
首先检查glibc包是否装好,安装好则修改/u01/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/stdc.a
点击Retry继续安装。接着又提示”Error in invoking target ‘agent nmhs’ of makefile ‘/home/oracle/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk.’
解决方法:在makefile中添加链接libnnz11库的参数
修改/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk,将
$(MK_EMAGENT_NMECTL)
修改为
$(MK_EMAGENT_NMECTL) -lnnz11
继续安装。
20.执行root脚本(用别人的图拉,就一张)
如果卡在database config设置那里,可能是防火墙没关
这样就OK拉!
13700字,真不容易我,请各位看官点个赞,我涨涨积分哈嘿嘿!