有关SYSDATE与DBLINK的问题

简介: 问题:有A,B两数据库,连接到A机,对于SELECT SYSDATE FROM DUAL@TOB 来说,这个SYSDATE从A机取时间,还是B机取时间?测试证明是从A机,应该是ORACLE 分析发现这个SYSDATE函数在A机即存在,且与DUAL对象之间没有依赖关系,则在A机执行这个函数代码,为证明...
问题:有A,B两数据库,连接到A机,对于SELECT SYSDATE FROM DUAL@TOB 来说,这个SYSDATE从A机取时间,还是B机取时间?
测试证明是从A机,应该是ORACLE 分析发现这个SYSDATE函数在A机即存在,且与DUAL对象之间没有依赖关系,则在A机执行这个函数代码,为证明ORACLE是这样做的,示例如下:在A机上建一个自定义函数:create or replace function f_test return number is

begin

return(1);
end f_test;
在B机上建同名函数,但返回值不同,如下:
create or replace function f_test return number is
begin
return(2);
end f_test;
在A机上执行SQL:
select f_test from dual@to201
返回值为1,删除A机上的f_test函数后,执行SQL:
Select f_test from dual@to201
报无效标识符错,再执行SQL:
select f_test@to201 from dual@to201

select f_test@to201 from dual
返回值为2,
结论:说明ORACLE 确实是在验证SQL相关对象时,先优先在本机查找对象的,如果要指定使用目标对象,则需要用DBLINK标识符来声明。
按以上结论,对sysdate使用DBLINK标识符:
Select sysdate@to201 from dual@to201 ,
报错:未找到预期FROM关键字,如下也不行:
Select standard@to201.sysdate from dual@to201
原因不明
如果硬要使用B机的SYSDATE函数,则在B机用户下建一个视图:
create view mydate as select sysdate mydate from dual
然后在A机:
select mydate from mydate@to201
正常。
BTW:
有同事反映说有这样一种情况,在SQLPLUS 下手工:
select sysdate from dual@tob
返回的是A机(本机)的时间,但如果在触发器中执行这个SQL,,获得的时间却是B机的,经测试,未重现这个现象,原因不明
目录
相关文章
|
小程序 容器
日程安排小程序实战教程
日程安排小程序实战教程
|
运维 监控 数据库
如何实现软件SaaS化
如何实现软件SaaS化
|
开发工具 git
Git从远程仓库拉取指定的分支
Git从远程仓库拉取指定的分支
2777 0
|
8月前
|
存储 人工智能 缓存
怎么根据自己的业务选择阿里云服务器配置大小?
本文指导如何根据业务需求精准选择阿里云服务器配置,涵盖个人轻量级至企业级、计算密集型等场景,推荐不同实例类型、存储与带宽方案,并提供成本优化策略,如包年包月节省成本、按需升级配置及选用性价比高的自研ARM架构实例。帮助用户在数字化转型中实现性能与成本的平衡。 注:以上配置与价格基于阿里云2025年官方数据,实际信息可能有所调整,请以官网实时页面为准。
|
8月前
|
人工智能 负载均衡 数据可视化
阿里云百炼免费0元部署DeepSeek-R1满血版,替大家试过了,3分钟部署成功!
阿里云百炼平台提供免费100万Token,一键部署DeepSeek-R1满血版仅需3分钟。新手无需编码,最低0元即可体验。平台支持自动弹性扩展,保障API调用稳定性,并提供Chatbox客户端简化操作流程。详情及教程见阿里云百炼官网。
387 4
|
8月前
|
弹性计算 运维 自然语言处理
评测报告:OS Copilot 功能体验与效率提升
作为一名运维工程师,我体验了阿里云OS Copilot智能助手。选择Alibaba Cloud Linux ECS实例安装并运行OS Copilot,通过命令`sudo yum install -y os-copilot`完成安装。重点测试了-t、-f及管道功能:-t参数提升任务执行效率约30%,-f实现一键处理复杂任务,管道功能简化参数理解与配置。整体评价认为该工具实用高效,建议增加预设模板和优化自然语言理解能力。
|
Rust 开发者
揭秘Rust编程:模块与包的终极对决,谁将主宰代码组织的新秩序?
【8月更文挑战第31天】在软件工程中,模块化设计能显著提升代码的可读性、可维护性和可重用性。Rust 作为现代系统编程语言,其模块和包管理机制为开发者提供了强有力的工具来组织代码。本文通过对比模块和包的概念及使用场景,探讨了 Rust 中的最佳实践。
173 2
|
存储 运维 监控
带你从概念、指标、标准这3方面了解所谓的数据中心。
带你从概念、指标、标准这3方面了解所谓的数据中心。
774 0
|
网络协议 安全 网络安全
|
C#
C# 当前上下文中不存在InitializeComponent()
C#——当前上下文中不存在InitializeComponent()可能原因是:项目文件直接由外部加载进来时可能出现错误。可以先检查xaml文件的开头x:Class=“day27test02.MainWindow”是否是正确的类名。如果不是,改成对应的项目的类即可。这是本人碰到的这种情况通过这种方式得到解决的,仅供参考。
938 1
C# 当前上下文中不存在InitializeComponent()