sys用户下为其他用户的创建私有db link的案例

2023-11-19


记录一下scheduler job执行失败,而不知到job拥有者密码的情况下,如何重建私有db link的案例

1.查询job执行情况

1.1查看执行失败的job概况

select * from dba_scheduler_job_log where status<>'SUCCEEDED' 
LOG_ID        LOG_DATE                            OWNER            JOB_NAME         STATUS OPERATION
305351	22-5月 -23 06.10.44.119197000 下午 +07:00	EWF	Migration_Update_SingStatus	FAILED	RUN
305352	22-5月 -23 06.25.44.108925000 下午 +07:00	EWF	Migration_Update_SingStatus	FAILED	RUN
305354	22-5月 -23 06.40.44.101936000 下午 +07:00	EWF	Migration_Update_SingStatus	FAILED	RUN
305356	22-5月 -23 06.55.44.103044000 下午 +07:00	EWF	Migration_Update_SingStatus	FAILED	RUN		

1.2.进一步查看

select ADDITIONAL_INFO from dba_scheduler_job_RUN_DETAILS where LOG_ID IN (select LOG_ID from dba_scheduler_job_log where status<>'SUCCEEDED')
ADDITIONAL_INFO
"ORA-06550: line ORA-06550: line 4, column 1:
PLS-00905: object EWF.PRO_1540200_03 is invalid
ORA-06550: line 4, column 1:
PL/SQL: Statement ignored
, column :
"
"ORA-06550: line ORA-06550: line 4, column 1:
PLS-00905: object EWF.PRO_1540200_03 is invalid
ORA-06550: line 4, column 1:
PL/SQL: Statement ignored
, column :
"
"ORA-06550: line ORA-06550: line 4, column 1:
PLS-00905: object EWF.PRO_1540200_03 is invalid
ORA-06550: line 4, column 1:
PL/SQL: Statement ignored
, column :
"
"ORA-06550: line ORA-06550: line 4, column 1:
PLS-00905: object EWF.PRO_1540200_03 is invalid
ORA-06550: line 4, column 1:
PL/SQL: Statement ignored
, column :

2.确认根因

以上输出,看上去有一个对象:EWF.PRO_1540200_03失效了,重新编译一下

ALTER PROCEDURE EWF.PRO_1540200_03 COMPILE
ORA-04052: error occurred when looking up remote object FM.SUBMIT_REC@ORCLDB01IY.FM
ORA-00604: error occurred at recursive SQL level 1
ORA-12170: TNS:Connect timeout occurred
04052. 00000 -  "error occurred when looking up remote object %s%s%s%s%s"
*Cause:    An error occurred when trying to look up a remote object.
*Action:   Fix the error.  Make sure the remote database system has run
           CATRPC.SQL to create necessary views used for querying or looking up
           objects stored in the database.

原来是dblink肇事,看看这个link指向哪里

SELECT * FROM DBA_DB_LINKS WHERE DB_LINK='ORCLDB01IY.FM'
OWNER   DB_LINK     USERNAME                       HOST       
EWF	  ORCLDB01IY.FM	  FM	(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.19.20.217)(PORT=1521)))(CONNECT_DATA=(SID=PCNORCL)))	

发现db link指向的目标主机ip不对,原来目标主机的ip已经修改为172.19.5.217,而DB LINK没有修改
这个db link是属于用户ewf下的私有Link,而我不知道ewf的密码,于是想到使用current_schema试试为ewf重现创建db_link:
先获取原来dblink的ddl

SELECT DBMS_METADATA.GET_DDL('DB_LINK','ORCLDB01IY.FM','EWF') AS DDL_SQL FROM DUAL
                                  DDL_SQL
  CREATE DATABASE LINK "ORCLDB01IY.FM"
   CONNECT TO "FM" IDENTIFIED BY VALUES '05EEF5EF712A07D0C698D886FB43958BAF'
   USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.19.20.217)(PORT=1521)))(CONNECT_DATA=(SID=PCNORCL)))'

3.重建DB LINK

3.1使用current_schema方式

切换current_schema,并drop原来的dblink

alter session set current_schema=ewf;
Session 已更改.
 drop database link "EWF"."ORCLDB01IY.FM"
 SQL 錯誤: ORA-02024: database link not found
02024. 00000 -  "database link not found"
*Cause:    Database link to be dropped is not found in dictionary
*Action:   Correct the database link nam

不管他,尝试创建db link

 CREATE DATABASE LINK ORCLDB01IY.FM
   CONNECT TO "FM" IDENTIFIED BY VALUES '05EEF5EF712A07D0C698D886FB43958BAF'
   USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.19.5.217)(PORT=1521)))(CONNECT_DATA=(SID=PCNORCL)))'
Database link ORCLDB01IY.FM 已建立.  

确认一下

SELECT * FROM DBA_DB_LINKS WHERE DB_LINK='ORCLDB01IY.FM'
OWNER     DB_LINK       USERNAME
EWF	    ORCLDB01IY.FM	  FM
SYSTEM	ORCLDB01IY.FM	  FM

新的dblink却被创建在system用户,看来current_schema不支持私有db link的创建

3.2使用procedure方式

最后使用procedure的方式:
procedure:

CREATE OR REPLACE PROCEDURE ewf.crdb_link
IS
BEGIN
EXECUTE IMMEDIATE 'drop database link ORCLDB01IY.FM';
EXECUTE IMMEDIATE   'CREATE DATABASE LINK ORCLDB01IY.FM
   CONNECT TO FM IDENTIFIED BY VALUES ''05EEF5EF712A07D0C698D886FB43958BAF''
   USING ''(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.19.5.217)(PORT=1521)))(CONNECT_DATA=(SID=PCNORCL)))''';
end;

drop 掉上面创建于system下的db liink,再执行这个procedure

SHOW USER;
USER"SYS"
drop database link ORCLDB01IY.FM
Database link ORCLDB01IY.FM 已刪除.
exec ewf.crdb_link
Procedure CRDB_LINK 已編譯
已順利完成 PL/SQL 程序.

再次验证

EWF	ORCLDB01IY.FM	FM	(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.19.5.217)(PORT=1521)))(CONNECT_DATA=(SID=PCNORCL)))

可以看到,db_link已经顺利重建

4.重新编译失效的对象,并手动执行job

ALTER PROCEDURE EWF.PRO_1540200_03 COMPILE;
Procedure EWF.PRO_1540200_03 已更改.
EXEC dbms_scheduler.run_job('EWF."Migration_Update_SingStatus"');
已順利完成 PL/SQL 程序.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sys用户下为其他用户的创建私有db link的案例 的相关文章

  • 如何获得顶部带有千位分隔符的数字?

    SELECT count FROM table A 假设结果是8689 我怎样才能将它转换为8 689在 SQL Server 上 尝试这样 select replace convert varchar convert Money coun
  • 使用 postgres 和 node js 在单个语句中执行多个查询

    我需要在像这样的单个语句中执行插入和删除查询 INSERT INTO COMPANY ID NAME VALUES 1 Paul DELETE FROM COMPANY WHERE ID 12 这是我用于执行查询的 node js 代码 p
  • 如何找到多个列中的最小值

    我在我的 DB 3 col 中有一个值 我想在所有这些值中找到一个值 如下所述 表名 MyTable id col1 col2 col3 1 200 300 400 2 100 150 300 3 800 102 20 4 80 80 0
  • 我怎样才能知道oracle 9i中哪些值是数字

    我有这个包含 varchar 的数据库 我想知道哪些记录保存数值 我试过REGEXP COUNT和其他 但我在 9i 上运行 我认为这是针对 10g gt 我怎样才能实现这个目标 I tried select to number my co
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • 有没有办法阻止 SQL Express 2008 空闲?

    我使用 SQL Express 2008 作为 Web 应用程序的后端 问题是 Web 应用程序是在工作时间使用的 因此有时在午餐或休息时间 如果 20 分钟内没有用户登录 SQL Express 将进入空闲状态模式并释放其缓存 我知道这一
  • 需要按天分割日期时间范围

    我有一个需要根据日期时间拆分的表 输入表 ID Start End A 2019 03 04 23 18 04 2019 03 04 23 21 25 A 2019 03 04 23 45 05 2019 03 05 00 15 14 所需
  • 不带 GROUP BY 的聚合查询

    这个查询似乎在我的旧机器上完美运行 但是 在我的 MySQL 5 7 14 和 PHP 5 6 25 的新机器上 它会抛出错误 致命错误 未捕获异常 PDOException 并带有消息 SQLSTATE 42000 语法错误或访问冲突 1
  • SQL 中基于下一条记录和上一条记录的复杂排序

    这是一个后续问题根据 SQL 中的下一条记录和上一条记录进行排序 https stackoverflow com questions 30477803 sorting based on next and previous records i
  • SQL 2008全文索引填充延迟

    我的经理说 在基础表数据更改后 可能需要一段时间才能更新全文搜索索引 例如 如果我有一张桌子Products有一个柱子Description我更新了该描述 然后我可能需要一些时间才能搜索该新描述 真的吗 这需要多长时间 SQL 2008 对
  • 检查两个“select”是否相等

    有没有办法检查两个 非平凡的 选择是否等效 最初我希望两个选择之间有形式上的等价 但是答案在证明 sql 查询等价性 https stackoverflow com questions 56895 proving sql query equ
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • 如何在MYSQL中将整个字符串小写并保持第一个大写[重复]

    这个问题在这里已经有答案了 我的表栏目 我预期的输出会在列中发生变化 Smith Allen Doyle Dennis Baker Waker 这是我尝试过的 但不起作用 UPDATE TABLE employee SET last nam
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • 删除数据库中的行后如何重新排序ID

    我正在使用 C 来制作具有 sql 数据库的程序 在数据库中我有一个名为Workers 它有一个自动增量和主键ID column 当我删除一条记录时 ID 之间会出现间隙 删除记录后如何重新排序 ID UPDATE 我要做的就是找到记录后将
  • 数字表与递归 CTE 生成一系列数字

    为什么使用数字表比使用递归 CTE 动态生成它们要快得多 在我的机器上 给定一张桌子numbers单列n 主键 包含从1到100000的数字 查询如下 select n from numbers 大约需要 400 毫秒才能完成 使用递归 C
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • Spark SQL 中的 SQL LIKE

    我正在尝试使用 LIKE 条件在 Spark SQL 中实现联接 我正在执行连接的行看起来像这样 称为 修订 Table A 8NXDPVAE Table B 4 8 NXD V 在 SQL Server 上执行联接 A revision
  • 使用加权行概率从 PostgreSQL 表中选择随机行

    输入示例 SELECT FROM test id percent 1 50 2 35 3 15 3 rows 你会如何编写这样的查询 平均 50 的时间我可以获得 id 1 的行 35 的时间 id 2 的行 15 的时间 id 3 的行
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么

随机推荐

  • zookeeper学习草稿纸

    指令重排序 https baijiahao baidu com s id 1701616903992143186 wfr spider for pc JVM JDK JRE 静态方法为什么不能调用非静态成员 重载和重写的区别 可变参数 基本
  • 高质量、高并发的实时通信架构设计与探索

    中国互联网络信息中心 CNNIC 近日发布的第 47 次 中国互联网络发展状况统计报告 显示 截至 2020 年 12 月 我国网民规模达 9 89 亿 随着社会信息化水平持续提升及电子设备加速普及 手机网民规模持续增长 基本实现对全体网民
  • 关于Semaphore信号量的源码解读

    Semaphore的简单使用 利用Semaphore可以实现对线程数量的控制 比如如下的代码 class SemaphoreTest public static void main String args Semaphore semapho
  • 【RTX 3060Ti 深度学习环境配置图文(安装Anaconda、VScode、CUDA、CUDNN、pytorch)】

    RTX 3060Ti 深度学习环境配置图文 安装Anaconda VScode CUDA CUDNN pytorch 配置 安装驱动 一 安装Anaconda 1 1 Anaconda简介 1 2 下载Anaconda 1 3安装Anaco
  • SpringBoot集成jasypt,加密yml配置文件

    SpringBoot集成jasypt 加密yml配置文件 一 pom配置 二 生成密文代码 三 配置 3 1 yml加密配置 3 2 密文配置 3 3 启动配置 3 4 部署配置 四 遇到的一些坑 最新项目安全检测 发现配置文件中数据库密码
  • Spring学习笔记day01——Spring入门

    Spring学习 Spring介绍 1 1Spring概述 Spring是一个开源框架 Spring是于2003 年兴起的一个轻量级的Java 开发框架 由Rod Johnson 在其著作Expert One On One J2EE Dev
  • 设计模式的 C++ 实现---工厂方法模式(二)

    前文回顾 单例模式 一 单例模式 二 观察者模式 简单工厂模式 工厂方法模式 一 前言 对于工厂方法模式 当增加新产品时 也需要对应增加一个工厂类 可以使用模版进行封装 减少代码工作量 实现举例 产品抽象基类 class Animal pu
  • TypeScript 基本概念

    TypeScript 是什么 目标 能够说出什么是 TypeScript TS 官方文档 TS 中文参考 不再维护 TypeScript 简称 TS 是 JavaScript 的超集 JS 有的 TS 都有 TypeScript Type
  • 分布式锁实现方案2、基于Redis的SET操作实现的分布式锁

    继上一篇文章 分布式锁实现方案1 基于Redis的SETNX操作实现的分布式锁 实现方案之后 redis又提供了更加强大的set方法 可以解决分布式锁实现方案1中提到的缺陷 直接看代码 package com alioo lock impo
  • C++Primer第五版习题答案(二)

    第二章 变量和基本类型 2 8 2 10 2 14 C Primer第五版课后习题答案目录 2 8 include
  • vue3项目实战---知乎日报----首页功能

    目录 网络请求封装 header swiper items新闻列表 home IntersectionObserver API 使用教程 性能优化 网络请求封装 GET传参格式 www baidu com info t 0 age 18 传
  • IntelliJ IDEA中代码被覆盖了怎么恢复

    在你git pull 拉去代码的时候 在IntelliJ IDEA中一不小心将你本地代码给覆盖了 这个时候 你撤回是无效的时候 是不是有点小激动 还有点小慌 辛辛苦苦写的代码没啦 被覆盖了 不要慌 只要用的是IntelliJ IDEA这个工
  • javaの日志级别

    最近几周给项目补日志 头都大了 项目开发接口时一定要同步日志 一定 首先 日志级别从低到高 all
  • 网络安全应急响应操作流程-打好应急响应保卫战

    文章目录 应急响应 应急响应目标 应急响应标准流程 事前 事中 检测 响应 处置 溯源 人的识别 核心注意事项 参考文献 应急响应 应急响应是安全工作的重点和难点 由于响应过程中压力比较大 难免出现手忙脚乱的情况 因此怎样做好应急响应工作是
  • router和route的区别

    简单理解为 route是用来获取路由信息的 router是用来操作路由的 一 router router是VueRouter的实例 通过Vue use VueRouter 和VueRouter构造函数得到一个router的实例对象 这个对象
  • List、Queue

    1 ArrayList 底层是基于动态数组的数据结构 是有存放顺序的 2 LinkedList 底层是基于双链表的数据结构 每一个存储单元 都涉及到其他两个引用 优缺点 在执行get set 时 ArrayList的效率高 LinkedLi
  • Matlab产生离散正弦信号即绘制频谱图

    假设正弦信号频率为f0 40000Hz 采样频率fs 160000Hz 注意 fs必须大于2f0 否则采到的点根本不是正弦 实际上 fs 4f0是比较合适的 Matlab程序如下 function y gensinx f0 fs n N f
  • [YOLO专题-27]:YOLO V5 小目标检测遇到的问题与常见解决办法

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 YOLO专题 27 YOLO V5 小目标检测遇到的问题与常见解决办法 文火冰糖 王文兵 的博客 CSDN博客 目录 第1章 前言 第2章
  • freeswitch二、freeswitch之注册,呼叫接听测试

    在上一篇文章中讲解了freeswitch的安装方法 安装完后测试了和数据库的交互 下面就要测试一下freeswitch的功能了 freeswitch测试 freeswitch的conf目录中有20个默认的sip账号 可以直接做简单的测试 其
  • sys用户下为其他用户的创建私有db link的案例

    文章目录 1 查询job执行情况 2 确认根因 3 重建DB LINK 3 1使用current schema方式 3 2使用procedure方式 4 重新编译失效的对象 并手动执行job 记录一下scheduler job执行失败 而不