⭐️ 2021了还照着文档安装 Oracle 数据库?墨迹!❤️ Vagrant 一键搞定 ❤️ 丨【绽放吧!数据库】
🌲 前言
写在最前面,如果是新手不会安装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
- 点赞
- 收藏
- 关注作者
评论(0)