<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6944603</id><updated>2011-04-22T10:59:28.650+08:00</updated><title type='text'>firebird's oracle blog</title><subtitle type='html'>firebird's oracle blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6944603.post-9142615829884043831</id><published>2009-04-29T13:33:00.003+08:00</published><updated>2009-04-29T13:40:04.491+08:00</updated><title type='text'>用UNIX的kill命令来终止Oracle的过程</title><content type='html'>正如你所知，有时候我们有必要终止所有的Oracle过程（process）或者指定的一组Oracle过程。当数据库“锁定”而你无法进入Server Manager来“温柔”的终止数据库时，就可以用UNIX中的kill命令来终止所有的Oracle过程——这是kill命令的常见用途之一。&lt;br /&gt;        当你需要终止一个UNIX服务器上的一个Oracle实例（instance）时，执行下面的步骤：&lt;br /&gt;        1、 终止与ORACLE_SID有关的所有Oracle过程。&lt;br /&gt;        2、用ipcs –pmb命令来识别所有占用的RAM内存片断。&lt;br /&gt;        3、用ipcrm -m 命令来从UNIX中释放占用的RAM内存。&lt;br /&gt;        （针对Non-AIX：用ipcs -sa命令来显示占用标记，用ipcrm –s命令来释放该实例的占用标记。）&lt;br /&gt;        创建单一命令来终止与挂起（hung）的数据库实例有关的Oracle过程是很简单的。在下面的例子之中，我们用ps指令来识别Oracle过程，然后用 awk程序来获取Oracle过程的过程ID（process ID，PID）。然后，我们把过程ID输入到UNIX的kill命令之中。&lt;br /&gt;&lt;br /&gt;         root&gt; ps -efgrep ora_ \       &lt;br /&gt;                   grep -v grepawk '{print $2}'xargs -i kill -9 {}&lt;br /&gt;&lt;br /&gt;        在终止所有Oracle过程之后，我们可以用ipcs –pmb指令来检查占用的内存并清除数据库所占用的内存。我们首先显示出数据库服务器上所有占用内存：&lt;br /&gt;&lt;br /&gt;         root&gt; ipcs -pmb       &lt;br /&gt;                   IPC status from /dev/kmem as of Mon Sep 10 16:45:16 2001       &lt;br /&gt;                   T ID KEY MODE OWNER GROUP SEGSZ CPID LPID       &lt;br /&gt;                   Shared Memory:       &lt;br /&gt;                   m 24064 0x4cb0be18 --rw-r----- oracle dba 28975104 1836 23847       &lt;br /&gt;                   m 1 0x4e040002 --rw-rw-rw- root root 31008 572 572       &lt;br /&gt;                   m 2 0x411ca945 --rw-rw-rw- root root 8192 572 584       &lt;br /&gt;                   m 4611 0x0c6629c9 --rw-r----- root root 7216716 1346 23981       &lt;br /&gt;                   m 4 0x06347849 --rw-rw-rw- root root 77384 1346 1361&lt;br /&gt;&lt;br /&gt;        在这里，我们看到Oracle只拥有一个ID=24064的RAM内存。下面的命令将会释放这个内存片断：&lt;br /&gt;         root&gt; ipcrm -m 24064&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-9142615829884043831?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/9142615829884043831/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=9142615829884043831' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/9142615829884043831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/9142615829884043831'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2009/04/unixkilloracle.html' title='用UNIX的kill命令来终止Oracle的过程'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-2501741112694121534</id><published>2008-07-13T20:31:00.003+08:00</published><updated>2008-07-13T20:37:35.618+08:00</updated><title type='text'>I'm Back.</title><content type='html'>不知道怎么想起来要打开自己的blog看看，因为以前blogspot.com这个地址一直是封的，没有想到现在解封了，意外，之所以打开自己的blog看看，想想还是那个技术梦在作怪吧，现在看来是越来越难完成我的技术之路的梦想。&lt;br /&gt;看到blog，就想到了当初创建这个博客的那段时光，时间真快。&lt;br /&gt;最近经历了很多事，人成熟了些，想想生活最重要的是什么，结论是一家人在一起，快乐的生活，这是最重要的。&lt;br /&gt;在这里祝我自己好运，明天是个新的开始。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-2501741112694121534?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/2501741112694121534/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=2501741112694121534' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/2501741112694121534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/2501741112694121534'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2008/07/im-back.html' title='I&apos;m Back.'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-7511289125343069662</id><published>2007-03-31T03:43:00.000+08:00</published><updated>2007-03-31T03:55:17.619+08:00</updated><title type='text'>win2003下oracle 9.2.0.8 用dbca建库时出现ora-29807错误</title><content type='html'>很少在windows下部署oracle的生产库，今天在win2003下oracle 9.2.0.8 用dbca建库时出现ora-29807错误记得这个bug很早就出现过，没有想到在9.2.0.8下还没有修正，特地又去metalink上查了一下，解决方法如下，记录在此备忘：&lt;br /&gt;&lt;br /&gt;Problem&lt;br /&gt;~~~~~~~&lt;br /&gt;&lt;br /&gt;While using Database Creation Assistant (DBCA) to create a database (custom or template) after patchset 9.2.0.2.0 or 9.2.0.3.0 has been applied, ORA-29807 'specified operator does not exist' is encountered during 'create data dictionary views.'&lt;br /&gt;&lt;br /&gt;It has been determined that this error is being raised while DBCA is running the script prvtxml.plb.&lt;br /&gt;&lt;br /&gt;Prvtxml.plb is a script which creates a particular package body. This script is called from the catxml.sql script - which in turn is called by the catproc.sql script - run automatically when creating a database using DBCA.&lt;br /&gt;&lt;br /&gt;Workaround&lt;br /&gt;~~~~~~~~~~&lt;br /&gt;This workaround can be implemented either before invoking the DBCA or after the ORA-29807 has been encountered.&lt;br /&gt;&lt;br /&gt;1. Go to the script catxml.sql and comment out the line which will run prvtxml.plb&lt;br /&gt;2a. If the script has been edited before invoking DBCA, it is now safe to proceed with invoking DBCA&lt;br /&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;br /&gt;2b. If the script has been edited after the ORA-29807 is encountered, go back to your DBCA screen and click 'Ignore'&lt;br /&gt;&lt;br /&gt;3. The database creation using DBCA should now proceed without additional errors.&lt;br /&gt;&lt;br /&gt;4. Once DBCA has completed database creation, remember to run the 'prvtxml.plb' script independently, as the user SYS.&lt;br /&gt;&lt;br /&gt;5. Check whether there are invalid objects:select * from dba_objects where owner = 'SYS' and status = 'INVALID' ;If so, run the 'utlrp.sql' script to validate those objects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-7511289125343069662?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/7511289125343069662/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=7511289125343069662' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/7511289125343069662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/7511289125343069662'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2007/03/win2003oracle-9208-dbcaora-29807.html' title='win2003下oracle 9.2.0.8 用dbca建库时出现ora-29807错误'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-4515831422241488531</id><published>2007-01-28T15:58:00.000+08:00</published><updated>2007-01-28T16:26:00.842+08:00</updated><title type='text'>解决winxp(sp2)下因防火墙导致的oracle客户端无法连接数据库问题的方法</title><content type='html'>解决步骤如下：&lt;br /&gt;1、在winxp的防火墙上打开1521端口（默认的监听端口，如果你更改了listener的默认监听端口，打开相应的端口即可）；&lt;br /&gt;2、在系统环境变量中设置 USE_SHARED_SOCKET = TRUE 或者 设置到注册表中以下位置&lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME&lt;#&gt; (Release 8i or higher)&lt;br /&gt;&lt;br /&gt;（利用了Winsock 2的端口共享特性）&lt;br /&gt;&lt;br /&gt;以上设置需要重起机器;另外，这样设置后停止listener不会中断已有的session，但是重起的时候会强制断开已有的session。&lt;br /&gt;&lt;br /&gt;原话：The listener can be stopped without interupting the connected sessions, but itcannot be restarted without forcibly disconnecting connected sessions first.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;更进一步的信息可以参考metalink:124140.1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-4515831422241488531?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/4515831422241488531/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=4515831422241488531' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/4515831422241488531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/4515831422241488531'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2007/01/winxpsp2oracle.html' title='解决winxp(sp2)下因防火墙导致的oracle客户端无法连接数据库问题的方法'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-716474276961769556</id><published>2007-01-27T12:54:00.000+08:00</published><updated>2007-01-27T13:05:23.031+08:00</updated><title type='text'>理解Oracle9i中的监听动态注册</title><content type='html'>在Oracle9i中,使用命令lsnrctl status可以看到如下例子： Service "lrdb" has 2 instance(s). Instance "lrdb", status UNKNOWN, has 1 handler(s) for this service... Instance "lrdb", status READY, has 1 handler(s) for this service... 这是Oracle9i监听器行为的不同之处的第一个线索，因为Instance "lrdb"出现了两次。出现额外条目是因为，数据库在启动时通过一个被称为动态注册的进程在监听器中注册信息。相应地，如果数据库通过listener.ora 文件中的信息在监听器中注册数据库着称为静态注册。在上面的输出中，状态UNKNOWN值的时静态注册的设置。这是监听器用来表明它不知道关于该实例的任何信息的方式，只有当客户发出连接请求时，它才检查该实例是否存在。 动态注册的数据库通过状态信息中的状态READY或状态BLOCKED（对于一个备用数据库）来指明。不管何时数据库数据库关闭，动态注册的数据库都会动态地从监听器注销，而与之相关的信息将从状态列表中消失。这样，不管数据库是在运行还是已经关闭，监听器总是知道它的状态。该信息将被用于连接请求的回退（fallback）和负载平衡。自我注册功能是不能被关闭的（至少在任何可见的文档中是这样），由于该功能带来的好处，因此不能关闭它也并不是件坏事。当您可以免费获得数据库的自我注册功能时，为什么还需要listener.ora文件中的静态注册条目呢？您对此感到疑惑，是吗?答案是：除了几种例外情况外，您根本不需要执行静态注册。这样的结果是，只要使用默认的监听器端口1521，您就不再需要listener.ora文件。然而，当（且仅当）要把日志文件和跟踪信息保存到标准目录中时，您或许仍然会使用listener.ora文件。 下面是数据库的自我注册过程（假设在数据库启动之前，监听器已经启动并在正常运行）。无论何时启动一个数据库，默认地都有两条信息注册到监听器中：实例和服务。 注册到监听器中的实例值从init.ora文件中的instance_name参数取得。如果该参数没有设定值，那么它将取init.ora 文件中的db_name的值。在只有单个实例运行的情况下，您可以不必设置该参数，但最好将其设置为db_name的值，以充分利用动态注册功能。然后，如果在RAC中配置，您必须将集群中每个实例的instance_name参数设置为一个唯一的值。 注册到监听器中的服务值从init.ora文件中的参数service_names取得。如果该参数没有设定值，数据库将拼接 init.ora文件中的db_name和db_domain的值来注册自己。如果选择提供service_names值，您可以使用完全限定的名称（比如lrdb.oracle.com)或缩写的名称（比如lrdb）。如果选择缩写的名称并设置了db_domain参数，注册到监听器中的服务将是service_name值和db_domain值的拼接。例如下面的设置将导致服务lrdb.oracle.com 被注册到监听器中： db_domain=oracle.com service_name=lrdb 可选择的，您可以在service_names参数中指定多个服务值，值之间用逗号格开；这对于共享服务器配置是很有用的。如果需要执行连接时故障转移或负载均衡，或者想要在RAC中配置在实例之间透明地分布连接，那么使用service_names 参数将是必要的。为启用这些功能，您只需要将每个实例的数据库参数文件中的service_names设置为同一个值，并在客户端连接请求的service_name设置中引用该值。 为初始化参数service_names和instance_name设置显式的值是个很好的实践，尽管如果您没有设置它们，Oracle也会为动态注册而生成默认值（基于db_name和db_main）。这样做的原因是，如果监听器在数据库启动之后重新启动，其动态注册行为将会有一些微妙的区别.如果监听器在数据库运行之后重新启动，你们仅当您在init.ora文件中显式地设置了service_names和instance_name的值时，每个数据库的PMON进程才会在很短的时间之后自动注册数据库。如果没有显式设置service_names和instance_name的值，那么仅当数据库在监听器运行之后启动时，动态注册才会发生；在这种情况下，如果监听器后来发生了重启，动态注册信息将会丢失。 显然，最后在启动任何数据库之前启动服务器上的监听器，并完全避免监听器的重启。另外，您还可以在SQL*PLUS中使用ALTER SYSTEM REGISTER命令，在数据库打开时的任何时候，手工地在监听器中注册服务值。这个命令对于替换因监听器重启而丢失地服务值很有用，并且它所注册地值与在数据库启动时由动态注册所设置的值完全一样。 总而言之，Oracle9i通过listener.ora中的GLOBAL_DBNAME向外提供静态服务，通过PMON读初始化参数service_names、 instance_name向外提供动态（真实在运行的）服务。举例如下： listener.ora文件内容 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /oracle/product/9.2.0.4) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = lrdb) (ORACLE_HOME = /oracle/product/9.2.0.4) (SID_NAME = lrdb) ) (SID_DESC = (GLOBAL_DBNAME = gsid) (ORACLE_HOME = /oracle/product/9.2.0.4) (SID_NAME = lrdb) ) ) 该文件使得这个单实例的数据库lrdb，向外提供了两个服务：lrdb和gsid 初始化参数设置：instance_name=lrdb service_name=lrdb,gsid 所以动态注册时也会对外提供两个服务：lrdb和gsid 最后通过lsnrctl status看到的情况就是： Service "gsid" has 2 instance(s). Instance "lrdb", status UNKNOWN, has 1 handler(s) for this service... Instance "lrdb", status READY, has 1 handler(s) for this service... Service "lrdb" has 2 instance(s). Instance "lrdb", status UNKNOWN, has 1 handler(s) for this service... Instance "lrdb", status READY, has 1 handler(s) for this service... 对外提供的服务gsid和lrdb都有两个实例（一个静态注册一个动态注册），状态都分别是UNKNOWN和READY。 对于客户端来说，它不用关心数据库的名字、实例名到底是什么，它只需要知道数据库对外提供的服务名就行了，这个名字可能和实例名一样，也可能不一样。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-716474276961769556?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/716474276961769556/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=716474276961769556' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/716474276961769556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/716474276961769556'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2007/01/oracle9i.html' title='理解Oracle9i中的监听动态注册'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-511597562817591618</id><published>2006-10-13T12:33:00.000+08:00</published><updated>2006-10-13T12:48:22.638+08:00</updated><title type='text'>db_block_checksum &amp; db_block_checking</title><content type='html'>首先看两个参数的定义：&lt;br /&gt;&lt;a name="REFRN10030"&gt;&lt;strong&gt;DB_BLOCK_CHECKSUM&lt;/strong&gt;&lt;/a&gt;&lt;a name="1037620"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a name="1037605"&gt;&lt;/a&gt;&lt;br /&gt;DB_BLOCK_CHECKSUM determines whether DBWn and the direct loader will calculate a checksum (a number calculated from all the bytes stored in the block) and store it in the cache header of every data block when writing it to disk. Checksums are verified when a block is read-only if this parameter is true and the last write of the block stored a checksum. In addition, Oracle gives every log block a checksum before writing it to the current log.&lt;br /&gt;&lt;a name="1015884"&gt;&lt;/a&gt;&lt;br /&gt;If this parameter is set to false, DBWn calculates checksums only for the SYSTEM tablespace, but not for user tablespaces.&lt;br /&gt;&lt;a name="1015885"&gt;&lt;/a&gt;&lt;br /&gt;Checksums allow Oracle to detect corruption caused by underlying disks, storage systems, or I/O systems. Turning on this feature typically causes only an additional 1% to 2% overhead. Therefore, Oracle Corporation recommends that you set DB_BLOCK_CHECKSUM to true.&lt;br /&gt;&lt;br /&gt;&lt;a name="REFRN10029"&gt;&lt;strong&gt;DB_BLOCK_CHECKING&lt;/strong&gt;&lt;/a&gt;&lt;a name="1037597"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a name="1037582"&gt;&lt;/a&gt;&lt;br /&gt;DB_BLOCK_CHECKING controls whether Oracle performs block checking for data blocks. When this parameter is set to true, Oracle performs block checking for all data blocks. When it is set to false, Oracle does not perform block checking for blocks in the user tablespaces. However, block checking for the SYSTEM tablespace is always turned on.&lt;br /&gt;&lt;a name="1015855"&gt;&lt;/a&gt;&lt;br /&gt;Oracle checks a block by going through the data on the block, making sure it is self-consistent. Block checking can often prevent memory and data corruption. Block checking typically causes 1% to 10% overhead, depending on workload. The more updates or inserts in a workload, the more expensive it is to turn on block checking. You should set DB_BLOCK_CHECKING to true if the performance overhead is acceptable.&lt;br /&gt;&lt;br /&gt;这两个参数的含义经常让人混淆，虽然都是对block进行检查。&lt;br /&gt;db_block_checksum 是在将数据块写到数据文件的时候对block内数据做一个校验写在块头，当读入时候重新计算校验和写出时候的校验对比，如果不同则认为是块损坏。这通常应该是由于脱离oracle以外在os或者硬件中出现了损坏，如果设置为false则只对系统表空间有效。从8i开始设置为true的时候也同时对log block进行校验。&lt;br /&gt;&lt;br /&gt;db_block_checking 是当block发生任何变化的时候进行逻辑上的完整性和正确性检查，这在内存中进行，当发现错误就立即回退，设置为false则只对系统表空间有效。&lt;br /&gt;&lt;br /&gt;这意味着，如果db_block_checking = false ,非系统表空间中数据在逻辑上可能已经损坏，但是 db_block_checksum 却是无法检查出来的，原样写到磁盘原样读到内存，因为它只校验块在写出后和读入之间是否发生变化而不检查写出前是否存在 逻辑上的正确。&lt;br /&gt;&lt;br /&gt;比如有时索引块损坏，造成通过索引无法获得数据，但是读索引块的时候并没有出1578错误，可能就是这个原因。&lt;br /&gt;&lt;br /&gt;关于这两个参数，也可以参考tom的解释：&lt;br /&gt;&lt;a href="http://asktom.oracle.com/pls/ask/f?p=4950:8:17926674857995971206::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:1094433279412"&gt;http://asktom.oracle.com/pls/ask/f?p=4950:8:17926674857995971206::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:1094433279412&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-511597562817591618?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/511597562817591618/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=511597562817591618' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/511597562817591618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/511597562817591618'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2006/10/dbblockchecksum-dbblockchecking.html' title='db_block_checksum &amp; db_block_checking'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-8296718237588381515</id><published>2006-09-18T23:54:00.000+08:00</published><updated>2006-09-19T00:08:03.306+08:00</updated><title type='text'>oracle关于锁问题的一个bug</title><content type='html'>关于oracle锁问题的阐述，有两篇文章非常值得一看：&lt;br /&gt;1、&lt;a href="http://www.itpub.net/showthread.php?threadid=202492"&gt;Oracle多粒度封锁机制研究&lt;/a&gt;；&lt;br /&gt;2、&lt;a href="http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/dm-0512niuxzh/"&gt;DB2和 Oracle的并发控制（锁）比较&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;我最近遇到的问题是：&lt;br /&gt;selelct ... for update 获得的是 &lt;strong&gt;row exclusive lock&lt;/strong&gt;,按照&lt;a href="http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96524/c21cnsis.htm#2841"&gt;官方文档&lt;/a&gt;因该获得&lt;strong&gt;row share&lt;/strong&gt;。&lt;br /&gt;（测试的版本是oracle 9.2.0.8,winxp,row_locking 等于always）&lt;br /&gt;&lt;br /&gt;后经过证实这是oracle的一个bug：4115353，是在修复bug:3646162时引入的，这个问题困惑了我好几天，特记录在此备忘。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-8296718237588381515?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/8296718237588381515/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=8296718237588381515' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/8296718237588381515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/8296718237588381515'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2006/09/oraclebug.html' title='oracle关于锁问题的一个bug'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-123985794668724729</id><published>2006-09-13T17:41:00.000+08:00</published><updated>2006-09-13T17:51:18.187+08:00</updated><title type='text'>(20060913)今日学习</title><content type='html'>1、&lt;a href="http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96533/optimops.htm#39473"&gt;join methods&lt;/a&gt;&lt;br /&gt;2、&lt;a href="http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96624/08_subs.htm#853"&gt;Positional Versus Named Notation for Subprogram Parameters&lt;/a&gt; 及其&lt;a href="http://groups.google.com/group/comp.databases.oracle.server/browse_frm/thread/cb05a8214c722054"&gt;限制&lt;/a&gt; (&lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_4008.htm"&gt;官方&lt;/a&gt;);&lt;br /&gt;(只是针对函数，sqlplus中用execute执行存储过程可以使用Named Notation.)&lt;br /&gt;3、dbms_plan工具的用法:&lt;br /&gt;(1) itpub: &lt;a href="http://www.itpub.net/showthread.php?threadid=304412"&gt;使用dbms_xplan工具查看执行计划&lt;/a&gt;;&lt;br /&gt;(2) eygle: &lt;a href="http://www.eygle.com/archives/2005/09/oracle10gr2_aut.html"&gt;Oracle10gR2 autotrace function was changed and enhanced&lt;/a&gt; ;&lt;br /&gt;(3) builder.com.cn: &lt;a href="http://www.zdnet.com.cn/developer/database/story/0,3800066906,39449687,00.htm"&gt;用Oracle的 DBMS_XPLAN函数轻松格式化EXPLAIN PLAN结果&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-123985794668724729?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/123985794668724729/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=123985794668724729' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/123985794668724729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/123985794668724729'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2006/09/1join-methods-2-positional-versus-named.html' title='(20060913)今日学习'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-5110510629887093956</id><published>2006-09-13T00:00:00.000+08:00</published><updated>2006-09-13T00:30:39.246+08:00</updated><title type='text'>关于oracle7的一点资料</title><content type='html'>这一周多时间研究了一下oracle7,发现oracle从7到8、8i、9i、10g，在内存管理、存储等等方面确实发生了很大的变化；我开始接触oracle是在99年，8.0.4的版本，买的盗版光盘，装在windowns上，打开sqlplus，就是进不去，不知道用户名和密码，真是着急啊！相信不少人有同样的经历，当我知道oracle安装后有两个默认的用户(system/manager、sys/change_on_install)的时候，oracle才向我敞开了大门。&lt;br /&gt;因为oracle7的版本实在是有点老了，找到安装的介质颇费了一番周折，我把相关的url列在下面：&lt;br /&gt;1、&lt;a href="ftp://166.111.18.66/Special/Database/DatabaseServer/Oracle/Oracle7/ORA734/Ora734.rar"&gt;oracle734 personal for winnt&lt;/a&gt;&lt;br /&gt;2、&lt;a href="ftp://166.111.18.66/Special/Database/DatabaseServer/Oracle/Oracle7/oracle%207.3%20for%20sco/oracle%207%20for%20sco.iso"&gt;oracle734 server from sco unix&lt;/a&gt;&lt;br /&gt;3、&lt;a href="http://lib.verycd.com/2004/12/27/0000032525.html"&gt;sco unix 5.0.7&lt;/a&gt;&lt;br /&gt;4、&lt;a href="http://lib.verycd.com/2004/12/27/0000032525.html"&gt;oracle734 for sco unix安装文档&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;关于安装我就不详细写了，网上有很多现成的文档，我在windows 2000/xp、sco unix 5.0.7 (on vmware)上都安装成功了，需要说明的是在windows 2000/xp上安装oracle7需要先安装Oracle Installer v. 3.3.1.1.0C，然后再用这个版本的Installer安装oracle7.&lt;br /&gt;&lt;br /&gt;可以在metalink上下载Oracle Installer v. 3.3.1.1.0C (patch 826393).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-5110510629887093956?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/5110510629887093956/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=5110510629887093956' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/5110510629887093956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/5110510629887093956'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2006/09/oracle7.html' title='关于oracle7的一点资料'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-5687496335017344544</id><published>2006-08-31T00:18:00.000+08:00</published><updated>2006-08-31T00:31:52.820+08:00</updated><title type='text'>在oracle9i中监控索引的使用</title><content type='html'>索引可以加快查询的速度，但索引会占用许多存储空间，在插入和删除行的时候，索引还会引入额外的开销，因此确保索引得到有效利用是我们很关注的一个问题。在Oracle9i之前，要知道一个索引是否被使用是困难的，而Oracle 9i中提供了一个有效的监控方法:ALTER INDEX MONITORING USAGE。&lt;br /&gt;&lt;br /&gt;但是使用这个特性时需要注意：&lt;br /&gt;"To execute the MONITORING USAGE clause, the index must be in your own schema."&lt;br /&gt;&lt;br /&gt;具体说明请参考&lt;a href="http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_18a.htm"&gt;online document&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;另外，有一篇很好的文章：&lt;a href="http://echo.sharera.com/blog/BlogTopic/5630.htm"&gt;http://echo.sharera.com/blog/BlogTopic/5630.htm&lt;/a&gt;,不过作者的脚本有一些错误:V$ALL_OBJECT_USAGE因该替换为V\$ALL_OBJECT_USAGE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-5687496335017344544?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/5687496335017344544/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=5687496335017344544' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/5687496335017344544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/5687496335017344544'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2006/08/oracle9i.html' title='在oracle9i中监控索引的使用'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-6760096653997923285</id><published>2006-08-28T21:06:00.000+08:00</published><updated>2006-08-28T21:12:50.878+08:00</updated><title type='text'>sqlplus 中set autotrace on 出现sp2-0618错误的解决过程</title><content type='html'>今天在sqlplus中设置set autotrace 时出错：&lt;br /&gt;SQL&gt; set autotrace on&lt;br /&gt;SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled&lt;br /&gt;SP2-0611: Error enabling STATISTICS report&lt;br /&gt;&lt;br /&gt;解决过程请参考asktom文章：&lt;a href="http://asktom.oracle.com/~tkyte/article1/autotrace.html"&gt;http://asktom.oracle.com/~tkyte/article1/autotrace.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-6760096653997923285?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/6760096653997923285/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=6760096653997923285' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/6760096653997923285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/6760096653997923285'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2006/08/sqlplus-set-autotrace-on-sp2-0618.html' title='sqlplus 中set autotrace on 出现sp2-0618错误的解决过程'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-4223006844261224385</id><published>2006-08-27T18:12:00.000+08:00</published><updated>2006-08-27T18:18:06.576+08:00</updated><title type='text'>WIN: Manually Removing all Oracle Components on Microsoft Windows Platforms</title><content type='html'>oracle生产库运行在windows下的情况较少，昨天解决安装问题时，看到metalink一篇文章，讲如何在windows下彻底删除oracle，贴在这里，方便大家查阅。&lt;br /&gt;&lt;br /&gt;(Metalink Notes:124353.1)&lt;br /&gt;&lt;br /&gt;Title: Manually Removing all Oracle Components on Microsoft Windows Platforms&lt;br /&gt;&lt;br /&gt;PURPOSE&lt;br /&gt;-------&lt;br /&gt;This article describes the procedure how to manually perform the actions to&lt;br /&gt;create a "clean machine" on Microsoft Windows 95/98/NT/2000/XP and how to &lt;br /&gt;manually remove all Oracle components (e.g.: oracle RDBMS database server, &lt;br /&gt;IAS, OEM, client installations, etc) and services from your computer.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;SCOPE &amp; APPLICATION&lt;br /&gt;-------------------&lt;br /&gt;This article is intended for DBA's on the Microsoft Windows platform.&lt;br /&gt;&lt;br /&gt;WARNING: &lt;br /&gt;&lt;br /&gt;1. Remove all Oracle components from your computer only as a last resort, &lt;br /&gt;   and only if you want to remove ALL Oracle components from your system.&lt;br /&gt;&lt;br /&gt;2. These instructions remove all Oracle components, services, and registry &lt;br /&gt;   entries from your computer. In addition, any database files in the &lt;br /&gt;   subdirectories under ORACLE_BASE\ORADATA\ are also removed.&lt;br /&gt;&lt;br /&gt;3. These procedures will also remove Oracle network configuration files, &lt;br /&gt;   user written scripts and any other user generated files that may be stored&lt;br /&gt;   in Oracle_Base directories.&lt;br /&gt;&lt;br /&gt;4. Exercise extreme care when removing registry entries.  Removing incorrect&lt;br /&gt;   entries can severely compromise your computer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;MANUALLY REMOVING ALL ORACLE COMPONENTS AND SERVICES FROM YOUR COMPUTER&lt;br /&gt;-----------------------------------------------------------------------&lt;br /&gt;Section A (steps 1-6) describes the removal of all Oracle components on &lt;br /&gt;Windows NT,2000 and XP.&lt;br /&gt;Section B (steps 1-4) describes the removal of all Oracle components on&lt;br /&gt;Windows 95 and Windows 98.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A. Removing Components on Windows NT/2000/XP.&lt;br /&gt;---------------------------------------------&lt;br /&gt;To remove all Oracle components from a computer on Windows NT/2000/XP:&lt;br /&gt;&lt;br /&gt;1.   Check privileges:&lt;br /&gt;     -----------------&lt;br /&gt;1.a. Ensure you are logged in as a user with Administrator privileges. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.   Stop all Oracle services (if any are running):&lt;br /&gt;     ----------------------------------------------&lt;br /&gt;2.a. NT: Choose Start &gt; Settings &gt; Control Panel &gt; Services. &lt;br /&gt;     2000,XP: Right click My Computer &gt; Manage &gt; Services and Applications &gt; &lt;br /&gt;           &gt; Services&lt;br /&gt; &lt;br /&gt;2.b. If any Oracle services (their names begin with Oracle) exist and have &lt;br /&gt;     the status Started, select the service and click Stop. &lt;br /&gt;&lt;br /&gt;2.c. Click Close to exit the Services window. &lt;br /&gt;&lt;br /&gt;2.d. Close the Control Panel/Computer Management window.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.   Remove the entries in the Windows registry:&lt;br /&gt;     -------------------------------------------&lt;br /&gt;3.a. Start the registry editor: &lt;br /&gt;     Choose Start &gt; Run &gt; regedit &lt;br /&gt;&lt;br /&gt;     Note: On Windows NT you can use regedt32 instead. The searching &lt;br /&gt;           capabilities of regedt32 is limited compared to regedit. It will be&lt;br /&gt;           needed to be able to edit 32-bit entries in the registry. Since we &lt;br /&gt;           are not going to update any 32-bit entry it is not needed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.b. Go to HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE &lt;br /&gt;     Note the value of the key INST_LOC, this is the location of the &lt;br /&gt;     Oracle Universal Installer (OUI).  The default location is &lt;br /&gt;     C:\Program Files\Oracle\Inventory.  If this value is different, make &lt;br /&gt;     note of it, so we can delete these files later.&lt;br /&gt;     Delete this ORACLE key. &lt;br /&gt;&lt;br /&gt;3.c. Go to HKEY_LOCAL_MACHINE\SOFTWARE\ODBC and expand all subkeys and&lt;br /&gt;     remove all keys under here which are related with the&lt;br /&gt;     "Oracle ODBC Driver"&lt;br /&gt;&lt;br /&gt;3.d. Go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services and remove &lt;br /&gt;     all keys under here that begin with ORACLE or ORAWEB. &lt;br /&gt;&lt;br /&gt;3.e. Go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\...&lt;br /&gt;     ...\Application  and remove all keys under here that begin with ORACLE.&lt;br /&gt;&lt;br /&gt;3.f. Go to HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\...&lt;br /&gt;     ...\Uninstall  and remove any entries related to Oracle.  &lt;br /&gt;&lt;br /&gt;3.g. Go to HKEY_CLASSES_ROOT, remove all keys that begin with Ora or ORCL&lt;br /&gt;     (e.g. Oracle..., ORADC..., ORAMMC..., OraOLE..., OraPerf... and ORCL...).&lt;br /&gt;&lt;br /&gt;3.h. Go to HKEY_LOCAL_MACHINE\SOFTWARE\Classes, remove all keys that begin &lt;br /&gt;     with Ora or ORCL&lt;br /&gt;     (e.g. Oracle..., ORADC..., ORAMMC..., OraOLE..., OraPerf... and ORCL...).&lt;br /&gt;&lt;br /&gt;3.i. Go to HKEY_CURRENT_USER\Software\Oracle, delete this ORACLE key.&lt;br /&gt;&lt;br /&gt;3.j. Go to HKEY_USERS\…\Software\Oracle, delete this ORACLE key.&lt;br /&gt;&lt;br /&gt;3.k. Close the registry. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.   Clean up the environment settings:&lt;br /&gt;     ----------------------------------&lt;br /&gt;4.a. NT: Choose Start &gt; Settings &gt; Control Panel &gt; System &gt; Environment tab&lt;br /&gt;     2000,XP:  Choose Start &gt; Settings &gt; Control Panel &gt; System &gt; &lt;br /&gt;     Advanced tab &gt; Environment variables.&lt;br /&gt;  &lt;br /&gt;4.b. At "System Variables" click on the variable PATH in order to modify &lt;br /&gt;     the value. For example, you may see a path similar to this one: &lt;br /&gt;     C:\ORACLE\ORA81\BIN;C:\PROGRAM FILES\ORACLE\JRE\1.1.7\BIN &lt;br /&gt;&lt;br /&gt;4.c. If an %ORACLE_HOME% was installed, remove this %ORACLE_HOME%\BIN path.&lt;br /&gt;&lt;br /&gt;4.d. If JRE was installed by Oracle, remove the JRE path.&lt;br /&gt;&lt;br /&gt;4.e. If there is a CLASSPATH variable under "System Variables", first make &lt;br /&gt;     note of the path defined, then delete it.  This variable can be added &lt;br /&gt;     back at a later date if needed.&lt;br /&gt;&lt;br /&gt;4.f. Check if there are any other Oracle variables set in "System Variables", &lt;br /&gt;     ORACLE_HOME, ORACLE_SID, TNS_ADMIN, JSERV or WV_GATEWAY_CFG.  If these &lt;br /&gt;     exist, delete them also.&lt;br /&gt;&lt;br /&gt;4.g. Click on APPLY and OK.&lt;br /&gt;&lt;br /&gt;4.h. Close the Control Panel window.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5.   Delete the software and icons:&lt;br /&gt;     ------------------------------&lt;br /&gt;5.a. NT: Choose Start &gt; Programs &gt; Windows NT Explorer.&lt;br /&gt;     2000,XP:  Choose Start &gt; Programs &gt; Accessories &gt; Windows Explorer.&lt;br /&gt;&lt;br /&gt;5.b. NT: Go to %SystemDrive%\WINNT\PROFILES\ALL USERS\START MENU\PROGRAMS&lt;br /&gt;     2000,XP: Go to %SystemDrive%\DOCUMENTS AND SETTINGS\ALL USERS\...&lt;br /&gt;           ...\START MENU\PROGRAMS&lt;br /&gt;       Note 1: These locations depend on whether OS was upgraded from NT, or &lt;br /&gt;               this was a fresh install of 2000/XP.&lt;br /&gt;       Note 2: To locate your System Drive, type in DOS-box: echo %SystemDrive%&lt;br /&gt;&lt;br /&gt;     and delete the following icons: &lt;br /&gt;     - Oracle Installation Products &lt;br /&gt;     - PRODUCT_NAME - HOME_NAME  e.g.&lt;br /&gt;          Oracle for Windows NT - Dev6i&lt;br /&gt;          Oracle Reports 6i - Dev6i&lt;br /&gt;          Oracle Olap Client 2.2 - Dev6i&lt;br /&gt;          Oracle9i Lite&lt;br /&gt;          Oracle - OraHome92&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5.c. Go to %SystemDrive%\Program Files\Oracle or the location of INST_LOC as&lt;br /&gt;     noted earlier in step 3.b. and delete this directory. &lt;br /&gt;     Note: In order to successfully delete all files, you may have to reboot&lt;br /&gt;           your computer first, in order to clear Operating System locks &lt;br /&gt;           on those files.&lt;br /&gt;&lt;br /&gt;5.d. Go to the temporary directory and delete all files and directories in &lt;br /&gt;     here (see note in 5.c.).&lt;br /&gt;     NT: %SystemDrive%\Temp&lt;br /&gt;     2000,XP: &lt;br /&gt;       %SystemDrive%\Documents and Settings\&lt;username&gt;\Local Settings\Temp\ &lt;br /&gt;&lt;br /&gt;5.e. Go to the drive where the Oracle software is installed on your machine&lt;br /&gt;     and delete all ORACLE_BASE directories on your hard drive (see note in &lt;br /&gt;     5.c.).&lt;br /&gt;&lt;br /&gt;5.f. Close the Windows Explorer / Windows NT Explorer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6.   Finish the removal:&lt;br /&gt;     -------------------&lt;br /&gt;6.a. Empty the recycle bin&lt;br /&gt;     Right click on recycle bin &gt; Empty Recycle Bin.&lt;br /&gt;&lt;br /&gt;6.b. Reboot your computer.&lt;br /&gt;&lt;br /&gt;6.c. Optionally: If you are on Windows 2000 or XP run the System Defragmenter &lt;br /&gt;     utility:&lt;br /&gt;     - from Control Panel, select Administrative Tools &gt; Computer Management&lt;br /&gt;     - expand Storage, then select Disk Defragmenter&lt;br /&gt;     - highlight each virtual drive, in turn, and click Defragment&lt;br /&gt;     - reboot your computer when finished.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;B. Removing Components on Windows 95 or Windows 98.&lt;br /&gt;---------------------------------------------------&lt;br /&gt;To remove all Oracle components from a computer on Windows 95/Windows 98:&lt;br /&gt;&lt;br /&gt;1.   Remove the entries in the Windows registry:&lt;br /&gt;     -------------------------------------------&lt;br /&gt;1.a. Start the registry editor at the MS-DOS command prompt: &lt;br /&gt;     C:\&gt; REGEDIT&lt;br /&gt;&lt;br /&gt;1.b. Go to HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE &lt;br /&gt;     Note the value of the key INST_LOC, this is the location of the Oracle &lt;br /&gt;     Universal Installer.  The default location is &lt;br /&gt;     C:\Program Files\Oracle\Inventory&lt;br /&gt;     If this value is different, make note of it, so we can delete these files&lt;br /&gt;     later. Delete this ORACLE key. &lt;br /&gt;&lt;br /&gt;1.c. Go to HKEY_LOCAL_MACHINE\SOFTWARE\ODBC and expand all subkeys and&lt;br /&gt;     remove all keys under here which are related with the&lt;br /&gt;     "Oracle ODBC Driver".&lt;br /&gt;&lt;br /&gt;1.d. Go to: &lt;br /&gt;     HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall&lt;br /&gt;     and remove any entries related to Oracle.  &lt;br /&gt;&lt;br /&gt;1.e. Go to HKEY_CLASSES_ROOT, remove all keys that begin with Ora or ORCL&lt;br /&gt;     (e.g. Oracle..., ORADC..., ORAMMC..., OraOLE..., OraPerf... and ORCL...).&lt;br /&gt;&lt;br /&gt;1.f. Go to HKEY_LOCAL_MACHINE\SOFTWARE\Classes, remove all keys that begin &lt;br /&gt;     with Ora or ORCL&lt;br /&gt;     (e.g. Oracle..., ORADC..., ORAMMC..., OraOLE..., OraPerf... and ORCL...).&lt;br /&gt;&lt;br /&gt;1.g. Go to HKEY_CURRENT_USER\Software\Oracle, delete this ORACLE key.&lt;br /&gt;&lt;br /&gt;1.h. Go to HKEY_USERS\…\Software\Oracle, delete this ORACLE key.&lt;br /&gt;&lt;br /&gt;1.i. Close the registry. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.   Clean up the environment settings:&lt;br /&gt;     ----------------------------------&lt;br /&gt;2.a. Open your AUTOEXEC.BAT with an editor to modify the PATH variable.&lt;br /&gt;     For example, you may see a path similar to this one: &lt;br /&gt;     C:\ORACLE\ORA81\BIN;G:\PROGRAM FILES\ORACLE\JRE\1.1.7\BIN .&lt;br /&gt;&lt;br /&gt;2.b. If an %ORACLE_HOME% was installed, remove this %ORACLE_HOME%\BIN path.&lt;br /&gt;&lt;br /&gt;2.c. If there is a CLASSPATH variable set in the AUTOEXEC.BAT, first make note&lt;br /&gt;     of the path defined, then delete it.  This variable can be added back at&lt;br /&gt;     a later date if needed.&lt;br /&gt;&lt;br /&gt;2.d. If JRE was installed by Oracle, remove the JRE path.&lt;br /&gt;&lt;br /&gt;2.e. Save the AUTOEXEC.BAT file and close the edit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.   Delete the software and icons:&lt;br /&gt;     ------------------------------&lt;br /&gt;3.a. Choose Start &gt; Programs &gt; Windows Explorer.&lt;br /&gt;&lt;br /&gt;3.b. Go to SYSTEM_DRIVE:\WINDOWS\START MENU\PROGRAMS&lt;br /&gt;     and delete the following icons: &lt;br /&gt;     - Oracle - HOME_NAME &lt;br /&gt;       where HOME_NAME is the previous Oracle home name. &lt;br /&gt;     - Oracle Installation Products &lt;br /&gt;&lt;br /&gt;3.c. Go to SYSTEM_DRIVE:\Program Files\Oracle or the location of INST_LOC as&lt;br /&gt;     noted earlier in step 1.b and delete this directory.&lt;br /&gt; &lt;br /&gt;3.d  Go to SYSTEM_DRIVE:\Temp and delete all files and directories in here.&lt;br /&gt;&lt;br /&gt;3.e. Go to the drive where the Oracle software is installed on your machine&lt;br /&gt;     and delete all ORACLE_BASE directories on your hard drive.&lt;br /&gt;&lt;br /&gt;3.f. Remove any Oracle-related .INI files that may exist in the Windows &lt;br /&gt;     directory. The Windows directory may be found by entering &lt;br /&gt;     "echo %WINDIR%" from a command prompt. &lt;br /&gt;     Typical Oracle .INI files include ORADIM73.INI, ORADIM80.INI, &lt;br /&gt;     ORACLE.INI, ORAODBC.INI&lt;br /&gt; &lt;br /&gt;3.g. Close the Windows Explorer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.   Finish the removal:&lt;br /&gt;     -------------------&lt;br /&gt;4.a. Empty the recycle bin&lt;br /&gt;     Right click on recycle bin &gt; Empty Recycle Bin&lt;br /&gt;&lt;br /&gt;4.b. Reboot your computer.&lt;br /&gt;&lt;br /&gt;RELATED DOCUMENTS&lt;br /&gt;-----------------&lt;br /&gt;Oracle Installation Guides for Windows.&lt;br /&gt;SEARCH WORDS&lt;br /&gt;------------&lt;br /&gt;WIN95, WIN98, WINNT, WIN2000, Windows95, Windows98, WindowsNT, Windows2000,&lt;br /&gt;de-install, deinstall, re-install, reinstall&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-4223006844261224385?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/4223006844261224385/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=4223006844261224385' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/4223006844261224385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/4223006844261224385'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2006/08/win-manually-removing-all-oracle.html' title='WIN: Manually Removing all Oracle Components on Microsoft Windows Platforms'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-115660161573918477</id><published>2006-08-26T22:02:00.000+08:00</published><updated>2006-08-27T00:00:02.766+08:00</updated><title type='text'>解决oracle9i patchsets 9.2.0.8在winxp上安装时遇到的问题。</title><content type='html'>昨天晚上在winxp(sp2)上安装oracle9i patchsets 9.2.0.8的时候，出现以下错误:&lt;br /&gt;&lt;a href="http://wwmiao.googlepages.com/9.2.0.8installerr.JPG"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 200px; CURSOR: hand" alt="" src="http://wwmiao.googlepages.com/9.2.0.8installerr.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;郁闷的是中文乱码，我搞不清楚到底出了什么错，无从下手。&lt;br /&gt;夜也深了，睡觉先。&lt;br /&gt;早上起来，第一件事是解决错误提示中中文乱码问题，经过努力，终于消除了乱码，方法就是:&lt;br /&gt;开始-&gt;控制面板-&gt;日期、时间、语言和区域设置-&gt;区域和语言选项-&gt;设置“非Unicode程序的语言”为英文,重新启动winxp，再启动oracle 安装程序，就是英文显示了，记住看到错误提示后要将刚才的设置改为中文。&lt;br /&gt;现在可以看到错误提示的真面目了：&lt;br /&gt;&lt;a href="http://wwmiao.googlepages.com/wininstallerr.JPG"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 200px; CURSOR: hand" alt="" src="http://wwmiao.googlepages.com/wininstallerr.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wwmiao.googlepages.com/wininstallerr.JPG"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;原来错误就是：Certain Files which need to be Reinstalled by Oracle Universal Installer are Being Used by one or more runing services.&lt;br /&gt;现在就可以借助google来帮我们解决问题了。&lt;br /&gt;&lt;br /&gt;总结一下解决这个问题的方法就是：&lt;br /&gt;1、找到使用oracle_home目录中文件的windows services，停止这些服务；&lt;br /&gt;(其实找到这些服务很难，你也不大可能停止提示列出的所有services,可以借助工具&lt;a href="http://download.sysinternals.com/Files/ProcessExplorerNt.zip"&gt;Process Explorer&lt;/a&gt;解决这个问题，用这个工具可以找到使用oracle_home目录中文件的进程，kill这些进程即可。)&lt;br /&gt;照理说，这个时候就可以正常安装了，保险的话可以继续下面步骤。&lt;br /&gt;2、将oracle_home对应的目录(例如：D:\oracle\ora92)改名;&lt;br /&gt;3、重起机器后，将oracle_home对应的目录名改回来，就可以正常安装了。&lt;br /&gt;&lt;br /&gt;参考文档：Metalink Note: 117672.1&lt;br /&gt;另外&lt;a href="http://download.sysinternals.com/Files/ProcessExplorerNt.zip"&gt;Process Explorer&lt;/a&gt;这个工具也是这次的一个意外收获，以前想找到正在使用windows某个文件的特定进程，试过几个工具，比较下来还是process Explorer方便。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-115660161573918477?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/115660161573918477/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=115660161573918477' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/115660161573918477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/115660161573918477'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2006/08/oracle9i-patchsets-9208winxp.html' title='解决oracle9i patchsets 9.2.0.8在winxp上安装时遇到的问题。'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944603.post-115660071465795766</id><published>2006-08-26T21:33:00.000+08:00</published><updated>2006-08-26T21:58:34.670+08:00</updated><title type='text'>开场白</title><content type='html'>学习使用oracle也有5、6个年头了，解决过不少实际工作中遇到的问题，有时候也记录些心得体会，不过分散在电脑上，常常过了段时间就丢了，昨天晚上上metalink的时候发现oracle已经发布了Oracle 9i RDBMS 的Patchset 9.2.0.8，这可能是oracle9i最后的补丁集，但是当我在我的笔记本上安装的时候却无法继续，今天上午我又费了很大的劲才解决了这个问题，当时感觉很有成就感，这是我写此blog的直接动因；另外我也希望能和更多的朋友在这里交流学习和使用oracle中遇到的各种问题。 明天去参加oracle官方培训Oracle9i Database Performance Tuning R2 Ed 2，这是好不容易从公司争取到培训费用的，在这里也庆祝一下。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944603-115660071465795766?l=wwmiao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wwmiao.blogspot.com/feeds/115660071465795766/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6944603&amp;postID=115660071465795766' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/115660071465795766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944603/posts/default/115660071465795766'/><link rel='alternate' type='text/html' href='http://wwmiao.blogspot.com/2006/08/blog-post_26.html' title='开场白'/><author><name>firebird</name><uri>http://www.blogger.com/profile/17984558237030890879</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/6564/402/1600/eric3.jpg'/></author><thr:total>0</thr:total></entry></feed>
