Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle Db查询信息是在服务器上还是在客户端上处理的?_Sql_Database_Oracle_Security_Process - Fatal编程技术网

Sql Oracle Db查询信息是在服务器上还是在客户端上处理的?

Sql Oracle Db查询信息是在服务器上还是在客户端上处理的?,sql,database,oracle,security,process,Sql,Database,Oracle,Security,Process,我们正在讨论数据安全问题,出现了一个我需要确认的问题。这是一个场景: 我们有两个Oracle数据库:一个在源服务器上,另一个在客户端服务器上。源服务器具有敏感信息,已完全安全并被视为符合要求。我们希望运行一个groupby查询来聚合来自源的数据并将其存储在客户机上,一旦聚合,数据将不再敏感 简单地说。。。这包括三个部分:1)源服务器上的数据,2)通过网络传输数据,以及3)客户端服务器上的数据 有人能解释聚合发生在哪里吗?传输的是什么数据 换言之,是哪种方式: 数据首先在源服务器上聚合,通过网络发

我们正在讨论数据安全问题,出现了一个我需要确认的问题。这是一个场景:

我们有两个Oracle数据库:一个在源服务器上,另一个在客户端服务器上。源服务器具有敏感信息,已完全安全并被视为符合要求。我们希望运行一个
groupby
查询来聚合来自源的数据并将其存储在客户机上,一旦聚合,数据将不再敏感

简单地说。。。这包括三个部分:1)源服务器上的数据,2)通过网络传输数据,以及3)客户端服务器上的数据

有人能解释聚合发生在哪里吗?传输的是什么数据

换言之,是哪种方式:

  • 数据首先在源服务器上聚合,通过网络发送的只是聚合数据

  • 数据通过网络从源服务器详细发送,然后在客户机服务器上聚合

  • 它是1和2的混合体

  • 或者。。。我还缺什么


  • 如果策略是永远不要在客户端服务器中查看敏感数据,那么选项一是您的选择。至于实现选项2,客户机服务器需要能够从源服务器查询原始数据


    要实现选项1,您可以使用源服务器上的物化视图聚合数据,然后使用db link将聚合数据复制到客户端服务器。

    如果策略是从不在客户端服务器中查看敏感数据,则选项1是您的选择。至于实现选项2,客户机服务器需要能够从源服务器查询原始数据


    要实现选项1,您可以通过在源服务器上使用物化视图来聚合数据,然后使用db link将聚合数据复制到客户端服务器。

    Oracle优化分布式查询,以尽可能高效地执行查询,尤其是它力求最大限度地减少通过网络发送的数据量。它将始终尝试在远程服务器上运行查询,并仅将结果集发送到本地服务器。(在将远程数据与本地数据连接时,情况更为复杂,但这似乎不是您的场景)

    因此,您可以在客户端服务器上运行查询,并确保敏感数据保留在源服务器上,并且只传输聚合结果集(您的选项#1)。然而,如果我是你的安全官员,我仍然会对这个解决方案不满意。这仍然意味着向安全数据库之外的用户授予对敏感表的
    select
    访问权限。那很危险

    一个更安全的解决方案是在安全服务器上聚合数据,比如说使用物化视图。您的客户机服务器访问该物化视图以获取聚合数据,可以仅通过查询或视图,也可以使用另一个物化视图,具体取决于您需要什么


    完整的解决方案是在源数据库上有一个单独的模式来承载物化视图,这样外部用户甚至都无法访问拥有敏感数据的模式。显然,维护DMZ是额外的开销,但所有的安全性都是开销

    Oracle优化分布式查询以尽可能高效地执行它们,尤其是它寻求将通过网络发送的数据量降至最低。它将始终尝试在远程服务器上运行查询,并仅将结果集发送到本地服务器。(在将远程数据与本地数据连接时,情况更为复杂,但这似乎不是您的场景)

    因此,您可以在客户端服务器上运行查询,并确保敏感数据保留在源服务器上,并且只传输聚合结果集(您的选项#1)。然而,如果我是你的安全官员,我仍然会对这个解决方案不满意。这仍然意味着向安全数据库之外的用户授予对敏感表的
    select
    访问权限。那很危险

    一个更安全的解决方案是在安全服务器上聚合数据,比如说使用物化视图。您的客户机服务器访问该物化视图以获取聚合数据,可以仅通过查询或视图,也可以使用另一个物化视图,具体取决于您需要什么


    完整的解决方案是在源数据库上有一个单独的模式来承载物化视图,这样外部用户甚至都无法访问拥有敏感数据的模式。显然,维护DMZ是额外的开销,但所有的安全性都是开销

    聚合发生在运行查询的服务器上。如何复制数据?它使用数据库链接吗?谢谢Dan的回复。乔恩,是的。源代码是通过dblinks访问的。除非您知道其他情况,否则如果没有ETL,您也无法以任何其他方式连接到远程数据库。L聚合发生在运行查询的服务器上。数据是如何复制的?它使用数据库链接吗?谢谢Dan的回复。乔恩,是的。源代码是通过dblinks访问的。除非您知道其他情况,否则在没有ETL的情况下,您无法以任何其他方式连接到远程数据库。l等待响应,但您可能误解了我的问题。我不是在寻找最好的选择。考虑到我的情景,我正在寻找实际发生的情况谢谢你的回答,但你可能误解了我的问题。我不是在寻找最好的选择。我在寻找实际发生的情况,谢谢你。请注意,用户可以访问敏感数据。他们是有权查看源服务器上所有内容的开发人员。他们就是不能在那里进行开发。将涉及第三台服务器,最终数据将存放在该服务器上,而最终用户不应该这样做。这对于devel来说是不寻常的