文章

上一节中我们完成了Oracle Linux虚拟机的安装,本节继续进行系统的配置,完成Oracle数据库19c RAC的安装准备工作。

[heading]Oracle安装前提[/heading]

以root用户登录系统虚机ol7-19-rac1,运行以下命令安装Oracle数据库19c依赖包

$ yum install -y oracle-database-preinstall-19c

安装完成运行以下命令更新内核参数

$ /sbin/sysctl -p

创建Oracle安装所需的组与用户

$ groupadd -g 54321 oinstall $ groupadd -g 54322 dba
$ groupadd -g 54323 oper
$ groupadd -g 54324 backupdba
$ groupadd -g 54325 dgdba
$ groupadd -g 54326 kmdba
$ groupadd -g 54327 asmdba
$ groupadd -g 54328 asmoper
$ groupadd -g 54329 asmadmin
$ groupadd -g 54330 racdba
$
$ useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,asmoper,admadmin,racdba oracle

设置oracle用户密码

$ passwd oracle

编辑/etc/hosts文件,增加以下内容

# Public
10.0.1.101 ol7-19-rac1
10.0.1.102 ol7-19-rac2
# Private
192.168.1.101 ol7-19-rac1-priv
192.168.1.102 ol7-19-rac2-priv
# Virtual
10.0.1.103 ol7-19-rac1-vip
10.0.1.104 ol7-19-rac2-vip
# SCAN
10.0.1.105 ol7-19-scan

确认IP地址对应的网卡均设置为开机启动。 关闭SELinux,编辑/etc/selinux/config文件,设置

SELINUX=disabled

关闭防火墙,运行以下命令

$ systemctl stop firewalld
$ systemctl disable firewalld

关闭chrony服务

$ systemctl stop chronyd
$ systemctl disable chronyd

创建Oracle 19c RAC所需的目录并修改权限

$ mkdir -p /u01/app/19/grid
$ mkdir -p /u01/app/oracle/product/19/db_1
$ chown -R oracle:oinstall /u01
$ chmod -R 775 /u01/

用oracle用户登录系统,在”/home/oracle/.bash_profile”最后一行增加以下内容

# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=ol7-19-rac1
export ORACLE_UNQNAME=CDBRAC
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/19/grid
export DB_HOME=$ORACLE_BASE/product/19/db_1
export ORACLE_HOME=$DB_HOME
export ORACLE_SID=cdbrac1
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

alias grid_env=’. /home/oracle/grid_env’
alias db_env=’. /home/oracle/db_env’

创建名为”/home/oracle/grid_env“的文件,设置集群用户环境,在文件中加入以下内容

export ORACLE_SID=+ASM1
export ORACLE_HOME=$GRID_HOME
export PATH=$ORACLE_HOME/bin:$BASE_PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

创建名为”/home/oracle/db_env”的文件,设置数据库用户环境,在文件中加入以下内容

export ORACLE_SID=cdbrac1
export ORACLE_HOME=$DB_HOME
export PATH=$ORACLE_HOME/bin:$BASE_PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

关闭系统

shutdown -r now

[heading]创建共享存储[/heading] 从Linux主机Ubuntu系统硬盘中划分空间,虚拟出出两台主机可以同时看到的共享LUN,3个1G的盘用作OCR和Voting Disk,其余分了3个12G的盘规划做用做数据盘和FRA。

$ mkdir -p /data1/u04/ol7-19-rac
$ cd /data1/u04/ol7-19-rac
$
$ # Create the disks and associate them with VirtualBox as virtual media.
$ VBoxManage createhd --filename asm-ocr1.vdi --size 1024 --format VDI --variant Fixed
$ VBoxManage createhd --filename asm-ocr2.vdi --size 1024 --format VDI --variant Fixed
$ VBoxManage createhd --filename asm-ocr3.vdi --size 1024 --format VDI --variant Fixed
$ VBoxManage createhd --filename asm-data1.vdi --size 12288 --format VDI --variant Fixed
$ VBoxManage createhd --filename asm-data2.vdi --size 12288 --format VDI --variant Fixed
$ VBoxManage createhd --filename asm-data3.vdi --size 12288 --format VDI --variant Fixed
$
$ # Connect them to the VM.
$ VBoxManage storageattach ol7-19-rac1 --storagectl "SATA" --port 1 --device 0 --type hdd --medium asm-ocr1.vdi --mtype shareable
$ VBoxManage storageattach ol7-19-rac1 --storagectl "SATA" --port 2 --device 0 --type hdd --medium asm-ocr2.vdi --mtype shareable
$ VBoxManage storageattach ol7-19-rac1 --storagectl "SATA" --port 3 --device 0 --type hdd --medium asm-ocr3.vdi --mtype shareable
$ VBoxManage storageattach ol7-19-rac1 --storagectl "SATA" --port 4 --device 0 --type hdd --medium asm-data1.vdi --mtype shareable
$ VBoxManage storageattach ol7-19-rac1 --storagectl "SATA" --port 5 --device 0 --type hdd --medium asm-data2.vdi --mtype shareable
$ VBoxManage storageattach ol7-19-rac1 --storagectl "SATA" --port 6 --device 0 --type hdd --medium asm-data3.vdi --mtype shareable
$
$ # Make shareable.
$ VBoxManage modifyhd asm-ocr1.vdi --type shareable
$ VBoxManage modifyhd asm-ocr2.vdi --type shareable
$ VBoxManage modifyhd asm-ocr3.vdi --type shareable
$ VBoxManage modifyhd asm-data1.vdi --type shareable
$ VBoxManage modifyhd asm-data2.vdi --type shareable
$ VBoxManage modifyhd asm-data3.vdi --type shareable

启动虚机”ol7-19-rac1″,用root用户登录系统,确认刚刚创建的共享磁盘已成功绑定。

[root@ol7-19-rac1 ~]# cd /dev
[root@ol7-19-rac1 dev]# ls sd*
sda sda1 sda2 sdb sdc sdd sde sdf sdg
[root@ol7-19-rac1 dev]#

使用fdisk命令对新建的磁盘从sdb到sdg进行分区。

[root@ol7-19-rac1 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x62be91cf.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
switch off the mode (command ‘c’) and change display units to
sectors (command ‘u’).
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4, default 1):
First cylinder (1-652, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652):
Using default value 652
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@ol7-19-rac1 ~]#

所有磁盘分区完成后,再运行ls命令的结果应该如下所示。

[root@ol7-19-rac1 dev]# ls sd*
sda sda2 sdb1 sdc1 sdd1 sde1 sdf1 sdg1
sda1 sdb sdc sdd sde sdf sdg
[root@ol7-19-rac1 dev]#

配置UDEV规则,创建或编辑文件”/etc/scsi_id.config”,增加以下内容。

options=-g

查看磁盘的SCSI ID

[root@ol7-19-rac1 dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sdb
1ATA_VBOX_HARDDISK_VBb5781d10-5cdd8626
[root@ol7-19-rac1 dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sdc
1ATA_VBOX_HARDDISK_VBdaa6933f-45a7bbd7
[root@ol7-19-rac1 dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sdd
1ATA_VBOX_HARDDISK_VBff9e560e-3053c1ed
[root@ol7-19-rac1 dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sde
1ATA_VBOX_HARDDISK_VB0ce057db-89d80b0f
[root@ol7-19-rac1 dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sdf
1ATA_VBOX_HARDDISK_VB38c72c62-65c8b2ce
[root@ol7-19-rac1 dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sdg
1ATA_VBOX_HARDDISK_VB15992f0b-6cff3aca
[root@ol7-19-rac1 dev]#

使用上面的磁盘ID,修改”/etc/udev/rules.d/99-oracle-asmdevices.rules” 文件内容。

KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBb5781d10-5cdd8626", SYMLINK+="asm-ocr1", OWNER="oracle", GROUP="asm admin", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBdaa6933f-45a7bbd7", SYMLINK+="asm-ocr2", OWNER="oracle", GROUP="asm admin", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBff9e560e-3053c1ed", SYMLINK+="asm-ocr3", OWNER="oracle", GROUP="asm admin", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB0ce057db-89d80b0f", SYMLINK+="asm-data1", OWNER="oracle", GROUP="as madmin", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB38c72c62-65c8b2ce", SYMLINK+="asm-data2", OWNER="oracle", GROUP="as madmin", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB15992f0b-6cff3aca", SYMLINK+="asm-data3", OWNER="oracle", GROUP="as madmin", MODE="0660"

加载更新后的磁盘分区表

[root@ol7-19-rac1 dev]# /sbin/partprobe /dev/sdb1
[root@ol7-19-rac1 dev]# /sbin/partprobe /dev/sdc1
[root@ol7-19-rac1 dev]#/sbin/partprobe /dev/sdd1
[root@ol7-19-rac1 dev]# /sbin/partprobe /dev/sde1
[root@ol7-19-rac1 dev]# /sbin/partprobe /dev/sdf1
[root@ol7-19-rac1 dev]# /sbin/partprobe /dev/sdg1

测试并验证规则正常工作

[root@ol7-19-rac1 dev]# /sbin/udevadm test /block/sdb/sdb1

重新加载UDEV规则

[root@ol7-19-rac1 dev]# /sbin/udevadm control --reload-rules

现在新增的磁盘规则应该生效,查看确认可列出所有磁盘。如果没有看到,重新修改配置文件。

[root@ol7-19-rac1 dev]# ls -al /dev/asm*
lrwxrwxrwx 1 root root 4 Nov 9 20:50 /dev/asm-data1 -> sde1
lrwxrwxrwx 1 root root 4 Nov 9 20:55 /dev/asm-data2 -> sdf1
lrwxrwxrwx 1 root root 4 Nov 9 20:55 /dev/asm-data3 -> sdg1
lrwxrwxrwx 1 root root 4 Nov 9 20:55 /dev/asm-ocr1 -> sdb1
lrwxrwxrwx 1 root root 4 Nov 9 20:26 /dev/asm-ocr2 -> sdc1
lrwxrwxrwx 1 root root 4 Nov 9 20:25 /dev/asm-ocr3 -> sdd1


/dev/asm:
[root@ol7-19-rac1 dev]#

成功为配置好RAC集群所需的共享磁盘,关闭虚机”ol7-19-rac1″。

[root@ol7-19-rac1 dev]# shutdown -h now

[heading]创建第二台虚机[/heading] 打开VirtualBox管理界面,右键点击左侧的”ol7-19-rac1″,在弹出菜单选择”Clone”。把新机器命名为”ol7-19-rac2″,Next完成第二台虚机的创建。 Clone VM 虚机创建后,在Linux主机运行以下命令,绑定共享磁盘到新建的虚机。

$ VBoxManage storageattach ol7-19-rac2 --storagectl "SATA" --port 1 --device 0 --type hdd --medium asm-ocr1.vdi --mtype shareable
$ VBoxManage storageattach ol7-19-rac2 --storagectl "SATA" --port 2 --device 0 --type hdd --medium asm-ocr2.vdi --mtype shareable
$ VBoxManage storageattach ol7-19-rac2 --storagectl "SATA" --port 3 --device 0 --type hdd --medium asm-ocr3.vdi --mtype shareable
$ VBoxManage storageattach ol7-19-rac2 --storagectl "SATA" --port 4 --device 0 --type hdd --medium asm-data1.vdi --mtype shareable
$ VBoxManage storageattach ol7-19-rac2 --storagectl "SATA" --port 5 --device 0 --type hdd --medium asm-data2.vdi --mtype shareable
$ VBoxManage storageattach ol7-19-rac2 --storagectl "SATA" --port 6 --device 0 --type hdd --medium asm-data3.vdi --mtype shareable

启动”ol7-19-rac2″,以root用户登录,更新主机名及IP地址信息。
  • 主机名:ol7-19-rac2
  • enp0s3: IP=10.0.1.102 Netmask=255.255.255.0
  • enp0s8: IP=192.168.1.102 Netmask=255.255.255.0
修改”/home/oracle/.bash_profile”,”/home/oracle/grid_env”和”/home/oracle/db_env”文件,对应更新ORACLE_HOSTNAME和ORACLE_SID值。 重启虚拟机”ol7-19-rac2″,用root用户登录系统,重新加载磁盘分区和UDEV规则,确认可以查看到所有asm有磁盘。 至此,我们完成了Oracle 19c RAC安装的准备工作。关闭虚机,备份虚拟机后准备进行Grid Infrastructure的安装。

$ zip PreGrid.zip *.vdi

 

[heading]起因[/heading]

Oracle于9月份举办了针对合作伙伴的Oracle数据库19c新功能培训,并号召ISV进行国内第一轮的应用系统数据库认证。请郭老板着手准备认证所需的资料,没想到郭同学一再跳票,问了原因才知道是没有RAC环境导致,自告奋勇在公司服务器上帮他搭建环境。想着装RAC无非是举手之劳,没想到凭着以前的经验安装Oracle RAC,还是踩了不少的坑,是为之记。

[heading]所需软件[/heading]

在安装前,准备好搭建环境所需的软件。

[heading]安装VirtualBox[/heading]

我是在Ubuntu 19.10下安装VirtualBox软件,使用以下命令完成安装,如果是其他Linux发行版或者Windows请运行相应命令。

$ sudo dpkg -i virtualbox-6.0_6.0.14-133895~Ubuntu~bionic_amd64.deb

创建虚机 我们计划部署两节点的RAC,所以先创建一个虚机,配置好RAC所需的环境参数,然后复制虚机得到第二个节点。 启动VirtualBox,点击工具栏的New按钮,名称设置为ol7-19-rac1,操作系统类型为Linux,版本为Oracle(64-bit),点击Next 设置“16384”做为内存大小,点击Next。 Memory Size 硬盘页面接受默认的创建新虚拟硬盘,点击Create。 Hard Disk 进入硬盘创建向导,接受默认的VDI硬盘类型,点击Next Hard disk file type 存储方式接受默认的“Dynamically allocated”,点Next Storage on physical hard disk 接受默位置,设置硬盘尺寸为100G,点击Create完成虚拟机的创建。 File location and size 新建名称为“ol17-19-rac1”的虚拟机将在窗口左边列出(忘了截图,用最后的图代替:)),右边窗口点Network链接。 VM List 确认Adapter 1已启用,并设置为Bridged Adapter(因为安装RAC环境要在公司内部网络测试,所以设置为Bridged,如果本机如果本机测试可设置为NAT)。点击Adapter 2页 Adapter 1 确认Adapter 2已启用,并且设置为“Internal Network”。 Adapter 2 点击左侧页面的System,把Boot Order列表中的Floppy去掉。完成虚机的设置。

[heading]在虚机安装Oracle Linux[/heading]

在新创建虚机把光驱映射到下载好的Oracle Linux 7.5的光盘映像文件V975367-01.iso,点击Start启动虚机。 利用光盘启动系统,按I进入Oracle Linux 7.5的安装。 选择以下包进行Oracle Linux的安装
  • Server with GUI
  • Hardware Monitoring Utilities
  • Large Systems Performance
  • Network file system client
  • Performance Tools
  • Compatibility Libraries
  • Development Tools
并对主机名及IP地址进行以下设置: 主机名:ol7-19-rac1 enp0s3: IP=10.0.1.101 Netmask=255.255.255.0 enp0s8: IP=192.168.1.101 Netmask=255.255.255.0 完成虚机Oracle Linux 7.5的安装,重启进入系统。 刚装完系统可能存在虚拟机系统中鼠标移位或者鼠标不工作等情况,可点击VirtualBox的Devices菜单,选择Insert Guest Additions CD images…,装载虚机工具光盘。 在虚拟机Oracle Linux系统里点击Run完成虚机驱动程序的安装(如果出错可通过yum upgrade升级Linux内核解决)。 下一步我们将在虚机系统里进行安装的准备配置,并生成第二台虚拟机。  

厌倦了登录服务器经常提示有N个补丁需要更新,需要重新启动之类的,可以通过服务器自动更新解决。

1.安装自动更新支持包

安装unattended-upgrades包。

sudo apt install unattended-upgrades

2.配置自动更新

编辑配置文件

sudo vi /etc/apt/apt.conf.d/50unattended-upgrades

该文件前半段长这样子:

最重要的是把“updates”这一行注释去掉。

“${distro_id}:${distro_codename}-updates”;

建议把自动清理不用内核文件的行也同时打开。

Unattended-Upgrade::Remove-Unused-Kernel-Packages “true”;
Unattended-Upgrade::Remove-Unused-Dependencies “true”;

自动重启及时间看个人喜好打开。

3.启用自动更新

sudo vi /etc/apt/apt.conf.d/20auto-upgrades

按需要修改内容

APT::Periodic::Update-Package-Lists “1”;
APT::Periodic::Download-Upgradeable-Packages “1”;
APT::Periodic::AutocleanInterval “3”;
APT::Periodic::Unattended-Upgrade “1”;

4.确认是配置是否起作用

用dry run方式看自动更新配置是否起作用

sudo unattended-upgrades –dry-run –debug

一无聊又搞事情,把一台CentOS机器直接从6升级到7,结果升级后要安装东西时,用yum update出现了错误,显示python(abi) = 2.6 is needed by (installed) python-argparse-1.2.1-2.el6.centos.noarch。

放狗搜了半天,试了几种方法还是搞不好。仔细分析具体信息,应该是系统残留的CentOS6包导致的,删除所有的el6包解决问题。

rpm --erase --nodeps $(for pkg in $(rpm -qa | grep '\.el[56]\.' | grep -v kmod | grep -v kernel); do rpm -q $pkg --qf '%{NAME} ' ; done)

对于度娘百度云的鸡贼限速实在无话可说,对于合作伙伴把ISO文件放在度盘让俺去下载的丧心病狂行径更加是深恶痛绝。哥忍着病疼周末加班处理问题居然要花大量时间去等工具下载完成。叔可忍婶不可忍,只能想办法把东西下载回来。

开搞。

 

[heading]1.先安装Chrome百度网盘助手插件[/heading]

在https://github.com/acgotaku/BaiduExporter下载BaiduExporter.crx,手动安装到Chrome。

 

 

[heading]2.安装Aria2[/heading]

[highlight dark=”no”]sudo apt-get install aria2[/highlight]

 

 

[heading]3.下载文件[/heading]

打开度盘,选中你要下载的文件,选择导出下载菜单的文本导出。把显示的文件内容复制下来,然后在粘贴到命令框即可下载。

 

如果被度娘断开连接,可以重新输入命令实现断点续传。

懒癌发作,直到春节假期才下定决心把公司的基础架构都迁移到Docker上,随之而来的是一大堆应用重新部署及系统重构的工作。公司大量的应用是基于Oracle数据库构建,所以安装Oracle Database变成了首要任务。虽然安装配置数据库是小菜一碟,但是习惯了登录OTN网站下载安装文件然后照步骤安装,在Linux环境下碰到的第一个问题是在Console的环境下没有浏览器,而下载Oracle 数据库安装文件需要登录OTN网站并同意Oracle的License协议方能下载。

虽然可能利用cookies export这些工具来实现,但是习惯了使用最简单的方法解决问题,直接利用Firefox浏览器可以达到这个目的。在工作计算机上用Firefox登录OTN网站,同意协议后点击下载你所需的数据库安装文件,当下载开始后点击暂停下载,然后在下载任务上右键,选择复制下载链接。

然后登录到Linux终端,用Wget加上复制的链接就可以实现在Linux终端下载OTN文件。