robotframework-demo/Project/task4/Resource/RE2_CDM/KeyWord_Oracle.robot

390 lines
24 KiB
Plaintext

*** 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