oracle 强制 断开,ORA-01092: ORACLE 例程终止。强行断开连接

dataguard服务器不能open,需要重启主服务器才能解决。

如下:

SQL> conn as sysdba;

已连接到空闲例程。

SQL> startup nomount;

ORACLE 例程已经启动。

Total System Global Area 1240186076 bytes

Fixed Size                   453852 bytes

Variable Size             419430400 bytes

Database Buffers          819200000 bytes

Redo Buffers                1101824 bytes

SQL> alter database mount standby database;

数据库已更改。

SQL> alter database open read only;

alter database open read only

*

ERROR 位于第 1 行:

ORA-01092: ORACLE 例程终止。强行断开连接

SQL> shutdown immediate;

ORA-24324: 未初始化服务句柄

ORA-01041: 内部错误,hostdef 扩展名不存在

SQL>

从网上找资料:

昨天一备份数据库,在open  read only的过程中出现故障,从而导致在standby上备份失败。alert log 中信息如下:

Errors in file /opt/oracle/admin/crmhz/udump/crmhz_ora_13914.trc:

ORA-00604: error occurred at recursive SQL level 1

ORA-16000: database open for read-only access

Error 604 happened during db open, shutting down database

USER: terminating instance due to error 604

Instance terminated by USER, pid = 13914

ORA-1092 signalled during: alter database open read only...

Tue Aug 10 09:31:51 2004

再查看trace file信息

[root@crmsb bdump]# more?? /opt/oracle/admin/crmhz/udump/crmhz_ora_13914.trc

/opt/oracle/admin/crmhz/udump/crmhz_ora_13914.trc

9i Enterprise Edition Release 9.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

JServer Release 9.2.0.1.0 - Production

ORACLE_HOME = /opt/oracle/product/9.2.0

System name:??? Linux

Node name:????? crmsb

Release:??????? 2.4.9-e.3smp

Version:??????? #1 SMP Fri May 3 16:48:54 EDT 2002

Machine:??????? i686

Instance name: crmhz

Redo thread mounted by this instance: 1

Oracle process number: 11

Unix process pid: 13914, image: (TNS V1-V3)

*** SESSION ID:(10.3) 2004-08-10 09:30:37.408

*** 2004-08-10 09:30:37.408

Managed Recovery: Cancel posted.

ORA-00604: error occurred at recursive SQL level 1

ORA-16000: database open for read-only access

都没有提供什么有价值的信息,很奇怪会出现604错误

于是决定trace? open过程

startup  nomount

alter database mount standby? database;

select  sid from v$mystat where rownum = 1;

select  sid,serial# from v$session where sid = ?;

exec  dbms_system.set_ev(sid,serial#,10046,12,'');

alter database  open  read  only;

这是数据库crash ,找到trace file,发现末尾部分为

select grantee#,privilege#,nvl(col#,0),max(mod(nvl(option$,0),2))from objauth$ where obj#=:1 group by grantee#,privilege#,nvl(col#,0) order by grantee#

END OF STMT

PARSE #13:c=0,e=485,p=0,cr=0,cu=0,mis=1,r=0,dep=2,og=0,tim=1066522815818430

BINDS #13:

?bind 0: dty=2 mxl=22(22) mal=00 scl=00 pre=00 acflg=08 oacfl2=1 size=24 ffset=0

?? bfp=40647620 bln=22 avl=02 flg=05

?? value=72

EXEC #13:c=0,e=518,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=4,tim=1066522815819173

FETCH #13:c=0,e=58,p=0,cr=2,cu=0,mis=0,r=0,dep=2,og=4,tim=1066522815819296

=====================

PARSING IN CURSOR #12 len=34 dep=1 uid=0 ct=7 lid=0 tim=1066522815819480 hv=3008185193 ad='56fcbaac'

delete from idl_ub1$ where obj#=:1

END OF STMT

PARSE #12:c=10000,e=14804,p=6,cr=79,cu=0,mis=1,r=0,dep=1,og=0,tim=1066522815819472

BINDS #12:

?bind 0: dty=2 mxl=22(22) mal=00 scl=00 pre=00 acflg=08 oacfl2=1 size=24 ffset=0

?? bfp=40645a48 bln=22 avl=06 flg=05

?? value=4294951150

WAIT #12: nam='db file sequential read' ela= 41 p1=1 p2=22839 p3=1

WAIT #12: nam='db file sequential read' ela= 27 p1=1 p2=9 p3=1

EXEC #12:c=0,e=884,p=2,cr=4,cu=2,mis=0,r=0,dep=1,og=4,tim=1066522815820884

ERROR #12:err=16000 tim=1837753940

ORA-00604: error occurred at recursive SQL level 1

ORA-16000: database open for read-only access

EXEC #1:c=370000,e=375493,p=304,cr=5505,cu=4,mis=0,r=0,dep=0,og=4,tim=1066522815826303

ERROR #1:err=1092 tim=1837753940

很奇怪,正常standby数据库open read  only的时候是没有delete的,在这里居然出现dml。于是一开始我尝试去研究idl_ub1$是个什么表,结果发现是 pl/sql代码的,很奇怪,这个数据库为什么会出现个状况,继续在 $ORACLE_HOME/rdbms/admin 下 grep -ir idl_ub1$ * ,结果找到和一个x$ 表挂上关系做连接了,未果,又通过 delete from idl_ub1$ where obj#=:1 中绑定变量value=4294951150 去结合搜索出来的view查找,也没什么进展。实际上,根据 WAIT #12: nam='db file sequential read' ela= 27 p1=1 p2=9 p3=1 可以知道这个delete是访问了file# =1 block#=9 的数据块,很显然,这是系统回滚段的块头,根据这里我们可以知道,这是一个回滚操作,也就是说,在主数据库中由于DDL 的失败,使得系统回滚段中记录了该操作的回退信息,但是数据库又还没有回滚完成,到了standby中就出现这个状况了。

为了尝试解决这个问题,首先继续应用几个日志,再open read only,结果失败,也就是说该失败的ddl在主数据库一直没有回滚,而数据库中已经查找不到任何异常进程或者事务、锁,只能认为是系统出现异常。于是,今天在征得相关负责人的同意的情况下,我们决定在下班后将主数据库重新启动一次看看,这样强迫系统回滚失败的ddl。下班重新启动数据库,切换日志并归档,在standby上应用日志到重起数据库之后产生的归档日志,再open  read only 成功,问题得到解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac远程连接服务器

方法一:ssh 方法二:commandK进入远程桌面,这种方式类似于windwos下的远程桌面 转载于:https://www.cnblogs.com/xiyuan2016/p/9020978.html

oracle v sql不存在,程序包oracle.sql不存在

今天项目在maven install 的时候报“程序包oracle.sql不存在,类TIMESTAMP找不到”的问题:plugins:maven-compiler-plugin:3.1:compile (default-compile) on project gdairport: Compilation failure: Compilation failure:...TimestameUtil.java:[7,18]…

关于windows10 CMD 的一些操作

之前接触过cmd的一些操作方法,比如用dir、tasklist等一些方法,但是用了会立马忘记,再用到时又要重新google,这着实让我头痛!!! 今天又碰到一个关于改变目录的问题,又是纠结万分&…

oracle dblink 验证,Oracle DBLINK 简单使用

oracle在进行跨库访问时,可以通过创建dblink实现,今天就简单的介绍下如果创建dblink,以及通过dblink完成插入、修改、删除等操作首先了解下环境:在tnsnames.ora中配置两个数据库别名:orcl(用户名:wangyong …

六、表达式:前缀后缀

count为运算后的值。 转载于:https://www.cnblogs.com/Strugglinggirl/p/9026856.html

如何查询oracle的共享内存,[20190104]ipcs查看共享内存段.txt

[20190104]ipcs查看共享内存段.txt--//数据库启动异常,有时候会留下一些共享内存段没有清理,需要使用ipcrm清理.--//由于服务器上跑2个实例,必须选择正确的共享内存段,否则会导致别的数据库crash.--//在我工作中,这是遇到的第2次,做一些复习与整理:--//在linux下有一个命令sysr…

java获取xml参数

properties.load(DBUtility.class.getClassLoadrt()).getResourceAsStream(path);转载于:https://www.cnblogs.com/gjack/p/9033196.html

php开发是可视的吗,javascript,html_Jquery判断页面元素是否在浏览器的可视区域内,javascript,html,css,html5 - phpStudy...

Jquery判断页面元素是否在浏览器的可视区域内前端开发中,有时需要判断某个元素是否在浏览器的可视区域内,或者是否已经滚动出了可视区域.首先想到的便是javascript操作,原生方法自然可以,不过Jquery已经封装了一些属性,使用起来更方便些,我们这里就讨论这种Jquery的方式.假设此…

ubuntu中安装hadoop集群

hadoop是由java 语言编写的主从结构分布式计算存储架构 准备工作: 操作系统: Ubuntu16.04 软件安装包:jdk-8u171-linux-x64.tar.gz ; hadoop-2.6.5.tar.gz 配置环境:3台虚拟机 master:192.168.122.10node1 …

php后端mysql,【后端开发】PHP如何处理MySQL死连接

本文主要介绍了PHP实现清除MySQL死连接的方法,通过定时执行php脚本实现针对mysql死链接的检查与清除功能,需要的朋友可以参考下。希望对大家有所帮助。连接的情况,主要表现为有过多的Sleep连接,并且Time时间很长,占满了…

5.14 js对象 函数 js操作document对象

---对象 var myObject {} /* 声明对象字面变量*/myObject点语法取值 赋值代码格式 var person { name : "zhangsan", age : 25, say :function(){ alert("说汉语"); } } 函数:有一定功能代码体的集合; 函数是由事件…

linux虚拟服务器新增磁盘怎么挂载,如何在vmware虚拟机Linux中增加硬盘的方法(教程)...

前期准备:创建虚拟硬盘1、关闭VM中正在运行的虚拟系统;2、在虚拟系统名称上点右键-》Virtual Machine Settings;3、在Hardware页点“Add”-》Add a hard disk-》Create a new virtual disk-》SC…

linux 内核3.8,[Beaglebone] BBB迁移到linux 3.8实时内核

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?动机之前使用TI SDK提供的3.2标准内核,在和fpga进行高速通信时出现CPU 100%中断响应延迟严重(偶尔>50ms)造成数据丢包。为达到严格的中断响应速度(&…

软考解析:2017年上半年下午试卷

软考解析:2017年上半年下午试卷 第一题:数据流图 第二题:数据库设计 第三题:面向对象开发 真题 理论 类图 状态图 解题思路 第四题:算法与数据结构 第五题:设计模式与Java转载于:https://www.cnblogs.com/…

PHP配置开发环境

PHP配置开发环境 1.建3个文件夹: 2:找到apache的安装包 3:可以随意写 4: 5:找到你的apache的路径 6:注意:不要解压到当前文件夹 7:剪切替换名字修改为php 8:在apache >…

linux下tar包安装sudo命令,ubuntu12.04LTS安装gv-412-Linux-x86.tar.gz方法

折腾了2天多,终于装好了。操作系统Ubuntu 12.04 LTS (在win7系统下用ubuntu的windows安装工具安装的,有点类似双系统)gaussian view程序gv-412-Linux-x86.tar.gz(软件可以从这里找到一些Linux&WinGaussian&gview下载地址)特别提示下面的设计到的…

linux 端口tnpl,Linux和Windows端口占用情况查看

Linux :netstat-t tcp三次握手-u udp直传数据-l 监听-r 路由-n 显示ip端口号-p 进程一般的我们使用 netstat -tnpl | grep xxx 配合管道符来查找[rootVM_48_173_centos conf]# netstat -tnplActive Internet connections (only servers)Proto Recv-Q Send-Q Local A…

SpringAOP aspectJ ProceedingJoinPoint 获取当前方法

aspectJ切面通过ProceedingJoinPoint想要获取当前执行的方法: 错误方法: Signature s pjp.getSignature(); MethodSignature ms (MethodSignature)s; Method m ms.getMethod(); 这种方式获取到的方法是接口的方法而不是具体的实现类的方法&…

linux修改挂载目录名字,linux下修改mount挂载目录名

有时根据情况需要更改mount挂载目录名来保持多个机器的统一,方便我们的分布式操作,下面是具体的操作细节。修改前:文件系统 容量 已用 可用 已用%% 挂载点/dev/mapper/VolGroup-lv_root50G 3.3G 44G 7% /tmpfs …

Linux禁止ip拒绝访问80,Linux iptables 设置允许(禁止)IP范围

假设有一个情况,我们要将某一个网段内的IP“一段IP”封锁起来,如192.168.0.2-192.168.0.61,请问该如何来设定这个规则?因为这个网段并没有符合任何一个CIDR网段,因此我们不能使用如“-s 192.168.0.0/28”的网段来匹配这…