进程的优先级往往会不可思议的影响数据库的性能,在很多时候,可能突发性的(持续时间只有几秒钟到几分钟)、很难确认原因的latch,都和进程优先级有关。下面就是这样一个例子,在没有正确设置进程优先级的情况下,客户的系统常常时不时的出现高CPU的情况,持续时间几分钟,且伴随着cursor pin S的等待 […]
当scheduler超过时间窗口时停止job
要在scheduler的window结束的时候,也让job停止,需要对job加’stop_on_window_close’的属性。 测试如下: 1.建立测试表t1:
1 2 3 |
drop table t1; create table t1 as select 'First record at: '||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as mycol from dual; |
2. 建立需要定期执行的存储过程: [cra […]
impdp时报错Ora-28031
今天一客户说在做impdp导入时,报错Ora-28031。我们看看ora-28031的报错是什么意思:
1 2 3 |
ORA-39083: Object type OBJECT_GRANT failed to create with error: ORA-31625: Schema SYS is needed to import this object, but is unaccessible ORA-28031: maximum of 148 enabled roles exceeded |
从报错信息看,是SYS用户的role超过148个,一开始,我们用
1 |
select count(*) from dba_role_privs where grantee = 'SYS'; |
[…]
runInstaller的debug
收到一个请求,客户说安装11.2.0.2 的RAC数据库的时候,到prerequisite check这一步报错PRVF-5300和PRVF-5434。 我们可以运行下面的命令来追踪:
1 |
./runInstaller -debug -logLevel finest >inst1.out 2>inst2.out |
运行debug后,我们还在OUI中操作,到了pr […]
谈谈死事务的回滚
死事务,一般是事务正在跑的时候,被kill掉了,或者数据库shutdown abort了,那么当数据库再次启动的时候,这些事务就需要做回滚。 可以通过下面的语句查到回滚的事务:
1 2 3 |
select * from v$fast_start_transactions; 或者 select * from x$ktuxe where KTUXECFL='DEAD' AND KTUXESTA!='INACTIVE' |
根据上面的语句,我们可以查到事务的undo的segmen […]
大量会话处于CSS initialization等待
接到一个问题,客户的某个系统突然CPU冲高,一个小时内CPU从5%冲到60%以上,在数据库中发现大量的会话在等待CSS initialization。 该系统是非RAC非ASM的系统,一般来说,不会出现CSS(cluster synchronization service)的等待,只有在访问voti […]
安装cluster时报错 PRVF-5636
之前写过一篇为rac建dns server的文章,今天在安装11.2.0.3的grid的时候报错 PRVF-5636 : The DNS response time for an unreachable node exceeded “15000” ms on followin […]
12c的架构图
在微博上看到12c的架构图了,在这里也放一下。一是给自己做个笔记,另一方面也方便各位oracle爱好者。 顺便整理了一下,9i到12c的数据库架构图,都是pdf版本的: (1)Db9i_Server_Arch (2)Db10g_Server_Arch (3)Db11g_Server_Arch (4) […]
基于vbox的12c RAC的安装
总体上说,12c RAC的安装基本和11g的一致。 先整个简单版的12c RAC(不启用dns,不启用flex cluster,不启用admin policy),基于Oracle Linux Release 6 Update 4 for x86_64 (64 Bit),安装在virtualbox 4 […]
记一次cursor pin s wait on X的处理
今天遇到个问题,客户说某天的11:45开始,系统遇到了大量的cursor pin s wait on X,经历一个小时后自动消失,需要查找原因。 这报错一般是某个会话需要申请S模式的mutex,而mutex被其他会话以X模式占有了。查holder也很容易,11g版本前看p2raw的前8位,将16进制 […]
11g RAC的删除
记得原来在10g RAC的时候,清除RAC还要删除很多东西。有一次某客户的10RAC装不起来,OUI安装数据库时,一直卡在83%,后来查了才发现是没有清除/etc/oratab文件中的信息,导致一直在读取之前的几个实例的信息,由于其他相关的信息,如inventory中的信息已经删除,所以一直卡在83 […]
在异常捕获时显示全部的堆栈信息
今天收到一个请求,问如何才能看到异常时所有的信息,其实我们可以测试一把:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
CREATE OR REPLACE PROCEDURE proc1 IS BEGIN DBMS_OUTPUT.put_line ('running proc1'); RAISE NO_DATA_FOUND; END; / CREATE OR REPLACE PROCEDURE proc2 IS l_str VARCHAR2 (30) := 'calling proc1'; BEGIN DBMS_OUTPUT.put_line (l_str); proc1; END; / CREATE OR REPLACE PROCEDURE proc3_a IS BEGIN DBMS_OUTPUT.put_line ('calling proc2'); proc2; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('Error stack at top level:'); DBMS_OUTPUT.put_line (DBMS_UTILITY.format_error_backtrace); END; / |
通过DBMS_UTILITY.format_error_backtrace,我们可以看到出错的行号, [crayon-68462ae799b1c63435308 […]