暂无图片
暂无图片
9
暂无图片
暂无图片
暂无图片

❤️ [Vagrant + VirtualBox] 一键搞定Oracle数据库安装 ❤️

原创 Lucifer三思而后行 2021-07-25
12398

大家好,这里是 Lucifer三思而后行,专注于提升数据库运维效率。

目录

🌲 前言

写在最前面,如果是新手不会安装Oracle数据库,可以直接下载我打包好的 box 直接安装,打开即可使用Oracle数据库!!!

⭐️ Box 下载方式:luciferliu/oracle11g ⭐️

哈哈 😄,我又来偷懒了,之前写了一版 ❤️ Oracle一键安装脚本 ❤️,大大减少了平时用于安装数据库花费的时间。但是,安装Linux系统还是需要耗费时间,而且是重复的点击动作,太不自动化了。

于是,我就开始在网上冲浪 🏄🏻,发现了ansible,cobbler,vagrant等等可用于脚本自动安装Linux主机的方法。毅然决然,我选择了入门最快,最简单的 Vagrant

就这样,我开始折腾了。先是成功使用Vagrant在电脑上安装了Linux系统,然后融合之前的Oracle一键安装脚本,最终成功 🎉 实现了 Vagrantg 一键安装Oracle数据库,彻底释放双手 🙌🏻!

🪐 Vagrant使用方式可参考:

🌏 Oracle一键安装脚本使用可参考:

好勒,哔哔半天了,正文开始~ ヾ(◍°∇°◍)ノ゙

在这里插入图片描述
💻 本文需要用到的软件:

  • Vagrant
  • VirtualBox

注意:📢 请提前安装好~

一、⭐️ Vagrant安装Linux系统 ⭐️

第一步,当然是安装Linux系统啊,没有安装Vagrant的朋友,去 下载页面 下载安装一下吧,很简单的。不会玩的,往上翻一点看教程,我就默认大家已经安装完啦👍🏻~

1、安装目录

首先需要创建一个目录,用来放置 Vagrantfile 和安装介质:

mkdir /Volumes/DBA/vagrant/centos79 -p

Windows系统的朋友👬🏻,我就不说怎么创建目录啦~

在这里插入图片描述

2、下载 Vagrant box

建议直接去 Vagrant box官方下载页面 搜索下载,本文使用 Centos7.9版本。

在这里插入图片描述
当然是选下载量最高,更新比较靠近的哇 🤩~

点击进去,我们选择 virtualbox 版本进行下载:

在这里插入图片描述
注意:这里有很多版本支持,如果使用VMware或者Parallels也可以的哈~

3、Vagrant添加Box

下载完之后,我这边为了便于分辨,将文件改名为 centos7.9

在这里插入图片描述

使用 vagrant box add 命令添加下载好的box:

vagrant box add /Users/lpc/Downloads/centos7.9 --name centos79 vagrant box list

注意:/Users/lpc/Downloads/centos7.9 为 box 存放位置,–name centos79 是指创建一个逻辑名称。

在这里插入图片描述

已成功添加 box,接下来需要配置 Vagrantfile 文件和上传安装介质。

4、配置Vagrantfile文件

这里我就不讲解Vagrantfile如何配置,具体可以看官方文档,配置如下:

cd /Volumes/DBA/vagrant/centos79 cat <<EOF>Vagrantfile Vagrant.configure("2") do |config| config.vm.box = "centos79" config.vm.provision :shell, path: "/Volumes/DBA/vagrant/centos79/scripts/ora_preinstall.sh" config.vm.synced_folder "/Volumes/DBA/vagrant/centos79", "/vagrant" config.vm.network :forwarded_port, guest: 1521, host: 1521 config.vm.network :forwarded_port, guest: 22, host: 22 config.vm.network "public_network", ip: "192.168.1.120" config.vm.provider "virtualbox" do |vb| vb.name = "orcl1" vb.memory = 4196 vb.cpus = 2 end end EOF

在这里插入图片描述

这里简单解释一下配置文件中的几个参数:

  • config.vm.box = “centos79”
    指定上文添加的box逻辑名称,用于安装Linux系统
  • config.vm.provision :shell, path: “/Volumes/DBA/vagrant/centos79/scripts/ora_preinstall.sh”
    配置用于安装完Linux系统后自动执行shell脚本
  • config.vm.synced_folder “/Volumes/DBA/vagrant/centos79”, “/vagrant”
    映射本地目录到Linux主机目录
  • config.vm.network :forwarded_port, guest: 1521, host: 1521
    映射Linux主机1521端口到本机端口1521
  • config.vm.network :forwarded_port, guest: 22, host: 22
    映射Linux主机22端口到本机端口22
  • config.vm.network “public_network”, ip: “192.168.1.120”
    配置主机网络为192.168.1.120,建议与本机做桥接,可用于上网
  • config.vm.provider “virtualbox” do |vb|
    配置虚拟机程序为virtualbox,如果是paralles则修改为parallels即可
  • vb.name = “orcl”
    配置主机名
  • vb.memory = 4196
    配置主机内存
  • vb.cpus = 2
    配置主机CPU

5、准备安装介质

在开始创建的目录下,创建 soft 文件夹,并上传需要的安装介质:

❤️ 需要安装介质的朋友可以关注公众号免费获取!详情可以查看如下文章:❤️

精心整理Oracle数据库各版本(软件安装包+最新补丁包),附下载链接🔗

在这里插入图片描述

这里说一下以下文件的作用:

  • CentOS-7.9-x86_64-Everything-2009.iso
    Centos iso镜像文件,用于安装本地YUM源,如果能联网可以不需要
  • OracleShellInstall.sh
    Oracle一键安装脚本,可在Github下载,持续更新🔥,欢迎👏🏻 Star
  • p13390677_112040_Linux-x86-64_1of7.zip
  • p13390677_112040_Linux-x86-64_2of7.zip
    Oracle 11GR2 Database 安装包
  • p31537677_112040_Linux-x86-64.zip
    Oracle 11GR2 Database PSU补丁包
  • p6880880_112000_Linux-x86-64.zip
    Oracle OPatch补丁包
  • rlwrap-0.42.tar.gz
    上下文切换软件,可选安装,非必须

这里安装介质就准备好啦,放在这里就行了 😄 ~

6、编写Vagrantfile中定义的Shell脚本

为了实现Linux安装成功后继续自动安装Oracle数据库,因此需要提前准备shell脚本用于Linux系统安装后调用执行。

mkdir -p /Volumes/DBA/vagrant/centos79/scripts cd /Volumes/DBA/vagrant/centos79/scripts cat <<EOF>ora_preinstall.sh #change root password echo oracle | passwd --stdin root #change sshd_config sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config systemctl reload sshd.service #mkdir software dir mkdir /soft #cp software to softdir cp /vagrant/soft/* /soft #mount iso to mnt dir mount -o loop /soft/*iso /mnt #chmod shell script chmod +x /soft/OracleShellInstall.sh #install oracle database cd /soft ./OracleShellInstall.sh -i 192.168.1.120 -opa 31537677 -installmode single -dbv 11g EOF

这里稍微解释一下哈,脚本中的步骤:

  • a.修改root用户密码
  • b.配置ssh服务允许输入密码连接
  • c.Linux主机中创建soft目录用于存放安装介质
  • d.复制映射目录/vagrant/soft下的安装介质到/soft目录下
  • e.挂载centos7.9的iso镜像文件
  • f.授权Oracle一键安装脚本可执行权限
  • e.进入/soft目录,根据提前配置好的一键安装参数,执行安装Oracle数据库

在这里插入图片描述

至此,所有的前置配置都已完成,下面就是见证奇迹的时刻啦 ᕕ( ᐛ )ᕗ ~

二、❤️ Vagrant启动一键安装Oracle ❤️

1、😏 很简单,一行短短的命令

vagrant up

为了直观一点,来个动图看一下吧:

在这里插入图片描述

开始拷贝文件有些慢,不是Gif结束了,等一会儿就继续了;

由于Gif大小限制,只展示到安装PSU补丁就停止,后续没有什么好看的了,就是 顺利建库成功 啦!

在这里插入图片描述

这里就已经安装成功了。现在我们连进去查看数据库试试:

在这里插入图片描述

可以看到数据库创建成功 🎉,PSU补丁也已经安装成功 ✌🏻:

在这里插入图片描述

就这,你以为本文就结束了❓ 当然不是,还有干货分享 🔥 !!!

三、❄️ Vagrant box打包分享 ❄️

Vagrant支持将box打包并且上传到官方站点进行分享,也可以用于备份,方便以后直接打开使用。

接下来,就看看如何打包Vagrant box吧 😄!

1、打包前准备

删除多余的安装介质以减少box大小,取消/mnt镜像挂载

rm -rf /soft umount /mnt

关闭Oracle数据库和监听

lsnrctl stop sas shudown immediate

关闭Linux主机

vagrant halt vagrant status

在这里插入图片描述

2、打包box

通过vagrant package命令打包box:

在这里插入图片描述

sudo vagrant package

在这里插入图片描述

注意:如果直接打包box,打包完后的box高达 18G,明显太大了。

使用脚本清理,缩小box大下:

##创建脚本文件 vi /mnt/purge.sh chmod +x /mnt/purge.sh ##将以下内容写入脚本文件 #!/bin/sh # Zero free space to aid VM compression printf "STEP: Zero free space to aid VM compression\n" dd if=/dev/zero of=/EMPTY bs=1M rm -f /EMPTY # Remove Linux headers printf "STEP: Remove Linux headers\n" rm -rf /usr/src/linux-headers* # Remove Unused locales (edit for your needs, this keeps only en* and pt_BR) printf "STEP: Remove Unused locales (edit for your needs, this keeps only en* and pt_BR) find\n" find /usr/share/locale/{af,am,ar,as,ast,az,bal,be,bg,bn,bn_IN,br,bs,byn,ca,cr,cs,csb,cy,da,de,de_AT,dz,el,en_AU,en_CA,eo,es,et,et_EE,eu,fa,fi,fo,fr,fur,ga,gez,gl,gu,haw,he,hi,hr,hu,hy,id,is,it,ja,ka,kk,km,kn,ko,kok,ku,ky,lg,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,nb,ne,nl,nn,no,nso,oc,or,pa,pl,ps,qu,ro,ru,rw,si,sk,sl,so,sq,sr,sr*latin,sv,sw,ta,te,th,ti,tig,tk,tl,tr,tt,ur,urd,ve,vi,wa,wal,wo,xh,zh,zh_HK,zh_CN,zh_TW,zu} -type d -delete # Remove bash history printf "STEP: Remove bash history\n" unset HISTFILE rm -f /root/.bash_history # Cleanup log files printf "STEP: Cleanup log files\n" find /var/log -type f | while read f; do echo -ne '' > $f; done; # Whiteout root printf "STEP: Whiteout root\n" count=`df --sync -kP / | tail -n1 | awk -F ' ' '{print $4}'`; count=$((count -= 1)) dd if=/dev/zero of=/tmp/whitespace bs=1024 count=$count; rm /tmp/whitespace; # Whiteout /boot printf "STEP: Whiteout /boot\n" count=`df --sync -kP /boot | tail -n1 | awk -F ' ' '{print $4}'`; count=$((count -= 1)) dd if=/dev/zero of=/boot/whitespace bs=1024 count=$count; rm /boot/whitespace; # Whiteout swap printf "STEP: Whiteout swap\n" swappart=`cat /proc/swaps | tail -n1 | awk -F ' ' '{print $1}'` swapoff $swappart; dd if=/dev/zero of=$swappart; mkswap $swappart; swapon $swappart;

清理完成后,重新打包 box。查看大小:

sudo vagrant package --output=centos79-oracle11g

在这里插入图片描述

刺不刺激,从 18G 变成 3.9G 了,爽呀,美滋滋 😄~

为了确保可以使用,我们重新添加测试一下:

mkdir -p /Volumes/DBA/vagrant/oracle11g vagrant box add /Volumes/DBA/vagrant/centos79/centos79-oracle11g --name oracle11g cd /Volumes/DBA/vagrant/oracle11g vagrant init oracle11g vagrant up --provider=virtualbox vagrant ssh su - oracle

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

经过测试,数据库可以使用,没毛病!!!

3、上传分享box

需要注册Vagrant账号,我这里已经注册好勒,开始上传!具体上传流程很简单,就不演示了哈 O(∩_∩)O~~
在这里插入图片描述
害,上传也太慢了,先去玩一会儿,等传完我再来 👋🏻 ~

。。。。。。好长时间过去了。。。。。。。
在这里插入图片描述
终于上传成功了!!!大家可以去下载使用了~☀️
在这里插入图片描述

下载方式:luciferliu/oracle11g

之后应该会出更多版本的数据库 box,包括rac数据库,dataguard,dns服务器,openfiler服务器以及MySQL等等。

⭐️ 慢慢玩,不着急~ ⭐️

最新的 Vagrant + Oracle 11GR2 RAC 安装教程:❤️ 新手向:⭐️接近零基础⭐️ Oracle Linux 7 安装 Oracle 11GR2 RAC

写在最后

虽然这种方式不适用于生产环境的安装使用 😒,但是,对于个人测试练习使用,可以说是极其方便了 😄。如果不会使用的朋友,可以直接下载我分享的box,直接 vagrant up 就可以使用啦 🎉~

❤️ 最后,祝大家玩得开心,有问题或者技术交流可以关注我,私聊我~ ❤️

在这里插入图片描述


往期精彩文章

Oracle 一键巡检自动生成 Word 报告
Oracle 一键安装合集
Oracle一键安装脚本的 21 个疑问与解答
Oracle一键巡检脚本的 21 个疑问与解答
全网首发:Oracle 23ai 一键安装脚本(非 RPM)
Oracle 19C 最新 RU 补丁 19.24 ,一键安装!
Oracle Linux 7.9 一键安装 Oracle 19C
RedHat 9.4(aarch64) 一键安装 Oracle 19C
openEuler 22.03 LTS SP4 一键安装 Oracle 19C RAC
RHEL 7.9 一键安装 Oracle 19C 19.23 RAC
Oracle DataGuard GAP 修复手册
优化 Oracle:最佳实践与开发规范
DBA 必备:Linux 软件源配置全攻略
Linux 一键配置时钟同步全攻略


感谢您的阅读,这里是 Lucifer三思而后行,欢迎点赞+关注,我会持续分享数据库知识、运维技巧。

最后修改时间:2024-08-09 11:32:44
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论