ORA-08104错误
生产系统中在线重建索引还是比较危险的,一旦失败就会触发这个Bug,导致ORA-08104错误出现。关于这个问题白鳝大师有一篇经典的帖子详细的讲述了相关的处理方法,简单记录如下。 SQL> drop index xx.xxxxx; drop index xx.xxxxx ORA-08104: this index object 17406 is being online built or rebuilt SQL> select obj#, flags from ind$ where obj#=17406 ; OBJ# FLAGS ———- ———- 17406 512 SQL> select count(*) from xx.sys_journal_17406; COUNT(*) ———- 0 SQL> drop table xx.sys_journal_17406; Table dropped
ORA-04030错误解决案例
环境:AIX 6.1 64bit Oracle 10gR2概述:同事做统计报表发现,使用hash join会报错ORA-04030: out of process memory when trying to allocate 512040 bytes (QERGH has h-agg,QESH list array)使用很少的hash area 空间也会报错,PGA_AGGREGATE_SIZE设置为3G,应该不是PGA不够.调大PGA错误依然。于是连接到数据库服务器运行,却不报错.也就是通过client上去会报错,server上直接运行不报错.刚开始怀疑是一个bug或者是OS限制了资源,但是bug在服务器端也会报错才对.OS资源限制,也不可能,因为全部设置为ulimited. 这个问题纠结了两天,最终考虑
kill运行中的job
经常运行了一个JOB想把它kill掉,下面语句可以完成这个操作.select a.what,'alter system kill session '||''''||c.sid||','||c.serial#||''''||';' from user_jobs a,dba_jobs_running b,v$session c where a.job=b.job and b.sid=c.sid;有时可能只会标记为删除,JOB其实还在运行,它会等待释放占用的资源,这样可能会花费很长时间才能删掉.所以我们可能需要直接干掉相关的进程.select a.what,'kill -9 '||d.spid||';' from user_jobs a,dba_jobs_running b,v$session c,v$process d where a.job=b.job and b.sid=c.sid and d.addr=c.paddr;注
expdp/impdp工具使用总结
expdp/impdp工具使用总结1.impdp使用NETWORK_LINK时,不支持LONG类型的表2.一般的database object导出时快,导入时慢.3.含BLOB字段的表导出时慢,导入时非常快,能达到1G/MIN4.查询expdp/impdp的视图dba_datapump_jobs、dbs_datapump_sessions5.跳过当前正在运行的作业.假如你在导入时发现等了很长时间有个表都没能导入,而这个表不影响业务,可以等应用程序运行后,再来处理.那么可以采用这种方式.先进入交互模式,停掉JOB,再加上参数start_job=skip_current,即可跳过当前JOB运行的作业,继续运行剩下的。6.AIX命令prtcon显示系统的配置.smtc
checkpoint not completed解决
最近公司数据库alert log总是报 checkpoint not completed.不包括硬件问题,解决这个问题需要从三个方面入手:1.checkpoint是什么?2.产生此错误的机制?3.解决方法 1.checkpoint是什么? checkpoint负责:通知DBWn进程;update数据文件头;update控制文件。 每隔3秒钟,CKPT进程就会将有关数据存储在control file中,来标志、验证当recovery开始时online redo log file对应的位置。checkpoint 的目的是为了保证在之前的时间点database buffer cache中的缓冲数据已经全部被写入datafiles。这个checkpoint 也是在实例
ORA-01591解决方法
错误原因:使用了分布式事务,造成这个问题的原因很多时候都是由于网络问题造成的解决办法:1.找到TRAN_IDSelect 'Rollback force '''||LOCAL_TRAN_ID||'''' from sys.pending_trans$;2.將其COMMIT或ROLLBACK: rollback force LOCAL_TRAN_ID; commit force LOCAL_TRAN_ID; 3.如果执行失败,则强行从资料字典中删除该交易记录: set transaction use rollback segment system; delete from dba_2pc_pending where local_tran_id = LOCAL_TRAN_ID; delete from pending_sessions$ where local_tran_id = LOCAL_TRAN_ID; delete fr
oracle错误诊断一例
今天网络中断大概10分钟恢复后,数据库连接不了。报错达到了最大进程数据,查看lsnrctl services有60多万专用连接。关掉listener重启,一会儿又报同样错误。尝试用sys登录修改processes参数,无法登录。kill 掉一些进程,重新登录,修改processes参数重启后,错误依然。查看alert log发现J000 die错误,查资料,修改 job_queue_processes=100后正常运行。后来思考发现了错误的根源。网络中断后,一些JOB无法运行,网络恢复后JOB都开始运行,导致JOB过多,而默认JOB_QUEUE_PROCESSES参数只有10个,JOB就失败。而JOB调用的procedure/package
Process J000 died, see its trace file错误
Process J000 died, see its trace file Mon Sep 7 16:26:07 2009 kkjcre1p: unable to spawn jobq slave process Mon Sep 7 16:26:07 2009 Errors in file /d01/proddb/10.2.0/admin/ora10g/bdump/prod_cjq0_27156.trc: Process J000 died, see its trace file Mon Sep 7 16:26:13 2009 kkjcre1p: unable to spawn jobq slave process Mon Sep 7 16:26:13 2009 Errors in file /d01/proddb/10.2.0/admin/ora10g/bdump/prod_cjq0_27156.trc: Mon Sep 7 16:26:44 2009 Process J000 died, see its trace file Mon Sep 7 16
ORA-600 [PSDTYFND_WITH_SUFFIX] 解决
Dropping, recreating or compiling a package is failing with: ORA-600 [PSDTYFND_WITH_SUFFIX] The package includes pipelined functions.(See Note.136909.1 PL/SQL Pipelined and Parallel Table Functions in Oracle9i) CauseThe cause of this issue is not known. It is believed that importing into a database where these pipelined functions already exist may be the cause, but testing has failed to rep SolutionWhen a pipelined function is created a number of system generated objects are also created. These
ORA-12631错误解决
ora-12631:用户名检索失败解决方案:These errors are associated with remote authentication on NT under NTS (NT Transport Services). Essentially, the following parameter is set in the "sqlnet.ora": SQLNET.AUTHENTICATION_SERVICES = (NTS) As a result, if you are logged on as a domain user, and you don't have a network connection (network cable temporary removed or laptop booted standalone), you will not be able to connect to the database because the authentication will try to reach
package含有PIPELINED FUNCTION时的ORA-600错误解决
当PACKAGE中含有PIPELINED FUNCTION时,有时会报ORA-600错误。因为编译PACKAGE时会自动生成N个TYPE,而有的TYPE会duplicate,所以当compile or recreate or drop PACKAGE会报ORA-600。解决方法是删除 duplicate的TYPE,一般TYPE名称为“%_OBJECT_ID_2_%“,可以通过PKG DEFINITION的OBJECT_ID ,查找出相应的TYPE并DELETE。有空再添加实例说明。[@more@]
优化IN语句
例:以A,B,C字段建立索引,且A、B、C均为字符。1. select * from tab_name where a in (1,4);2.select * from tab_name where a in ('1','4');则语句1不走索引,而语句2走索引,即语句2更优。[@more@]
通过ADDM报告完成性能优化实例
今天用ADDM生成的报告发现有几个表存在较严重的segment fragment,检查发现是统计信息(statistics collection)太旧.进一步检查发现是对象收集统计信息被锁,无法收集统计信息.优化过程如下:SQL> SELECT a.num_rows,a.avg_row_len FROM dba_tables a WHERE a.table_name='ZDRYJCXX';NUM_ROWS AVG_ROW_LEN ---------- ----------- 3015344 396 --统计信息行数 SQL> select count(*) num_rows from zdry.zdryjcxx;NUM_ROWS ---------- 909548 --实际行数 SQL> exec dbms_stats.gather_table_stats(ZDRY,'ZDRYJCXX');BEGIN dbms_stat
DBCA迁移数据库
使用DBCA的模板迁移数据库的步骤及注意事项1.首先,利用DBCA创建源DB的DB模板包括data和structure.注意在此过程中,源DB会自动关闭并重启2.copy template到目标DB的$ORACLE_HOME/assistants/dbca/templates/下3.利用目标DB的DBCA创建clone DB4.利用ORAPWD工具创建SYS密码5.用SYS登录,解锁所有user并重新设置密码。因为迁移后,所有user都被锁,并且密码expired.6.如有DBLINK需要查看是否可用注:当数据库迁移后,一定要查看所有的DBLINK是否还有效。[@more@]