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的案例 的相关文章

  • 与 SQL 中的 IN 运算符相反

    我怎么能做相反的事情 换句话说 选择所有姓氏不是 Hansen 或 Pettersen 的人 WHERE lastname NOT IN Hansen Pettersen 请参阅 IN 和 NOT IN 运算符 部分SQLite 所理解的
  • SQL Server Like 查询不区分大小写

    Query SELECT from Table 2 WHERE name like Joe Output 1 100 Joe 2 200 JOE 3 300 jOE 4 400 joe 为什么不区分大小写 Problem 查询不区分大小写
  • 删除重复的行并需要在mysql中保留所有行中的一个[重复]

    这个问题在这里已经有答案了 我想删除基于两列的重复行 但需要保留所有行 1 行 重复行可以多于两行 例如 ID NAME PHONE 1 NIL 1234 2 NIL 1234 3 NIL 1234 4 MES 5989 我想从上面 3 行
  • nvarchar 值“3001822585”的转换溢出了 int 列

    我使用以下方法将 Excel 文件导入到 SQL Server Excel 文件将所有值作为字符串 我可以导入文件 除了Barcode SalePrice and Price2 我收到错误 nvarchar 值 3001822585 条形码
  • Magento 设置脚本中的 ALTER TABLE 不使用 SQL

    乔纳森 戴 https stackoverflow com users 336905 jonathan day says 更新不应采用以下形式 SQL命令 我没遇到过 任何 DDL 或 DML 语句不能 通过 Magento 的配置执行 结
  • Oracle 按月滚动或运行总计

    目标 每个月末所有报表的滚动 运行总计 Code select TRUNC ACTHX STMT HX STMT DATE MM AS MNTH COUNT ACTHX INVOICE as STMTS from ACTHX group b
  • RANK() OVER PARTITION 并重置 RANK

    如何获得在分区更改时重新启动的 RANK 我有这张表 ID Date Value 1 2015 01 01 1 2 2015 01 02 1
  • 通过 SQLAlchemy 获取随机行

    如何使用 SQLAlchemy 从表中选择一个或多个随机行 这在很大程度上是一个特定于数据库的问题 我知道 PostgreSQL SQLite MySQL 和 Oracle 具有通过随机函数排序的能力 因此您可以在 SQLAlchemy 中
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • 如何进行数据透视并计算列平均值

    我承认这是迄今为止我必须面对的最复杂的 SQL 语句之一 我在这件事上碰壁了 我希望有人能帮我一把 我在数据库中有这张表 Item ActiveTime sec DateTime 1 10 2013 06 03 17 34 22 gt Mo
  • 如何在 Spring Data 中选择不同的结果

    我在使用简单的 Spring Data 查询或 Query 或 QueryDSL 在 Spring Data 中构建查询时遇到问题 如何选择三列 研究 国家 登录 不同的行 并且查询结果将是用户对象类型的列表 Table User Id S
  • 自动提取数据 - Oracle SQL Developer

    我通过 SQL Developer 连接到 Oracle 数据库 我想编写一个返回每月数据集的查询 然后将该数据提取到分隔文本文件中 我知道如何做到这一点就好了 我想知道是否有一种方法可以编写一个脚本来运行查询并在一年内逐月提取数据 这样我
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • 标量子查询包含多行

    我正在使用 H2 数据库并想要移动一些数据 为此 我创建了以下查询 UPDATE CUSTOMER SET EMAIL SELECT service EMAIL FROM CUSTOMER SERVICE AS service INNER
  • SQL Server 2008 错误 233

    我正在使用以下 sql 脚本在 SQL Server 2008 中创建新登录名 CREATE LOGIN xyz WITH PASSWORD xyz DEFAULT DATABASE master DEFAULT LANGUAGE us e
  • 获取在任何日期创建的表的列表?

    我遇到了这样的情况 我想查找我在 2012 年 9 月 14 日 2012 年 9 月 14 日 在 sql server 上创建的表 是否有任何查询会列出在此日期创建的这些表 SELECT FROM sys tables WHERE cr
  • SQL - 需要查找重复记录但排除反向事务

    我有一张交易表 偶尔会有 重复条目 如果 当管理员发现这些重复条目时 他们将撤销交易 从而创建负值 但由于监管要求 原始重复条目仍然保留 我想创建一个 SQL 查询 并使用 Crystal Reports 来制作报告 以便管理员轻松查找重复
  • IIF(...) 不是公认的内置函数

    我正在尝试在 Microsoft SQL Server 2008 R2 中使用它 SET SomeVar SomeOtherVar IIF SomeBool value when true value when false 但我收到一个错误

随机推荐

  • 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执行失败 而不