*** Settings *** Resource ../RE0_Common/KeyWord.robot Resource ../RE0_Common/ElementPath.robot Resource ElementPath.robot Library Selenium2Library Variables ../../Config/CDM/CDM_config.py Library string Library DateTime Library DatabaseLibrary *** Keywords *** OracleRAC创建表 [Arguments] ${OracleRAC_TableName1} ${DBRACInstance_lin} log 删除表 OracleRAC删除表 ${OracleRAC_TableName1} ${DBRACInstance_lin} log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${DBRACUser}','${DBRACPwd}','${DBRACInstance_lin}' log 获取行数 ${rowcount} Row Count select * from user_tables where table_name=upper('${OracleRAC_TableName1}') Run Keyword If ${rowcount} <=0 Execute Sql String create table ${OracleRAC_TableName1}(id char(50),name varchar(200)) Execute Sql String insert into ${OracleRAC_TableName1}(id,name)values('1','yuyang') Execute Sql String insert into ${OracleRAC_TableName1}(id,name)values('2','yuyang2') Execute Sql String commit ${rownum} Row Count select * from ${OracleRAC_TableName1} Set Suite Variable ${rownum} Log ${rownum} Disconnect From Database OracleRAC删除表 [Arguments] ${OracleRAC_TableName1} ${DBRACInstance_lin} log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${DBRACUser}','${DBRACPwd}','${DBRACInstance_lin}' ${rowcount} Row Count select * from user_tables where table_name=upper('${OracleRAC_TableName1}') Run Keyword If ${rowcount} >= 1 Execute Sql String drop table ${OracleRAC_TableName1} Disconnect From Database OracleRAC备份 [Arguments] ${agent_name} ${bk_type} ${mds_name} 元素点击 ${CDM_dataProtect} 点击副本数据保护成功 定位副本数据保护定位失败 元素点击 xpath=//span[text()="${agent_name}"] 点击选择代理 定位代理所在位置失败 sleep 2s Comment 策略清理_Oracle 元素点击 ${Add_RACCDM_BK_Policy} 点击添加策略 点击添加策略定位失败 元素点击 ${Select_Oracle_Type} 选择oracle数据库 定位选择oracle数据库类型失败 ${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time ${random_strategyName}= Catenate SEPARATOR=_ ${bk_type} ${date} Set Suite Variable ${random_strategyName} Log 切换为全局变量 元素输入 ${Input_Oracle_PolicyName} ${random_strategyName} 定位策略名输入框失败 元素点击 ${Select_Backup_source1} 点击浏览备份源下拉框成功 点击浏览备份源下拉框失败 元素点击 ${Select_Node} 选择racnode1-p节点成功 选择racnode1-p节点失败 元素点击 ${Click_Next} 点击下发策略下一步按钮成功 点击下发策略下一步按钮失败 元素点击 ${Add_Instance} 点击添加实例成功 点击添加实例失败 元素点击 ${Select_Node1} 选择node1节点成功 选择node1节点失败 元素输入 ${Input_Oracleinstance} ${OracleRAC1_Instance} 定位实例名输入框失败 元素点击 ${Click_Sure} 定位确定按钮成功 定位确定按钮失败 sleep 5s 元素点击 ${Add_Instance} 点击添加实例成功 点击添加实例失败 元素点击 ${Select_Node2} 选择node2节点成功 选择node2节点失败 元素输入 ${Input_Oracleinstance2} ${OracleRAC2_Instance} 定位实例名输入框失败 元素点击 ${Click_Sure} 定位确定按钮成功 定位确定按钮失败 sleep 5s 元素点击 ${Click_Next1} 点击连接凭据页面下一步按钮 点击连接凭据页面下一步按钮失败 元素点击 ${Select_Oracle_InstanceSID} 点击勾选数据库 定位数据库勾选框失败 元素点击 ${Click_Next2} 点击目标数据库页面下一步按钮 定位目标数据库页面下一步按钮失败 元素点击 ${Option_NextStep} 点击Oracle选项页面下一步按钮 定位Oracle选项页面下一步按钮失败 元素点击 ${Cycle_Add_Task} 点击添加任务周期 定位添加任务周期按钮失败 Run Keyword If "${bk_type}"=="完全" 完全备份 ... ELSE IF "${bk_type}"=="增量" 永久增量备份 ... ELSE Fail 定位备份类型失败 元素点击 ${Cycle_Onetime} 选择仅备份一次 定位一次循环模式定位失败 元素点击 ${Cycle_Oracle_Task_Commit} 点击确定完成任务周期设置 定位搜索确定按钮失败 元素点击 ${Cycle_Oracle_Task_Next} 点击下一步 定位搜索下一步按钮失败 元素点击 ${Input_Choose_MDS} 选择手动指定MDS介质 定位手动选择MDS介质选项失败 元素点击 ${Select_MDS_CDM} 点击展开介质选项下拉框 定位介质下拉框失败 元素点击 xpath=//select[@id="dialogues_addCycleStorage_storagePath_selectMedia_selectedMdsIP_select"]/option[@label="${mds_name}"] 点击选择指定介质 定位指定介质失败 元素点击 ${Cycle_Oracle_Disk_Next} 点击下一步进入备份高级选项 定位备份集存储下一部失败 sleep 2s 元素点击 ${Cycle_Oracle_Finish_Commit} 点击完成策略创建 定位策略完成失败 Sleep 2s 元素点击 ${Success_Confirm} 策略确定创建完毕 定位策略创建成功弹窗失败 元素点击 ${Backup_html} 点击副本管理成功 定位副本管理界面失败 元素输入 ${Input_Oracle_Backups_Policy_Name} ${random_strategyName} 定位搜索策略名失败 元素点击 ${Cycle_Search_PolicyName} 点击搜索成功 定位搜索按钮失败 FOR ${n} IN RANGE 10 Click Element ${Cycle_Search_PolicyName} Sleep 10s ${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//tr[@data-index="0"]/td/div[text()="已完成"] Run Keyword If "${bk_status}"=="True" Exit For Loop ... ELSE Log 备份未完成 Sleep 60s END ${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//tr[@data-index="0"]/td/div[text()="已完成"] Run Keyword If "${bk_status}"=="True" Log 备份成功 ... ELSE Fail 备份失败 完全备份 元素点击 ${Select_Task_fullBackup} 选择完全备份 定位完全备份选项失败 永久增量备份 元素点击 ${Incremental_Backup} 点击选择永久增量备份 定位永久增量备份失败 OracleRAC恢复 元素点击 ${Backup_html} 点击副本管理成功 定位副本管理界面失败 sleep 2 元素点击 ${Select_Oracle_Restore_Option} 点击操作成功 定位操作按钮失败 元素点击 ${Select_Oracle_Restore} 点击恢复按钮成功 定位恢复按钮失败 sleep 5 元素点击 ${Info_NextStep} 点击下一步进入到恢复目标页面 定位备份内容下一部失败 元素点击 ${Select_recovery_host} 点击选择主机成功 点击选择主机失败 元素点击 ${Select_recovery_RAC1} 点击选择节点1成功 点击选择节点1失败 元素点击 ${Click_ASMRecoveryMode} 恢复方式选择ASM成功 恢复方式选择ASM失败 元素点击 ${Recover_RACinstancename} 点击添加实例按钮成功 点击添加实例按钮失败 元素点击 ${Recover_Select_Node1} 选择节点1成功 选择节点1失败 元素点击 ${Conne_type} 连接方式选择os连接成功 连接方式选择os连接失败 元素输入 ${Recover_RAC1InstanceName} ${OracleRAC_Instance} 输入实例名失败 Comment 元素输入 ${Recover_RAC1_User_Name} ${OracleRACUser} 输入用户名失败 Comment 元素输入 ${Recover_RAC1_Password} ${DBRACPwd} 输入密码失败 元素点击 ${Click_Sure} 点击确定按钮成功 点击确定按钮失败 元素点击 ${Cycle_Oracle_Restore_Next} 点击下一步进入到Oracle选项 定位下一步按钮失败 元素点击 ${Rec_OracleOption_NextStep} 点击下一步进入到恢复选项 定位Oracle选项下一步失败 元素点击 ${Rec_Option_NextStep} 点击下一步进入到高级选项 定位恢复选项下一步失败 元素点击 ${Cycle_Oracle_Restore_Finish} 点击完成按钮成功 定位完成按钮失败 元素点击 ${confirm_restore} 点击确认恢复按钮成功 点击确认恢复按钮失败 sleep 5 元素点击 ${Success_Confirm} 恢复任务添加完成 定位添加恢复任务成功按钮失败 Log 开始恢复...... 元素点击 ${Select_JobHtml} 点击作业界面成功 定位作业界面失败 元素输入 ${Host_Search} ${OracleRAC1_Name} 输入主机名成功 元素点击 xpath=//span[@class="standartTreeRow"and text()="${OracleRAC1_Name}"] 选择节点1成功 选择节点2失败 FOR ${n} IN RANGE 20 ${work_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//table[@lay-size="sm"]//tr[1]//div[text()="成功"] Run Keyword If ${work_status}==False Log 恢复未完成 ... ELSE Exit For Loop Sleep 60s END ${work_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//table[@lay-size="sm"]//tr[1]//div[text()="成功"] Run Keyword If ${work_status}==False Fail ... ELSE Log 恢复成功 Sleep 15s OracleRAC校验表 [Arguments] ${OracleRAC_TableName1} ${DBRACInstance_lin} log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${DBRACUser}','${DBRACPwd}','${DBRACInstance_lin}' log 获取行数 ${result} Row Count select * from user_tables where table_name=upper('${OracleRAC_TableName1}') Execute Sql String select * from ${OracleRAC_TableName1} Disconnect From Database Run Keyword If "${result}"=="${rownum}" log 数据校验一致,恢复成功 ... ELSE Fail 数据校验不一致,恢复失败 OracleRAC插入数据 [Arguments] ${OracleRAC_TableName1} ${DBRACInstance_lin} log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${DBRACUser}','${DBRACPwd}','${DBRACInstance_lin}' log 获取行数 ${rowcount} Row Count select * from user_tables where table_name=upper('${OracleRAC_TableName1}') Run Keyword If ${rowcount} >=1 Execute Sql String insert into ${OracleRAC_TableName1} select * from ${OracleRAC_TableName1} ${rownum} Row Count select * from ${OracleRAC_TableName1} Set Suite Variable ${rownum} Log ${rownum} Disconnect From Database 立即执行OracleRAC [Arguments] ${BK_type} 元素点击 ${CDM_dataProtect} 点击副本数据保护成功 定位副本数据保护定位失败 元素点击 xpath=//li[@id="cdm_tab_policy_li"]/span[text()="保护策略"] 切换到副本保护策略栏 定位副本保护策略功能栏失败 Sleep 2s 元素点击 xpath=//td[text()="${random_strategyName}"]/..//span[text()="立即执行"] 点击策略立即执行 定位立即执行失败 Sleep 2s 元素点击 ${Now_Run_Type} 点击展开立即执行下拉框 定位立即执行备份类型失败 Run Keyword If "${bk_type}"=="完全" 立即执行_完全备份 ... ELSE IF "${bk_type}"=="增量" 立即执行_增量备份 Sleep 2s 循环点击 ${Confirm_Exec} ${Delete_succeeded_OK} Sleep 5s 元素点击 ${Delete_succeeded_OK} 点击确定按钮 定位确定按钮失败 元素点击 ${CDM_BK} 点击进入备份集一栏 定位备份集栏失败 元素输入 xpath=//*[@id="backTabPolicy"] ${random_strategyName} 输入策略名 FOR ${n} IN RANGE 10 Click Element xpath=//span[@id="cdm_tab_backupset_searchfilter_span"] ${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//tr[@data-index="0"]//div[text()="已完成"] Run Keyword If "${bk_status}"=="True" Exit For Loop ... ELSE Log 备份未完成 Sleep 60s END Run Keyword If ${bk_status}==False Fail ... ELSE Log 备份成功 Sleep 15s 立即执行_完全备份 元素点击 xpath=//option[@label="完全备份"] 点击立即执行完全备份 定位完全备份选项失败 立即执行_增量备份 元素点击 ${Option_Increbk} 点击立即执行增量备份 定位增量备份选项失败 OracleRAC快速挂载 [Arguments] ${Mount_Agent} 元素点击 ${Select_Oracle_Restore_Option} 点击操作成功 定位操作按钮失败 sleep 5s 元素点击 ${Oracle_Backups_Mount} 点击挂载按钮成功 定位挂载按钮失败 元素点击 ${Info_NextStep} 点击下一步进入到恢复目标页面 定位备份内容下一部失败 元素点击 xpath=//dd[@class="layui-this" and text()="racnode1-p (10.10.31.180)"] 选择挂载机成功 选择挂载机失败 元素输入 ${Input_Oracle_Mount_NewSID} ${Mount_OracleInstanceName} 定位实例名元素失败 元素点击 ${Cycle_Oracle_Mount_Next} 点击下一步进入挂载选项 定位下一步按钮失败 元素点击 ${Oracle_Mount_NextStep} 点击下一步进入高级选项 定位挂载选项下一部失败 元素点击 ${Cycle_Oracle_Mount_Finish} 点击完成成功 定位完成按钮失败 元素点击 ${Delete_succeeded_OK} 点击添加成功确定按钮成功 点击添加成功确定按钮失败 元素输入 ${Input_Oracle_SearchName} ${Mount_Agent} 定位搜索输入框失败 元素点击 xpath=//span[text()="${Mount_Agent}"] 选择Oracle代理机器 定位Oracle代理机节点失败 元素点击 ${Select_JobHtml} 点击作业界面成功 定位作业界面失败 sleep 60s Wait Until Page Contains Element ${Search_Mount_JobStatus} 300s 挂载未完成 Log 挂载99%成功 OracleRAC停止挂载 [Arguments] ${agent} 元素输入 ${Input_Oracle_SearchName} ${agent} 定位搜索输入框失败 元素点击 xpath=//span[text()="${agent}"] 选择Oracle代理机器 定位Oracle代理机节点失败 元素点击 ${Cycle_Oracle_Make} 点击操作按钮成功 定位操作按钮失败 元素点击 ${Cycle_Oracle_StopJob} 点击停止按钮成功 定位停止按钮失败 元素点击 ${Cycle_Oracle_StopMount_Confirm} 点击完成成功 定位完成失败 元素点击 ${Cycle_Restore_Finish_OK} 点击停止成功按钮成功 定位停止成功按钮失败 Log 停止挂载成功