Oracle HowTo:如何判断Oracle数据库安装的操作系统
有朋友问到这样一个问题:如何远程判断Oracle数据库的安装平台. 我想到的一个方法是,通过查询v$version视图来得到: 1.Windows平台的输出 SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle9i...
View ArticleHow to maintain Oracle10g Recyclebin?
从Oracle10g开始,Oracle引入了flashback drop的新特性,这个新特性,允许你从当前数据库中恢复一个被drop了的对象。在执行drop操作时,现在Oracle不是真正删除它,而是将该对象自动将放入回收站。对于一个对象的删除,其实仅仅就是简单的重令名操作。...
View ArticleOracle HowTo:如何强制刷新Buffer Cache
很多时候,为了排除Cache对于测试的影响,我们常常需要手动刷新Buffer Cache,以促使Oracle重新执行物理访问。我曾经在使用 db_file_multiblock_read_count测试Oracle在不同系统中的IO能力一文中用到这个方法,在Itpub上也有朋友问到,今天整理一下并作简要说明。 在Oracle9i里,Oracle提供了一个内部事件,用以强制刷新Buffer...
View ArticleOracle HowTo: How to deal with Ora-600 4193 error
在解决2662错误之后,经常会出现Ora-00600 4193错误,经常可以在alert文件中看到的错误号类似: Fri Dec 16 22:37:27 2005Errors in file /opt/oracle/admin/conner/bdump/conner_smon_22817.trc:ORA-00604: error occurred at recursive SQL level...
View ArticleOracle HowTo:How to get Oracle SCN?
之前简单的介绍过一下如何获得当前数据库的SCN值,主要可以通过两种方式: 1.在Oracle9i及以上版本中 可以使用dbms_flashback.get_system_change_number来获得 SQL> select dbms_flashback.get_system_change_number from dual;...
View ArticleOracle HowTo:如何更改数据库的SCN?
很多时候,我们需要调整数据库系统的SCN值,有的是为了恢复的需要,如为了解决ORA-600 2662错误. 而以下修改纯属无聊: 1.通过oradebug修改SCN [oracle@jumper oracle]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Wed Dec 21 10:33:35 2005...
View ArticleOracle HowTo:如何获得数据库的DBID
在进行数据库恢复的过程中,很多时候我们需要知道Oracle数据库的DBID,通常有以下几种方法可以获得数据库的DBID. 1.查询v$database获得 由于DBID在控制文件和数据文件中都存在记录,所以如果能够mount数据库就可以查询v$database视图获得. SQL> alter database mount; Database altered. SQL> select...
View ArticleOracle HowTo:如何使用Leading提示改变表连接方式
在多表联合查询中,当使用Ordered提示改变SQL执行计划之后,通常我们很难再次控制结果集中进一步Join的顺序. 这时候我们可以使用Oracle提供的另外一个Hints: Leading 提示. 这个Hints在Oracle9i中的含义为: The LEADING hint causes Oracle to use the specified table as the first table...
View ArticleOracle HowTo:使用DBMS_UTILITY转换Block地址
很多时候,我们可以从Oracle的Trace文件中获得Block的DBA(Data Block Address),有时候需要对这个地址进行转换才能得到相应的Block地址。 有的trace文件中已经包含了地址转换,例如: Start dump data blocks tsn: 4 file#: 4 minblk 465 maxblk 465buffer tsn: 4 rdba:...
View ArticleOracle HowTo:查询Oracle各组件的版本信息
有朋友在ITPUB上提问,如何查询Oracle各组件的版本信息。 其实这个问题,最好的方法是用opatch工具,可以查询得到详细的安装组件版本。 这个可以参考我的网站链接: http://www.eygle.com/internal/Use.Opatch.apply.Interim.Patch.htm 这里想说说其他的几个视图。有朋友提到了v$version 和...
View ArticleUTL_INADDR包获取ip地址的内部原理
今天有朋友在MSN上问我如何获得已经连接用户的IP地址。 我们知道,通过SYS_CONTEXT函数可以获得这部分信息,当前用户的ip等信息可以通过如下命令轻易获取: SQL> select sys_context('userenv','host') from dual; SYS_CONTEXT('USERENV','HOST')...
View Article如何启动DataGuard的备用数据库
一大早来到公司,打开邮箱,发现收到了一堆的报警邮件,一个Standby数据库Down掉了。 登陆检查主库,警告日志记录了错误信息: *** 2006-10-30 07:32:10.614 kcrrfail: dest:2 err:12560 force:0 ORA-12560: TNS:protocol adapter error *** 2006-10-30 07:34:10.615 Error...
View Article如何通过DB link进行远程过程或函数调用
有朋友在留言板问:如何通过动态sql远程调用包里面的函数,并返回值。 我简单做了一个例子,实现以上要求. 首先进行适当授权: [oracle@jumper oracle]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Tue Nov 7 21:07:56 2006 Copyright (c) 1982,...
View Article如何更改监听器日志文件名称
今天一个数据库的监听器日志出了点问题,用set log_file命令重新定位一个日志文件得以解决。 发现以下两个命令很有用: LSNRCTL> set current_listener <listener name> LSNRCTL> set log_file <sid name>.log 使用set...
View Article如何在sqlldr中倒入多字符分隔符文件
今天有朋友询问: 我们...应用系统很多,它们之间要交换很多数据,目前是以文本方式交换,问题是文本的分隔符号是(|+|),为三个字符,主要是避免数据的混淆..... 这样的文件能够用sqlldr导入么? 我测试了一下,试验证明是可以的,sqlldr支持多字符分隔符文件导入。 首先看我的数据文件和控制文件: [oracle@jumper tmp]$ cat data.ctl load data...
View Article