近些年都是用Powerpoint画架构图,N年没有使用过Visio。近日答应某人给他画个架构图,发现服务器和不同网络设备的图标还是使用Visio方便,于是下载了Visio 2016,计划在机器上安装。因为之前电脑已经安装了Office 365家庭版,运行Visio的setup程序时自动调用Windows的即插即用Office,安装365版的Visio,而家庭版的365又没带Visio授权,真是纠结。

尝试把Office 365卸载,先安装Visio 2016再装Office 365,但系统又提示安装了Visio后即插即用Office有冲突,没法安装。

放狗搜了一番,发现可以使用Office部署工具来解决这个问题。在微软官网下载Office部署工具,运行exe文件后得到一个setup.exe文件和名字分别为configuration-Office365-x64.xml,configuration-Office365-x86.xml,configuration-Office2019Enterprise.xml三个示例配置文件。可参照Office部署工具页面的说明修改配置文件,也可以使用M记的配置文件生成页面图形化向导生成配置文件。

以下是俺的配置文件:

<Configuration ID="7028facf-7ea8-4d12-91b1-6fd0f07ff4a2">
  <Add OfficeClientEdition="64" Channel="SemiAnnual"  AllowCdnFallback="TRUE">
    <Product ID="O365HomePremRetail">
      <Language ID="zh-cn" />
      <ExcludeApp ID="Access" />
      <ExcludeApp ID="Groove" />
      <ExcludeApp ID="Lync" />
      <ExcludeApp ID="Publisher" />
      <ExcludeApp ID="OneNote" />
      <ExcludeApp ID="Outlook" />     
    </Product>
    <Product ID="VisioProXVolume" PIDKEY="XXXXX-XXXXX-XXXXX-XXXXX-XXXXX">
      <Language ID="MatchOS" />
      <ExcludeApp ID="Groove" />
      <ExcludeApp ID="OneDrive" />
    </Product>
  </Add>
  <Property Name="SharedComputerLicensing" Value="0" />
  <Property Name="SCLCacheOverride" Value="0" />
  <Property Name="AUTOACTIVATE" Value="0" />
  <Property Name="FORCEAPPSHUTDOWN" Value="FALSE" />
  <Property Name="DeviceBasedLicensing" Value="0" />
  <Updates Enabled="TRUE" />
</Configuration>

使用Office 365家庭版订阅,保留Word,Excel,Powerpoint和Onedrive,同时安装Visio专业版VOL批量授权版本。PIDKEY后面的值是Visio的序列号。

运行Office部署工具解压后的setup.exe,分别下载与安装所需的Office组件。

C:\Users\admin\Downloads\Office Deployment Tool>setup /download ..\Config.xml
C:\Users\admin\Downloads\Office Deployment Tool>setup /configure ..\Config.xml

一番折腾,终于搞定。

起因

起了把家里路由器更新到新版本OpenWRT的念头很久了,周末终于克服自己的懒病,下载了OpenWRT 19.07.4的安装包,更新Linksys WRT1900ACS路由器的系统。

修改了IP地址,把Wifi打开后,驾轻就熟地修改了相关的配置,增加了第三方源,准备开始安装你懂的SS和ChinaDNS等组件。没想到往常屡试不爽的opkg install命令返回了安装失败提示:

Incompatible with the architectures configured

仔细比对了所有的配置,确认没有错误,但是安装新增的第三方包时总是报错。

解决方法

试了N多种方法,还是不行,正准备放弃装回原来ROM时,突然发现运行opkg print-architecture返回的CPU架构型号是
arch all 1
arch noarch 1
arch arm_cortex-a9_vfpv3-d16 10

比原来系统打印出来的架构型号多了一个d16,而第三方源的库里貌似没有arm_cortex-a9_vfpv3-d16这样一个型号的源,尝试修改/etc/opkg.conf文件,把原来CPU型号列表增加不带d16行。
arch all 1
arch noarch 1
arch arm_cortex-a9_vfpv3 8
arch arm_cortex-a9_vfpv3-d16 10

再运行opkg install,包装成功。

[heading]起因[/heading]

系统升级后,因为要安装python开发环境方便,想安装brew,但尝试运行brew命令命令

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

系统却直接报错。

Error: Failure while executing; `git clone https://github.com/Homebrew/homebrew-core /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core` exited with 128.

Error: Failure while executing; `/usr/local/bin/brew tap homebrew/core` exited with 1.

Failed during: /usr/local/bin/brew update –force

以为是网络问题,架上梯子后重新运行,问题依旧。

[heading]解决方法[/heading]

手工用git把brew拉到本地目录,重新把运行安装命令,成功解决。

git clone https://github.com/Homebrew/homebrew-core /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core --depth=1 

起因

好久没登上服务器,一上班手贱上去运行了一把ghost update,升级到ghost 3.18.1,结果在重启ghost服务时就卡住了,转了老半天没有结果。手工启动ghost报错。放狗搜了一番,说是Nodejs版本太低的原因。上ghost官网查了兼容列表,确实是推荐使用nodejs v12。于是升级nodejs,再升级了ghost-cli,但是ghost服务还是没法成功启动。

解决方法

开始想偷懒,想着大不了强制升级一次。于是运行强制升级命令。

ghost update --force

结果连升级都报错。

运行ghost doctor,诊断结果报unknown error。

没有办法,尝试直接ghost run,发现网站可以运行,但是会报一个错。

WARN Can't connect to the bootstrap socket (localhost 8000) ECONNREFUSED

打开ghost配置文件config.production.json,发现有一节bootstrap-socket的配置内容。备份配置文件,把该节内容整个删除。

重启ghost,服务恢复正常。

[heading]起因[/heading]

新冠返沪自我隔离期间,因为无聊把各家云计算厂商的产品和技术体系撸了一遍。对于O记的OCI,通读了一遍Apress的《Practical Oracle Cloud Infrastructure》。恰好本周O记渠道部组织了一场为期4天的OCI认证培训,想着趁此机会去实操一把,刚好加深对OCI整个体系架构的理解。 通过了解,知道对OCI资源的操作,可以通过以下四种方式:

  • Web Console
  • API
  • CLI
  • Terraform

Console最直观,但是相信实际操作过的人都会对云厂商那种极不用户友好的操作界面深恶痛绝。 API拿DonetCore写了几个试验应用通过REST API很简单就调通了。 Terraform方式还没有去试。结合培训,重点测试CLI的方式,毕竟平时做实验也是CLI最方便。于是开了一台Windows 10虚机,按照官方文档安装CLI,没想到基本上一场恶梦的开始。此文为折腾的记录。

[heading]Windows 10下安装CLI第一次尝试[/heading]

官方文档的描述,以管理员身份启动Windows的PowerShell终端,运行以下命令:

Set-ExecutionPolicy RemoteSigned
powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1'))"

运行报错,提示“[highlight dark=”no”]使用“1”个参数调用“DownloadString”时发生异常:“无法连接到远程服务器[/highlight]””错误。

无法连接到远程服务器 看来是因为网络连接问题,在大天朝也算正常。轻车熟路地架梯子,确认可以连接外网后重新运行命令,这次系统开始提示下载Python,坚持了10来分钟还是报错,提示超时。 修改网络配置,重试了几次都是同样错误。因为机器没有Python,所以直接到Python官网,下载安装了Python 3.7,准备绕过安装脚本自动安装Python的步骤。

[heading]Windows 10下安装OCI CLI之升级Pip[/heading]

安装好Python,再次运行OCI的CLI安装脚本。这次有点反应,安装程序开始下载Python的支持包,结果到了一半又是出错,看错误信息有提示说[highlight dark=”no”]”You are using pip version 19.2.3, how ever version 20.0.2 is available You should consider upgrading via the ‘python -m pip install –upgrade pip”[/highlight],没有仔细分析安装脚本,以为是pip版本的原因(其实应该可以运行CLI的)。   直接照着提示,在PowerShell运行”python -m pip install –upgrade pip”,回车后没有反应,大概是安装Python时没有设置环境变量所致。于是切换至Python安装目录的Scripts目录下,重新运行

pip install --upgrade pip

升级pip后再试。 [heading]Windows 10下安装OCI CLI之安装成功[/heading] 再次运行安装脚本,这次开头很顺利地安装Python支持包,以为肯定可以了,没想到过了一会还是报错。

CLI错误

iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/ install/install.ps1')) : Executing C:\Python37\python.exe "C:\Users\QJJ\AppData\Local\Temp\tmp316C.tmp" returned a non- zero exit code. 所在位置 行:381 字符: 9 + Write-Error "Executing $PythonExecutable $ArgumentList return ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

放狗搜了一番,github上的解决方式基本通过修改PowerShell的代理服务器地址或者直接修改脚本内容的方式,但最近的issue也是几个月前了,相信O记应该修复了吧。所以还是把重点放在自己的网络问题上。 把SS设置为全局模式,保证所有的网络流量都通过梯子。再次运行安装脚本,经过一段颇为漫长的等待,终于把CLI在Windows 10下安装成功。

CLI Install Python Pakcages

[heading]总结[/heading] 从这次安装的折腾过程来看,OCI的用户友好性还是有待提升,哪怕是问题,好歹也给个提示哪里出问题不是? 另外,要通过CLI或者API方式访问OCI,需要保证网络能够顺畅地访问外网,不然的话很容易出现各种奇奇怪怪的问题。看来O记各位在国内推广OCI的朋友,还是任重而道远呀:)

前几篇博文完整介绍了如何从搭建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记为啥会自己作死,非得要做一个这么漫长的过程,真是会让你等得怀疑人生。刚开始安装的时候老是会怀疑电脑是不是挂掉了。

这一篇文章算是画蛇添足,介绍怎么生成响应文件并静默安装。

DBCA静默安装数据库

有人会说我也知道静默安装方便,但是响应文件的指令不熟悉,不知从何入手去写,网上找到的响应文件资源也不一定适合。那该如何生成适合自己环境的响应文件呢?

这要从上一节利用VirtualBox在Oracle Linux 7安装Oracle 19c RAC Part4-数据库安装和配置说起。我们可以在图形向导运行dbca,在第14步dbca总结页面时,按“Save Response File…”,把响应文件保存起来,这样就得到了适合当前环境的dbca响应文件了。在这一步,直接按Cancel,取消数据库的创建。

用oracle用户登录系统,运行dbca -silent -createDatabase命令静默安装方式创建数据库。

[oracle@ol7-19-rac1 ~]$ source db_env
[oracle@ol7-19-rac1 ~]$ 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.
[oracle@ol7-19-rac1 ~]$

利用静默安装的方式创建数据库,会比图形界面方式快很多。

删除数据库

如果运行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@ol7-19-rac1 ~]$ dbca -silent -deleteDatabase -sourceDB cdbrac -sysPassword mypassword -systemPassword mypassword
[WARNING] [DBT-11503] The instance (cdbrac1) is not running on the local node. This may result in partial delete of Oracle database.
CAUSE: A locally running instance is required for complete deletion of Oracle database instance and database files.
ACTION: Specify a locally running database, or execute DBCA on a node where the database instance is running.
[WARNING] [DBT-19202] The Database Configuration Assistant will delete the Oracle instances and datafiles for your database. All information in the database will be destroyed.
Prepare for db operation
32% complete
Connecting to database
39% complete
42% complete
45% complete
48% complete
[WARNING] The data files for database with DB_NAME “cdbrac” could not be determined because the database could not be started. DBCA will proceed with the database deletion.
65% complete
Updating network configuration files
68% complete
Deleting instances and datafiles
77% complete
87% complete
97% complete
100% complete
Database deletion completed.
Look at the log file “/u01/app/oracle/cfgtoollogs/dbca/cdbrac/cdbrac.log” for further details.

上一节我们完成了Oracle Grid Infrastructure 19c集群软件的安装,并且在两个节点成功启动了服务。本节我们开始Oracle数据库19c软件的安装和DB配置。

[heading]解压Oracle Database 19c安装包[/heading]

把之前下载的Oracle数据库19c的压缩包文件LINUX.X64_193000_db_home.zip上传到ol7-19-rac1的home目录下。

使用oracle用户登录到ol7-19-rac1,把安装包解压到$ORACLE_HOME下。

[oracle@ol7-19-rac1 ~]$ source db_env
[oracle@ol7-19-rac1 ~]$ cd $ORACLE_HOME
[oracle@ol7-19-rac1 db_1]$ pwd
/u01/app/oracle/product/19/db_1
[oracle@ol7-19-rac1 db_1]$ unzip ~/LINUX.X64_193000_db_home.zip

[heading]Oracle数据库19c软件安装[/heading]

使用oracle用户登录节点一“ol7-19-rac1”,开始进行数据库软件的安装配置。

[oracle@ol7-19-rac1 ~]$ source db_env
[oracle@ol7-19-rac1 ~]$ cd $ORACLE_HOME
[oracle@ol7-19-rac1 db_1]$ pwd
/u01/app/oracle/product/19/db_1
[oracle@ol7-19-rac1 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数据库软件的配置。

[root@ol7-19-rac1 ~]# /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.
[root@ol7-19-rac1 ~]#

[heading]创建ASM磁盘组[/heading]

使用asmca应用对之前虚拟的共享磁盘创建ASM磁盘组,以供RAC存储数据库文件。

[oracle@ol7-19-rac1 ~]$ asmca


启动ASM管理图形界面,点击左侧的Disk Groups

点击Create,如下图所示创建两个磁盘组,一个DATA,一个FRA,冗余选择External(None)

确认新创建的磁盘组的状态都是MOUNTED,点Exit退出ASM磁盘管理向导。

[heading]创建Oracle数据库实例[/heading]

现在所有的准备工作都就绪,最后的一步工作等着我们,就是使用DBCA命令创建Oracle数据库实例。

[oracle@ol7-19-rac1 ~]$ source db_env
[oracle@ol7-19-rac1 ~]$ cd $ORACLE_HOME
[oracle@ol7-19-rac1 db_1]$ pwd
/u01/app/oracle/product/19/db_1
[oracle@ol7-19-rac1 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关闭向导。(在本次安装其实我没有用这种方式创建数据库,而是使用静默安装的方式,所以最后完成的截图缺失)。

[heading]验证Oracle 19c RAC状态[/heading]

使用crsctl stat res -t 命令查看集群资源的状态,确认“ol7-19-rac1”和”ol7-19-rac2″两个节点的资源在线,数据库实例已经正常Open。

[oracle@ol7-19-rac1 ~]$ crsctl stat res -t
——————————————————————————–
Name Target State Server State details
——————————————————————————–
Local Resources
——————————————————————————–
ora.LISTENER.lsnr
ONLINE ONLINE ol7-19-rac1 STABLE
ONLINE ONLINE ol7-19-rac2 STABLE
ora.chad
ONLINE ONLINE ol7-19-rac1 STABLE
ONLINE ONLINE ol7-19-rac2 STABLE
ora.net1.network
ONLINE ONLINE ol7-19-rac1 STABLE
ONLINE ONLINE ol7-19-rac2 STABLE
ora.ons
ONLINE ONLINE ol7-19-rac1 STABLE
ONLINE ONLINE ol7-19-rac2 STABLE
ora.proxy_advm
OFFLINE OFFLINE ol7-19-rac1 STABLE
OFFLINE OFFLINE ol7-19-rac2 STABLE
——————————————————————————–
Cluster Resources
——————————————————————————–
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE ol7-19-rac1 STABLE
2 ONLINE ONLINE ol7-19-rac2 STABLE
3 ONLINE OFFLINE STABLE
ora.CRS.dg(ora.asmgroup)
1 ONLINE ONLINE ol7-19-rac1 STABLE
2 ONLINE ONLINE ol7-19-rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE ol7-19-rac1 STABLE
2 ONLINE ONLINE ol7-19-rac2 STABLE
3 ONLINE OFFLINE STABLE
ora.FRA.dg(ora.asmgroup)
1 ONLINE ONLINE ol7-19-rac1 STABLE
2 ONLINE ONLINE ol7-19-rac2 STABLE
3 ONLINE OFFLINE STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE ol7-19-rac1 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE ol7-19-rac1 Started,STABLE
2 ONLINE ONLINE ol7-19-rac2 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE ol7-19-rac1 STABLE
2 ONLINE ONLINE ol7-19-rac2 STABLE
3 OFFLINE OFFLINE STABLE
ora.cdbrac.db
1 ONLINE ONLINE ol7-19-rac1 Open,HOME=/u01/app/o
racle/product/19/db_
1,STABLE
2 ONLINE ONLINE ol7-19-rac2 Open,HOME=/u01/app/o
racle/product/19/db_
1,STABLE
ora.cvu
1 ONLINE ONLINE ol7-19-rac1 STABLE
ora.ol7-19-rac1.vip
1 ONLINE ONLINE ol7-19-rac1 STABLE
ora.ol7-19-rac2.vip
1 ONLINE ONLINE ol7-19-rac2 STABLE
ora.qosmserver
1 ONLINE ONLINE ol7-19-rac1 STABLE
ora.scan1.vip
1 ONLINE ONLINE ol7-19-rac1 STABLE
——————————————————————————–
[oracle@ol7-19-rac1 ~]$

使用sqlplus / as sysdba登录数据库实例,验证数据库工作正常。

[oracle@ol7-19-rac1 ~]$ db_env
[oracle@ol7-19-rac1 ~]$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 – Production on Sun Nov 10 16:47:56 2019
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0

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处于启动状态。

[heading]解压Oracle Grid Infrastructure 19c安装包[/heading]

把之前下载的Oracle Grid Infrastructure 19c压缩包文件LINUX.X64_193000_grid_home.zip上传到ol7-19-rac1的home目录下。

使用oracle用户登录到ol7-19-rac1,把安装包解压到$ORACLE_HOME下。

[oracle@ol7-19-rac1 ~]$ source grid_env
[oracle@ol7-19-rac1 ~]$ cd $ORACLE_HOME
[oracle@ol7-19-rac1 grid]$ pwd
/u01/app/19/grid
[oracle@ol7-19-rac1 grid]$ unzip ~/LINUX.X64_193000_grid_home.zip

[heading]安装Oracle Grid Infrastructure 19c[/heading]

安装包解压完成后,切换到root用户,安装/u01/app/19/grid/cv目录下cvuqdisk-1.0.10-1.rpm包。

[root@ol7-19-rac1 ~]# cd /u01/app/19/grid/cv
[root@ol7-19-rac1 cv]# ls
admin cvdata cvutl remenv rpm
[root@ol7-19-rac1 cv]# cd rpm
[root@ol7-19-rac1 rpm]# rpm -Uvh cvuqdisk-1.0.10-1.rpm
Preparing… ################################# [100%]
Using default group oinstall to install package
Updating / installing…
1:cvuqdisk-1.0.10-1 ################################# [100%]
[root@ol7-19-rac1 rpm]#

切换回oracle用户,运行gridSetup.sh进行Oracle Grid Infrastructure 19c安装。

[oracle@ol7-19-rac1 ~]$ cd $ORACLE_HOME
[oracle@ol7-19-rac1 grid]$ ./gridSetup.sh

Grid Setup

进入Grid Infrastructure 19c的图形安装界面。

Grid 1

选择”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”的执行输出。

[root@ol7-19-rac1 rpm]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@ol7-19-rac1 rpm]# /u01/app/19/grid/root.sh
Performing root user operation.The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/19/gridEnter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin …
Copying oraenv to /usr/local/bin …
Copying coraenv to /usr/local/bin …Creating /etc/oratab file…
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.
Relinking oracle with rac_on option
Using configuration parameter file: /u01/app/19/grid/crs/install/crsconfig_params
The log of current session can be found at:
/u01/app/oracle/crsdata/ol7-19-rac1/crsconfig/rootcrs_ol7-19-rac1_2019-11-08_02-46-09PM.log
2019/11/08 14:49:52 CLSRSC-594: Executing installation step 1 of 19: ‘SetupTFA’.
2019/11/08 14:49:53 CLSRSC-594: Executing installation step 2 of 19: ‘ValidateEnv’.
2019/11/08 14:49:53 CLSRSC-363: User ignored prerequisites during installation
2019/11/08 14:49:53 CLSRSC-594: Executing installation step 3 of 19: ‘CheckFirstNode’.
2019/11/08 14:49:56 CLSRSC-594: Executing installation step 4 of 19: ‘GenSiteGUIDs’.
2019/11/08 14:49:57 CLSRSC-594: Executing installation step 5 of 19: ‘SetupOSD’.
2019/11/08 14:49:57 CLSRSC-594: Executing installation step 6 of 19: ‘CheckCRSConfig’.
2019/11/08 14:49:57 CLSRSC-594: Executing installation step 7 of 19: ‘SetupLocalGPNP’.
2019/11/08 14:50:22 CLSRSC-594: Executing installation step 8 of 19: ‘CreateRootCert’.
2019/11/08 14:50:28 CLSRSC-594: Executing installation step 9 of 19: ‘ConfigOLR’.
2019/11/08 14:50:32 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
2019/11/08 14:51:08 CLSRSC-594: Executing installation step 10 of 19: ‘ConfigCHMOS’.
2019/11/08 14:51:08 CLSRSC-594: Executing installation step 11 of 19: ‘CreateOHASD’.
2019/11/08 14:51:16 CLSRSC-594: Executing installation step 12 of 19: ‘ConfigOHASD’.
2019/11/08 14:51:17 CLSRSC-330: Adding Clusterware entries to file ‘oracle-ohasd.service’
2019/11/08 14:53:53 CLSRSC-594: Executing installation step 13 of 19: ‘InstallAFD’.
2019/11/08 14:54:01 CLSRSC-594: Executing installation step 14 of 19: ‘InstallACFS’.
2019/11/08 14:56:00 CLSRSC-594: Executing installation step 15 of 19: ‘InstallKA’.
2019/11/08 14:56:08 CLSRSC-594: Executing installation step 16 of 19: ‘InitConfig’.ASM has been created and started successfully.[DBT-30001] Disk groups created successfully. Check /u01/app/oracle/cfgtoollogs/asmca/asmca-191108PM025722.log for details.

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
[root@ol7-19-rac1 rpm]#

在第一个节点执行完root脚本后,继续在第二个节点执行,全部成功完成后点OK,继续GI配置。

最后成功完成GI安装,Close退出安装向导。

[heading]验证Oracle Grid Infrastructure集群状态[/heading]

安装完Oracle Grid Infrastructure集群后,可以使用crsctl stat res -t命令查看集群资源状态信息。

[oracle@ol7-19-rac1 ~]$ crsctl stat res -t
——————————————————————————–
Name Target State Server State details
——————————————————————————–
Local Resources
——————————————————————————–
ora.LISTENER.lsnr
ONLINE  ONLINE        ol7-19-rac1        STABLE
ONLINE  ONLINE        ol7-19-rac2        STABLE
ora.chad
ONLINE  ONLINE         ol7-19-rac1        STABLE
ONLINE  ONLINE         ol7-19-rac2        STABLE
ora.net1.network
ONLINE  ONLINE          ol7-19-rac1        STABLE
ONLINE  ONLINE          ol7-19-rac2        STABLE
ora.ons
ONLINE ONLINE           ol7-19-rac1        STABLE
ONLINE ONLINE           ol7-19-rac2        STABLE
ora.proxy_advm
OFFLINE  OFFLINE          ol7-19-rac1       STABLE
OFFLINE  OFFLINE          ol7-19-rac2       STABLE
——————————————————————————–
Cluster Resources
——————————————————————————–
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1                   ONLINE  ONLINE        ol7-19-rac1      STABLE
2                   ONLINE  ONLINE        ol7-19-rac2       STABLE
3                   OFFLINE  OFFLINE                                STABLE
ora.CRS.dg(ora.asmgroup)
1                    ONLINE  ONLINE        ol7-19-rac1       STABLE
2                    OFFLINE  OFFLINE                                STABLE
3                    OFFLINE  OFFLINE                                STABLE
ora.LISTENER_SCAN1.lsnr
1                    ONLINE  ONLINE        ol7-19-rac1        STABLE
ora.asm(ora.asmgroup)
1                    ONLINE  ONLINE         ol7-19-rac1       Started,STABLE
2                    ONLINE  OFFLINE                                  STABLE
3                    OFFLINE  OFFLINE                                 STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1                       ONLINE  ONLINE       ol7-19-rac1        STABLE
2                       ONLINE  ONLINE       ol7-19-rac2        STABLE
3                       OFFLINE  OFFLINE                                STABLE
ora.cvu
1                       ONLINE  ONLINE        ol7-19-rac1       STABLE
ora.ol7-19-rac1.vip
1                         ONLINE ONLINE         ol7-19-rac1      STABLE
ora.ol7-19-rac2.vip
1                        ONLINE  ONLINE          ol7-19-rac2     STABLE
ora.qosmserver
1                        ONLINE  ONLINE           ol7-19-rac1     STABLE
ora.scan1.vip
1                        ONLINE  ONLINE           ol7-19-rac1      STABLE
——————————————————————————–
[oracle@ol7-19-rac1 ~]$

确认两个节点的资源都成功启动,可以进行Oracle数据库19c软件在集群上的安装。