[20181031]如何确定db_link的进程号.txt --//别人问的问题,就是客户端连接数据库(A),然后通过db_link连接访问别的数据库(B),如果确定数据库(B)中 --//使用db_link的进程号. --//关于这个问题,我曾经在链接:http://blog.itpub.net/267265/viewspace-2150595/=>[20180129]db_link使用ezconnect注意.txt --//做过类似尝试,当时为了定位打开db_link的进程,可以讲破费一番波折.我那种方式也仅仅适用我当时的测试环境,没人连接我的测试库. --//实际上当客户端使用db_link时,使用本地的进程号对应(v$process.spid)连接数据库(B). --//实际上在数据库(B),查询v$session.porcess = 前面v$process.spid值 --//参考链接:http://blog.itpub.net/267265/viewspace-2146724/=>[20171102]视图v$session中process字段含义.txt --//对方数据库都是windows,windows使用线程.这样相对linux操作系统复杂一点. --//通过测试说明问题. 1.环境: SCOTT@test01p> @ver1 PORT_STRING VERSION BANNER CON_ID ------------------------------ -------------- -------------------------------------------------------------------------------- ---------- IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0 SCOTT@test01p> CREATE PUBLIC DATABASE LINK LOOPBACK CONNECT TO SCOTT IDENTIFIED BY book USING 'localhost:1521/book:DEDICATED'; Database link created. --//环境限制,使用一台机器测试. 2.定位: SCOTT@test01p> @ spid SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50 ---------- ---------- ------------------------ --------- -------------------- ------- ---------- -------------------------------------------------- 87 29146 4848:3848 DEDICATED 6000 25 12 alter system kill session '87,29146' immediate; --//我当时说过:PROCESS=4848:3848,冒号前4848就是cliend的进程号(PID).后面对应tid(对于windows你可以使用sysinternals的 --//procexp.exe查看) D:\tools\rlwrap>tasklist /FI "PID eq 4848" tasklist /FI "PID eq 4848" 映像名称 PID 会话名 会话# 内存使用 ========================= ======== ================ =========== ============ sqlplus.exe 4848 Console 1 19,724 K --//process对应client的进程号4848.当前连接对应服务器pid=600(注意windows下使用线程,这个也就是线程号) 3.打开db_link看看: SCOTT@test01p> select sysdate from dual@loopback; SYSDATE ------------------- 2018-10-18 21:17:08 --//要确定这个db_link的进程号,相当于查询(如果在linux下): SCOTT@test01p> select * from v$session where process = '6000'; no rows selected --//这样查不行,因为windows看到spid实际上是线程号.这样前面应该还有pid. SCOTT@test01p> select sid,serial#,process,program,machine,port,paddr from v$session where process like '%:6000'; SID SERIAL# PROCESS PROGRAM MACHINE PORT PADDR ---------- ---------- ------------------------ -------------------------- -------------------- ---------- ---------------- 250 57087 5840:6000 ORACLE.EXE ZWS 50991 000007FF09FA99E0 --//ok,这样查询就ok了. SCOTT@test01p> select spid from v$process where addr='000007FF09FA99E0'; SPID ----- 5652 --//可以确定数据库B看到的进程号就是5652.你也可以查询端口号50991是否能对上. D:\tools\rlwrap>netstat -na -o | grep 50991 TCP 127.0.0.1:1521 127.0.0.1:50991 ESTABLISHED 6016 TCP 127.0.0.1:50991 127.0.0.1:1521 ESTABLISHED 5840 --//注意看后面的数值对应pid=5840,就是process的pid部分. 4.最后看看pid=5840,6016是什么? D:\tools\rlwrap>tasklist /FI "PID eq 5840" 映像名称 PID 会话名 会话# 内存使用 ========================= ======== ================ =========== ============ oracle.exe 5840 Services 0 1,076,996 K --//这样就对上,oracle在windows下采用线程机制. D:\tools\rlwrap>tasklist /FI "PID eq 6016" 映像名称 PID 会话名 会话# 内存使用 ========================= ======== ================ =========== ============ tnslsnr.exe 6016 Services 0 8,416 K --//对应监听进程. 5.使用orakill杀进程看看. D:\tools\rlwrap>orakill /? Usage: orakill sid thread where sid = the Oracle instance to target thread = the thread id of the thread to kill The thread id should be retrieved from the spid column of a query such as: select spid, osuser, s.program from v$process p, v$session s where p.addr=s.paddr --//不知道12c能这样用吗? D:\tools\rlwrap>orakill test01p 5652 Could not attach to Oracle instance test01p: err = 203 --//不能使用pdb.实际上应该使用cdb D:\tools\rlwrap>orakill test 5652 Kill of thread id 5652 in instance test successfully signalled. --//OK.回到原来会话执行; SCOTT@test01p> select sysdate from dual@loopback; select sysdate from dual@loopback * ERROR at line 1: ORA-24757: duplicate transaction identifier ORA-02063: preceding line from LOOPBACK --//证明前面的判断是正确的.db_link链接已经断开. SCOTT@test01p> commit ; commit * ERROR at line 1: ORA-02051: another session or branch in same transaction failed or finalized SCOTT@test01p> select sysdate from dual; SYSDATE ------------------- 2018-10-18 21:36:24 SCOTT@test01p> commit ; Commit complete.
[20181031]如何确定db_link的进程号.txt
来源:这里教程网
时间:2026-03-03 12:06:38
作者:
编辑推荐:
- [20181031]如何确定db_link的进程号.txt03-03
- 教你在Word2010中创建新建文档超链接03-03
- [20181018]Oracle Database 12c: Data Redaction.txt03-03
- 如何在Word2010中查找重复收件人03-03
- [20181018]12c Pluggable Database save state.txt03-03
- 教你在Word2010文档中编辑超链接03-03
- [20181017]ORA-01873 the leading precision of the interval is too small.txt03-03
- Word2010文档中书签的使用方法介绍03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- oracle第一天
oracle第一天
26-03-03 - 如何为Word2010文档中手动更新链接
如何为Word2010文档中手动更新链接
26-03-03 - DBF导入到Oracle数据库
DBF导入到Oracle数据库
26-03-03 - oracle 11g 单实例数据库的安装
oracle 11g 单实例数据库的安装
26-03-03 - 恩墨放大招|OCM直通之路系列课程免费听
恩墨放大招|OCM直通之路系列课程免费听
26-03-03 - ASM元数据之FST损坏的修复
ASM元数据之FST损坏的修复
26-03-03 - Oracle表 列字段的增加、删除、修改以及重命名操作sql
Oracle表 列字段的增加、删除、修改以及重命名操作sql
26-03-03 - 如何修复Word2007/2010文档中插入图片显示空白框的方法
如何修复Word2007/2010文档中插入图片显示空白框的方法
26-03-03 - Word2010页边距的设置图解
Word2010页边距的设置图解
26-03-03 - 18C新特性之PDB snapshot Carousel,够用吗?
18C新特性之PDB snapshot Carousel,够用吗?
26-03-03
