⭐️ 2021了还照着文档安装 Oracle 数据库?墨迹!❤️ Vagrant 一键搞定 ❤️ 丨【绽放吧!数据库】

举报
Lucifer三思而后行 发表于 2021/07/31 16:09:48 2021/07/31
【摘要】 通过 Vagrant 快速搭建属于自己的 Oracle 测试学习环境,快来试试吧!

🌲 前言

写在最前面,如果是新手不会安装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 文件夹,并上传需要的安装介质:
在这里插入图片描述
这里说一下以下文件的作用:

  • 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一键安装脚本可执行权限
  • g.进入/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等等。

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

写在最后

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

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

在这里插入图片描述


本次分享到此结束啦~

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

【绽放吧!数据库】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/285617

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。