*** Settings *** Resource ../RE0_Common/KeyWord.robot # 公共关键字 Resource ../RE0_Common/ElementPath.robot # 公共元素 Resource ElementPath.robot # CDM元素 Library Selenium2Library Library string Library DateTime Library DatabaseLibrary *** Keywords *** Oracle备份 [Arguments] ${Agent_Name} ${bk_type} ${mds_name} 元素点击 ${CDM_dataProtect} 点击副本数据保护成功 定位副本数据保护定位失败 元素输入 ${Input_Oracle_SearchName} ${Agent_Name} 定位搜索输入框失败 sleep 2s 元素点击 xpath=//span[text()="${Agent_Name}"] 选择Oracle代理机器 定位Oracle代理机节点失败 Mouse Out xpath=//span[text()="${Agent_Name}"] 策略清理_Oracle 元素点击 ${Add_CDM_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} 定位策略名输入框失败 元素输入 ${Input_ORACLE_SID} ${Backup_OracleInstanceName} 定位搜索实例名输入框失败 元素点击 ${Cycle_OracleSID_Nextstep} 点击下一步 定位目标数据库下一步失败 Log 刷新加载数据库实例信息 sleep 5s 元素点击 ${Select_Oracle_InstanceSID} 选择Oracle实例 定位oracle数据库实例失败 元素点击 ${Cycle_Oracle_Select_SID_Next} 点击下一步进入Oracle选项页面 定位搜索下一步按钮失败 元素点击 ${Option_NextStep} 点击下一步进入到任务周期页面 定位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 备份失败 Oracle恢复 元素点击 ${Backup_html} 点击副本管理成功 定位副本管理界面失败 sleep 2 元素点击 ${Select_Oracle_Restore_Option} 点击操作成功 定位操作按钮失败 元素点击 ${Select_Oracle_Restore} 点击恢复按钮成功 定位恢复按钮失败 sleep 10 元素点击 ${Info_NextStep} 点击下一步进入到恢复目标页面 定位备份内容下一部失败 元素输入 ${Input_Oracle_Restore_SID} ${Restore_OracleInstanceName} 定位恢复界面实例名失败 元素点击 ${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} 点击作业界面成功 定位作业界面失败 sleep 120s Wait Until Page Contains Element ${Search_Status_Sessuss} 300s 备份未完成 Log 恢复成功 Oracle增量备份 [Arguments] ${Agent_Name} 元素点击 ${CDM_dataProtect} 点击副本数据保护成功 定位副本数据保护定位失败 元素输入 ${Input_Oracle_SearchName} ${Agent_Name} 定位搜索输入框失败 元素点击 xpath=//span[text()="${Agent_Name}"] 选择Oracle代理机器 定位Oracle代理机节点失败 元素点击 ${Html_Oracle_Policy} 切换到策略栏 定位策略栏按钮失败 元素输入 ${Input_Policy_MaskName} ${random_strategyName} 定位输入策略名元素失败 元素点击 ${Bk_Search_PolicyName} 点击查找按钮成功 定位查找按钮失败 元素点击 ${Run_Now} 点击立即执行按钮成功 定位立即执行按钮失败 Select From List By Label ${Now_Run_Type} ${Bk_Incre_Type} Log 选择备份类型 元素点击 ${Cycle_Run_Now_Finish} 点击完成按钮成功 定位完成按钮失败 元素点击 ${Cycle_Restore_Finish_OK} 点击添加成功按钮 定位添加成功按钮失败 sleep 3s log 开始增量备份 元素点击 ${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=//div[text()="${random_strategyName}"]/../..//div[contains(text(),"Oracle(副本)增量备份")]/../..//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=//div[text()="${random_strategyName}"]/../..//div[contains(text(),"Oracle(副本)增量备份")]/../..//div[text()="已完成"] Run Keyword If "${bk_status}"=="True" Log 备份成功 ... ELSE Fail 备份失败 Oracle挂载 [Arguments] ${Mount_Agent} 元素点击 ${Backup_html} 点击副本管理成功 定位副本管理界面失败 元素点击 xpath=//span[text()="${Mount_Agent}"] 选择Oracle代理机器 定位Oracle代理机节点失败 元素点击 ${Backup_html} 点击副本管理成功 定位副本管理界面失败 sleep 5s 元素点击 ${Select_Oracle_Restore_Option} 点击操作成功 定位操作按钮失败 sleep 5s 元素点击 ${Oracle_Backups_Mount} 点击挂载按钮成功 定位挂载按钮失败 元素点击 ${Info_NextStep} 点击下一步进入到恢复目标页面 定位备份内容下一部失败 元素输入 ${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%成功 Oracle停止挂载 [Arguments] ${agent} Comment 元素输入 ${Input_Oracle_SearchName} ${agent} 定位搜索输入框失败 Comment 元素点击 xpath=//span[text()="${agent}"] 选择Oracle代理机器 定位Oracle代理机节点失败 元素点击 ${Cycle_Oracle_Make} 点击停止按钮成功 定位停止按钮失败 元素点击 ${Oracle_StopMount_Confirm} 点击完成成功 定位完成失败 元素点击 ${Cycle_Restore_Finish_OK} 点击停止成功按钮成功 定位停止成功按钮失败 Log 停止挂载成功 Oracle回迁 [Arguments] ${Agent_Name} 元素点击 ${Select_JobHtml} 点击作业界面成功 定位作业界面失败 sleep 5s 元素点击 ${Cycle_Oracle_Make} 点击操作按钮成功 定位操作按钮失败 元素点击 ${Cycle_Oracle_Relocation} 点击回迁按钮成功 定位回迁按钮失败 Select From List By Label ${Select_Oracle_Relocation_Host} ${Agent_Name} Log 选择回迁主机成功 Sleep 10s 元素输入 ${Input_Oracle_Relocation_UserName} ${CDM_Username} 定位用户名失败 元素输入 ${Input_Oracle_Relocation_Passwd} ${CDM_Password} 定位密码失败 Comment 元素点击 ${Select_Oracle_Relocation_Role} 点击展开角色列表 定位角色列表展开失败 Comment 元素点击 ${HQ_Oracle_Role} 点击选择oracle角色 定位角色失败 元素点击 ${Cycle_Oracle_Relocation_Next} 点击下一步成功 定位下一步按钮失败 sleep 5s 元素点击 ${Cycle_Oracle_Relocation_Finish} 点击完成成功 定位完成按钮失败 元素点击 ${Cycle_Restore_Finish_OK} 点击回迁任务成功 定位成功按钮失败 Log 开始回迁 Sleep 2s 元素输入 ${Input_Oracle_SearchName} ${Agent_Name} 定位搜索输入框失败 元素点击 xpath=//span[text()="${Agent_Name}"] 选择Oracle代理机器 定位Oracle代理机节点失败 元素点击 ${Select_JobHtml} 点击作业界面成功 定位作业界面失败 sleep 60s Wait Until Page Contains Element ${Search_Mount_JobStatus} 300s 回迁未完成 Log 回迁99%成功 Oracle停止回迁 元素点击 ${Cycle_Oracle_Make} 点击操作按钮成功 定位操作按钮失败 元素点击 ${Cycle_Oracle_Relocation_Stop} 点击停止回迁成功 定位停止回迁按钮失败 元素点击 ${Cycle_Oracle_Relocation_Finesh_Commit} 点击确定成功 定位确定按钮失败 元素点击 ${Cycle_Restore_Finish_OK} 点击完成成功 定位完成失败 Log 回迁完成 Oracle创建表 [Arguments] ${TableName1} ${OracleInstanceName} ${OraCDM_Username} ${OraCDM_Password} ${OraCDM_HostIP} log 有相同表时先删除表 Oracle删除表 ${TableName1} ${OracleInstanceName} ${OraCDM_Username} ${OraCDM_Password} ${OraCDM_HostIP} log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${OraCDM_Username}','${OraCDM_Password}','${OraCDM_HostIP}:1521/${OracleInstanceName}' log 获取行数 ${rowcount} Row Count select * from user_tables where table_name=upper('${TableName1}') log 创建表 Run Keyword If ${rowcount} <=0 Execute Sql String create table ${TableName1}(id char(50),name varchar(200)) Execute Sql String insert into ${TableName1}(id,name)values('1','test1') Execute Sql String insert into ${TableName1}(id,name)values('2','test2') Execute Sql String commit ${rownum} Row Count select * from ${TableName1} Set Suite Variable ${rownum} Log ${rownum} Disconnect From Database Oracle删除表 [Arguments] ${TableName1} ${OracleInstanceName} ${OraCDM_Username} ${OraCDM_Password} ${OraCDM_HostIP} log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${OraCDM_Username}','${OraCDM_Password}','${OraCDM_HostIP}:1521/${OracleInstanceName}' ${rowcount} Row Count select * from user_tables where table_name=upper('${TableName1}') Run Keyword If ${rowcount} >= 1 Execute Sql String drop table ${TableName1} Execute Sql String commit Log 删除表成功 Disconnect From Database Oracle校验表 [Arguments] ${TableName1} ${OracleInstanceName} ${OraCDM_Username} ${OraCDM_Password} ${OraCDM_HostIP} # 表名|实例名|IP地址 sleep 30s log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${OraCDM_Username}','${OraCDM_Password}','${OraCDM_HostIP}:1521/${OracleInstanceName}' log 获取行数 ${result} Row Count select * from ${TableName1} Disconnect From Database Run Keyword If "${result}"=="${rownum}" log 数据校验一致,恢复成功 ... ELSE Fail 数据校验不一致,恢复失败 Oracle插入数据 [Arguments] ${TableName1} ${OracleInstanceName} ${OraCDM_Username} ${OraCDM_Password} ${OraCDM_HostIP} log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${OraCDM_Username}','${OraCDM_Password}','${OraCDM_HostIP}:1521/${OracleInstanceName}' log 获取行数 ${rowcount} Row Count select * from user_tables where table_name=upper('${TableName1}') Run Keyword If ${rowcount} >=1 Execute Sql String insert into ${Oracle_TableName1} select * from ${TableName1} Execute Sql String commit ${rownum} Row Count select * from (${TableName1}) Set Suite Variable ${rownum} Log ${rownum} Disconnect From Database Oracle删除最新备份集 [Arguments] ${num} 元素点击 ${CDM_dataProtect} 点击副本数据保护成功 定位副本数据保护定位失败 元素输入 ${Input_Oracle_SearchName} ${CDM_Oracle_HostName_win1} 定位搜索输入框失败 元素点击 xpath=//span[text()="${CDM_Oracle_HostName_win1}"] 选择Oracle代理机器 定位Oracle代理机节点失败 元素点击 ${Backup_html} 点击副本管理成功 定位副本管理界面失败 元素点击 //*[@id="backupAction_${num}"] 点击操作成功 定位操作按钮失败 元素点击 ${Cycle_Oracle_Backups_Delete} 点击删除按钮成功 定位删除按钮失败 元素点击 ${Cycle_Oracle_Delete_Cocfirm} 点击确定成功 定位确定按钮失败 元素点击 ${Cycle_Restore_Finish_OK} 点击删除成功成功 定位删除成功失败 策略清理_Oracle 元素点击 ${Html_Oracle_Policy} 切换到策略栏 定位策略栏按钮失败 Sleep 2s FOR ${n} IN RANGE 3 ${policy_status} Run Keyword And Return Status Wait Until Element Is Visible ${Cycle_Oracle_Police_Delete} Run Keyword If ${policy_status}==True 策略删除_Oracle ... ELSE Exit For Loop END Log 环境清理完毕 Oracle删除备份集 [Arguments] ${num} ${agent} 元素点击 ${CDM_dataProtect} 点击副本数据保护成功 定位副本数据保护定位失败 元素输入 ${Input_Oracle_SearchName} ${agent} 定位搜索输入框失败 元素点击 xpath=//span[text()="${agent}"] 选择Oracle代理机器 定位Oracle代理机节点失败 元素点击 ${Backup_html} 点击副本管理成功 定位副本管理界面失败 元素点击 //*[@id="backupAction_${num}"] 点击操作成功 定位操作按钮失败 元素点击 ${Cycle_Oracle_Backups_Delete} 点击删除按钮成功 定位删除按钮失败 元素点击 ${Cycle_Oracle_Delete_Confirm} 点击确定成功 定位确定按钮失败 元素点击 ${Cycle_Restore_Finish_OK} 点击删除成功成功 定位删除成功失败 策略删除_Oracle 循环点击 ${Cycle_Oracle_Police_Delete} ${OracleCDM_Police_Delete} 元素点击 ${OracleCDM_Police_Delete} 点击确认删除成功 定位确认按钮失败 元素点击 ${Cycle_Restore_Finish_OK} 点击删除成功 定位删除成功按钮失败 完全备份 元素点击 ${Select_Task_fullBackup} 选择完全备份 定位完全备份选项失败 永久增量备份 元素点击 ${Oracle_Incremental_Backup} 点击选择永久增量备份 定位永久增量备份失败 立即执行_Oracle_CDM [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 sleep 10s 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="完全备份"] 点击立即执行完全备份 定位完全备份选项失败 立即执行_增量备份 元素点击 ${Oracle_Incremental_Backup} 点击立即执行增量备份 定位增量备份选项失败 重启监听 [Arguments] ${ip} ${user} ${pwd} Open Connection ${ip} SSHLibrary.Login ${user} ${pwd} log 重启监听服务 Write export ORACLE_SID=${Mount_OracleInstanceName} Write lsnrctl stop;lsnrctl start Log 重启监听服务完成 Oracle删除表_12c [Arguments] ${Oracle_TableName1} ${Backup_OracleInstanceName} ${CDM_Oracle_HostIP} log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${CDM_Backup_Username_12c}','${CDM_Backup_Password_12c}','${CDM_Oracle_HostIP}:1521/${Backup_OracleInstanceName}' ${rowcount} Row Count select * from user_tables where table_name=upper('${Oracle_TableName1}') Run Keyword If ${rowcount} >= 1 Execute Sql String drop table ${Oracle_TableName1} Execute Sql String commit Log 删除表成功 Disconnect From Database Oracle创建表_12c [Arguments] ${Oracle_TableName1} ${Backup_OracleInstanceName} ${CDM_Oracle_HostIP} log 有相同表时先删除表 Oracle删除表_12c ${Oracle_TableName1} ${Backup_OracleInstanceName} ${CDM_Oracle_HostIP_12c} log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${CDM_Backup_Username_12c}','${CDM_Backup_Password_12c}','${CDM_Oracle_HostIP}:1521/${Backup_OracleInstanceName}' log 获取行数 ${rowcount} Row Count select * from user_tables where table_name=upper('${Oracle_TableName1}') log 创建表 Run Keyword If ${rowcount} <=0 Execute Sql String create table ${Oracle_TableName1}(id char(50),name varchar(200)) Execute Sql String insert into ${Oracle_TableName1}(id,name)values('1','test1') Execute Sql String insert into ${Oracle_TableName1}(id,name)values('2','test2') Execute Sql String commit ${rownum} Row Count select * from ${Oracle_TableName1} Set Suite Variable ${rownum} Log ${rownum} Disconnect From Database Oracle校验表_12c [Arguments] ${Oracle_TableName1} ${Backup_OracleInstanceName} ${CDM_Oracle_HostIP} # 表名|实例名|IP地址 sleep 30s log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${CDM_Backup_Username_12c}','${CDM_Backup_Password_12c}','${CDM_Oracle_HostIP}:1521/${Backup_OracleInstanceName}' log 获取行数 ${result} Row Count select * from ${Oracle_TableName1} Disconnect From Database Run Keyword If "${result}"=="${rownum}" log 数据校验一致,恢复成功 ... ELSE Fail 数据校验不一致,恢复失败 Oracle插入数据_12c [Arguments] ${Oracle_TableName1} ${Backup_OracleInstanceName} ${CDM_Oracle_HostIP} log 连接数据库 Connect To Database Using Custom Params cx_Oracle '${CDM_Backup_Username_12c}','${CDM_Backup_Password_12c}','${CDM_Oracle_HostIP}:1521/${Backup_OracleInstanceName}' log 获取行数 ${rowcount} Row Count select * from user_tables where table_name=upper('${Oracle_TableName1}') Run Keyword If ${rowcount} >=1 Execute Sql String insert into ${Oracle_TableName1} select * from ${Oracle_TableName1} Execute Sql String commit ${rownum} Row Count select * from (${Oracle_TableName1}) Set Suite Variable ${rownum} Log ${rownum} Disconnect From Database 关闭rman自动备份 [Arguments] ${ip} ${user} ${pwd} Open Connection ${ip} 22 SSHLibrary.Login ${user} ${pwd} Log 进入服务器 sleep 5s Write rman target / Sleep 5s Write CONFIGURE CONTROLFILE AUTOBACKUP OFF; Sleep 5s Close Connection 重启监听_12c [Arguments] ${ip} ${user} ${pwd} Open Connection ${ip} SSHLibrary.Login ${user} ${pwd} log 重启监听服务 Write export ORACLE_SID=${CDM_OracleInstanceName} Write lsnrctl stop;lsnrctl start Log 重启监听服务完成 Oracle备份_Win