dataguard中有关lgwr async的测试
oracle选择了折中的办法...[@more@]有关dataguard的几个有意思的问题1.standby db上RFS进程是用户进程,不是后台进程,需要从primary db上获取log或者primary db上的LNS进程需要把log传递给RFS时RFS才启动2.在配置standby时primary db上的log_archive_dest_2如下:SQL> show parameter log_archive_dest_2NAME TYPE VALUE------------------------------------ ----------- ------------------------------log_archive_dest_2 string SERVICE=orcl_s LGWR ASYNC VALI
32位升级到64位之后迁移oracle db遇到的问题
处理器由32位变成了64位,重装oracle软件之后,权衡各种因素,db我选择了把冷备直接挂接的办法迁移,迁移之后遇到了问题...[@more@]顺利挂载db之后,通过应用程序或者第三方工具(如plsql developer)连接时出现ORA-06553: PLS-801: internal error [56319] 等错误。解决方法如下:SQL> shutdown immediateSQL> startup upgradeSQL> set echo onSQL> @$ORACLE_HOME/rdbms/admin/utlirp.sqlSQL> select status from dba_objects2 where object_name='DBMS_STANDARD'3 and object_type='PACKAGE'4 and owner='SYS';如果invalid
system trigger中的servererror事件验证
我们可以使用系统触发器中提供的servererror事件来捕获系统产生的错误...[@more@]--t_trace是一个跟踪表,用户记录由trigger捕获的信息SQL> desc test1.t_trace;名称 是否为空? 类型----------------------------------------- -------- ----------------------------USERNAME VARCHAR2(10)TERMINAL VARCHAR2(10)IP VARCHAR2(20)TIME DATEACTION VARCHAR2(30)ERRORMSG VARCHAR2(100)--========================create or replace trigger trigg_systemafter servererror on databasedeclarebegin insert into t_trace values(sys.login
Record-based inserts and updates
随手记录一下...[@more@]declarev_id int;v_id1 v_id%type; --%type不仅可以使用column名,也可以使用已经定义好的变量cursor c1 is select * from t for update;v_t c1%rowtype; --%rowtype不仅可以使用表名,也可以使用定义过的cursorbeginfor i in c1 loopif mod(i.id,2)=0 then update t set row=i where current of c1;elseinsert into t values i;end if ;end loop;commit;end ;
remote_listener和listener password
listener注册在远程的目的是rac为了实现服务器负载均衡,如何把db的service_names注册在远程的listener上呢,注意远程注册service_name一定是动态注册的,把service_name注册到远程的listener上有什么缺点?[@more@]测试版本:10.2.0.1接下来来看上面提到的2个问题:1.如何把sevice_names注册到远程的lisenter上,目前db的信息如下,数据库运行在windows下C:>sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期六 1月 16 22:05:49 2010Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到:Oracle Database 10g
通过dbms_scheduler执行一个外部job时出现错误
郁闷的job执行问题...[@more@]在c:temp下写了一个文件dbrman.bat,内容如下:rman target / cmdfile=dbbak.sql log=dbbak.txt append执行时错误如下:SQL> exec dbms_scheduler.run_job('my_job_dbbak');BEGIN dbms_scheduler.run_job('my_job_dbbak'); END;*第 1 行出现错误:ORA-27369: 类型为 EXECUTABLE 的作业失败, 退出代码: 函数不正确。ORA-06512: 在 "SYS.DBMS_ISCHED", line 150ORA-06512: 在 "SYS.DBMS_SCHEDULER", line 441ORA-06512: 在 line 1网上搜了一下大部分都说由于服务OracleJobSchedulerORCL没有
windows做ntp server,linux做ntp client端的配置方法
在安装rac的过程中,同步时间是个问题,rac对时间的依赖行比较高,有关linux 做ntp server的配置网上有很多...下面也是来自网上的一篇文章[@more@]http://doc.linuxpk.com/2255.html找了很多的资料,都没有windows做时间服务,linux同步windows的时间的,最后自己找了一些软件,终于搞定了,写出来给大家共享,以免大家多走弯路 首先在http://www.meinberg.de/english/sw/index.htm 下载了一个windows的NTP服务程序:ntp4171.zip windows 192.168.1.32 1.安装是提示设置服务器地址,我设置的本机widows机器的IP 2.ntpd的控
rac安装失败或者是想重新安装,在现有的机器上应该清除哪些东西!
rac的安装不可能一次成功,有时候可能需要折腾多次,这样的话就需要清除之前装进来的一些东西,清除的内容如下,步骤先后没有关系,我的os是:redhat as 4 update 7,oracle version:10.2.0.1[@more@]1. rm -rf /etc/oracle/*rm -rf /var/tmp/.oracle修改 /etc/inittab, 删除以下三行.h1:2:respawn:/etc/init.evmd run >/dev/null 2>&1 </dev/nullh2:2:respawn:/etc/init.cssd fatal >/dev/null 2>&1 </dev/nullh3:2:respawn:/etc/init.crsd run >/dev/null 2>&1 </dev/null2.rm -rf /etc/ora* -
linux下install vmware tools
启动虚拟机以root用户登录,在vm里的install vmware tools上点击,之后在桌面上产生一个vmware tools的光盘图标,双击安装...安装之后运行service vmware-tools start需要运行vmware-install.pl 脚本,全部选择default值,运行之后检查vmware-tools服务是否启动,可以使用setup来查看或者再次运行service vmware-tools start来验证vmware服务是否启动,启动之后执行vmware-toolbox来打开vmware-tools窗口正常使用....[@more@]使用vmware-tools可以同步虚拟机和主机os的系统时间,从而实现多台虚拟机的系统时间,这样在安装rac时就可以保证
flashback_transaction_query数据保留的时间
flashback_transaction_query里面的数据很庞大,数据的来源和数据保留的时间曾经困扰过我,简单的测试了一下...[@more@]session 1:SQL> show parameter undoNAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string AUTOundo_retention integer 900undo_tablespace string UNDOTBS1SQL> alter system set undo_retention=10;系统已更改。S
VMware的改变预分配硬盘空间的方法
最近通过vmware装rac遇到n多问题,一个比较突出的问题是我在安装linux时虚拟的磁盘都没有预分配磁盘空间,导致在oracle安装的过程中虚拟机直接宕机,很不稳定,于是想尝试预分配磁盘空间...[@more@]把原来Red Hat Enterprise Linux 4.vmdk从20g调整为30g,如果小于20g的话出现错误了,因为-x表示要扩展磁盘--=================================C:Program FilesVMwareVMware Server>vmware-vdiskmanager.exe -x 20Gb "F:Virtual Machinesnode2Red Hat Enterprise Linux 4.vmdk"Using log file C:DOCUME~1WCHXYS~1.004LOCALS~1
桌面程序删除了,如何找回来
桌面程序不小心从 快速启动栏 里删除了,使用起来很不爽...[@more@]从其他机器的如下目录中拷贝"显示桌面"到如下目录就可以使删除的桌面重新出现C:Documents and Settingswch.XYS.004Application DataMicrosoftInternet ExplorerQuick Launch显示桌面注意Application Data是隐藏目录
俺稀罕这几句话
在海区的一个哥们的签名档上看到的[@more@]時間是人生真正的資產;學問是人生真正的財富;智慧是人生真正的力量;健康是人生真正的快樂;自由是人生真正的幸福;慈悲是人生真正的寶藏.
cursor: pin S wait on X等待事件模拟
这是10.2版本提出的mutex(互斥)机制用来解决library cache bin latch争夺问题引入的新事件,是否使用这种机制受到隐含参数_kks_use_mutex_pin的限制,从10.2.0.2开始该参数default为true,使用这种机制oracle是为了解决library cache bin latch的串行使用问题,但是mutex貌似还不是很稳定,在很多系统中会出现cursor: pin S wait on X等待事件,这个事件和mutex的使用有关,最近一客户受到cursor: pin S wait on X等待事件的困扰,出现cursor: pin S wait on X等待事件时通常等待比较严重,系统会出现hang,这个事件的出现受到很多因素的影响:在高并
read by other session等待事件模拟
This event occurs when a session requests a buffer that is currently being read into the buffer cache by another session. Prior to release 10.1, waits for this event were grouped with the other reasons for waiting for buffers under the 'buffer busy wait' event客户系统最近这个事件表现的比较突出,简单的模拟了一下,这是一个和io相关的读等待事件,因此它也伴随着db file sequential read和db file sequential read一起出现[@more@]session 1:SQL> select distinct sid from v$mystat; SID----------
fast_start_parallel_rollback参数的一点测试
oracle从8i就引入的参数fast_start_parallel_rollback旨在解决由于session或者进程中断从而缩短回滚大事务所需要的时间问题,不过通过测试发现当fast_start_parallel_rollback=low时观察不到oracle启动多个paralle process,当fast_start_parallel_rollback=high时oracle确实启动了4×cpu_count个parallel process,但是几乎观察不到有多个process paralle来恢复事务,也许被恢复的事务还不够大、所需的时间还不够长,似乎不是;也许oracle认为使用smon一个进程恢复时间更快?[@more@]C:>sqlplus / as sysdbaSQL*Plus: Release 10.2.0.
proxy uesr的一点测试
有些时候我们可能需要以其他用户的身份登录db做一些事情(切换用户的身份),这个时候就需要知道其他用户的口令,如果不知道的话就无法实现,当然oracle中也有不太理想的办法来实现,从10。2开始,oracle提出了proxy user的概念可以很好的实现。[@more@]--简单的测试了一下,应该是10.2提出的agent user的概念SQL> create user test1 identified by test1;用户已创建。SQL> create user test2 identified by test2;用户已创建。SQL> grant connect to test1,test2;授权成功。SQL> alter user test2 grant connect through tes
有关参数cursor_sharing=similar的测试
这是一个很重要的参数,也是一个不太容易理解的参数:--下面是来自biti对该参数的测试和解释:http://www.wangchao.net.cn/bbsdetail_60551.html当列上存在histograms ,则每次是不同的值的时候都产生硬解析 ,若不存在 histograms,则不产生硬解析。换句话说,当表的字段被分析过存在histograms的时候,similar 的表现和exact一样,当表的字段没被分析,不存在histograms的时候,similar的表现和force一样。这样避免了一味的如force一样转换成变量形式,因为有histograms的情况下转换成变量之后就容易产生错误的执行计划,没有利用上统计信
受困于一个参数:session_cached_cursors
这个参数本身不难理解,但是和这个参赛相关的很多话题值得我们深思:1.cursor open之后oracle做了什么2.cursor close之后oracle做了什么,资源真的释放了?其实没有,ursor被关闭之后,无非是它占用的资源可以被重复使用了而已3.cursor被cache之后在uga中保存了什么4.session和library cache以及uga是如何关联的...要了解这些东西,需要对oracle的内存结构有清晰的了解...目前一团乱麻...[@more@]SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startupORACLE 例程已经启动。Total System Globa
使用sequence的cache特性时要注意的
我们在使用sequence时为了提升性能通常都会使用sequence的cache功能,但是潜在的危险就是实例crash或者由于shared pool碎片较多容易出现ora-04031错误时,此时我们都会想到alter system flush shared pool...flush之后cache的sequence值全部丢失从而造成序列不连续...[@more@]--事先创建一个序列SQL> select seq_test.nextval from dual;NEXTVAL----------1SQL> select seq_test.nextval from dual;NEXTVAL----------2SQL> select seq_test.nextval from dual;NEXTVAL----------3SQL> select seq_test.nextval from dual;NEXT