﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-joan-文章分类-Oracle</title><link>http://www.blogjava.net/joan/category/32990.html</link><description>QQ:774199038

</description><language>zh-cn</language><lastBuildDate>Fri, 11 Jan 2013 12:20:56 GMT</lastBuildDate><pubDate>Fri, 11 Jan 2013 12:20:56 GMT</pubDate><ttl>60</ttl><item><title>ORCAL 卸载</title><link>http://www.blogjava.net/joan/articles/394048.html</link><dc:creator>joan</dc:creator><author>joan</author><pubDate>Thu, 10 Jan 2013 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/joan/articles/394048.html</guid><wfw:comment>http://www.blogjava.net/joan/comments/394048.html</wfw:comment><comments>http://www.blogjava.net/joan/articles/394048.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joan/comments/commentRss/394048.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joan/services/trackbacks/394048.html</trackback:ping><description><![CDATA[<p>完全卸载Oracle实现方法：</p>
<p>1、如果数据库配置了自动存储管理(ASM),应该先删除聚集同步服务CSS（cluster Synchronization Services).删除CSS服务的方法是在DOS命令行中执行如下命令： localconfig delete<br />2、在&#8220;服务&#8221;窗口中停止Oracle的所有服务。<br />3、在&#8220;开始&#8221;菜单中依次选择&#8220;程序&#8221;/&#8220;Oracle-OraDb10g_home1"/"Oracle Installation Products&#8221;/"Universal Installer"，打开Oracle Universal Installer(OUI)窗口<br />4、单击&#8220;卸载产品&#8221;按钮，打开&#8220;产品清单&#8221;窗口，选中要删除的Oracle产品，单击&#8220;删除&#8221;按钮，打开&#8220;确认删除&#8221;对话框。<br />5、在&#8220;确认删除&#8221;对话框中单击&#8220;是&#8221;按钮，开始删除选择的Oracle产品。<br />6、删除自动存储管理（ASM),在DOS命令行中执行如下命令：oracle -delete -asmsid +asm<br />7、运行regedit命令，打开注册表窗口。删除注册表中与Oracle相关的内容，具体如下：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、删除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE目录。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、删除HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services中所有以oracle或OraWeb为开头的键。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、删除HKEY_LOCAL_MACHINE/SYSETM/CurrentControlSet/Services/Eventlog/application中所有以oracle开头的键。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、删除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs中所有以oracle 开头的键。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6、删除HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI中除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键。<br />其中有些注册表项可能已经在卸载Oracle产品时被删除。<br />8、删除环境变量中的PATHT CLASSPATH中包含Oracle的值。<br />9、删除&#8220;开始&#8221;/&#8220;程序&#8221;中所有Oracle的组和图标。<br />10、删除所有与Oracle相关的目录，包括：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、c:\Program file\Oracle目录。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、ORACLE_BASE目录。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、c:\Documents and Settings\系统用户名、LocalSettings\Temp目录下的临时文件。</p>
<p>&nbsp;</p>
<p><br />&nbsp;</p><img src ="http://www.blogjava.net/joan/aggbug/394048.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joan/" target="_blank">joan</a> 2013-01-10 09:19 <a href="http://www.blogjava.net/joan/articles/394048.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle语句优化规则详解(1)</title><link>http://www.blogjava.net/joan/articles/250961.html</link><dc:creator>joan</dc:creator><author>joan</author><pubDate>Mon, 12 Jan 2009 05:41:00 GMT</pubDate><guid>http://www.blogjava.net/joan/articles/250961.html</guid><wfw:comment>http://www.blogjava.net/joan/comments/250961.html</wfw:comment><comments>http://www.blogjava.net/joan/articles/250961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joan/comments/commentRss/250961.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joan/services/trackbacks/250961.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 导读：本文主要介绍选用合适的Oracle优化器、访问Table的方式Oracle采用两种访问表中记录的方式、共享SQL语句以及选择最有效率的表名顺序的方法和技巧。<br><br>关键词：Oracle Oracle语句优化 Oracle优化规则 Table <br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/joan/articles/250961.html'>阅读全文</a><img src ="http://www.blogjava.net/joan/aggbug/250961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joan/" target="_blank">joan</a> 2009-01-12 13:41 <a href="http://www.blogjava.net/joan/articles/250961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何保护好Oracle服务器上的监听器</title><link>http://www.blogjava.net/joan/articles/240802.html</link><dc:creator>joan</dc:creator><author>joan</author><pubDate>Sun, 16 Nov 2008 04:00:00 GMT</pubDate><guid>http://www.blogjava.net/joan/articles/240802.html</guid><wfw:comment>http://www.blogjava.net/joan/comments/240802.html</wfw:comment><comments>http://www.blogjava.net/joan/articles/240802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joan/comments/commentRss/240802.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joan/services/trackbacks/240802.html</trackback:ping><description><![CDATA[<p>如何保护好<a href="http://topic.ccw.com.cn/corpCenter/407.html" target="_blank"><font color="#0000cc"><strong>Oracle</strong></font></a><a href="http://www.ccw.com.cn/server/topic/stor/" target="_blank"><font color="#0000cc"><strong>服务器</strong></font></a>上的监听器</p>
<p><strong>监听器简介</p>
<p class="newtext"></strong>Oracle监听器是Oracle服务器软件的一个组件，它负责管理Oracle<a href="http://wiki.ccw.com.cn/%E6%95%B0%E6%8D%AE%E5%BA%93" target="_blank"><font color="#0000cc"><strong><a href="http://wiki.ccw.com.cn/%E6%95%B0%E6%8D%AE%E5%BA%93" target="_blank"><font color="#0000cc"><strong>数据库</strong></font></a></strong></font></a>和客户端之间的通讯，它在一个特定的网卡端口（默认是TCP 1521端口）上监听连接请求，并将连接转发给数据库，由两个二进制文件组成：tnslsnr和lsnrctl。其中tsnlsnr就是监听器本身，它运行在数据库服务器端，lsnrctl是监听器控制程序，用于在服务器上或远程管理监听器。与监听器相关的还有两个配置文件：sqlnet.ora和listener.ora。tnslsnr启动时就会读取这两个配置文件中的信息，如端口号，数据库服务名。</p>
<p class="newtext">Oracle监听器在默认安装和配置情况下，有许多著名的漏洞和缺陷，黑客利用这些缺陷可以<a href="http://ad.ccw.com.cn/adClick.asp?adID=1641&amp;url=http%3A%2F%2Fwww%2Edcms%2Ecom%2Ecn%2Fanli%2Fchannel%2Fdefault%2Eshtml" target="_blank"><font color="#0000cc"><strong>制造</strong></font></a>拒绝服务攻击，偷窃数据库连接密码，进一步窃取机密数据。最大的风险来自监听器的配置，Oracle官方提供了一些推荐的配置，往往能够达到保护监听器的目的。本文就是想仔细列出现有的已知保护Oracle监听器的方法，这些方法对于黑客而言都很熟悉，所以作为DBA也必须要清楚才行。</p>
<p class="newtext"><strong></p>
<p class="newtext">为什么要保护监听器？</p>
<p class="newtext"></strong></p>
<p class="newtext">DBA对于为什么要保护监听器往往不太关心，他们认为黑客不太可能通过控制监听器进而控制整个数据库，在Oracle 10g之前的所有版本，Oracle监听器允许任何一个人利用lsnrctl从远程发起对监听器的管理，但幸运的是，从Oracle 10.1开始严格限制在远程对监听器的管理了。下面列出一些对Oracle 8/9i默认安装配置时可能有效的攻击手段，即使是打上最新的安全补丁，而没有进行安全配置加固，这些攻击手段也仍然有效：</p>
<p class="newtext"></p>
<center><font class="f12">
<table cellspacing="4" cellpadding="1" align="center" border="0">
    <tbody>
        <tr>
            <td valign="top" align="center"><img style="border-right: #000 1px solid; border-top: #000 1px solid; border-left: #000 1px solid; border-bottom: #000 1px solid" height="426" alt="如何保护好Oracle服务器上的监听器" src="http://imgs.ccw.com.cn/resources/2008_10/2008_10_23/200810233731224732548453.jpg" width="462" /></td>
        </tr>
        <tr>
            <td valign="top" align="center"></td>
        </tr>
    </tbody>
</table>
</font></center>
<p>&nbsp;</p>
<p class="newtext">注意：本文假设监听器使用的是TCP/IP，并且使用的是本地命名管理（即tnsnames.ora），本文所描述的Oracle版本在8i/9i/10g上做过测试，但相信对其他低版本或更高的版本也有一定的参考价值。</p>
<p class="newtext">
<p>&nbsp;</p>
<p><strong>怎么保护监听器？</p>
<p class="newtext"></strong>既然监听器有这么多可供黑客利用的地方，那有没有什么方法来保护它，办法是有的，而且还很多，总结起来，大概有下面11种方法来保护Oracle监听器：</p>
<p class="newtext"><strong>1、 设备监听器密码</strong></p>
<p>通过设置监听器密码可以阻止大部分的菜鸟黑客的进攻，设置密码有两种方法，一种是通过lsnrctl命令来设置，另一种是直接修改listener.ora文件，第一种方法设置的密码是经过加密后<a href="http://www.ccw.com.cn/server/topic/stor/" target="_blank"><font color="#0000cc"><strong>存储</strong></font></a>在listener.ora中，而第二种方法是以明文的形式放在listener.ora中的，所以推荐使用第一种方式。具体命令如下：</p>
<p><!--<br /><br />Code highlighting <a href="http://wiki.ccw.com.cn/Mac+Pro" target="_blank"><font color="#0000cc"><strong>pro</strong></font></a>duced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">LSNRCTL</span><span style="color: #808080">&gt;</span><span style="color: #000000"> </span><span style="color: #0000ff">set</span><span style="color: #000000"> current_listener </span><span style="color: #808080">&lt;</span><span style="color: #000000">监听器名</span><span style="color: #808080">&gt;</span><span style="color: #000000"> </p>
<p>&nbsp;</p>
<p class="newtext">LSNRCTL</span><span style="color: #808080">&gt;</span><span style="color: #000000"> change_password</p>
<p class="newtext">old password: </span><span style="color: #808080">&lt;</span><span style="color: #000000">如果之前没有设置密码就直接按回车</span><span style="color: #808080">&gt;</span><span style="color: #000000"></p>
<p class="newtext">New password: </span><span style="color: #808080">&lt;</span><span style="color: #000000">输入新密码</span><span style="color: #808080">&gt;</span><span style="color: #000000"></p>
<p class="newtext">Reenter new password: </span><span style="color: #808080">&lt;</span><span style="color: #000000">再次输入新密码</span><span style="color: #808080">&gt;</span><span style="color: #000000"></p>
<p class="newtext">LSNRCTL</span><span style="color: #808080">&gt;</span><span style="color: #000000"> </span><span style="color: #0000ff">set</span><span style="color: #000000"> password Password: </span><span style="color: #808080">&lt;</span><span style="color: #000000">输入刚刚设置的新密码</span><span style="color: #808080">&gt;</span><span style="color: #000000"></p>
<p class="newtext">LSNRCTL</span><span style="color: #808080">&gt;</span><span style="color: #000000"> save_config</span>
<p>设置好密码后，打开listener.ora，看是否有一条PASSWORDS_&lt;监听器名&gt;的记录，类似于PASSWORDS_LISTENER = F4BAA4A006C26134。为监听器设置了密码后，必须到客户端重新配置连接。</p>
<p class="newtext"><strong>2、 开启监听器日志</strong></p>
<p>开启监听器日志功能是为了捕获监听器命令和防止密码被暴力破解。开启监听器日志功能的命令为：</p>
<p><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">LSNRCTL</span><span style="color: #808080">&gt;</span><span style="color: #000000"> </span><span style="color: #0000ff">set</span><span style="color: #000000"> current_listener </span><span style="color: #808080">&lt;</span><span style="color: #000000">监听器名</span><span style="color: #808080">&gt;</span><span style="color: #000000"> </p>
<p>&nbsp;</p>
<p class="newtext">LSNRCTL</span><span style="color: #808080">&gt;</span><span style="color: #000000"> </span><span style="color: #0000ff">set</span><span style="color: #000000"> password Password: </span><span style="color: #808080">&lt;</span><span style="color: #000000">输入监听器密码</span><span style="color: #808080">&gt;</span><span style="color: #000000"></p>
<p class="newtext">LSNRCTL</span><span style="color: #808080">&gt;</span><span style="color: #000000"> </span><span style="color: #0000ff">set</span><span style="color: #000000"> log_directory </span><span style="color: #808080">&lt;</span><span style="color: #000000">oracle_home路径</span><span style="color: #808080">&gt;/</span><span style="color: #000000">network</span><span style="color: #808080">/</span><span style="color: #000000">admin</p>
<p class="newtext">LSNRCTL</span><span style="color: #808080">&gt;</span><span style="color: #000000"> </span><span style="color: #0000ff">set</span><span style="color: #000000"> log_file </span><span style="color: #808080">&lt;</span><span style="color: #000000">sid名称</span><span style="color: #808080">&gt;</span><span style="color: #000000">.</span><span style="color: #ff00ff">log</span><span style="color: #000000"></p>
<p class="newtext">LSNRCTL</span><span style="color: #808080">&gt;</span><span style="color: #000000"> </span><span style="color: #0000ff">set</span><span style="color: #000000"> log_status </span><span style="color: #0000ff">on</span><span style="color: #000000"></p>
<p class="newtext">LSNRCTL</span><span style="color: #808080">&gt;</span><span style="color: #000000"> save_config</span>
<p>通过运行上面的命令，监听器将会在&lt;ORACLE_HOME&gt;/network/admin目录下创建一个&lt;sid&gt;.log日志文件，以后可以打开该文件查看一些常见的ORA-错误信息。</p>
<p class="newtext"><strong>3、 在listener.ora中设置ADMIN_RESTRICTIONS</strong></p>
<p>在listener.ora文件中设置了ADMIN_RESTRICTIONS参数后，当监听器在运行时，不允许执行任何管理任何，届时，set命令将不可用，不论是在服务器本地还是从远程执行都不行，这时如果要修改监听器设置就只有手工修改listener.ora文件了，通过手工修改listener.ora，要使修改生效，只能使用lsnrctl reload命令或lsnrctl stop/start命令重新载入一次监听器配置信息。在listener.ora文件中手动加入下面这样一行：</p>
<p><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">ADMIN_RESTRICTIONS_</span><span style="color: #808080">&lt;</span><span style="color: #000000">监听器名</span><span style="color: #808080">&gt;</span><span style="color: #000000"> </span><span style="color: #808080">=</span><span style="color: #000000"> </span><span style="color: #0000ff">ON</span> </p>
<p><strong>4、 打上最新的监听器补丁</strong></p>
<p>这一点就与<a href="http://wiki.ccw.com.cn/index.php/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F" target="_blank"><font color="#0000cc"><strong><a href="http://wiki.ccw.com.cn/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F" target="_blank"><font color="#0000cc"><strong>操作系统</strong></font></a></strong></font></a>类似，数据库也有bug，也有漏洞，黑客会在漏洞发现第一时间扫描未打补丁的服务器，所以作为一个称职的DBA要随时关注Oracle的CPU（呵呵，不是处理器，是关键补丁升级的意思），这里要说明的是Oracle的补丁是自动累加的，就像<a href="http://wiki.ccw.com.cn/index.php/Windows" target="_blank"><font color="#0000cc"><strong>windows</strong></font></a> <a href="http://wiki.ccw.com.cn/Athlon+XP" target="_blank"><font color="#0000cc"><strong>xp</strong></font></a> sp2的内容包括了sp1的所有内容一样，所以只需要按照最新的补丁集就可以了，还有一点要注意的是在生产系统上应用任何补丁前都需要先在测试环境进行测试，保证升级后不影响正常业务才进行升级。最后要说明的是，只有购买了Oracle的正式许可才可以登陆下载补丁，否则就只有从第三方地址下载，其完整性就不能保证了。</p>
<p class="newtext"><strong>5、 利用防火墙阻止SQL*NET</strong></p>
<p>除非的确需要，否则不应该让SQL*NET通讯通过防火墙，在设计防火墙规则时，应设计为只允许经过认证的Web服务器和应用程序通过防火墙进行SQL*NET通信。而且放在防火墙DMZ区域的应用服务器使用SQL*NET通信时，应只允许它与特定的数据库服务器进行通信。</p>
<p class="newtext">通常很少有应用会从Internet直接访问数据库，因为这种方式的延迟非常明显，通用的做法是配置应用服务器与数据库通信，Internet客户端通过<a href="http://wiki.ccw.com.cn/index.php/%E6%B5%8F%E8%A7%88%E5%99%A8" target="_blank"><font color="#0000cc"><strong><a href="http://wiki.ccw.com.cn/%E6%B5%8F%E8%A7%88%E5%99%A8" target="_blank"><font color="#0000cc"><strong>浏览器</strong></font></a></strong></font></a>访问应用服务器即可，这时配置防火墙时也只需设置应用服务器和数据库服务器之间的通信规则即可。</p>
<p class="newtext"><strong>6、 保护$TNS_ADMIN目录</strong></p>
<p>$TNS_ADMIN目录即我们通常看到的ORACLE_HOME/network/admin目录，它下面包含有listener.ora，tnsnames.ora，sqlnet.ora，protocol.ora等重要配置文件，前面已经提到，监听器的密码就是保存在listener.ora中的，如果不保护好，可能造成密码泄露，或整个文件被修改，这个目录下的listener.ora，sqlnet.ora，protocol.ora文件应该只开放给Oracle主账户（通常是oracle或Administrator），而其他账户不能有任何权限，tnsnames.ora文件在<a href="http://wiki.ccw.com.cn/Linux" target="_blank"><font color="#0000cc"><strong>Linux</strong></font></a>或<a href="http://wiki.ccw.com.cn/UNIX" target="_blank"><font color="#0000cc"><strong>Unix</strong></font></a>系统上权限可以设置为0644，在windows上可以设置其他用户为浏览，读取权限。</p>
<p class="newtext"><strong>7、 保护TNSLSNR和LSNRCTL</strong></p>
<p>在Linux或Unix服务器上，应该将这两个文件的权限设为0751，如果想更严格一点，可以设为0700，这样就只有安装oracle时指定的宿主用户可以执行它们了，这两个文件位于ORACLE_HOME/bin目录下。保护这两个文件的目的是为了防止黑客直接破坏它们，如果tnslsnr被破坏，监听器肯定不能启动，如果lsnrctl被破坏，可能植入<a href="http://wiki.ccw.com.cn/index.php/%E6%81%B6%E6%84%8F%E4%BB%A3%E7%A0%81" target="_blank"><font color="#0000cc"><strong><a href="http://wiki.ccw.com.cn/%E6%81%B6%E6%84%8F%E4%BB%A3%E7%A0%81" target="_blank"><font color="#0000cc"><strong><a href="http://wiki.ccw.com.cn/%E6%81%B6%E6%84%8F%E4%BB%A3%E7%A0%81" target="_blank"><font color="#0000cc"><strong>恶意代码</strong></font></a></strong></font></a></strong></font></a>，在运行lsnrctl时就会执行其它黑客行为。</p>
<p class="newtext"><strong>8、 移除不用的服务</strong></p>
<p>默认安装时，会安装一个PL/SQL外部程序（ExtProc）条目在listener.ora中，它的名字通常是ExtProc或PLSExtProc，但一般不会使用它，可以直接从listener.ora中将这项移除，因为对ExtProc已经有多种攻击手段了。有时可能会在多个实例之间拷贝listener.ora，请检查拷贝来的文件中是否含有不需要的服务，确保只留下的确需要的服务项目，减少监听器受攻击的面。</p>
<p class="newtext"><strong>9、 改变默认的TNS端口号</strong></p>
<p>改变监听器监听的端口号与修改ftp服务器默认的21端口，web服务器的80端口类似，因为Oracle默认的监听端口是1521（Oracle还正式注册了两个新的端口号2483和2484，说不定哪个新版本发布后，可能默认的端口号就会是这两个了，其中2484用于SSL类型的连接），几乎所有的扫描器都可以直接扫描这个端口是否打开，如果设置为一个不常用的端口号，可能会给人一种假象，而且即使扫描到端口打开，也还要猜测该端口运行是究竟是什么服务，攻击难度就加大了。在修改端口的时候也不要设在1521-1550和1600-1699范围内，虽然通过修改默认端口并不算什么高级防护技术，但至少可以防止自动攻击，以及在端口1521上的简单扫描。</p>
<p class="newtext">可直接编辑listener.ora中端口号，也可以通过net<a href="http://topic.ccw.com.cn/corpCenter/249.html" target="_blank"><font color="#0000cc"><strong>ca</strong></font></a>程序进行修改，当然在客户端也要做对应的修改才行。同时要设置初始化参数LOCAL_LISTENER，这样在监听端口发生变化后，数据库才会自动进行监听器重新注册。</p>
<p class="newtext"><strong>10、 设置节点验证</strong></p>
<p>根据应用程序和网络配置情况，采用节点验证对于保护监听器是一种强有力的方法，大部分Web应用程序都只需要从应用服务器访问监听器，以及一台管理客户端，对于Oracle 8/8i，在$ORACLE_HOME/network/admin/protocol.ora文件中添加节点检查语句，对于Oracle 9i/10g，在$ORACLE_HOME/network/admin/sqlnet.ora文件中添加节点检查语句，语句的格式都一样，如：</p>
<p><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">tcp.validnode_checking </span><span style="color: #808080">=</span><span style="color: #000000"> yes </p>
<p>&nbsp;</p>
<p class="newtext">tcp.invited_nodes </span><span style="color: #808080">=</span><span style="color: #000000"> ( x.x.x.x </span><span style="color: #808080">|</span><span style="color: #000000"> name, x.x.x.x </span><span style="color: #808080">|</span><span style="color: #000000"> name)</p>
<p class="newtext">tcp.excluded_nodes</span><span style="color: #808080">=</span><span style="color: #000000">( x.x.x.x </span><span style="color: #808080">|</span><span style="color: #000000"> name, x.x.x.x </span><span style="color: #808080">|</span><span style="color: #000000"> name)</span>
<p>注意：这里要么使用invited_nodes语句，要么使用excluded_nodes，不能同时都使用，也不能使用通配符，子网等，只能使用明确的ip地址或主机名。这里的x.x.x.x指的就是如192.168.1.100这样的ip地址，name就是主机名，如果有多个ip地址或主机名，使用逗号进行分隔。</p>
<p class="newtext">设置了节点验证后，监听器需要重新启动才会生效。使用这种方法进行节点验证会消耗一定的系统资源和网络带宽，如果要验证的地址过多，靠手工添加也很麻烦，这时可以使用Oracle Connection Manager，如果是有许多客户端通过SQL*NET访问数据库，使用这种节点验证的方法也不可行，那会相当的慢。</p>
<p class="newtext"><strong>11、 监视日志</strong></p>
<p>在前面的方法中开启了监听器日志功能，在产生了日志信息后，要对其进行分析，常见的可在日志文件中查找是否有TNS-01169，TNS-01189，TNS-01190或TNS-12508错误，如果有这些错误，至少可以说明要么有人攻击，要么有异常活动，进一步可以使用shell基本或一些简单的管理工具将这些有用的日志信息定期发送给DBA，实现实时监控效果。</p>
<p>下面是对前面提到的几个常见错误的描述：</p>
<p class="newtext"></p>
<center><font class="f12">
<table cellspacing="4" cellpadding="1" align="center" border="0">
    <tbody>
        <tr>
            <td valign="top" align="center"><img style="border-right: #000 1px solid; border-top: #000 1px solid; border-left: #000 1px solid; border-bottom: #000 1px solid" alt="如何保护好Oracle服务器上的监听器" src="http://imgs.ccw.com.cn/resources/2008_10/2008_10_23/200810233281224732548453.jpg" /></td>
        </tr>
        <tr>
            <td valign="top" align="center"></td>
        </tr>
    </tbody>
</table>
</font></center>
<p>&nbsp;</p>
<p class="newtext"><strong>小结</strong></p>
<p>通过上面这11种方法对Oracle监听器进行保护后，想要通过监听器进行破坏活动基本上就很困难了，不能保证100%拦截攻击，也至少有99%的效果，另外那1%可能就是DBA本身犯的一些低级错误了，如不小心将监听器密码泄露给他人，或将配置信息暴露在Internet上。</p>
<img src ="http://www.blogjava.net/joan/aggbug/240802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joan/" target="_blank">joan</a> 2008-11-16 12:00 <a href="http://www.blogjava.net/joan/articles/240802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>   oracle 10g 清空回收站命令</title><link>http://www.blogjava.net/joan/articles/240801.html</link><dc:creator>joan</dc:creator><author>joan</author><pubDate>Sun, 16 Nov 2008 03:53:00 GMT</pubDate><guid>http://www.blogjava.net/joan/articles/240801.html</guid><wfw:comment>http://www.blogjava.net/joan/comments/240801.html</wfw:comment><comments>http://www.blogjava.net/joan/articles/240801.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joan/comments/commentRss/240801.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joan/services/trackbacks/240801.html</trackback:ping><description><![CDATA[</strong></font><strong><font color="#02368d"></font></strong><br />
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" width="96%" border="0">
    <tbody>
        <tr>
            <td width="7" height="7"><img alt="" src="http://blog.chinaunix.net/templates/tech/images/w_left_top.gif" border="0" /></td>
            <td width="100%" bgcolor="#f3f3f3"></td>
            <td width="7" height="7"><img alt="" src="http://blog.chinaunix.net/templates/tech/images/w_right_top.gif" border="0" /></td>
        </tr>
        <tr>
            <td align="center" bgcolor="#f3f3f3" colspan="3">
            <table style="border-collapse: collapse; word-wrap: break-word" cellspacing="0" cellpadding="0" width="100%" border="0">
                <tbody>
                    <tr>
                        <td align="center" height="25"><font style="font-size: 14pt" color="#02368d"><strong>oracle 10g 清空回收站命令</strong></font></strong></font><br />
                        </td>
                    </tr>
                    <tr>
                        <td bgcolor="#d2dee2" height="1"></td>
                    </tr>
                    <tr>
                        <td bgcolor="#ffffff" height="1"></td>
                    </tr>
                    <tr>
                        <td align="center">
                        <table style="border-collapse: collapse; word-wrap: break-word" cellspacing="0" cellpadding="0" width="100%" border="0">
                            <tbody>
                                <tr>
                                    <td width="100%">
                                    <div id="art" style="margin: 15px" width="100%"><br />
                                    <p>PURGE recyclebin;</p>
                                    </div>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
 <img src ="http://www.blogjava.net/joan/aggbug/240801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joan/" target="_blank">joan</a> 2008-11-16 11:53 <a href="http://www.blogjava.net/joan/articles/240801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle数据库TNS常见错误的解决办法</title><link>http://www.blogjava.net/joan/articles/240745.html</link><dc:creator>joan</dc:creator><author>joan</author><pubDate>Sat, 15 Nov 2008 14:44:00 GMT</pubDate><guid>http://www.blogjava.net/joan/articles/240745.html</guid><wfw:comment>http://www.blogjava.net/joan/comments/240745.html</wfw:comment><comments>http://www.blogjava.net/joan/articles/240745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joan/comments/commentRss/240745.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joan/services/trackbacks/240745.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、ORA-12541:TNS:没有监听器 <br>原因:没有启动监听器或者监听器损坏。若是前者，使用命令net start OracleOraHome10gTNSListener(名字可能有出入)即可;如果是后者，则使用“Net Configuration Assistant”工具向导之“监听程序配置”增加一个监听器即可(基本不用写任何信息，一路OK。在添加之前可能需要把所有的监听器先删!) <br> <br> <br>2、ORA-12500:TNS:监听程序无法启动专用服务器进程或ORA-12560:TNS:协议适配器错误 <br>原因:ORACLE的数据库服务没有启动。使用命令net start ORACLESERVICEORADB(ORADB为数据库名字)即可。如果仍没有解决，请继续向下看。 <br> <br>&nbsp;&nbsp;<a href='http://www.blogjava.net/joan/articles/240745.html'>阅读全文</a><img src ="http://www.blogjava.net/joan/aggbug/240745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joan/" target="_blank">joan</a> 2008-11-15 22:44 <a href="http://www.blogjava.net/joan/articles/240745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle的监听口令及监听器安全设置</title><link>http://www.blogjava.net/joan/articles/240746.html</link><dc:creator>joan</dc:creator><author>joan</author><pubDate>Sat, 15 Nov 2008 14:11:00 GMT</pubDate><guid>http://www.blogjava.net/joan/articles/240746.html</guid><wfw:comment>http://www.blogjava.net/joan/comments/240746.html</wfw:comment><comments>http://www.blogjava.net/joan/articles/240746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joan/comments/commentRss/240746.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joan/services/trackbacks/240746.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 近段时间很多网友提出监听配置相关问题，客户终端(Client)无法连接服务器端(Server)。本文现对监听配置作一简单介绍，并提出一些客户终端无法连接服务器端的解决思路，愿对广大网友与读者有一些帮助。<br> <br>一、监听器(LISTENER)<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/joan/articles/240746.html'>阅读全文</a><img src ="http://www.blogjava.net/joan/aggbug/240746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joan/" target="_blank">joan</a> 2008-11-15 22:11 <a href="http://www.blogjava.net/joan/articles/240746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 的listener.ora 命令行使用</title><link>http://www.blogjava.net/joan/articles/237155.html</link><dc:creator>joan</dc:creator><author>joan</author><pubDate>Tue, 28 Oct 2008 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/joan/articles/237155.html</guid><wfw:comment>http://www.blogjava.net/joan/comments/237155.html</wfw:comment><comments>http://www.blogjava.net/joan/articles/237155.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joan/comments/commentRss/237155.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joan/services/trackbacks/237155.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: oracle 的listener.ora文件命令行使用方法，&nbsp;&nbsp;<a href='http://www.blogjava.net/joan/articles/237155.html'>阅读全文</a><img src ="http://www.blogjava.net/joan/aggbug/237155.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joan/" target="_blank">joan</a> 2008-10-28 17:03 <a href="http://www.blogjava.net/joan/articles/237155.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle10G 的ORA-12505问题解决方法</title><link>http://www.blogjava.net/joan/articles/237141.html</link><dc:creator>joan</dc:creator><author>joan</author><pubDate>Tue, 28 Oct 2008 08:12:00 GMT</pubDate><guid>http://www.blogjava.net/joan/articles/237141.html</guid><wfw:comment>http://www.blogjava.net/joan/comments/237141.html</wfw:comment><comments>http://www.blogjava.net/joan/articles/237141.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/joan/comments/commentRss/237141.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joan/services/trackbacks/237141.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: oracle10G 的ORA-12505问题解决方法<br>接jdbc Oracle10 错误 ，JDBC代码无问题，服务也启动，连接字符串也是对的，但是在eclipse 下报错，错误信息如下：<br><br>java.sql.SQLException: Listener refused the connection with the following error:<br><br>ORA-12505, TNS:listener does not currently know of SID given in connect descriptor<br><br>The Connection descriptor used by the client was:<br><br>localhost:1521:orcl<br><br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/joan/articles/237141.html'>阅读全文</a><img src ="http://www.blogjava.net/joan/aggbug/237141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joan/" target="_blank">joan</a> 2008-10-28 16:12 <a href="http://www.blogjava.net/joan/articles/237141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The Network Adapter could not establish the connection</title><link>http://www.blogjava.net/joan/articles/236957.html</link><dc:creator>joan</dc:creator><author>joan</author><pubDate>Mon, 27 Oct 2008 12:22:00 GMT</pubDate><guid>http://www.blogjava.net/joan/articles/236957.html</guid><wfw:comment>http://www.blogjava.net/joan/comments/236957.html</wfw:comment><comments>http://www.blogjava.net/joan/articles/236957.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/joan/comments/commentRss/236957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joan/services/trackbacks/236957.html</trackback:ping><description><![CDATA[有段时间没写代码了，今天用下就抱The Network Adapter could not establish the connection，唉 竟然把监听忘启动了，记录下来<br />
Io 异常: The Network Adapter could not establish the connection <br />
这个异常的出现一般与数据库和你的PC的设置有关 <br />
<br />
<br />
这种异常的出现大致上有下面几种： <br />
<br />
<br />
1。IP错误。 <br />
在设置URL时错误，例如：jdbc:oracle:thin:@192.168.248.154:1521:test <br />
<br />
数据库服务器不正确：ping 服务器IP是否正确。不正确，将URL更改为正确 <br />
端口号错误：一般不会错误。 <br />
<br />
<br />
<br />
2。防火墙 <br />
如果机器上安装有放火墙，可能是服务器端口号屏蔽而造成的。关闭防火墙后，尝试重新连接。 <br />
<br />
<br />
<br />
3。数据库监听未启动 <br />
<br />
启动Oracle的监听服务 
    <img src ="http://www.blogjava.net/joan/aggbug/236957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joan/" target="_blank">joan</a> 2008-10-27 20:22 <a href="http://www.blogjava.net/joan/articles/236957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> plSQL 登录时出现初始化错误</title><link>http://www.blogjava.net/joan/articles/232311.html</link><dc:creator>joan</dc:creator><author>joan</author><pubDate>Sat, 04 Oct 2008 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/joan/articles/232311.html</guid><wfw:comment>http://www.blogjava.net/joan/comments/232311.html</wfw:comment><comments>http://www.blogjava.net/joan/articles/232311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joan/comments/commentRss/232311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joan/services/trackbacks/232311.html</trackback:ping><description><![CDATA[<p>用sqlplus登陆正常 ，而使用plsql时&nbsp;&nbsp; 同样的用户登陆同个数据库时 </p>
<p>就报错: 初始化错误&nbsp;&nbsp; <br />
SQL*NET没有完全安装&nbsp;&nbsp; <br />
OracleHomekey:software/oracle <br />
OracleHomedir <br />
可通过如下方法解决</p>
<p>具体配置： </p>
<p>在PLSQL Developer选择Tools &gt; Preferences &gt; options &gt; "Oracle Home" and "OCI Library" </p>
<p>Oracle10g装在D:\oracle\ </p>
<p>则：Oracle Home为C:\oracle\product\10.1.0 </p>
<p>&nbsp;&nbsp;&nbsp; OCI Library为C:\oracle\product\10.1.0\Db_1\BIN\oci.dll </p>
<p>配置完以后重新启动PLSQL Developer，会发现登录界面多了一栏Connect as 的内容。然后可以进行登录。</p>
<img src ="http://www.blogjava.net/joan/aggbug/232311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joan/" target="_blank">joan</a> 2008-10-04 14:06 <a href="http://www.blogjava.net/joan/articles/232311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>