zoukankan      html  css  js  c++  java
  • 有关SYSDATE与DBLINK的问题

    问题:有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机的,经测试,未重现这个现象,原因不明
    人生有三宝:终身运动,终身学习,终身反醒.吸收新知,提高效率,懂得相处,成就自己,也成就他人,创造最高价值。
  • 相关阅读:
    更改文件默认打开方式
    python数据分析高频词提取,pyecharts词云制作并保存
    pyecharts V1.x版本使用Map绘制地图修改主题背景色等
    设置随机请求头和使用代理
    【重学前端】JS基础-原型和原型链
    【重学前端】JS基础-变量和类型
    Bootstrap blog整页制作
    拉勾网 移动端流式布局与rem布局整页制作
    PC端管理后台整页制作
    QQ飞车官方首页(部分)制作
  • 原文地址:https://www.cnblogs.com/jimeper/p/1751192.html
Copyright © 2011-2022 走看看