实战篇:小白都能看懂的linux安装oracle数据库详细教程(代码片段)

Lucifer三思而后行 Lucifer三思而后行     2022-12-10     190

关键词:

作者简介

  • 作者:LuciferLiu,中国DBA联盟(ACDU)成员。
  • 目前主要从事Oracle DBA工作,曾从事 Oracle 数据库开发工作,主要服务于生产制造,汽车金融等行业。
  • 现拥有Oracle OCP,OceanBase OBCA认证,擅长Oracle数据库运维开发,备份恢复,安装迁移,Linux自动化运维脚本编写等。

前言

相信大家第一次接触Oracle,大都是在windows上安装,比较方便快捷,基本上是一直下一步就可以安装成功。然而企业级的数据库,基本上都是安装在Linux服务器上,安全且高效。

没接触Linux的朋友不用害怕,跟着本篇文章一步步操作,安装Oracle如喝水般简单且标准。

下面我就来手把手教大家如何在Linux上安装Oracle数据库。
安装部署流程

一、前期准备

1 虚拟机安装包

2 Oracle软件安装包

注意:Oracle官方网站目前只能下载最新版19C,需要其他版本Oracle可私信博主获取。

3 Linux系统安装包

一般有三种Linux系统比较常用:RedHatOracleLinuxCentos

Linux系统安装可参考文章,本文将不再详细介绍安装方法:

4、Linux远程连接工具

本文将使用XShell和Xftp工具,安装包可以在官网下载,也可私信博主获取。

其他工具也可以,比如:puttySecureCRT 等等工具。

这篇博客演示RedHat Linux 7.6 版本安装Oracle 11GR2版本数据库。

主机内存2G,硬盘50G即可。

二、Linux主机配置

使用XShell工具连接Linux主机root用户:

1 主机名配置

如果安装时没有配置主机名,或者想要修改主机名,可以通过以下命令修改:

hostnamectl set-hostname orcl

2 网络配置

如果安装时没有配置网络,或者想要修改网络,可以通过以下命令修改:

nmcli connection modify eth0 ipv4.addresses 10.211.55.188/24 ipv4.gateway 10.211.55.1 ipv4.method manual autoconnect yes
nmcli connection up eth0

3 配置Hosts文件

根据上面配置好的主机名和IP,配置hosts文件:

cat <<EOF >>/etc/hosts
##OracleBegin##
##Public IP
10.211.55.188     orcl
##OracleEnd##
EOF

4 防火墙配置

systemctl stop firewalld
systemctl disable firewalld

5 Selinux配置

selinux修改后需要重启主机生效:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

6 ISO镜像源配置

需要先挂载主机镜像

Parallels Desktop挂载Linux主机镜像:

VMware Workstation挂载Linux镜像:

mount /dev/cdrom /mnt
cat <<EOF>/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1
EOF

7 安装Oracle依赖包

如下依赖包从Oracle官方文档推荐获取:

yum install -y bc \\
binutils \\
compat-libcap1 \\
compat-libstdc++-33 \\
gcc \\
gcc-c++ \\
elfutils-libelf \\
elfutils-libelf-devel \\
glibc \\
glibc-devel \\
ksh \\
libaio \\
libaio-devel \\
libgcc \\
libstdc++ \\
libstdc++-devel \\
libxcb \\
libX11 \\
libXau \\
libXi \\
libXtst \\
libXrender \\
libXrender-devel \\
make \\
net-tools \\
nfs-utils \\
smartmontools \\
sysstat \\
e2fsprogs \\
e2fsprogs-libs \\
fontconfig-devel \\
expect \\
unzip \\
openssh-clients \\
readline* \\
psmisc --skip-broken

检查是否安装成功:

rpm -q bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline


Linux7需要手动安装compat-libstdc++依赖包:

rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

8 配置ZeroConf

##关闭Zeroconf service的服务守护进程
systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
systemctl disable avahi-daemon.socket

##关闭NOZEROCONF
cat <<EOF >>/etc/sysconfig/network
#OracleBegin
NOZEROCONF=yes
#OracleEnd
EOF

9 关闭透明大页和numa

sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

10 配置系统参数文件

##计算shmall和shmmax值
memTotal=$(grep MemTotal /proc/meminfo | awk 'print $2')
totalMemory=$((memTotal / 2048))
shmall=$((memTotal / 4))
if [ $shmall -lt 2097152 ]; then
  shmall=2097152
fi
shmmax=$((memTotal * 1024 - 1))
if [ "$shmmax" -lt 4294967295 ]; then
  shmmax=4294967295
fi
echo $shmall
echo $shmmax

##配置系统参数
cat <<EOF >>/etc/sysctl.conf
#OracleBegin
##shmmal's Calculation formula: physical memory 8G:(8*1024*1024*1024)/4096=2097152
##shmmax's Calculation formula: physical memory 8G:(8/2)*1024*1024*1024 -1=4294967295
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = $shmall
kernel.shmmax = $shmmax
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
EOF

##系统参数生效
sysctl -p


11 配置系统资源限制

cat <<EOF >>/etc/security/limits.conf
#OracleBegin
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle hard memlock 134217728
oracle soft memlock 134217728
#OracleEnd
EOF

cat <<EOF >>/etc/pam.d/login
#OracleBegin
session required pam_limits.so 
session required /lib64/security/pam_limits.so
#OracleEnd
EOF


12 创建用户和组

/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper

/usr/sbin/useradd -u 54321 -g oinstall -G dba,oper oracle
echo oracle | passwd --stdin oracle

13 创建Oracle安装目录

mkdir -p /u01/app/oracle/product/11.2.0/db
mkdir -p /u01/app/oraInventory
mkdir -p /oradata
chown -R oracle:oinstall /oradata
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app


14、配置用户环境变量

cat <<EOF >>/home/oracle/.bash_profile
################OracleBegin#########################
umask 022
export TMP=/tmp
export TMPDIR=\\$TMP
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db
export ORACLE_HOSTNAME=orcl
export ORACLE_TERM=xterm
export TNS_ADMIN=\\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=orcl
export PATH=/usr/sbin:\\$PATH
export PATH=\\$ORACLE_HOME/bin:\\$ORACLE_HOME/OPatch:\\$PATH
alias sas='sqlplus / as sysdba'
export PS1="[\\`whoami\\`@\\`hostname\\`:"'\\$PWD]\\$ '
EOF

三、Oracle软件安装

1 Oracle软件包上传

[root@orcl soft]# ll
-rw-r--r--. 1 root root 1395582860 May 31 16:56 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r--. 1 root root 1151304589 May 31 16:56 p13390677_112040_Linux-x86-64_2of7.zip

2 解压Oracle软件安装包

需要按顺序解压1,2安装包:

cd /soft
unzip -q p13390677_112040_Linux-x86-64_1of7.zip
unzip -q p13390677_112040_Linux-x86-64_2of7.zip

##授权/soft给oracle读写权限
chown -R oracle:oinstall /soft

3 安装VNC软件

yum install -y tigervnc*

su - oracle
vncserver
##输入密码

4 连接VNC远程工具或者直接打开虚拟机图形化界面


右键打开终端工具

进入/soft/database开始安装Oracle软件

./runInstaller -jreLoc /etc/alternatives/jre_1.8.0


不接收oracle更新:

不更新oracle:

只安装Oracle软件:

单实例安装:
选择企业版:

选择安装目录:

选择安装用户组:


Oracle安装前必要检查:


上传pdksh-5.2.14-37.el5.x86_64.rpm依赖包,安装:

rpm -e ksh-20120801-142.el7.x86_64
rpm -ivh pdksh-5.2.14-37.el5.x86_64.rpm


点击再次检查,忽略swap警告:



解决方案:

su - oracle
sed -i 's/^\\(\\s*\\$(MK_EMAGENT_NMECTL)\\)\\s*$/\\1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk

执行完点击retry重试:

执行root脚本:

root用户下执行脚本:

/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/db/root.sh




安装完成后,重启主机。

四、创建数据库

1 打开监听

su - oracle
lsnrctl start
lsnrctl status

2 连接VNC远程工具或者直接打开虚拟机图形化界面

dbca


创建数据库:

选择自定义模式:

输入实例名:

这里填写数据库实例名称和dbname,本次填写orcl。

不安装EM工具。

这里输入SYS和SYSTEM用户的密码,需要记住。

这里选择前面建好的/oradata目录用来存放数据文件。

不开启闪回日志,不开启归档日志,可以建好库之后再手动修改。


数据库内存分配,选择手动分配,占用物理内存70%左右。

block_size根据实际情况选择,一旦建库无法修改,默认8K。

字符集根据需要进行选择,默认AL32UTF8。




等待建库完成即可。

五、连接数据库

确保监听正常启动,并监听数据库:

1 通过数据库主机连接

su - oracle
sqlplus / as sysdba
select sysdate from dual;

##创建数据库用户
create user test identified by test;
grant dba to test;
conn test/test

##创建表
create table test (id number not null,name varchar2(100));
insert into test values (1,'lucifer');
commit;

2 通过PL/SQL连接test用户



至此,Oracle数据库已经安装完毕。


本次分享到此结束啦~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。

小白都能看懂的linux系统下安装配置zabbix

实验环境:操作系统:Centos7.6服务器ip:192.168.10.100运行用户:root网络环境:InternetZabbix是一个基于web界面的提供分布式系统监控及网络功能的企业级的开源监控工具,做为一个企业运维人员来说,zabbix可以给企业和运维人员带来... 查看详情

小白都能看懂的实战教程手把手教你pythonweb全栈开发(day4)(代码片段)

...;我叫亓官劼(qíguānjié),这个《小白都能看懂的实战教程手把手教你PythonWeb全栈开发》是一个零基础的实战教程,手把手带你开发一套系统,带你了解Pythonweb全栈开发,目前正在连续更新中,如果喜欢的... 查看详情

小白都能看得懂的教程一本教你如何在前端实现富文本编辑器(代码片段)

...家桶(IDEA/PtChram/CLion)免费正版小白都能看懂的实战教程手把手教你PythonWeb全栈开发(DAY1)小白都能看懂的实战教程手把手教你PythonWeb全栈开发(DAY2)小白都能看懂的实战教程手把手教你PythonWeb全栈开发(DAY3)小白都能看懂的... 查看详情

小白都能看懂的实战教程手把手教你pythonweb全栈开发(day2)(代码片段)

小白都能看懂的实战教程手把手教你PythonWeb全栈开发Flask(PythonWeb)实战系列之在线论坛系统第二讲这是小白都能看懂的实战教程手把手教你PythonWeb全栈开发的第二讲,如果文中有基础知识不太熟悉的话,可以看博主前几期... 查看详情

小白都能看懂的实战教程手把手教你pythonweb全栈开发(day5)(代码片段)

...;我叫亓官劼(qíguānjié),这个《小白都能看懂的实战教程手把手教你PythonWeb全栈开发》是一个零基础的实战教程,手把手带你开发一套系统,带你了解Pythonweb全栈开发,目前正在连续更新中,如果喜欢的... 查看详情

小白都能看懂的实战教程手把手教你pythonweb全栈开发(day6)(代码片段)

...;我叫亓官劼(qíguānjié),这个《小白都能看懂的实战教程手把手教你PythonWeb全栈开发》是一个零基础的实战教程,手把手带你开发一套系统,带你了解Pythonweb全栈开发,目前正在连续更新中,如果喜欢的... 查看详情

小白都能看懂的sql零基础入门,一文带你轻松学会增删改查!(代码片段)

作者简介作者:LuciferLiu,中国DBA联盟(ACDU)成员。目前从事OracleDBA工作,曾从事Oracle数据库开发工作,主要服务于生产制造,汽车金融等行业。现拥有OracleOCP,OceanBaseOBCA认证,擅长Oracle数据库运维开发&#... 查看详情

小白都能看懂的redis讲解--针对单个键操作集锦

1重命名键renamekeynewname可以对键重命名,下面的例子我们创建了一个key为name,value为luke的键值对。然后将name重命名为user,之后查询name就返回nil,而user是可以查到值的。127.0.0.1:6379>setnamelukeOK127.0.0.1:6379>getname"luke"127.0.0.1:6379&... 查看详情

小白都能看懂的关于mixins机制的理解(代码片段)

前言​在学习Flutter源码的时候,看到各种复杂的mixin和on,为了便于后续Flutter的学习,这里有必要一起来份详细Dart的Mixin机制。什么是mixins首先看看官方文档的定义:Mixinsareawayofreusingaclass’scodeinmultipleclasshierarchie... 查看详情

小白都能看懂的关于mixins机制的理解(代码片段)

前言​在学习Flutter源码的时候,看到各种复杂的mixin和on,为了便于后续Flutter的学习,这里有必要一起来份详细Dart的Mixin机制。什么是mixins首先看看官方文档的定义:Mixinsareawayofreusingaclass’scodeinmultipleclasshierarchie... 查看详情

[图解]小白都能看懂的fasterr-cnn–原理和实现细节(代码片段)

Contents [hide]1 论文原文2 介绍3 Anchors3.1 如何确定一个anchor是正样本还是负样本?4 实现细节5 调试信息6 参考资料论文原文FasterR-CNN:TowardsReal-TimeObjectDetectionwithRegionProposalNetworks介绍  FasterRCNN由RossB.Girshick在2016年提出ÿ 查看详情

小白都能看得懂的教程看完这篇还不会生成随机验证码图片,你来打我!!!(代码片段)

...家桶(IDEA/PtChram/CLion)免费正版小白都能看懂的实战教程手把手教你PythonWeb全栈开发(DAY1)小白都能看懂的实战教程手把手教你PythonWeb全栈开发(DAY2)小白都能看懂的实战教程手把手教你PythonWeb全 查看详情

小白都能看懂的分布式事务与2pc

2PC通信原理分布式事务的原子性什么是2PC2PC提交事务的过程2PC的全局提交规则2PC通信架构集中式2PC通信架构分层2PC通信架构线性2PC通信架构故障恢复站点故障报文丢失总结分布式事务的原子性一提到到事务,一般就会想到它... 查看详情

终于有一篇小白能看懂的智能指针详解了!(代码片段)

C++只能指针详解为什么会出现智能指针?内存泄漏打破美好智能指针unique_ptr功能实验shared_ptr成员函数缺陷weak_ptr总结内容较多,建议收藏,以后复习为什么会出现智能指针?对于程序员来说,如果我不... 查看详情

小白也能看懂的插件化droidplugin原理--反射机制和hook入门

  前言:在上一篇博文《小白也能看懂的插件化DroidPlugin原理(一)--动态代理》中详细介绍了DroidPlugin原理中涉及到的动态代理模式,看完上篇博文后你就会发现原来动态代理真的非常简单,只不过就是实现一个InvocationHandler... 查看详情

小学生都能看懂的残差网络

ResNet残差网络本文适用于初次接触残差网络的小白,只是为了对残差网络有着更好的入门的一篇文章。问题提出:所谓深度学习,大部分人都会认为准确率会随着卷积层的增加而增加,但是随着技术的增加,... 查看详情

大白话聊聊微服务——人人都能看懂的演进过程

...的逻辑,才是有意义的分享。所以接下来我会尝试用大家都能理解的语言来聊一聊”微服务“。【写在前面】那么,什么是微服务呢?你不一定知道微服务,但是你一定知道麦某劳,而且知道麦某劳有个甜品站。你可能会问,甜... 查看详情

小白也能看懂的laravel核心概念讲解

自动依赖注入什么是依赖注入,用大白话将通过类型提示的方式向函数传递参数。实例1首先,定义一个类:/routes/web.phpclassBar{}假如我们在其他地方要使用到 Bar 提供的功能(服务),怎么办,直接传入参数即可:/routes/web.... 查看详情