同一台机器上安装了10g和11g对于listener的配置
由于资源有限我在同一台机器的2个不同的用户下安装了oracle10和oracle11(oracle用户安装的10g,daizy用户安装了oracle11g),但是发现原来的oracle10可以远程连接,而oracle11g确不能连接,后修改了listener.ora,结果2个都能连接oracle10cat listener.ora LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oratest)(PORT = 1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))))SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /home/oracle/OraHome_1) (PROGRAM = extp
alert log文件的变化
alert log文件的变化现在由DIAGNOSTIC_DEST这个参数控制ADR BASE 的位置如果没有设定这个初始化参数的位置,而设置 ORACLE_BASE 环境变量的话,那么,如果没有设定 ORACLE_BASE , 则 ORACLE_HOME/log 即为 DIAGNOSTIC_DEST。Alert Log 文件父目录的位置在:ADR_BASE/diag/product_type}/product_id/instance_id这个目录下有 alert/trace/bdump 之类的子目录。就是 Log 的具体位置了文本文件的目录:select value from v$diag_info where name ='Diag Trace';xml文件的目录:select value from v$diag_info where name ='Diag Alert';[@more@]
启动实例hang的一例的诊断
启动实例hang的一例的诊断数据库被人无意断开电源。1、启动数据库时HANG住:ALERT日志停在以下的行。RECO started with pid=7CJQ0 started with pid=8QMN0 started with pid=9Sun May 27 11:22:28 2007starting up 1 shared server(s) ...starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...Sun May 27 11:22:28 2007ALTER DATABASE MOUNTSun May 27 11:22:35 2007Successful mount of redo thread 1, with mount id 2423313207.Sun May 27 11:22:35 2007Database mounted in Exclusive Mode.Co
rac turning
rac turning工作中,一直在使用RAC环境的数据库,当然我是以9i见多.对于RAC的一些性能的调整,一直是一个比较大的问题.这里将部分自己的经验以及来自其他参考的文献写下这样的笔记.以方便自己,也方便别人.我们知道,在RAC环境中,实例间是通过内联方式来相互传递信息的,如果期间出现问题,可能会造成数据库性能严重下降,这里主要针对部分情况给出一些解决的方案。9iRAC中通过cache funsion来减少由于ping block时所产生的磁盘竞争,但都需要通过访问远程实例来写。相反,一个RAC副本dirty 从buffer中通过cf同步到远程实例中进行写入。这个功
闹洞房秘笈
游戏一:集体热身——摸奖 各位来宾各取一粒喜糖,在糖纸上写下自己的大名,然后投入新娘的衣领里。当所有的“抽奖券”都投入“抽奖箱”后,新郎出马,从新娘衣领里伸进去,一次摸一粒糖。中奖者担任当晚主持人。如果被摸中的人缺乏主持天赋,自行退出者,需交纳10元钱,算是给新郎今天晚上的辛苦费,新郎接着摸奖。 游戏二:点烟 所有男宾站在桌子上,让新郎高举新娘,给所有人口中的烟点火。由于大家都故意不肯老老实实让新娘点烟,所以很难点。而此时新郎也累得两鬓流汗,眼看胳膊酸得顶不住了。于是底下旁观的朋友们,尤其
脚本在crontab里没有运行的解决办法之一
今天发现昨天写的这个mysql统计脚本没执行,脚本大致如下:mysql </tmp/login.sql这个手工执行是没有问题的,但为什么没有在crontab里执行呢,开始我以为crontab没有运行,但是我验证了crontab运行了,我在这个脚本前加上date>/home/tt.log发现/home/tt.log出现了,并有相应的日期,说明cron是运行了的,后发现在这个里面要加上myql的全路径:/usr/local/mysql/bin/mysql </tmp/login.sql这样就可以了就起原因是在crontab里面找不到mysql这个可执行文件但是我在/etc/profile里面的PATH加了这个路径的呀,为什么cron还不认呢?这是个问题![@
又一个不能走索引的情况
又发现一个不走索引的语句,一个长的sql条件很简单type=4但是开发人员在写的时候没有看这个type在表里的类型是char(1),结果该语句在sp报表的SQL ordered by Reads里就有所表现: CPU Elapsd Old Physical Reads Executions Reads per Exec %Total Time (s) Time (s) Hash Value--------------- ------------ -------------- ------ -------- --------- ---------- 1,308,056 7 186,865.1 91.5 190.04 1222.70 1623835478让开发改为type='4'就好
outln下的ol$nodes有6百多万数据
http://www.itpub.net/showthread.php?s=&threadid=881497处理如下:前几天sp报表出现了:"db file scattered read " 15,129,548 37,247 45.83所占比例很高,并且buffer hit不到50%,很奇怪,我的Buffer Cache: 2,560M应该不会出现这个问题我找到orderd by gets,发现第一句就是: CPU Elapsd Old Buffer Gets Executions Gets per Exec %Total Time (s) Time (s) Hash Value--------------- ------------ --------------
Analyze分析表或者索引
Analyze分析表或者索引demo:--62254 SELECT dt.table_name, dt.num_rows, dt.blocks, dt.empty_blocks AS empty, dt.avg_space, dt.chain_cnt, dt.avg_row_len, TO_CHAR( dt.LAST_ANALYZED, 'MM/DD/YYYY HH24:MI:SS' ) FROM dba_tables dt WHERE dt.owner = 'INV' AND dt.table_name = 'MTL_MATERIAL_TRANSACTIONS'; DECLARE v_num_rows NUMBER; v_num_blocks NUMBER; v_avg_row_len NUMBER; BEGIN -- retrieve the values of table statistics on INV.MTL_MATERIAL_TRANSACTIONS -- statis
sqlplus下的命令
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a90842/ch13.htm#1012209[@more@]
用prebuild mv 方法迁移数据
/*用prebuild mv 方法迁移数据原理:用perbuild方法建立的物化视图,在drop物化视图时,不会把其对应的基表删除。好处:主要是利用物化视图增量刷新的方法减小down机时间。*/--步骤--1 在目的数据库端建立DB LINKcreate database link test_tag_groupconnect to test_tag_group identified by test_tag_groupusing '201';--2 在源数据库端建立物化视图日志,用于物化视图快速刷新SQL> create materialized view log on prebuild_table;Materialized view log created--3 在目标数据库端建立与源库一样的表结构的空表SQL> create tab
kill -9 杀掉oracle所有进程却不能启动和连接数据库的解决办法!
通过sqlplus "/as sysdba"登录信息我们可以知道,sqlplus认为oracle数据库并没有关闭。oracle的进程都不存在了,但sqlplus为什么认为oracle没有关闭呢?它是根据什么来判断的?4、查看此时的共享内存段情况[oracle@rep ~]$ ipcs -as------ Shared Memory Segments --------key shmid owner perms bytes nattch status 0x91c11414 491531 oracle 640 142606336 10 ------ Semaphore Arrays --------key semid owner perms nsems 0xeddca300 360448 oracle 640 154 ------ Message Queues --------key msqid owner perms used-byt
执行计划出现BITMAP CONVERSION TO ROWIDS的解释!
我在查看执行计划的时候发现BITMAP CONVERSION TO ROWIDS,好像sql反应比较慢,baidu了一下,有下面的解释!我的解决办法是: 把索引删除,建立了联合索引,就没出现这个问题了,一致性获取也下降了很多,速度也快了不少!不知道oracle用这个来究竟是有什么用!http://www.itpub.net/showthread.php?s=&threadid=602866&perpage=10&pagenumber=1都是cbo的context和算法决定的,可以试试false _b_tree_bitmap_plans,我说错了这个不应该是join是combine 给一段Jonathan Lewis的解释:B-tree to Bitmap ConversionsOne of the optimizer’s
Oracle穿越防火墙设置
方法一:在windows2000的注册表中,hkey_local_machinesoftwareoraclehome0下加入字符串值:USE_SHARED_SOCKET=TRUE,即可方法二:1、首先将数据库实例改为SHARED SERVER模式2、以SYSDBA登录SQLPLUS,通过SQLPLUS生成系统当前的参数设置文件pfile:create pfile='d:init.ora' from spfile;3、修改d:init.ora文件,在其中增加(用editplus编辑):*.service_names='your service name'和*.dispatchers='(address=(protocol=tcp)(host=localhost)(port=1521) (dispatchers=1)'4、生成新的SPFILE:create spfile from pfile='d:init.ora';5、
一个优化过程
一次调整优化过程总结 平台:windows 2000 server sp3数据库:Oracle 9.0.1.1.11. 在高峰时段,系统高负载的情况下用statspack一个小时做一次系统的快照。对statspack产生的报告注意其中的Top 5 Wait Events。具体可以参考eygle写的statspace使用指南。本例的等待事件主要是db file scattered read、buffer busy waits和db file sequential read。2. 对于db file scattered read主要是由于全表扫描造成的,db file sequential read说明当前系统负载很高或者cbo使用了不合适的索引。通过定时(2天一次在晚上12点执行dbms_stats.gather_sche
sqlldr的例子
sqlldr userid=lgone/tiger control=a.ctl LOAD DATA INFILE 't.dat' // 要导入的文件 // INFILE 'tt.date' // 导入多个文件 // INFILE * // 要导入的内容就在control文件里 下面的BEGINDATA后面就是导入的内容 INTO TABLE table_name // 指定装入的表 BADFILE 'c:ad.txt' // 指定坏文件地址 ************* 以下是4种装入表的方式 APPEND // 原先的表有数据 就加在后面 // INSERT // 装载空表 如果原先的表有数据 sqlloader会停止 默认值 // REPLACE // 原先的表有数据 原先的数据会全部删除 // TRUNCATE // 指定的内容和replace的相同 会
exp不能备份的问题
With the Partitioning, OLAP and Data Mining optionsExport done in UTF8 character set and UTF8 NCHAR character set. exporting pre-schema procedural objects and actions. exporting foreign function library names for user ORCL . exporting PUBLIC type synonyms. exporting private type synonyms. exporting object type definitions for user ORCL About to export ORCL's objects .... exporting database links. exporting sequence numbers. exporting cluster definitionsEXP-00056: ORACLE error 4021 encounteredORA
solaris里获取前一天的日期
1. If you are using GNU date, just do : filename = 'date +%m' +1002. For POSIX date, it's a bit complex, you should try:2.1 Write a simple C programm to archive this, just one function call can solve this.2.2 Write a perl script file to caculate the assigned date.#!/usr/local/bin/perl -w@t=localtime(time-N*24*3600);# N states for how many days you want to count behind.print("%04s%02s%02s%02s",$t[5]+1900,$t[4]+1,$t[3],$t[2]);#END2.3 It's rather complex to realize this by sole shell scri
job都停了的解决办法
今天查询一个运营库的user_jobs,发现job都停止了,未执行,修改了一些这个参数,job又可以执行了!SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0; 等2~3分钟,重新设置SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 5; 此时PMON会重起CJQ0进程ref: http://www.eygle.com/archives/2004/11/job_can_not_execute_auto.html但是uptime看1:38pm up 361 day(s)这个服务器启动才361天,未到eygle说的497天,但是job进程却挺了,有点奇怪呀![@more@]
SOLARIS磁盘镜象(RAID1)
http://blog.chinaunix.net/u/27493/showart_243308.html prtvtoc /dev/rdsk/c1t0d0s2 | fmthard -s - /dev/rdsk/c1t1d0s2将磁盘2的分区和磁盘1一样![@more@]