前几篇博文完整介绍了如何从搭建VirtualBox环境到安装配置Oracle 19c RAC的过程,传送门如下:
利用VirtualBox在Oracle Linux 7安装Oracle 19c RAC Part1-安装虚拟机
利用VirtualBox在Oracle Linux 7安装Oracle 19c RAC Part2-准备系统环境
利用VirtualBox在Oracle Linux 7安装Oracle 19c RAC Part3-安装Oracle Grid Infrastructure 19c
利用VirtualBox在Oracle Linux 7安装Oracle 19c RAC Part4-数据库安装和配置
本来整个系列文章算是完结,但是实在对于Oracle 18c后创建数据库的漫长时间难于忍受,因此在创建数据库时个人总是会用静默安装代替图形界面的安装。云时代,软件的安装部署本来应该是越来越简便快捷才对,不明白O记为啥会自己作死,非得要做一个这么漫长的过程,真是会让你等得怀疑人生。刚开始安装的时候老是会怀疑电脑是不是挂掉了。
这一篇文章算是画蛇添足,介绍怎么生成响应文件并静默安装。
有人会说我也知道静默安装方便,但是响应文件的指令不熟悉,不知从何入手去写,网上找到的响应文件资源也不一定适合。那该如何生成适合自己环境的响应文件呢?
这要从上一节利用VirtualBox在Oracle Linux 7安装Oracle 19c RAC Part4-数据库安装和配置说起。我们可以在图形向导运行dbca,在第14步dbca总结页面时,按“Save Response File…”,把响应文件保存起来,这样就得到了适合当前环境的dbca响应文件了。在这一步,直接按Cancel,取消数据库的创建。
用oracle用户登录系统,运行dbca -silent -createDatabase命令静默安装方式创建数据库。
[[email protected] ~]$ source db_env
[[email protected] ~]$ dbca -silent -createDatabase \
-responseFile /home/oracle/dbca.rsp \
-sysPassword mypassword\
-systemPassword mypassword \
-dbsnmpPassword mypassword \
-pdbAdminPassword mypassword \
-ignorePreReqs
Prepare for db operation
7% complete
Copying database files
27% complete
Creating and starting Oracle instance
28% complete
31% complete
35% complete
37% complete
40% complete
Creating cluster database views
41% complete
53% complete
Completing Database Creation
57% complete
59% complete
60% complete
Creating Pluggable Databases
64% complete
80% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/u01/app/oracle/cfgtoollogs/dbca/cdbrac.
Database Information:
Global Database Name:cdbrac
System Identifier(SID) Prefix:cdbrac
Look at the log file “/u01/app/oracle/cfgtoollogs/dbca/cdbrac/cdbrac0.log” for further details.
[[email protected] ~]$
利用静默安装的方式创建数据库,会比图形界面方式快很多。
如果运行dbca静默安装过程中出现数据库名已存在的[DBT-10317]等错误提示,可以用dbca -silent -deleteDatabase命令从系统中清除数据库信息,重新运行dbca -silent -createDatabase命令。
[FATAL] [DBT-10317] Specified GDB Name (cdbrac) already exists.
ACTION: Specify a different GDB Name that does not already exist.
[WARNING] [DBT-10328] Specified GDB Name (cdbrac) may have a potential conflict with an already existing database on the system.
ACTION: Specify a different GDB Name that does not conflict with existing databases on the system.
[WARNING] [DBT-10331] Specified SID Prefix (cdbrac) may have a potential conflict with an already existing database on the system.
CAUSE: The specified SID Prefix without the trailing numeric characters (cdbrac) may have a potential conflict with an already existing database on the system.
ACTION: Specify a different SID Prefix that does not conflict with existing databases on the system.
以下是静默运行删除数据库命令的示例输出。
上一节我们完成了Oracle Grid Infrastructure 19c集群软件的安装,并且在两个节点成功启动了服务。本节我们开始Oracle数据库19c软件的安装和DB配置。
把之前下载的Oracle数据库19c的压缩包文件LINUX.X64_193000_db_home.zip上传到ol7-19-rac1的home目录下。
使用oracle用户登录到ol7-19-rac1,把安装包解压到$ORACLE_HOME下。
[[email protected] ~]$ source db_env
[[email protected] ~]$ cd $ORACLE_HOME
[[email protected] db_1]$ pwd
/u01/app/oracle/product/19/db_1
[[email protected] db_1]$ unzip ~/LINUX.X64_193000_db_home.zip
使用oracle用户登录节点一“ol7-19-rac1”,开始进行数据库软件的安装配置。
[[email protected] ~]$ source db_env
[[email protected] ~]$ cd $ORACLE_HOME
[[email protected] db_1]$ pwd
/u01/app/oracle/product/19/db_1
[[email protected] db_1]$ ./runInstaller
启动数据库安装图形界面。
进入数据库配置向导,选择”Set Up Software Only”,Next
数据库安装选项,选择”Oracle Real Application Clusters database installation”,Next
节点选择,确认两个节点都选上,参照GI安装配置好节点的SSH connectivity,Next
数据库版本选择企业版“Enterprise Edition”,Next
安装位置确认是设置好的目录,Next
操作系统用户组,对应之前创建的用户组,Next
root脚本运行方式,选择手工运行,Next
前提检查结果忽略,Next
总结页面,保存响应文件,点Install正式开始数据库的安装配置。
安装程序在所有节点上复制并配置Oracle数据库软件,最后弹出root脚本执行页面。
按照提示,分别在两个节点执行root.sh脚本,OK完成Oracle数据库软件的配置。
[[email protected] ~]# /u01/app/oracle/product/19/db_1/root.sh
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/19/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of “dbhome” have not changed. No need to overwrite.
The contents of “oraenv” have not changed. No need to overwrite.
The contents of “coraenv” have not changed. No need to overwrite.
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
[[email protected] ~]#
使用asmca应用对之前虚拟的共享磁盘创建ASM磁盘组,以供RAC存储数据库文件。
[[email protected] ~]$ asmca
启动ASM管理图形界面,点击左侧的Disk Groups
点击Create,如下图所示创建两个磁盘组,一个DATA,一个FRA,冗余选择External(None)
确认新创建的磁盘组的状态都是MOUNTED,点Exit退出ASM磁盘管理向导。
现在所有的准备工作都就绪,最后的一步工作等着我们,就是使用DBCA命令创建Oracle数据库实例。
[[email protected] ~]$ source db_env
[[email protected] ~]$ cd $ORACLE_HOME
[[email protected] db_1]$ pwd
/u01/app/oracle/product/19/db_1
[[email protected] db_1]$ dbca
运行dbca,启动数据库创建图形界面
进入创建数据库向导,默认”Create a database”,Next
创建模式,选择”Advanced configuration”进阶配置,Next
部署类型,选择通用或事务处理“General Purpose or Transaction Processing”,Next
节点选择RAC集群所有的节点机器。
数据库ID设置,数据库名和SID设置为cdbracc,同时创建一个PDB实例,名称默认设置为pdb
存储选择ASM,数据库文件位置选择默认选项,Next
快速恢复先不启用,如果需要可以在数据库创建后打开。Next
Data Vault选项暂不启用,Next
配置选项可以选择数据库的字符集、是否安装示例数据库等,本次安装我们选用默认的AL32UTF8字符集,Next
管理选项启用EM,端口默认5500,Next
设置数据库管理员用户密码,为了测试方便,我们所有管理员使用相同密码,Next
创建选项,按照默认,Next
安装前提条件检查,忽略警告信息,Next
DBCA总结页面,保存响应文件,按Finish,开始数据库创建。
注:这一步保存响应文件很重要。从Oracle 18c开始,DBCA创建数据库是一个漫长的过程,个人对此行径深恶痛绝,等待数据库创建完成的过程简直是浪费生命。更推荐于使用静默安装的方式去完成数据库的创建。
数据库创建进程开始,可冲杯咖啡打盘游戏,晚上的话建议你回家睡觉明天再来,需要漫长的等待才能完成,估计需要几个小时。
数据库创建成功后,Close关闭向导。(在本次安装其实我没有用这种方式创建数据库,而是使用静默安装的方式,所以最后完成的截图缺失)。
使用crsctl stat res -t 命令查看集群资源的状态,确认“ol7-19-rac1”和”ol7-19-rac2″两个节点的资源在线,数据库实例已经正常Open。
使用sqlplus / as sysdba登录数据库实例,验证数据库工作正常。
SQL> select inst_id, name, open_mode from gv$database;
INST_ID NAME OPEN_MODE
———- ——— ——————–
1 CDBRAC READ WRITE
2 CDBRAC READ WRITE
SQL> show con_id
CON_ID
——————————
1
SQL> show con_name
CON_NAME
——————————
CDB$ROOT
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
———- —————————— ———- ———-
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
SQL> alter session set container = pdb;
Session altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
———- —————————— ———- ———-
3 PDB READ WRITE NO
SQL> select name from v$datafile;
NAME
——————————————————————————–
+DATA/CDBRAC/96E556785DFD2B87E0536501000ADE9C/DATAFILE/system.274.1023893537
+DATA/CDBRAC/96E556785DFD2B87E0536501000ADE9C/DATAFILE/sysaux.275.1023893539
+DATA/CDBRAC/96E556785DFD2B87E0536501000ADE9C/DATAFILE/undotbs1.273.1023893537
+DATA/CDBRAC/96E556785DFD2B87E0536501000ADE9C/DATAFILE/undo_2.277.1023893681
+DATA/CDBRAC/96E556785DFD2B87E0536501000ADE9C/DATAFILE/users.278.1023893707
SQL>
至此,我们完成了利用VirtualBox在Oracle Linux 7.5上安装配置Oracle数据库19c RAC的所有工作,可以尽情的测试Oracle数据库19c的各种新特性了。
在上一节我们完成了Oracle 19c RAC安装环境的准备,这一节正式开始Oracle Grid Infrastructure 19c的安装。
确认虚拟机ol7-19-rac1和ol7-19-rac2处于启动状态。
把之前下载的Oracle Grid Infrastructure 19c压缩包文件LINUX.X64_193000_grid_home.zip上传到ol7-19-rac1的home目录下。
使用oracle用户登录到ol7-19-rac1,把安装包解压到$ORACLE_HOME下。
[[email protected] ~]$ source grid_env
[[email protected] ~]$ cd $ORACLE_HOME
[[email protected] grid]$ pwd
/u01/app/19/grid
[[email protected] grid]$ unzip ~/LINUX.X64_193000_grid_home.zip
安装包解压完成后,切换到root用户,安装/u01/app/19/grid/cv目录下cvuqdisk-1.0.10-1.rpm包。
切换回oracle用户,运行gridSetup.sh进行Oracle Grid Infrastructure 19c安装。
[[email protected] ~]$ cd $ORACLE_HOME
[[email protected] grid]$ ./gridSetup.sh
进入Grid Infrastructure 19c的图形安装界面。
选择”Configure Oracle Grid Infrastructure for a New Cluster”,点Next
接受默认的”Configure an Oracle Standalone Cluster”,Next
SCAN设置,把集群名设置为我们配置文件的名字”ol7-19″,端口选择默认的1521,点击Next
集群节点配置,点击Add,增加第二个节点ol7-19-rac2信息,OK
增加节点后,点击”SSH connectivity…“,设置节点间SSH互连。
输入操作系统用户oracle的密码,点击Setup进行设置。
节点间SSH连通测试通过后点OK,按Next
网络接口设置,把enp0s8的用途改为”ASM & Private”,Next
存储选择”Use Oracle Flex ASM for storage“,Next
Configure Grid Infrastructure Management Repository选择默认的No, Next
创建名为CRS的ASM磁盘组,选择/dev/asm-orc1,/dev/asm-ocr2和/dev/asm-ocr3三个磁盘,Next
输入ASM密码,Next
Failure Isolation,选择默认的不使用IPMI,Next
Management Options,不注册EM,Next
选择管理员对应的操作系统用户组,Next
安装位置,选择默认的Oracle Base,Next
安装位置,默认位置,Next
Root脚本运行方式,选择手工安装,Next
系统前提条件检查,有swap和SCAN的警告及DNS服务的失败信息,不影响安装,所以选择忽略,Next
安装信息总结,确认无误后保存响应文件,点Install进行GI安装。
正式安装GI,耐心等待文件复制及两个节点设置完成。
至执行root脚本提示出现时,分别按提示在两个节点执行orainstRoot.sh和root.sh脚本。
以下是脚本在节点一“ol7-19-rac1”的执行输出。
2019/11/08 15:20:15 CLSRSC-482: Running command: ‘/u01/app/19/grid/bin/ocrconfig -upgrade oracle oinstall’
CRS-4256: Updating the profile
Successful addition of voting disk b7bdb62a9f7c4f6ebf500c3ead350ca2.
Successful addition of voting disk 1142140776854f78bf2267c0f315a1ed.
Successful addition of voting disk 0816bcfc38c54fbdbf34954f90898764.
Successfully replaced voting disk group with +CRS.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
## STATE File Universal Id File Name Disk group
— —– —————– ——— ———
1. ONLINE b7bdb62a9f7c4f6ebf500c3ead350ca2 (/dev/asm-ocr1) [CRS]
2. ONLINE 1142140776854f78bf2267c0f315a1ed (/dev/asm-ocr2) [CRS]
3. ONLINE 0816bcfc38c54fbdbf34954f90898764 (/dev/asm-ocr3) [CRS]
Located 3 voting disk(s).
2019/11/08 15:25:32 CLSRSC-594: Executing installation step 17 of 19: ‘StartCluster’.
2019/11/08 15:29:34 CLSRSC-343: Successfully started Oracle Clusterware stack
2019/11/08 15:29:35 CLSRSC-594: Executing installation step 18 of 19: ‘ConfigNode’.
2019/11/08 15:37:07 CLSRSC-594: Executing installation step 19 of 19: ‘PostConfig’.
2019/11/08 15:38:58 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster … succeeded
[[email protected] rpm]#
在第一个节点执行完root脚本后,继续在第二个节点执行,全部成功完成后点OK,继续GI配置。
最后成功完成GI安装,Close退出安装向导。
安装完Oracle Grid Infrastructure集群后,可以使用crsctl stat res -t命令查看集群资源状态信息。
确认两个节点的资源都成功启动,可以进行Oracle数据库19c软件在集群上的安装。
$ yum install -y oracle-database-preinstall-19c
$ /sbin/sysctl -p
$ 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
$ passwd oracle
# 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
SELINUX=disabled
关闭防火墙,运行以下命令$ systemctl stop firewalld
$ systemctl disable firewalld
$ systemctl stop chronyd
$ systemctl disable chronyd
$ 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 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’
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
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
$ 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
[[email protected] ~]# cd /dev
[[email protected] dev]# ls sd*
sda sda1 sda2 sdb sdc sdd sde sdf sdg
[[email protected] dev]#
[[email protected] ~]# 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.
[[email protected] ~]#
[[email protected] dev]# ls sd*
sda sda2 sdb1 sdc1 sdd1 sde1 sdf1 sdg1
sda1 sdb sdc sdd sde sdf sdg
[[email protected] dev]#
options=-g
查看磁盘的SCSI ID[[email protected] dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sdb
1ATA_VBOX_HARDDISK_VBb5781d10-5cdd8626
[[email protected] dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sdc
1ATA_VBOX_HARDDISK_VBdaa6933f-45a7bbd7
[[email protected] dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sdd
1ATA_VBOX_HARDDISK_VBff9e560e-3053c1ed
[[email protected] dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sde
1ATA_VBOX_HARDDISK_VB0ce057db-89d80b0f
[[email protected] dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sdf
1ATA_VBOX_HARDDISK_VB38c72c62-65c8b2ce
[[email protected] dev]# /usr/lib/udev/scsi_id -g -u -d /dev/sdg
1ATA_VBOX_HARDDISK_VB15992f0b-6cff3aca
[[email protected] dev]#
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"
[[email protected] dev]# /sbin/partprobe /dev/sdb1
[[email protected] dev]# /sbin/partprobe /dev/sdc1
[[email protected] dev]#/sbin/partprobe /dev/sdd1
[[email protected] dev]# /sbin/partprobe /dev/sde1
[[email protected] dev]# /sbin/partprobe /dev/sdf1
[[email protected] dev]# /sbin/partprobe /dev/sdg1
[[email protected] dev]# /sbin/udevadm test /block/sdb/sdb1
[[email protected] dev]# /sbin/udevadm control --reload-rules
[[email protected] 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:
[[email protected] dev]#
[[email protected] dev]# shutdown -h now
$ 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
$ zip PreGrid.zip *.vdi
$ sudo dpkg -i virtualbox-6.0_6.0.14-133895~Ubuntu~bionic_amd64.deb
Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。
在安装或者维护数据库的过程中,可以通过DBCA对CDB进行静默删除(别问我为什么知道:))。步骤如下:
#dbca -silent -deleteDatabase -sourceDB CDB数据库名
耐心等待至命令完成,正常情况下会出现以下提示:
Connecting to database
4% complete
9% complete
14% complete
19% complete
23% complete
28% complete
47% complete
Updating network configuration files
52% complete
Deleting instance and datafiles
76% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/condb0.log" for further details.
一客户升级系统,准备把数据库升级到12C,操作系统切换到Redhat 7,而他们家系统管理员不但不熟Oracle数据库,还不熟Linux。只好请客户开了个Teamview连接,远程帮他们安装系统。因为连Linux都是供应商帮忙装了,没有装X window,只能选择静默安装了。开搞。
要说安装包最方便的方式,莫过于利用Oracle官方的源了。
# cd /etc/yum.repos.d
# wget http://yum.oracle.com/public-yum-ol7.repo
#vim public-yum-ol7.repo
把文件按如下修改:
[ol7_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=0
enabled=1
然后运行oracle-database-server-12cR2-preinstall安装依赖包。
#yum install oracle-database-server-12cR2-preinstall
如果有问题可以采用以下方式。
#vim req-rpm.txt
在文件输入以下包名。
binutils
compat-libcap1
compat-libstdc++-33
gcc
gcc-c++
glibc
glibc-devel
ksh
libgcc
libstdc++
libstdc++-devel
libaio
libaio-devel
libXext
libXtst
libX11
libXau
libxcb
libXi
make
sysstat
libXmu
libXt
libXv
libXxf86dga
libdmx
libXxf86misc
libXxf86vm
xorg-x11-utils
xorg-x11-xauth
保存退出后,运行以下命令安装。
#yum install `awk ‘{print $1}’ req-rpm.txt`
#vim /etc/sysctl.conf
增加以下内容:
–kernel parameters for 12C installation
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
使用内核参数生效
#/sbin/sysctl -p
#vim /etc/security/limits.conf
–shell limits for users oracle 12C
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
#cat /etc/selinux/config
确认SELINUX设置如下:
SELINUX=permissive
setenforce Permissive
#service iptables stop
#chkconfig iptables off
#groupadd -g 54321 oinstall
#groupadd -g 54322 dba
#groupadd -g 54323 oper
#useradd –u 54321 –g oinstall –G dba,oracle,oper
#passwd oracle
#mkdir –p /u01
#chown oracle:dba /u01
#chmod 775 /u01
#su oracle
#unzip linuxx64_12201_database.zip
在解压文件夹的/database/response目录下,复制db_install.rsp文件到/home/oracle/oinstall/oracle/database目录下。
#vim db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
#./runInstaller -silent -responseFile
/home/oracle/oinstall/database/db_install.rsp
完成数据库软件安装,切到root用户,运行以下脚本。
# /u01/app/oraInventory/orainstRoot.sh
#/u01/app/oracle/product/12.2.0.1/dbhome_1/root.sh
完成数据库软件安装。
类似上面步骤,复制dbca.rsp到当前目录。
#vim dbca.rsp
gdbName=orcl
sid=orcl
databaseConfigType=SI
createAsContainerDatabase=false
templateName=General_Purpose.dbc
sysPassword=oracle12C
systemPassword=oracle12C
emConfiguration=NONE
datafileDestination=/u01/oradata
recoveryAreaDestination=/u01/recovery_area
storageType=FS
characterSet=AL32UTF8
sampleSchema=TRUE
#export ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/dbhome_1
#export PATH=$ORACLE_HOME/bin:$PATH.
#dbca -silent -createDatabase -responseFile dbca.rsp
完成数据库创建。
类似上面步骤,复制netca.rsp到当前目录。
#netca -silent -responseFile netca.rsp
完成安装后,验证监听器状态正常。
#lsnrctl status
计划把公司应用后台的数据库服务也统一迁移到docker上,因此起了在docker上部署Oracle数据库的念头。记得以前在docker hub上看到过现成的数据库image,上去一搜,发现不是版本太低就是说被O记要求删除。既然是这样,那O记官方有没以支持呢?放狗一搜,发现O记官方在github上有专门的docker images项目,包含了Java、数据库、应用等等的镜像生成文件。就算是自己生成镜像文件,这些资料也对写Dockerfile很有参考价值。
在github上下载Oracle数据库的docker文件,在OTN下载好Oracle Database 12C的安装包,把zip文件置于OracleDatabase/dockerfiles/12.0.0.2目录下,然后开始Oracle数据库docker的无脑安装 。
1.运行dockerfiles下的buildDockerImage.sh命令
从Oracle Linux的slim-7版本生成数据库镜像文件,该命令支持生成Oracle数据库企业版、标准版和XE版本。俺使用的是企业版。
# ./buildDockerImage.sh -v 12.1.0.2 -e -i
该脚本命令参数说明如下:
-v: version to build
Choose one of: 11.2.0.2 12.1.0.2
-e: creates image based on 'Enterprise Edition'
-s: creates image based on 'Standard Edition 2'
-x: creates image based on 'Express Edition'
-i: ignores the MD5 checksums
开始配置环境,复制安装文件,静默安装数据库,最后生成镜像。大概需要10来分钟时间。
注:在生成数据库镜像前,请特别留意Docker的存储驱动配置必须btrfs或overlay2,如果使用aufs在生成过程中会出现各种问题,俺还特意在github上特意开了issue讨论这个问题。
2.在docker容器中运行Oracle数据库
docker run --name \
-p :1521 -p :5500 \
-e ORACLE_SID= \
-e ORACLE_PDB= \
-e ORACLE_CHARACTERSET= \
-v [:]/opt/oracle/oradata \
oracle/database:12.1.0.2-ee
Parameters:
–name: The name of the container (default: auto generated)
-p: The port mapping of the host port to the container port.
Two ports are exposed: 1521 (Oracle Listener), 5500 (OEM Express)
-e ORACLE_SID: The Oracle Database SID that should be used (default: ORCLCDB)
-e ORACLE_PDB: The Oracle Database PDB name that should be used (default: ORCLPDB1)
-e ORACLE_CHARACTERSET:
The character set to use when creating the database (default: AL32UTF8)
-v The data volume to use for the database.
Has to be owned by the Unix user “oracle” or set appropriately.
If omitted the database will not be persisted over container recreation.
懒癌发作,直到春节假期才下定决心把公司的基础架构都迁移到Docker上,随之而来的是一大堆应用重新部署及系统重构的工作。公司大量的应用是基于Oracle数据库构建,所以安装Oracle Database变成了首要任务。虽然安装配置数据库是小菜一碟,但是习惯了登录OTN网站下载安装文件然后照步骤安装,在Linux环境下碰到的第一个问题是在Console的环境下没有浏览器,而下载Oracle 数据库安装文件需要登录OTN网站并同意Oracle的License协议方能下载。
虽然可能利用cookies export这些工具来实现,但是习惯了使用最简单的方法解决问题,直接利用Firefox浏览器可以达到这个目的。在工作计算机上用Firefox登录OTN网站,同意协议后点击下载你所需的数据库安装文件,当下载开始后点击暂停下载,然后在下载任务上右键,选择复制下载链接。
最完整的在OEL上安装Oracle Database的文章,装OEL为了什么,不就为了方便么。
ORACLE-发布帖子BASE – Oracle Database 11g Release 2 (11.2) Installation On Oracle Linux 6
近期评论