Oracle OBIEE初始化块(Repository/Session)自动化删除方案咨询
针对OBIEE 12c自动化删除初始化块的可行方案
方案一:使用OBIEE REST API(推荐)
OBIEE 12c提供的REST API是操作初始化块更可靠的方式,替代runcat.cmd的局限性:
- 先获取所有初始化块列表,筛选Repository和Session类型:
# 基础认证头构建 $authBytes = [Text.Encoding]::ASCII.GetBytes("BI管理员账号:密码") $authHeader = @{Authorization = "Basic "+[Convert]::ToBase64String($authBytes)} # 拉取初始化块列表 $initBlocks = Invoke-RestMethod -Uri "http://<OBIEE服务器IP>:<端口>/analytics/saw.dll/v1/catalog/objects?path=/system/initblocks&type=initblock" -Headers $authHeader -Method Get - 遍历目标块执行删除:
foreach ($block in $initBlocks.items) { if ($block.type -match "^(Repository|Session)$") { $deleteUri = "http://<OBIEE服务器IP>:<端口>/analytics/saw.dll/v1/catalog/objects$($block.path)" Invoke-RestMethod -Uri $deleteUri -Headers $authHeader -Method Delete } } - 注意:确保操作账号拥有BI Administrator权限,且OBIEE的REST服务已正常启用。
方案二:修复runcat.cmd执行逻辑
之前失败大概率是环境变量缺失或参数错误,调整后重新尝试:
- 先初始化OBIEE环境,再导出初始化块到XML:
# 加载OBIEE环境变量 & "<OBIEE安装根目录>\bi\bitools\bin\obiee_env.cmd" # 导出初始化块列表 & "<OBIEE安装根目录>\bi\bitools\bin\runcat.cmd" -cmd export ` -server <OBIEE服务器IP>:<端口> ` -user <BI管理员账号> ` -password <密码> ` -output_file "C:\temp\initblocks_export.xml" ` -object_path "/system/initblocks" ` -object_type "initblock" - 解析XML提取目标块路径,逐个删除:
$xmlContent = [xml](Get-Content "C:\temp\initblocks_export.xml") $targetBlocks = $xmlContent.SelectNodes("//Object[@type='Repository' or @type='Session']") foreach ($block in $targetBlocks) { & "<OBIEE安装根目录>\bi\bitools\bin\runcat.cmd" -cmd delete ` -server <OBIEE服务器IP>:<端口> ` -user <BI管理员账号> ` -password <密码> ` -object_path $block.Path ` -object_type "initblock" }
方案三:nqcmd处理Repository类型初始化块
对于仅Repository类型的初始化块,可通过nqcmd执行Repository层面的删除:
- 编写SQL脚本
delete_repo_initblocks.sql:DELETE FROM INIT_BLOCKS WHERE TYPE = 'REPOSITORY'; - 调用nqcmd执行脚本:
& "<OBIEE安装根目录>\bi\bitools\bin\nqcmd.exe" ` -d <RPD数据源名称> ` -u <Repository管理员账号> ` -p <密码> ` -s "C:\temp\delete_repo_initblocks.sql" - 注意:此方法仅适用于Repository类型初始化块,Session类型需用前两种方案处理。
内容的提问来源于stack exchange,提问作者blitzarpotato
相关产品推荐
相关产品推荐

