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在另一端来定时的备份,备份的间隔区间可以根据实际情况来选择,这样当生产环境由于某些操作需
记一次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
OCR环境下,当ORACLE_HOME被删除后,对DATABASE的移除
应用环境:ORACLE 企业版 10.2.0.1 - 10.2.0.4适合平台:所有平台[@more@]本文目的:本文的目的就是提供一个简单的环境是当将ORACLE_HOME删除后,想要通过srvctl remove database -d DBNAME对数据库实例进行删除的时候报PRKH-1013错误:PRKH-1013 : The oracle home /app/oracle/product/RAC/10.2 does not exist解决方案:1、创建相应的ORACLE_HOME目录以及ORACLE_HOME下的bin目录,并且所属权限为oracle用户:$ mkdir <$ORACLE_HOME> $ mkdir <$ORACLE_HOME>/bin2、通过touch创建oracle执行文件:$ touch $ORACLE_HOME/bin
oracle 10GR2 CLUSTERWARE(RAC)中关于OCR和VOTING磁盘的管理信息
应用平台:ORACLE企业版版本:10.2.0.1-10.2.0.1应用平台:所有平台[@more@]解决方案:1、基本平台要求Common for all platformsStorageOCR and Voting DiskLocal File SystemNoASMNoLinuxStorageOCR and Voting DiskOCFSYesOCFS2YesGPFS (for Linux on POWER)YesNFS file system (Requires a certified NAS device)YesShared raw partitionsYesBlock devices (IBM zSeries based systems only)YesHP Tru 64StorageOCR and Voting DiskCluster File System with TruCluster v.5.1BYesLogical Storage Manager with TruCluster v. 5.1BVoti
解决ORA-15097 Cannot shutdown ASM if OCR is Located in ASM
环境介绍:数据库版本: oracle 11.2.0.1数据库平台:所有平台[@more@]问题现象:当你试图关闭ASM的时候,报以下错误:ORA-15097: cannot SHUTDOWN ASM instance with connected clientsrvctl stop asm -n enode1 -fPRCR-1014 : Failed to stop resource ora.asmPRCR-1065 : Failed to stop resource ora.asmCRS-2673: Attempting to stop 'ora.asm' on 'enode1'ORA-15097: cannot SHUTDOWN ASM instance with connected clientCRS-2675: Stop of 'ora.asm' on 'enode1' failedCRS-2675: Stop of 'ora.asm' on 'enode1' failed通过检查环境
解决ORA-15036:disk is truncated错误
问题出现的版本:10.2.0.1-11.2.0.1,在任何平台都有可能出现。问题描述:这种错误会在单节点或者是RAC环境下出现。在你准备mount ASM diskgruop(DG1)时,报以下错误:ORA-15032: not all alterations performedORA-15036: disk 'ORCL:DATA10' is truncatedORA-15036: disk 'ORCL:DATA09' is truncated最近的操作:在磁盘组DG1的ASM内新增了两块硬盘,ORCL:DATA09和ORCL:DATA10,并且在OS级别进行了resize。原因分析:系统管理员或者存储管理员分配了两块65530MB大小的空间,提供给ASM使用,ASM管理员或者DBA根据提供的两块空间通过ASMLIB
11g中节点间拷贝文件
如果你的某一数据库上的文件(controlfile、datafile、archivelog file)在节点1上的ASM上,你想要将里面的文件拷贝到第二个数据库服务器的ASM或者文件系统上,可以在11g中通过执行以下步骤达到拷贝的目的。[@more@]oracle 11g的release 1和2允许你通过RMAN来在通过网络在节点间进行文件的传输,这个新的特性可以指定“AUXILIARY FORMAT"参数来在备份的时候完成。以下你可以拷贝archivelog:connect target SYS/...@srcinst # source systemconnect auxiliary SYS/...@destinst # destination systembackup as copy reusearchivelog l
移动ASM的spfile到一个新的disk group
在初始安装完ASM后,ASM的spfile文件默认在默认的盘组,现在需要将ASM的spfile文件移入另一个新的盘组内,以下有两种方式以供实现。在ASM的文档中说是使用asmcmd spmove来移动,但是在实际的使用过程中会报错 :$ asmcmd spmove +DATA/asm/asmparameterfile/REGISTRY.253.715881237 +PLAY/spfileASM.oraORA-15032: not all alterations performedORA-15028: ASM file '+DATA/asm/asmparameterfile/REGISTRY.253.715881237' not dropped; currently being accessed (DBD ERROR: OCIStmtExecute)[@more@]1、通过创建一个中间的PFILE文件来达
解决 ocrconfig -replace ocr Fails With PROT-16
当想要新建一个OCR时,执行ocrconfig -replace的时候,如果新的ocr文件大小小于先前的ocr文件时候(128、256)就会报错,提示不能执行成功,原因就是当执行以上命令的时候,会先去检查newocr大小是否不小于oldocr(>=128)。[@more@]解决方案:1、先创建同等大小的ocr文件dd if=/dev/zero of=/ocfs/OCR/ocrnew.dbf bs=1M count=128dd if=/dev/zero of=/ocfs/OCR/ocrmirrornew.dbf bs=1M count=1282、执行replace操作:./ocrconfig -replace ocrmirror <file_name/raw_device_name> ./ocrconfig -replace ocr <file_name/raw_d