这是本系列教材的第四讲。在昨天的内容中,为大家介绍了使用Fleet  Maintenance对数据库进行补丁程序的应用。因为在本实验环境当中被升级的数据库只有一个,所以暂时看不出Fleet  Maintenance的优势,如果我们同时管理多个数据库,都要保持补丁及时被应用,那么我们就可以感受到Fleet  Maintenance的方便快捷了。

在今天的内容中,为大家介绍使用Fleet Maintenance对数据库进行升级。

EM13c 基础教程Workshop(4)_Java

实验4-1:使用Software Standardization Advisor了解系统中数据库情况

我们在上一次的内容中,已经为大家介绍了如何使用Software Standardization Advisor生成EM13c所监管的数据库的简报,这里就算作一个复习。

EM13c 基础教程Workshop(4)_Java_02

EM13c 基础教程Workshop(4)_Java_03

EM13c 基础教程Workshop(4)_Java_04

我们可以将上面两个Excel文件下载并打开,从中了解当前监控的数据库的版本及配置情况,以及EM13c给出的升级建议。

EM13c 基础教程Workshop(4)_Java_05

实验4-2:使用Fleet Maintenance升级数据库

在本实验中,finance.subnet.vcn.oraclevcn.com是一个单实例数据库,目前的数据库版本是18.10,这是一个从18.8通过Fleet Maintenance打补丁升级过来的数据库,升级步骤大家可以参考我们上一篇文章EM13c 基础教程Workshop(3)。我们现在要将这个数据库升级到19.7。我们事先创建了一个19.7的Oracle Home,我们在Target当中可以找出来。

EM13c 基础教程Workshop(4)_Java_06

稍后我们将它创建成一个Gold Image。我们通过下面的命令来制作Gold Image。,我们发现这段代码当中包含一个inp文件,我们将这个inp文件展开,可以看到在这个文件中,引用了我们在上一步查出来的19.7的Oracle Home。

emcli db_software_maintenance -createSoftwareImage -input_file="data:/home/oracle/fleet/sidb19c_tier1.inp"


emrep:oracle@emcc:~> cat /home/oracle/fleet/sidb19c_tier1.inpIMAGE_ID=A5F3D8523BDF635BE0531A00000AA55BREF_TARGET_NAME=Orasidb19c_home1_2020_05_13_04_24_10_emcc.marketplace.com_2953IMAGE_SWLIB_LOC=Fleet Maintenance/STORAGE_TYPE_FOR_SWLIB=OmsSharedSTORAGE_NAME_FOR_SWLIB=default_locREF_HOST_CREDENTIALS=ORACLE:SYSMANWORKING_DIRECTORY=/tmpVERSION_NAME=19.7

EM13c 基础教程Workshop(4)_Java_07

我们可以在Procedure Activity当中查看Gold Image创建的进度。大概使用9分钟完成Gold Image的创建。

EM13c 基础教程Workshop(4)_Java_08

我们在创建这个Gold Image的时候,在inp文件当中有Image ID,然后我们可以根据这个Image ID查询这个Gold Image的详细信息,通过下图中红框所示,当前的状态不是Current。EM13c 基础教程Workshop(4)_Java_09



EM13c 基础教程Workshop(4)_Java_10



接下来我们要将这个刚刚创建的Gold Image设定为Current,然后使用它作为升级的基础。需要注意的是,这里使用的Version ID是上一步查询出来的。

emcli db_software_maintenance -updateVersionStatus -status=CURRENT -version_id=B72564B1CB2977D1E0530700000AFB73

EM13c 基础教程Workshop(4)_Java_11接下来就是为finance.subnet.vcn.oraclevcn.com部署这个Gold Image了。

emcli db_software_maintenance -performOperation -name="deploy197" -purpose=DEPLOY_DB_SOFTWARE -target_type=oracle_database -target_list=finance.subnet.vcn.oraclevcn.com -normal_credential=ORACLE:SYSMAN -privilege_credential=ROOT:SYSMAN -input_file="data:/home/oracle/fleet/deploy197_finance.inp" -procedure_name_prefix="DEPLOY"

在上面的命令中有一个inp文件,我们打开它之后,可以看到,这里设定的是新的Oracle Home地址。

emrep:oracle@emcc:~> cat /home/oracle/fleet/deploy197_finance.inpNEW_ORACLE_HOME_LIST=/u01/app/oracle/product/19/db_home1emrep:oracle@emcc:~>

关于上面命令的说明,可以见如下参考:

NEW_ORACLE_HOME_LIST = Absolute path to the File System location where new Oracle Home will be deployed.
procedure_name_prefix = optional, prefix for the deployment procedure instance name
name = Name of the operation. This is a logical name and should be kept unique
purpose = There are standard purposes defined which can be performed by Fleet Operations. “DEPLOY_DB_SOFTWARE” is one of them. These are predefined and should not be changed. Admin shall select one of the below mentioned purposes as and when needed.
target_type = The type of target being provided in this operation.
target_list =
This is a comma separated list of targets which need to be patched.Targets of homogenous types are supported in a single fleet operation.The system will calculate the unique list of hosts based on this target list and start stage of Oracle home software on those hosts.If targets running from same Oracle home are provided in this list, the stage and deploy operation will be triggered only once and not for all targets.normal_credential = This should be provided in the format {Named Credential: Credential Owner}.
privilege_credential = This should be provided in the format {Named Credential: Credential Owner}
start_schedule = Schedule when the stage and deploy should start if that needs to be done in future. Format: “start_time:yyyy/mm/dd HH:mm”. It is an optional parameter, if not provided, operation will start immediately

部署的时间比较长,大概需要使用29分钟,我们依旧可以通过Procedure Activity来查询具体进度。EM13c 基础教程Workshop(4)_Java_12

接下来要升级监听器.

emcli db_software_maintenance -performOperation -name="Migrate Listener" -purpose=migrate_listener -target_type=oracle_database -target_list="finance.subnet.vcn.oraclevcn.com" -normal_credential="ORACLE:SYSMAN" -privilege_credential="ROOT:SYSMAN"

EM13c 基础教程Workshop(4)_Java_13然后升级数据库。

emcli db_software_maintenance -performOperation -name="Update DB" -purpose=UPDATE_DB -target_type=oracle_database -target_list=finance.subnet.vcn.oraclevcn.com -normal_credential=ORACLE:SYSMAN -privilege_credential=ROOT:SYSMAN -database_credential=sales_SYS:SYSMAN

EM13c 基础教程Workshop(4)_Java_14升级的过程需要45分钟。

EM13c 基础教程Workshop(4)_Java_15我们可以看到数据库已经由原来的18.10升级到19.7了。

EM13c 基础教程Workshop(4)_Java_16接下来我们清理之前的老旧Oracle Home。

emcli db_software_maintenance -performOperation -name="Cleanup old oracle homes" -purpose=CLEANUP_SOFTWARE -target_type=oracle_database -normal_credential=ORACLE:SYSMAN -privilege_credential=ROOT:SYSMAN -target_list=finance.subnet.vcn.oraclevcn.com -workDir=/tmp -reportOnly=trueemcli db_software_maintenance -performOperation -name="Cleanup old oracle homes" -purpose=CLEANUP_SOFTWARE -target_type=oracle_database -normal_credential=ORACLE:SYSMAN -privilege_credential=ROOT:SYSMAN -target_list=finance.subnet.vcn.oraclevcn.com -workDir=/tmp

最后启动监听器,并强制注册,然后查看监听器状态。


. oraenv 输入finance
lsnrctl start LISTENER_1525
sqlplus '/as sysdba'<<EOFalter system register;EOF
lsnrctl status LISTENER_1525

今天的内容就到这里,下次将为大家介绍数据库配置和合规性管理,期待您的关注,谢谢!


相关链接:
EM13c 基础教程Workshop(1)

EM13c 基础教程Workshop(2)

EM13c 基础教程Workshop(3)


编辑:殷海英