记一次ORA-00600: internal error code, arguments: [kcbz_check_objd_typ], [0], [0], [1], [], [], [], []
环境介绍:ORACLE10R2 64BITREDHAT 5.4。 64BITERROR:ORA-00600: internal error code, arguments: [kcbz_check_objd_typ], [0], [0], [1], [], [], [], []ORA-00600: internal error code, arguments: [kcbz_check_objd_typ], [0], [0], [1], [], [], [], [][@more@]Fri Dec 31 17:48:36 2010Errors in file /u01/app/oracle/admin/szpadb1/bdump/szpadb1_p013_13738.trc:ORA-00600: internal error code, arguments: [kcbz_check_objd_typ], [0], [0], [1], [], [], [], []Fri Dec 31 17:48:45 2010Errors in file /u01/app/oracle/admi
记录
记录[@more@][root@szpa2 bin]# ./crs_stat -tName Type Target State Host ------------------------------------------------------------ora.szpa.db application ONLINE ONLINE szpa2 ora....a1.inst application ONLINE ONLINE szpa1 ora....a2.inst application OFFLINE OFFLINE ora....A1.lsnr application ONLINE ONLINE szpa1 ora.szpa1.gsd application ONLINE ONLINE szpa1 ora.szpa1.ons applicatio
记一次存储DELL MD3000的RAC瓶颈
环境:ORACLE10.2.0.4—RACREDHAT5.4OCFS2DELL MD3000[@more@] 在RAC环境中,两个节点同时访问公共存储,此时的存储的I/0并发效率是很重要的,如果存储没有配置好,或者对多节点并发访问存在问题就会引起很大的影响。 整体环境都已经安装、配置好好,就开始两个节点同时启动并创建数据库:(DBCA),可是在安装的过程中发现安装过程出奇的慢,创建数据文件、创建redo文件,就1G的文件也要有个30分钟左右才能创建好,感觉非常的费解且不可能的,后来试图停掉其中的一个节点继续安装,发现速度慢的问题已经可以很好的解决了,心
RMAN备份冗余备份
环境介绍:ORACLE10.2.0.164BITREDHAT 5.4通过RMAN来自动备份出冗余备份[@more@]通常通过RMAN备份一份就足够了,备份完成后如果想要多于的冗余的话通常是将备份数据COPY到其他的地方存放,这样就增加了多于的维护成本以及加大了出错的几率,也可能会出现在通过COPY或者FTP传输的时候造成数据的丢失,导致备份的冗余不可用。 通过RMAN可以很容易的备份出冗余数据:RMAN> run {2> set backup copies 2;3> allocate channel ch1 type disk format '/u01/h01','/u02/h02';4> backup tablespace test_tran;5> release ch
NFS自动mount的使用
环境介绍:REDHAT 5.1 64BIT*2[@more@]由于环境中需要挂载远端系统,所以就用NFS来实现,为了在系统启动的时候或者用户访问的时候就进行挂载不用手动参与,于是就用linux的autofs功能来实现:source OS:[root@szpa-bak-db2 ~]# more /etc/exports /u02/backupset/140_expback 16.41.169.139(rw,no_root_squash)[root@szpa-bak-db2 ~]# target OS:[oracle@localhost exp_back]$ more /etc/auto.master ## $Id: auto.master,v 1.4 2005/01/04 14:36:54 raven Exp $## Sample auto.master file# This is an automounter map and it has the f
MV快速刷新时执行的SQL
MV快速执行时所涉及的比对SQL:[@more@]SELECT /*+ remote_mapped(SZPADB_CCADMIN) */CURRENT$."MAPPING_FIELD_ID",CURRENT$."TENANT_ID",CURRENT$."FIELD_NAME",CURRENT$."REMARK",CURRENT$."CREATE_TIME",CURRENT$."TABLE_NAME",CURRENT$."RESERVE1",CURRENT$."RESERVE2",CURRENT$."FILE_UPLOAD_ID",CURRENT$."CREATE_ID",CURRENT$."CREATE_ORGAN_ID",CURRENT$."EDIT_TIME",CURRENT$."EDIT_ORGAN_ID&qu
对MV使用价值的重新定位
通常MV都是用在了远端数据库的同步或者是作为备份使用,但是在如果把MV规范好了可以给生产环境带来很大的益处,同时也能够很好的避免由于前台的错误操作或者是某个DBA的错误执行命令导致的数据丢失造成的临时、紧急的别且繁琐的恢复操作。[@more@]由于我们有套系统需要最大限度的减少专业人员的维护,并且极大的减少由于错误操作导致的专业性的恢复,着手使用MV来进行这种快速、简易的而且成本低廉的架构。 通过对核心业务表使用MV在另一端来定时的备份,备份的间隔区间可以根据实际情况来选择,这样当生产环境由于某些操作需
note the ORA-27102: out of memory error
oracle10.2.0.4REDHAT 5.1 64BITMEM:16GSTOR:700GERROR:ORA-27102: out of memoryLinux-x86_64 Error: 28: No space left on device[@more@]今天在新数据库上配置进行一些基础性的配置,由于忽略了linux的信号量的修改,导致了在启动数据库的时候报了:SQL> startupORA-27102: out of memoryLinux-x86_64 Error: 28: No space left on device后来经检查是因为kernel.shmall配置的过小,默认情况下kernel.shmall 的大小只为8G,由于我的环境中需要配置9G的大小,所以最终导致数据库报了OUT OF MEMORY错误,经过修改后的参数为;# Oracle#
从错误的RAID5中发现的问题
环境介绍:oracle10.2.0.4REDHAT5.1 64BITMEM:16GSTOR:720GRAID:5[@more@]今天要装一台备用数据库,操作系统都是安装好的,在安装完之后检测各项参数的时候发现重大问题,就是操作系统的I/0异常的慢:RAID10:[root@localhost u02]# dd if=/dev/zero of=testio bs=8192392219+0 records in392219+0 records out3213058048 bytes (3.2 GB) copied, 13.2956 seconds, 242 MB/sDevice: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %utilcciss/c0d0 0.00 29588.12 13.86 1460.40 0.
记一次library cache pin事件解决
ORACLE 10.2.0.4REDHAT 5.3 32bit[@more@]今天开发人员突然报账说编译存储过程的时候一直卡到哪里就死掉了,通过查询发现在event列有一个library cache pin事件一直在等待,得到SID后查询session_wait:LIBRARY CACHE PIN事件主要是由于管理library cache并发的,当一个object被pin住的话同时这个object会有一个heap载入内存,当用户要修改或者编译这个object的时候这个object的heap就必须要先被pin住,也就是拿到编辑锁,这个事件的等待时间通常为3秒。library cache pin参数解析:P1 KGL(kernel general Library ) 地址P2 pin的地址P3 1
oracle调用C动态库
环境介绍:ORACLE10.2.0.1 64BITREDHAT 5.3 64BIT[@more@]有时候为了提高数据库的运行速度已经调用第三方的其他接口就难免需要在oracle内部调用其他的接口来完成操作,在此简单的介绍下通过oracle调用C的动态库实现的一些操作。创建C文件:1、extproc.cint sysrun(int *command){return command;}2、执行编译/usr/bin/gcc -fPIC -c -I/u01/app/10.2.1/db_1/rdbms/demo -I/u01/app/10.2.1/db_1/rdbms/public -I/u01/app/10.2.1/db_1/plsql/public -I/u01/app/10.2.1/db_1/network/public -I/u01/app/10.2.1/db_1/precomp/public myalib.c -
oracle10g data block structure
环境:oracle 10.2.0.1OS:REDHAT 5.3 64BIT[@more@]===========view block header======================p kcbhstruct kcbh, 20 bytes @0 ub1 type_kcbh @0 0x06ub1 frmt_kcbh @1 0xa2ub1 spare1_kcbh @2 0x00ub1 spare2_kcbh @3 0x00ub4 rdba_kcbh @4 0x0040007aub4 bas_kcbh @8 0xdf3de2d9ub2 wrp_kcbh @12 0x0a4fub1 seq_kcbh @14 0x01ub1 flg_kcbh @15 0x06 (KCBHFDLC, KCBHFCKV)ub2 chkval_kcbh @16 0x625cub2 spare3_kcbh @18 0x0000===========view block space======================p kdbhstruct kdbh, 14 bytes @68 ub1 kdbhflag
ORACLE BLOCK DUMP
analysis oracle block[@more@] Block Dump Analysis: ===================Run the blocklab.sql script in your schema to create a table. -- Starting of blocklab.sql script. -- blocklab.sql drop table block_lab;create table block_lab ( id number, name varchar2(20), hire_dt date);insert into block_lab values (1,'Richard',to_date('1990-May-12','YYYY-Mon-dd')); insert into block_lab values (2,'Andy', to_date('1990-Jun-01','YYYY-Mon-dd')); insert into block_lab values (3,'Sunitha',to_date('1995-No
记一次通过DBNEWID工具修改DBID时的NID-00135: There are 1 active threads错误
ORACLE 10GREDHAT 5.3 64BIT错误原因:通过DBNEWID 工具修改DBID[@more@]由于通过RMAN的recover新建备用库后需要将新库的DBID进行修改,但是按照正常的操作运行到修改DBID的时候居然报错,错误内容如下:[oracle@qqdb bk]$ nid target=sys/sys123@back DBNEWID: Release 10.2.0.1.0 - Production on Fri Dec 3 16:43:29 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to database BACK (DBID=4055002079) NID-00135: There are 1 active threads Change of database ID failed during validation - database
ORA-01552: cannot use system rollback segment for non-system tablespace 'USERS'错误解决
环境:oracle10.2.0.1REDHAT 5.3 64BIT通过RMAN复制一个新库后,在上面创建表报错[@more@]通过RMAN创建一个新实例后在新的实例上进行操作发现报一下错误:SQL> create table abd (a number);create table abd (a number)*ERROR at line 1:ORA-01552: cannot use system rollback segment for non-system tablespace 'USERS' 解决方案:SQL> create rollback segment rbs_seg tablespace system; Rollback segment created. SQL> alter rollback segment rbs_seg online; Rollback segment altered. SQL> create table test_tr
duplicate 之 standby
环境:oracle10gredhat 5.3 64bittarget :qqdbauxiliary :dg创建物理DG环境,本文是在同一台服务器上进行的操作。[@more@]在oracle9i之后RMAN提供了更加方便快捷的通过当前实例来创建其他实例或者是快速搭建DG环境的接口,那就是duplicate命令,下面来简单的介绍一下操作步骤以及在执行过程中遇到的问题。1、首先需要对target库进行一个全备,包括控制文件。2、将备份、参数文件拷贝到目标库,并且创建必要的目录:trace目录、数据文件目录等3、在target库或者auxiliary库的tname.ora生成双方的连接4、登陆并进行duplicate操作: 关于参
记一次ORA-27054 NFS file system where the file is created or resides is not mounted with correct option
环境:ORACLE10.2.0.1OS:REDHAT 5.3 64BIT[@more@]由于本地RMAN空间不足,需要将备份备到NFS服务器上,通过简单的mount -t nfs IP:/PATH /DESPATH后发现通过RMAN执行备份的时候报错:ORA-27054 NFS file system where the file is created or resides is not mounted with correct options通过oracle官方解释说:Error: ORA-27054 Text: NFS file system where the file is created or resides is not mounted with correct options---------------------------------------------------------------------------Cause: The file was on a
记一次ORA-01410错误
环境:oracle 9.2.0.5System name: HP-UX[@more@]今天客户报账说访问核心任务表报ORA-01410: invalid ROWID错误:SQL> SELECT /*+FULL(A)*/ COUNT(*) FROM CC09MAIN04.CRM_CAMPAIGN_TASK_1122 A;SELECT /*+FULL(A)*/ COUNT(*) FROM CC09MAIN04.CRM_CAMPAIGN_TASK_1122 AORA-01410: invalid ROWID通过设置10200事件后发现访问23/1630块的时候停止并报错:SQL> alter session set max_dump_file_size=unlimited; SQL> alter session set db_file_multiblock_read_count=1; SQL> alter session set events 'immediate trace name
记一次数据库某一用户下访问变慢的问题
系统环境:oracle9.2.0.5HP-UNIX 64bit内存32G硬盘12T[@more@]用户业务扩展,将某一个用户下的表全部删除后重新部署了一套新的表上去,新表和旧表有许多表名是一样的但是表结构有的已经发生了变动,而且旧的表里面也存在了很多数据,当开始在新部署的表上进行操作时发现速度非常慢,即使是访问一个几万条的数据原本0.几秒就出来的也要等上几秒钟才执行成功,由于本人当时不在现场,首先感觉就是之前的数据引起的问题,于是叫现场的人重新创建一个用户,然后再新的用户下部署新的环境,最后发现问题才得以解决!
记一次case中遇到的ora-12704错误解决
环境:ORACLE10.2.0.4OS:LINUX 5.3[@more@]今天系统中需要统计一批数据,可是当我通过case语句进行转换某一列的时候确报ORA-12704: 字符集不匹配,检查发现case中满足条件后输出的列为NVARCHAR2类型的,试着将这列转换为char的问题就可以解决了。以下为测试结果:SQL> create table test (a nvarchar2(10)); Table created SQL> insert into test values('a'); 1 row inserted SQL> insert into test values('b'); 1 row inserted SQL> commit; Commit complete SQL> select case when a = 'a' then 'a' else a end from t