大家好,这里是 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 文件夹,并上传需要的安装介质:
❤️ 需要安装介质的朋友可以关注公众号免费获取!详情可以查看如下文章:❤️
这里说一下以下文件的作用:
- 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三思而后行,欢迎点赞+关注,我会持续分享数据库知识、运维技巧。