Oracle客户端在跨架构运行查询时使用了多少数据/网络?

Oracle客户端在跨架构运行查询时使用了多少数据/网络?,oracle,azure,Oracle,Azure,当我运行从模式复制数据的查询时,它是在服务器端执行所有SQL,还是将数据复制到本地应用程序,然后将其推回数据库 这两个表位于同一个数据库中,但该数据库是通过VPN访问的。如果是跨数据库的,它会改变吗 例如(在蟾蜍数据点中运行): 我问这个问题的目的是因为我正在获取Azure Cloud中虚拟机的报价,并希望确保我不会在数据成本上打破银行记录。在同一数据库上处理SQL语句通常完全在服务器上进行,并且生成的网络流量很少 在Oracle中,模式是一个逻辑对象。他们之间没有物理障碍。在使用两个表的SQL

当我运行从模式复制数据的查询时,它是在服务器端执行所有SQL,还是将数据复制到本地应用程序,然后将其推回数据库

这两个表位于同一个数据库中,但该数据库是通过VPN访问的。如果是跨数据库的,它会改变吗

例如(在蟾蜍数据点中运行):


我问这个问题的目的是因为我正在获取Azure Cloud中虚拟机的报价,并希望确保我不会在数据成本上打破银行记录。

在同一数据库上处理SQL语句通常完全在服务器上进行,并且生成的网络流量很少

在Oracle中,模式是一个逻辑对象。他们之间没有物理障碍。在使用两个表的SQL查询中,如果这些表位于相同的模式或不同的模式中(特权问题除外),则没有区别

一些例外情况:

  • 真实应用程序集群(RAC)RAC可能在节点之间共享大量数据。例如,如果表缓存在一个节点上,而处理发生在另一个节点上,则它可以通过网络发送所有表数据。(但我不确定这在云上是如何工作的。通常情况下,节点间通信是通过单独的专用网络连接完成的。)
  • 数据库链接-如果应用程序正在使用数据库链接,这一点应该很明显
  • Oracle报表和表单(?)-一些罕见的工具具有客户端PL/SQL处理功能。这些程序可能会将数据发送到客户端进行处理。但我仍然怀疑它是否会做一些疯狂的事情,比如将整个表发送给客户端进行排序,然后将结果返回给服务器
  • 备份/归档日志-我假设所有数据都将被备份。我不确定这是如何计算的,但这可能意味着所有写入的数据最终也将被计算为网络流量
  • 下面的查询是检查生成的网络流量的不同方法的示例

    --SQL*Net bytes sent for a session.
    select *
    from gv$sesstat
    join v$statname
        on gv$sesstat.statistic# = v$statname.statistic#
    --You probably also want to filter for a specific INST_ID and SID here.
    where lower(display_name) like '%sql*net%';
    
    --SQL*Net bytes sent for the entire system.
    select *
    from gv$sysstat
    where lower(name) like '%sql*net%'
    order by value desc;
    

    如果是跨数据库的,则需要从一个数据库到另一个数据库的数据库链接。数据将通过链接进行复制。本地应用程序不参与其中。这正是我想要的。谢谢你的详细解释!
    --SQL*Net bytes sent for a session.
    select *
    from gv$sesstat
    join v$statname
        on gv$sesstat.statistic# = v$statname.statistic#
    --You probably also want to filter for a specific INST_ID and SID here.
    where lower(display_name) like '%sql*net%';
    
    --SQL*Net bytes sent for the entire system.
    select *
    from gv$sysstat
    where lower(name) like '%sql*net%'
    order by value desc;