暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 从多个数据库服务器访问表一

askTom 2017-03-22
210

问题描述

我们有100版本11/12c的Oracle服务器和连接到它们的Oracle Cloud Control 13c。
我被要求准备脚本自动执行 “CIS Oracle 12c基准测试” 脚本。其中一些将通过更改参数来 “硬化” 数据库,而一些将警告不合规,例如 #1.3-删除默认用户:

SELECT USERNAME
FROM ALL_USERS
WHERE USERNAME IN ('BI','HR','IX','OE','PM','SCOTT','SH'); 


但是我们有与用户 “HR” 一起工作的SAP应用程序。所以我们必须把SAP DB服务器放在排除列表中。
我们决定使用云控制13c (CC13c) 作业机制来完成此任务。
我将在CC13c服务器中创建 “控制配置表”,它将控制 “排除列表”。
我遇到了访问 “控制配置表” 和目标数据库服务器的问题。
每个作业执行都应该从检查开始,如果特定的数据库服务器在当前段落的 “排除列表” 中或不在。

有什么问题吗?让我们使用DB_link!-我说,但答案是否定的!不允许在目标数据库中创建任何数据库对象。
我正在考虑:
1) 在每个目标服务器中为本地/共享位置 “一次” 创建 目录
2) 从CC13c导出 “控制配置表” 到CSV文件
3) 复制到每个目标/共享位置
4) 使用UTL_FILE将CSV文件中的数据加载到内存中

任何建议将不胜感激!

专家解答

1到3听起来不错。但是就易于加载而言,我只将配置作为xml文件,然后您可以直接使用SQL访问它,例如


config.xml
==========

  
    7369
    host1
    WINDOWS
  
  
    7499
    host2
    SOLARIS
  
  
    7521
    host3
    LINUX
  


SQL> with config as
  2   ( select xmltype(bfilename('TEMP','confg.xml'), nls_charset_id('UTF8')) xml_data from dual )
  3  SELECT xt.*
  4  FROM   config x,
  5         XMLTABLE('/servers/server'
  6           PASSING x.xml_data
  7           COLUMNS
  8             "HOSTID"    VARCHAR2(4)  PATH 'hostid',
  9             "HOSTNAME"  VARCHAR2(10) PATH 'hostname',
 10             "OS"        VARCHAR2(9)  PATH 'os'
 11           ) xt;

HOST HOSTNAME   OS
---- ---------- ---------
7369 host1      WINDOWS
7499 host2      SOLARIS
7521 host3      LINUX



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论