今天遇到了ora-00381,以此记录一下
今天因为应用死机,导致数据库RAC1也莫名死机,最后不得不重启数据库服务器,重启后发现才不能启动实例,报SQL> startup mount ORA-00381: cannot use both new and old parameters for buffer cache size specification数据库为9I的RAC,用的是*.db_block_buffers=262144*.db_block_size=8192参数,目的是为了使用更大的SGA,以前是正常的,而且RAC2也是正常的对比RAC2的参数和SPFILE里的参数,有这么一句不同*.db_cache_advice='ON'而RAC2没有死机,可以查到参数,其为*.db_cache_advice='OFF'可能是因为平时更改了参数而没有写进spfile,所以我就
<转帖>各种语句的不同写法
原文引自:http://fuyuncat.itpub.net/post/5203/56053各种语句的不同写法fuyuncat最近处理的问题涉及SQL Tuning的东西比较多。不少语句不是加几个索引这么简单,而是语句是在太复杂了,有些作者都不知道是谁,逻辑非常难理解。碰到这种情况着实令人头疼。但是根据经验,很多语句的书写方式是可以用其他方式代替,通过尝试修改语句的写法,往往取得不错的效果。当然,改变语句的写法只是语句优化的一种手段之一,在这个基础上,在结合其他的优化手段(采用PLSQL块提花单个语句、采用游标、提示等)才能取得最好的优化效果。以下的替换中,大
优化今天在系统里捉的一条语句
SQL> SELECT BASE_UUID,BASE_CREATEUSERID,BASE_CREATEUSERNAME,BASE_CREATEDATE,BASE_RECEIVERID,BASE_RECEIVERNAME,BASE_ACCESSVALUE,BASE_USETIMES,BASE_HASH,BASE_KIND_UUID,BASE_BASE_UUID,BASE_VER1,BASE_VER2,BASE_VER3,BASE_LB,BASE_FORMAT,BASE_HEADER_GWFSXH,BASE_HEADER_MMDJ,BASE_HEADER_BMQX,BASE_HEADER_JJCD,BASE_HEADER_FWJGBS,BASE_HEADER_FWJGDZ,BASE_HEADER_NF,BASE_HEADER_XH,BASE_HEADER_QFR,BASE_BODY_BT,BASE_BODY_ZCJG,BASE_BODY_CSDW,BASE_BODY_CBDW,BASE_ATTAHC_NUMBER,BASE_BODY_CWRQ,BASE_BODY_YC,BASE_BO
在logzgh老大的指导下,终于解决了ORA-01189
ORA-01189: file is from a different RESETLOGS than previous files ORA-01190: controlfile or data file string is from before the last RESETLOGS dba在将整个数据库dd拷贝过来后,重建控制文件时,将3号文件给漏掉了,然后又open resetlogs打开数据库了。alter database rename file '/opt/oracle/product/9.2.0.4/dbs/MISSING00003' to '/opt/oracle/oradata/test/indx01.dbf';于是想将该 文件online起来或者做recover datafile 3时报出上面的错误。我想oracle判断这个文件是不是resetlogs之前的文件,肯定是数据文件头有个标志的
<转帖>一些常用的dump命令,让自己好查
1、分析数据文件块,转储数据文件n的块m alter system dump datafile n block m 2、分析日志文件 alter system dump logfile logfilename; 3、分析控制文件的内容 alter session set events 'immediate trace name CONTROLF level 10' 4、分析所有数据文件头 alter session set events 'immediate trace name FILE_HDRS level 10' 5、分析日志文件头 alter session set events 'immediate trace name REDOHDR level 10' 6、分析系统状态,最好每10分钟一次,做三次对比 alter session set events 'immediate trace name SYSTEMSTATE level
静静的想你
今夜,我怅坐一隅静静的想你想知道此时你在做什么想知道你有没有亦同我一样的思念想知道当你凝视远方的时候你的眼前是否划过我的身影想知道当你走进梦幻的思绪是否看到我在梦的路口等待着你我静静的坐在这里想你虽然,我不知道这样静静的想身处天际的你是否能真切地感受到如果你常常会有一种莫名的心动你是否知道这是因为我在远方静静地想你?就这么静静的想你静静的在心底呼唤着你我真的很想在这宁静的夜空里呼唤你尽管我知道漆黑的夜空无法将我的心声传得很远但我知道,无论多远,你一定能够听到就这么静静的想你,在这个平淡的夜晚因为想起了
rman备份数据库所需权限
connect,resource ,RECOVERY_CATALOG_OWNERsqlnet.ora中,必须将SQLNET.AUTHENTICATION_SERVICES= (NTS)注释使用rmanconnect target rman/rman或rman target rman/rman连接不知为什么使用rman target rman/rman@sid会报如下错误Recovery Manager: Release 9.2.0.4.0 - ProductionCopyright (c) 1995, 2002, Oracle Corporation. All rights reserved.RMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: =====================
关于竖横表转换(转帖)
关关关于于于竖竖竖表表表转转转横横横表表表的的的问问问题题题本文作者 dinya内容摘要:在开发过程,经常遇到一些将表的显示方式进行转换的需求,我们习惯性称之为竖表到横表的转换,本文通过一个例子来简要说明常见的两种竖表转横表的问题。本文适宜读者范围:Oracle初级,中级系统环境:OS:windows 2000 Professional (英文版)Oracle:8.1.7.1.0正文:在实际的应用中,我们经常遇到需要转换数据显示方式,比如将横表转为竖表,或将竖表转换为横表的情况,如:课程表的显示方式,部门平均工资的排名等情况。下面将将根据两个实例子的需
增加表空间文件需小心
系统: AS3.5 + oracle 9.2.0.4 RAC今天下午,接到开发人员电话,说应用不能上传附件,然后我打开数据库检查发现一个表空间满了,只有往表空间里加文件了因为太懒,就在sqlplus里直接打alter tablespace DATA add datafile 'data03.dbf' size 10000m;运行完后,用toad检查,才发现数据文件并不是加到阵列上,而是加到了RAC1 本机的硬盘上,这时吓了一跳,主要原因还是太懒,没有把路径写全.唯有等下班后,把表空间脱机,然后移动数据文件到阵列上了,哎,以后不要贪方便处理步骤:alter tablespace DATA offline normal;cd /opt/oracle/product/9.2.0.4/
Oracle诊断事件列表
经常有人问,Oracle有哪些诊断事件,各是什么含义,怎样使用?这些问题问得太多太多,Oracle没有过多的说明,实际上也不需要太多的说明。我们可以通过以下代码查询得到Oracle的诊断事件及说明,通过这些,我想就足够了。列举在这里给自己参考。1.代码SET linesize 120 SET feedback off SET SERVEROUTPUT ON DECLARE err_msg VARCHAR2(120); BEGIN dbms_output.enable (1000000); FOR err_num IN 10000..10999 LOOP err_msg := SQLERRM (-err_num); IF err_msg NOT LIKE '%Message '||err_num||' not found%' THEN dbms_output
安装oracle无法换盘
我在redhat8上安装oracle9i过程中,提示换第二张盘,可我的光驱却退不出来,怎么办?光驱是mount 命令加载的,可在换盘时,我在root下用umount命令提示光盘busy.怎么办?在线等待!!!!应该这样执行Oracle安装程序/mnt/cdrom/runinstaller,如果你是先cd /mnt/cdrom的话就会出这样的问题解决方法是先找出访问光驱的那个进程fuser -m /mnt/cdrom再杀掉这个进程,就可以弹出光驱了[@more@]
(网上摘录)日志文件损坏处理方法
案例:日志损坏 环境描述:linux 9 oracle9 错误描述:今天不小心把名为redo01.log、redo02.log、redo03.log的三个文件请空了。 结果数据库报错如下 ORA-00320: cannot read file header from log 2 of thread 1 ORA-00312: online log 2 thread 1: '/opt/app/oracle/oradata/actdb/redo02.log' ORA-27091: skgfqio: unable to queue I/O ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file Additional information: 1 Additional information: 1 如何解决呢? 解决方案:联机日志分为当前
是不是9.2.0.4 也有这样的BUG呢?
看了eygle的一篇关于临时表的BLOG,于是动手测试了一下自己的数据库,发现有同样的BUG原文:http://www.eygle.com/faq/temp_table.htm我的测试结果如下:SQL> create table c1 (c1 number);表已创建。SQL> set autotrace trace statSQL> insert into c1 select rownum from dba_objects;已创建7235行。Statistics---------------------------------------------------------- 797 recursive calls 125 db block gets
关于高级复制的一些数据同步
果你原来两个数据库的表里数据不一致,你用dbms_repcat.add_master_database加表的时候用了:copy_rows=>false, oracle不会帮你做同步,因为你指明了说“不需要复制数据,我保证数据是一致”。这样你永远别想靠replication把数据同步。你要么设置copy_rows=>ture,这样oracle会把远程表清空,做数据同步。要么在用dbms_repcat.add_master_database就手工把数据搞成一致,再用copy_rows=>false把表加入replication group. 一般数据比较多都应该这么做。大致上你可以:suspend replication group:BEGINDBMS_REPCAT.SUSPEND_MASTER
SQL语句优化方法30例
SQL语句优化方法30例在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法:1. /*+ALL_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. /*+FIRST_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.例如:SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';3. /*+CHOOSE*/表明如果数据字典中有访问表的统计信息,
Oracle数据库中索引的维护 (转帖)
Oracle数据库中索引的维护 柏柯嘉 本文只讨论Oracle中最常见的索引,即是B-tree索引。本文中涉及的数据库版本是Oracle8i。 一. 查看系统表中的用户索引 在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。 一般来说,应该尽量避免在SYSTEM表中存储非SYSTEM用户的对象。因为这样会带来数据库维护和管理的很多问题。一旦SYSTEM表损坏了,只能重新生成数据库。我们可以用下面的语句来检查在SYSTEM表内有没有其他用户的索引存在。select count(*) fr
SCN的一点小知识
在ORACLE 8I以下,可通过如下语句取得CURRENT SCNselect max(ktuxescnw*power(2,32)+ktuxescnb) from x$ktuxe;在ORACLE 9I,使用如下语句取得CURRENT SCNselect dbms_flashback.get_system_change_number from dual;系统检查点scn(v$database(checkpoint_change#))数据文件检查点(v$datafile(checkpoint_change#))数据文件终止scn(v$datafile(last_change#))数据文件中存放的检查点启动scn (v$datafile_header(checkpoint_change#)1、系统检查点scn当一个检查点动作完成之后,Oracle就把系统检查点的SCN存储到控制文件中。select checkp
AS4.0安装oracle
在as4上面安裝要打補丁的﹐装前先要安装4198954 Oracle PreInstall Patch。 Unzip p4198954.zip 会生成4198954目录,并生成compat-oracle-rhel4-1.0.5.i386.rpm、compat-libcwait-2.0.2.i386.rpm 和README.txt 。 着两个rpm包安装需要xorg-x11-deprecated-libs 和 xorg-x11-deprecated-libsdevel包文件,安装着两个rpm包:rpm -ivh compat-oracle-rhel41.0.5.i386.rpm rpm -ivhcompat-libcwait-2.0.2.i386.rpm另外,我还打了p3006854_9204_LINUX.zip 这个补丁才安装,不知不打有没有什么坏处.安装时不要选择建库,在打了下面两个补丁后再建库
solaris9自动启动oracle
数据库自动启动与关闭1、修改oratab文件dbstart, dbshut会读Sun Solaris目录下/var/opt/oracle/oratab, 或者linux目录下/etc/oratab 文件。 先确认这里参数已正确设置:#你要启动的数据库sid:ORACLE_HOME:Y 例如:orawic:/app/oracle/product/9.2.0:Y如果有两个在用的数据库,这里oratab里可以是两行。例如:orawic:/app/oracle/product/9.2.0:Yorawap:/app/oracle/product/9.2.0:Y2、编写脚本以root权限的用户在Sun Solaris目录/etc/init.d下, 或者linux目录/etc/rc.d/init.d下编写脚本dbora(名字可随便起).#!/bin/shOPT_=$1case "
进入新公司三个月了,随便写些东西记录一下
到今天,已经来到新的公司三个月了,试用期应该是过了,但是领导还是没有什么表态,唯有等待了。在这三个月里,感觉过得挺快的,但是总体感觉,在技术上提高得不大,因为在这个岗位上可以提高自己的地方真的不多,原以为,来到新的公司可以更快地提高自己的技术,结果被外派到一个地方,在这里没有人指导,环境也不复杂,有的只能靠自己去看书,但是没有实践,是很高提高自己的。而且在这里每天都在忙这忙那一些极琐碎的事,把时间都耽搁了。说了这么多怨气,真的不想,呵呵,现在说说我这三个月都有什么收获吧。主要工作是系统和数据库的