﻿<?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-kapok-随笔分类-Oracle</title><link>http://www2.blogjava.net/kapok/category/690.html</link><description>垃圾桶,嘿嘿，我藏的这么深你们还能找到啊，真牛！</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:25:25 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:25:25 GMT</pubDate><ttl>60</ttl><item><title>关于数据库名(db_name)、实例名(instance_name)、ORACLE_SID</title><link>http://www.blogjava.net/kapok/archive/2005/09/04/11943.html</link><dc:creator>笨笨</dc:creator><author>笨笨</author><pubDate>Sun, 04 Sep 2005 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/kapok/archive/2005/09/04/11943.html</guid><wfw:comment>http://www.blogjava.net/kapok/comments/11943.html</wfw:comment><comments>http://www.blogjava.net/kapok/archive/2005/09/04/11943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kapok/comments/commentRss/11943.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kapok/services/trackbacks/11943.html</trackback:ping><description><![CDATA[<A href="http://chinaunix.net/jh/19/348162.html">http://chinaunix.net/jh/19/348162.html</A><BR>最近因看到论坛有人问起这方面的东西，将自己的理解加上查阅相关资料整理如下，如果不全或不当的地方，望指正并补全它。 <BR><BR>数据库名(DB_NAME)、实例名(Instance_name)、以及操作系统环境变量(ORACLE_SID) <BR><BR>在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。在ORACLE8i、9i中出现了新的参数，即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。这些都存在于同一个数据库中的标识，用于区分不同数据库的参数。 <BR><BR>一、什么是数据库名(db_name)? <BR>数据库名是用于区分数据的内部标识，是以二进制方式存储于数据库控制文件中的参数，在数据安装或创建之后将不得修改。数据库安装完成后，该参数被写入数据库参数文件pfile中，格式如下： <BR><BR>[code:1:1aaf156970] <BR>......... <BR>db_name="orcl"&nbsp;&nbsp;&nbsp;&nbsp; #(不允许修改) <BR>db_domain=dbcenter.toys.com <BR>instance_name=orcl <BR>service_names=orcl.dbcenter.toys.com <BR>control_file=(............... <BR>......... <BR>[/code:1:1aaf156970] <BR><BR>在每一个运行的ORACLE8i数据库中都有一个数据库名(db_name),如果一个服务器程序中创建了两个数据库，则有两个数据库名。其控制参数据分属在不同的pfile中控制着相关的数据库。 <BR><BR>二、什么是数据库实例名(instance_name) <BR>数据库实例名则用于和操作系统之间的联系，用于对外部连接时使用。在操作系统中要取得与数据库之间的交互，必须使用数据库实例名。例如，要和某一个数据库server连接，就必须知道其数据库实例名，只知道数据库名是没有用的，与数据库名不同，在数据安装或创建数据库之后，实例名可以被修改。数据库安装完成后，该实例名被写入数据库参数文件pfile中，格式如下： <BR>[code:1:1aaf156970] <BR>db_name="orcl"&nbsp;&nbsp;&nbsp;&nbsp; #(不允许修改) <BR>db_domain=dbcenter.toys.com <BR>instance_name=orcl&nbsp;&nbsp;#(可以修改,可以与db_name相同也可不同) <BR>service_names=orcl.dbcenter.toys.com <BR>control_file=(............... <BR>......... <BR>[/code:1:1aaf156970] <BR>数据库名与实例名之间的关系。 <BR>数据库名与实例名之间的关系一般是一一对应关系，有一个数据库名就有一个实例名，如果在一个服务器中创建两个数据库，则有两个数据库名，两个数据库实例名，用两个标识确定一个数据库，用户和实例相连接。 <BR>但在8i、9i的并行服务器结构中，数据库与实例之间不存在一一对应关系，而是一对多关系，(一个数据库对应多个实例，同一时间内用户只一个实例相联系，当某一实例出现故障，其它实例自动服务，以保证数据库安全运行。) <BR><BR>三、操作系统环境变量(ORACLE_SID) <BR>在实际中，对于数据库实例名的描述有时使用实例名(instance_name)参数，有时使用ORACLE_SID参数。这两个都是数据库实例名，它们有什么区别呢？(经常弄混) <BR>[code:1:1aaf156970] <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ORACLE_SID) <BR>OS&lt;----------------&gt;&nbsp;ORACLE&nbsp;数据库&nbsp;&lt;--------(Instance_name(实例名)) <BR><BR>[/code:1:1aaf156970] <BR>上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系，虽然这里列出的两个参数都是数据库实例名，但instance_name参数是ORACLE数据库的参数，此参数可以在参数文件中查询到，而ORACLE_SID参数则是操作系统环境变量。 <BR>操作系统环境变量ORACLE_SID用于和操作系统交互。也就是说，在操作系统中要想得到实例名，就必须使用ORACLE_SID。此参数与ORACLE_BASE、ORACLE_HOME等用法相同。在数据库安装之后，ORACLE_SID被用于定义数据库参数文件的名称。如： <BR>$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。 <BR>定义方法: <BR>[code:1:1aaf156970] <BR>export&nbsp;ORACLE_SID=orcl <BR>[/code:1:1aaf156970] <BR><BR>如果在同一服务器中创建了多个数据库，则必然同时存在多个数据库实例,这时可以重复上述定义过程，以选择不同实例。 <BR><BR>还可以用 <BR>[code:1:1aaf156970] <BR>[oracle@Datacent]$&nbsp;.&nbsp;oraenv <BR>[/code:1:1aaf156970] <BR><BR>来切换不同的ORACLE_SID来通过操作系统来启动不同的实例(instance) <BR><BR>谢谢&nbsp;&nbsp;&nbsp;:em03:<BR><BR><img src ="http://www.blogjava.net/kapok/aggbug/11943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kapok/" target="_blank">笨笨</a> 2005-09-04 17:49 <a href="http://www.blogjava.net/kapok/archive/2005/09/04/11943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>完全卸载Oracle</title><link>http://www.blogjava.net/kapok/archive/2005/09/04/11940.html</link><dc:creator>笨笨</dc:creator><author>笨笨</author><pubDate>Sun, 04 Sep 2005 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/kapok/archive/2005/09/04/11940.html</guid><wfw:comment>http://www.blogjava.net/kapok/comments/11940.html</wfw:comment><comments>http://www.blogjava.net/kapok/archive/2005/09/04/11940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kapok/comments/commentRss/11940.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kapok/services/trackbacks/11940.html</trackback:ping><description><![CDATA[<P><FONT size=2><BR></FONT><FONT size=2>软件环境： <BR>1、Windows 2000+ORACLE 8.1.7 <BR>2、ORACLE安装路径为：C:\ORACLE </FONT></P><FONT size=2>
<P>实现方法： <BR>1、 开始－＞设置－＞控制面板－＞管理工具－＞服务 <BR>停止所有Oracle服务。 </P>
<P>2、 开始－＞程序－＞Oracle - OraHome81－＞Oracle Installation Products－＞ <BR>Universal Installer <BR>卸装所有Oracle产品，但Universal Installer本身不能被删除 </P>
<P>5、 运行regedit，选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE，按del键删除这个入口。 </P>
<P>6、 运行regedit，选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services，滚动 <BR>这个列表，删除所有Oracle入口。 </P>
<P>7、 运行refedit， <BR>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application， <BR>删除所有Oracle入口。 </P>
<P>8、 开始－＞设置－＞控制面板－＞系统－＞高级－＞环境变量 <BR>删除环境变量CLASSPATH和PATH中有关Oracle的设定 </P>
<P>9、 从桌面上、STARTUP（启动）组、程序菜单中，删除所有有关Oracle的组和图标 </P>
<P>10、 删除\Program Files\Oracle目录 </P>
<P>11、 重新启动计算机，重起后才能完全删除Oracle所在目录 </P>
<P>12、 删除与Oracle有关的文件，选择Oracle所在的缺省目录C:\Oracle，删除这个入 <BR>口目录及所有子目录，并从Windows 2000目录（一般为C:\WINNT）下删除以下文 <BR>件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。 </P>
<P>13、 WIN.INI文件中若有[ORACLE]的标记段，删除该段 </P>
<P>14、 如有必要，删除所有Oracle相关的ODBC的DSN </P>
<P>15、 到事件查看器中，删除Oracle相关的日志 </P>
<P>说明： <BR>如果有个别DLL文件无法删除的情况，则不用理会，重新启动，开始新的安装， <BR>安装时，选择一个新的目录，则，安装完毕并重新启动后，老的目录及文件就可以删除掉了<BR><BR><BR><BR><BR>天狼星 第 1 页 2003-4-8<BR>Oracle 9i for Windows DBA 手册 ————关于手动删除Oracle的几点问题 有些时候，OUI删除Oracle产品后，将会在系统上遗留一些注册设置、文件和文件夹。如果希望清理系统上的Oracle安装，则可以手工删除Oracle组件。Enterprise Edition可以采用如下方式进行删除： 1）、以Administrator身份登录到Windows 2000 系统。选择Service applet 以便停止所有Oracle 服务。Oracle 的服务名都具有一个oracle或ora 的前缀。一旦停止了所有的Oracle服务，我们建议将它们设置为手工启动模式（manual start mode）。 警告 Microsoft 建议不要手工更改Windows 注册表。更改注册表可能会导致一些应用程序或Windows 工作不正常。 2）、备份Windows 注册表。启动Registry Editor 并从菜单中选择 File | Export。 3）、用命令regedt32启动Registry Editor。找到HKEY_CLASSES_ROOT节点并删除所有以字符串Oracle、ORA、ORCL开始的键。 4）、找到HKEY_LOCAL_MACHINE/SOFTWARE键并删除Oracle 和 Apache Group 键。 5）、删除HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\odbcinst.ini 下<BR>天狼星 第 2 页 2003-4-8<BR>面的Oracle ODBC Driver键。 6）、删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services和HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Servicess\EventLog\Application下所有以ORACLE起始的键。 7)、删除HKEY_CURRENT_USER\SOFTWARE\ORACLE下所有以ORACLE或ORCL起始的键。 8）、删除HKEY_CURRENT_USER\SOFTWARE\ODBC\odbcinst.ini 下所有以Oracle起始的键。 9）、寻找注册表中所有包含Oracle和ORCL字符串的键并删除它们。 10）、关闭Registry Editor。 11）、编辑环境变量（控制面板中的System applet）并修改PATH变量，从PATH中删除所有Oracle 条目。 12）、从ALL USERS 特征文件中删除Oracle Home 和Oracle Installation Products 快捷方式。这在Windows NT 中的Path winnt | Profiles | All Users | Start | Programs 以及Windows2000 和Windows XP 系统中的Documents and Settings | All Users |Start Menu | Programs 中有效。 13）、删除Program Files 中的Oracle 文件夹。如果没有成功的删除该文件夹，则可能是Windows 锁定了一些文件(DLL)。遇到这种情况，重新启动系统并删除该文件夹。 14）、删除Oracle Base 文件夹（默认情况为Oracle ）。<BR>天狼星 第 3 页 2003-4-8<BR>应注意，Oracle 9i Enterprise Edition 也安装了第三方软件诸如：Apache HTTP Server (Oracle HTTP Server 是一个 Apache Web<BR>Server 的修改版)。<BR>注意 当试图删除 c:\oracle 文件夹时，可能会得到一个“Access is denied ”的错误消息。如果遇到了这个错误提示，则应将 c:\oracle\ora90\bin\oci.dll 重新命名为 c:\oracle\ora90\bin\ocibak ,然后重新启动机器，并删除c:\oracle 文件夹。<BR><BR><BR><BR><BR>你是用Oracle的Universal Installer卸载的吧，那个卸载不完全！<BR>应该手工卸载：<BR>1、停止所有Oracle相关服务；<BR>2、删除Oracle安装目录；<BR>3、删除C:\Program\Oracle目录；<BR>4、删除注册表相关信息：<BR>&nbsp;&nbsp; HKLM\SoftWare\Oracle项<BR>&nbsp;&nbsp; HKLM\System\CurrentContralSet\Service\Ora……<BR>&nbsp;&nbsp; HKLM\System\ControlSet001\Service\Ora……<BR>&nbsp;&nbsp; HKLM\System\ControlSet002\Service\Ora……<BR>5、重新启动计算机</P>
<P>&nbsp;</P></FONT><img src ="http://www.blogjava.net/kapok/aggbug/11940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kapok/" target="_blank">笨笨</a> 2005-09-04 17:03 <a href="http://www.blogjava.net/kapok/archive/2005/09/04/11940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle Authentication</title><link>http://www.blogjava.net/kapok/archive/2005/08/05/9424.html</link><dc:creator>笨笨</dc:creator><author>笨笨</author><pubDate>Fri, 05 Aug 2005 11:12:00 GMT</pubDate><guid>http://www.blogjava.net/kapok/archive/2005/08/05/9424.html</guid><wfw:comment>http://www.blogjava.net/kapok/comments/9424.html</wfw:comment><comments>http://www.blogjava.net/kapok/archive/2005/08/05/9424.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kapok/comments/commentRss/9424.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kapok/services/trackbacks/9424.html</trackback:ping><description><![CDATA[特征：<BR><BR>域帐号登陆该机，创建数据库的时候提示“ORA-12638 身份证明检索失败”。<BR><BR>sqlnet.authentication_services <BR><BR><A href="http://www-rohan.sdsu.edu/doc/oracle/network803/A54084_01/ch3.htm">http://www-rohan.sdsu.edu/doc/oracle/network803/A54084_01/ch3.htm</A><BR><BR><BR><A href="http://www.itpub.net/139570.html">http://www.itpub.net/139570.html</A><BR><BR><BR>
<DIV class=postbody>
<P>一、服务器上使用操作系统验证<BR>1.配置SQLNET.ORA文件<BR>参数NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)<BR>表明解析客户端连接时所用的主机字符串的方式<BR>TNSNAMES表示采用TNSNAMES.ORA文件来解析<BR>ONAMES表示Oracle使用自己的名称服务器（Oracle Name Server）来解析，目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES<BR>HOSTNAME表示使用host文件，DNS，NIS等来解析</P>
<P>参数SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)<BR>表明用户连接Oracle服务器时使用哪种验证方式<BR>NONE表示Oracle数据库身份验证，NTS表示操作系统身份验证，两种方式可以并用</P>
<P><BR>2.建立相应的操作系统组及用户加入该组<BR>ORA_DBA组中的域用户和本地用户不需要Oracle用户名和密码就可以登录Oracle<BR>而且该组的用户登录数据库后都具有SYSDBA权限<BR>（多个实例时，可以建立类似这样的组ORA_SID_DBA，其中SID指实例名）<BR>同理:ORA_OPER组中的成员具有SYSOPER角色的权限。</P>
<P><BR>3.登录方式<BR>C：\&gt;sqlplus “/ as sysdba”<BR>或者C：\&gt;sqlplus nolog,然后SQL&gt;connect / as sysdba</P>
<P><BR>4.init.ora中的Remote_Login_Passwordfile对身份验证的影响<BR>三个可选值：<BR>NONE：默认值，指示Oracle系统不使用密码文件，通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限<BR>EXCLUSIVE：<BR>1.表示只有一个数据库实例可以使用密码文件<BR>2.允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户<BR>SHARED:<BR>1.表示可以有多个数据库实例可以使用密码文件<BR>2.不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户<BR>所以，如果要以操作系统身份登录，Remote_Login_Passwordfile应该设置为NONE</P>
<P><BR>5.当登录用户不是ORA_DBA组和ORA_OPER组成员时，登录数据库<BR>需要在Oracle中创建当前操作系统用户相同的用户名，如果当前用户是域用户，则名称为:domainname\yourname,<BR>如果是本地计算机用户，则名称为：computername\yourname<BR>创建方法：<BR>create "domainname\yourname" identified externally;<BR>grant connect to "domainname\yourname";</P>
<P>Windows操作系统，修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0下面添加OSAUTH_PREFIX_DOMAIN，值设为FALSE,在创建Oracle用户时可以忽略掉域名</P>
<P>这种方式下，init.ora中有一个参数将影响数据库如何匹配一个windows用户和Oracle用户<BR>os_authent_prefix = ""<BR>缺省为空，Oracle8i以前，无该参数，而使用OPS$作为用户名前缀.(Oracle用户名最大长度限制为30个字符)</P>
<P><BR>--------------------------------------------------------------------------------------------------<BR>--------------------------------------------------------------------------------------------------</P>
<P>二、远程客户端使用操作系统验证</P>
<P>首先需要在init.ora文件中设置如下参数：<BR>REMOTE_OS_AUTHENT=TRUE</P>
<P>Oracle不推荐在远程客户端上使用操作系统验证，因为客户端验证时不是通过服务器上的操作系统用户来验证，而是使用客户端自己怕操作系统来进行windows验证,这样，客户端可以采用建立对应的windows机器名和用户名的方式来欺骗Oracle的操作系统验证.<BR>例如：<BR>创建了如下Oracle用户<BR>create "zl\zyk" identified externally;<BR>grant connect to "zl\zyk";<BR>如果有一台名为ZL的机器，创建了一个名为zyk的用户，并以此登录连接Oracle服务器（连接时使用\@OracleSTR）,无需用户名和密码<BR>造成此问题的原因是，Oracle使用客户端操作系统进行验证，它无法区别zl是域名还是机器名.</P>
<P><BR>Windows &amp;.net杂志2004第7期(<A href="http://www.winnetmag.com/Windows/Articles/ArticleID/42280/pg/1/1.html">http://www.winnetmag.com/Windows/Articles/ArticleID/42280/pg/1/1.html</A>)<BR>作者在文章中强调(第三页最后一段):<BR>Oracle数据库服务器上的windows身份认证很容易实施，并且使已登录的用户访问数据库很方便<BR>但是，这种验证模型并不适合远程客户端，因为安全隐患太大。</P>
<P><BR>--------------------------------------------------------------------------------------------------<BR>--------------------------------------------------------------------------------------------------</P>
<P>三、Oracle 9i对操作系统身份认证支持的增强<BR>Oracle 9i可以与活动目录集成，通过Oracle Enterprise Security Manager 管理用户权限<BR>Enterprise user authentication做为一种新的外部集中认证模式<BR>（也叫 global user authentication,Oracle 9i以前的External user authentication仅仅采用了客户端操作系统本地认证)</P>
<P>Oracle9i运行在一个win2000及以上的域中，注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEID,参数OSAUTH_X509_NAME设置为true<BR>(默认为false,如果该参数不存在，则新增为REG_EXPAND_SZ类型)</P>
<P>注意：Windows NT 4.0 domain 不支持这种方式</P>
<P><BR>参考：<BR><A href="http://www.utexas.edu/its/unix/reference/oracledocs/v92/B10501_01/win.920/a95492/enterpri.htm">http://www.utexas.edu/its/unix/reference/oracledocs/v92/B10501_01/win.920/a95492/enterpri.htm</A><BR><A href="http://www.utexas.edu/its/unix/reference/oracledocs/v92/B10501_01/win.920/a95492/authen.htm">http://www.utexas.edu/its/unix/reference/oracledocs/v92/B10501_01/win.920/a95492/authen.htm</A><BR><A href="http://www.utexas.edu/its/unix/reference/oracledocs/v92/B10501_01/network.920/a96573/asoauth.htm">http://www.utexas.edu/its/unix/reference/oracledocs/v92/B10501_01/network.920/a96573/asoauth.htm</A><BR><BR><BR><A href="http://www.cnblogs.com/zyk/archive/2004/11/09/61786.html">http://www.cnblogs.com/zyk/archive/2004/11/09/61786.html</A></P></DIV><img src ="http://www.blogjava.net/kapok/aggbug/9424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kapok/" target="_blank">笨笨</a> 2005-08-05 19:12 <a href="http://www.blogjava.net/kapok/archive/2005/08/05/9424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>powerdesigner的一个技巧</title><link>http://www.blogjava.net/kapok/archive/2005/04/11/3146.html</link><dc:creator>笨笨</dc:creator><author>笨笨</author><pubDate>Mon, 11 Apr 2005 08:05:00 GMT</pubDate><guid>http://www.blogjava.net/kapok/archive/2005/04/11/3146.html</guid><wfw:comment>http://www.blogjava.net/kapok/comments/3146.html</wfw:comment><comments>http://www.blogjava.net/kapok/archive/2005/04/11/3146.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kapok/comments/commentRss/3146.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kapok/services/trackbacks/3146.html</trackback:ping><description><![CDATA[<A href="http://dev.csdn.net/develop/article/24/24476.shtm"><STRONG>http://dev.csdn.net/develop/article/24/24476.shtm</STRONG></A> <img src ="http://www.blogjava.net/kapok/aggbug/3146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kapok/" target="_blank">笨笨</a> 2005-04-11 16:05 <a href="http://www.blogjava.net/kapok/archive/2005/04/11/3146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle Database 10 g : 为 DBA 提供的最佳前 20 位的特性（十三） </title><link>http://www.blogjava.net/kapok/archive/2005/04/03/2784.html</link><dc:creator>笨笨</dc:creator><author>笨笨</author><pubDate>Sun, 03 Apr 2005 10:40:00 GMT</pubDate><guid>http://www.blogjava.net/kapok/archive/2005/04/03/2784.html</guid><wfw:comment>http://www.blogjava.net/kapok/comments/2784.html</wfw:comment><comments>http://www.blogjava.net/kapok/archive/2005/04/03/2784.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kapok/comments/commentRss/2784.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kapok/services/trackbacks/2784.html</trackback:ping><description><![CDATA[<P class="style34 style35" align=center><FONT color=#ff0000><STRONG>Oracle Database 10 g : 为 DBA 提供的最佳前 20 位的特性（十三） </STRONG></FONT></P>
<P class=style35 align=center>作者 Arup Nanda 来源： OTN </P>
<P class=style35 align=left><STRONG>第 13 周 </STRONG><BR><STRONG>Enterprise Manager 10 <EM>g </EM></STRONG></P>
<P class=style35 align=left><STRONG>最后，讨论一种管理和运用 Oracle 的一站式工具 — 无论对于初学者还是专家 </STRONG></P>
<P class=style35 align=left>您在日常的 DBA 相关活动中使用什么工具？我最近在一个用户群会议中提出了这个问题。 </P>
<P class=style35 align=left>答案依 DBA 的工作经验而有所不同。大部分高级管理员偏爱简单的命令行 SQL*Plus （我的个人偏好），而其余的人则偏爱使用一些第三方产品。但是，同一个问题在入门级 DBA 那里却得到了不同反应：在这一群体中， Enterprise Manager (EM) 显然是他们的选择。 </P>
<P class=style35 align=left>这些偏好不难理解。 Oracle Enterprise Manager 自从几年前推出以来一直不断进行完善，它开始时是字符模式显示的 SQL*DBA ，随后发展为基于操作系统的客户端工具，最后具有了 Java 风格。 EM 提供的信息非常详细，足够完成大多数 DBA 任务，可作为不愿或者无暇了解新语法并且希望使用 GUI 工具来管理常见数据库任务（如添加用户、修改数据文件和检查回退段）的用户的解决方案。诊断程序包为性能调节提供了非常需要的 GUI 支持。 </P>
<P class=style35 align=left>但是，阻碍 EM 广泛使用的一个主要问题是它无法跟上数据库服务器本身的发展。例如， EM 的 Oracle9 <EM>i </EM>数据库版本不支持子分区（该特性在 Oracle8 <EM>i </EM>中首次引入）。 </P>
<P class=style35 align=left>Oracle 数据库 10 <EM>g </EM>中的 EM 新版本改变了这种情况。它具有新的体系结构和新的界面，而最重要的是，它具有一个功能非常强大而完善的工具箱，提供从初学者到高级用户所需的所有 DBA 技能集。而最好之处在于，它是安装本身的一部分，无需额外费用。如果您正在评估第三方工具，您当然可以将 EM 加入评估行列中，从而使竞争更加激烈。即使您是那种 “ 笃信命令行 ” 的 DBA （象我这样），您也会非常欣赏 EM 在某些情况下能为您所提供的帮助。 </P>
<P class=style35 align=left>在本文中，我将为您介绍新的 EM 。由于该工具所涉范围甚广，因此不可能在此讨论所有的特性；我将在此介绍几个基本特性，并提供其他材料的线索。我将遵循本系列之精神提供实际的示例，演示如何使用该工具解决实际问题。 </P>
<P class=style35 align=left><STRONG>体系结构 </STRONG></P>
<P class=style35 align=left>缺省情况下，在安装 10 <EM>g </EM>软件时 , 即安装 EM 10 <EM>g </EM>时 , 在概念上它与以前版本的不同之处在于，它不是客户端安装的工具；实际上它是位于数据库服务器本身上的 HTTP 服务器（称为 DB 控制台）。（参见图 1 。）您可以使用任何浏览器查看 EM 界面。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f1></A><IMG height=196 alt="图 1" src="http://www.dbonline.cn/clip_image001_0001.gif" width=270></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 1 ： EM 体系结构 </P>
<P class=style35 align=left>DB 控制台的端口号可在 $ORACLE_HOME/install/portlist.ini 中找到。以下是一个文件的示例；对于您来说，端口可能不相同。 </P>
<P class=style35 align=left>Ultra Search HTTP port number = 5620 </P>
<P class=style35 align=left>iSQL*Plus HTTP port number = 5560 </P>
<P class=style35 align=left>Enterprise Manager Agent Port = </P>
<P class=style35 align=left>Enterprise Manager Console HTTP Port (starz10) = 5500 </P>
<P class=style35 align=left>Enterprise Manager Agent Port (starz10) = 1830 </P>
<P class=style35 align=left>从这个文件中我们了解到，数据库 starz10 的代理程序监听端口 1830 ，而 EM 控制台监听 5500 。我们可以通过输入以下 URL 来调用 EM 登录画面： </P>
<P class=style35 align=left>http://starz/em/console/logon/logon </P>
<P class=style35 align=left>该 URL 调出登录画面，从中您可以以 DBA 用户登录。在我们的示例中，我们将以 SYS 登录。 </P>
<P class=style35 align=left><STRONG>主数据库主页 </STRONG></P>
<P class=style35 align=left>登录后即出现主数据库主页。主页的上部提供对重要细节的快速浏览。（参见图 2 。） </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f2></A><IMG height=361 alt="图 2" src="http://www.dbonline.cn/image/clip_image002.jpg" width=575></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 2 ：主数据库主页（上部） </P>
<P class=style35 align=left>在上图中已圈出了最重要的一些部分，并用本文中编号的引用对其进行了标注。首先，请注意标为 “General”(1) 的部分；这一部分显示了有关数据库的一些最基本细节，如数据库从 3 月 20 日起已经启动，以及实例名称等。 Oracle Home 显示为一个超链接，当单击该链接时，将显示所有产品以及共享该主目录的所有其他 Oracle 数据库。 Listener 的超链接显示注册到监听器（其名称就显示在紧靠它的下方）的所有数据库和实例。最后，显示主机名 (starz) 。 </P>
<P class=style35 align=left>在名为 “Host CPU”(2) 的部分中，醒目地显示了 CPU 的详细信息。 “Active Sessions”(3) 部分显示了活动的会话及其当前状态 (4) 。从上面我们看到， 99% 的时间被处于等待状态的会话所占用。（我们稍后将找出导致这些等待的原因。） “High Availability”(5) 部分显示了与可用性相关的信息。例如， “Instance Recovery Time” 的值（实例的 MTTR Target 的值）确定实例崩溃恢复可能需要的时间。 </P>
<P class=style35 align=left>“Space Usage”(6) 部分很有趣：它显示与 23 个段相关的警告。（同样，稍后再详细介绍这些警告。） “Diagnostic Summary”(7) 部分提供数据库良好运行的概要信息。所发现的性能问题的数量表示自动数据库诊断监控程序 (ADDM) — 在 10g 中新增的自诊断引擎 — 主动识别出多少问题。 EM 还自动分析您的环境，以确定是否违反了所建议的最佳实践；此分析的结果显示在 “Policy Violation” 部分。最后， EM 扫描警报日志，并显示任何最新的 ORA 错误。这种信息非常有价值 — 在警报日志中自动扫描 Oracle 错误使您避免了手动搜索这些错误的很多麻烦。 </P>
<P class=style35 align=left>在数据库主页的下部，如图 3 所示，我们可以更详细地查看其中的一些消息。 “Alerts”(1) 部分显示了需要您注意的所有相关警报，每个警报都可以方便地进行配置。以第一个警报 (2) 为例，它显示 Archiver 进程因为某种原因而挂起。当然，下一步就是确定其原因。要查明原因，只需单击它即可。您将从包含该错误的 alert.log 文件中获得更多详细信息。在此情形下，故障点是一个已经填满的闪回恢复区；我们只需将其清空， Archiver 即可重新开始工作。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f3></A><IMG height=362 alt="图 3" src="http://www.dbonline.cn/image/clip_image003.jpg" width=575></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 3 ：主数据库主页（下部） </P>
<P class=style35 align=left>另一个警报 (3) 是有关等待的：数据库在 69% 的时间中等待一个与等待类 “Application” 相关的等待。还记得主页上部是如何显示一个会话处于等待状态的吗？这个警报向我们显示它正在等待什么。单击超链接将会立即为您显示实际的等待。 </P>
<P class=style35 align=left>下一个警报 (4) 显示一个审计项目，即用户 SYS 从特定的客户端机器连接到数据库。同样，通过单击超链接，您可以显示有关该连接的所有详细信息。最后一个警报 (5) 显示某些对象无效。单击超链接，您将转到对象被验证无效的画面。 </P>
<P class=style35 align=left>如您所见，数据库主页犹如显示需要您注意的所有事项的仪表板。该界面没有将详细信息堆积在屏幕上，其界面相当简洁，只需单击即可获得这些详细信息。您可以手动搜集所有这些信息，但这可能会花费很多时间和精力。 EM 10 <EM>g </EM>提供了随取随用的解决方案。 </P>
<P class=style35 align=left><STRONG>一般应用 </STRONG></P>
<P class=style35 align=left>让我们来看看如何使用新的 EM 来完成一些较常见的任务。 </P>
<P class=style35 align=left>一项常见的任务是变更表及其相应的索引。在数据库主页，如图 3 所示选择 “Administration” 选项卡，并引用标记为 6 的项目。在本页中，您可以管理数据库来配置回退段、创建表空间和模式对象、设置资源管理器、使用新的调度程序（将在以后的文章中介绍）以及更多事项。在此处选择 “Tables” ，这将调出如图 4 所示的画面。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f4></A><IMG height=337 alt="图 4" src="http://www.dbonline.cn/image/clip_image004.jpg" width=575></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 4 ：表管理 </P>
<P class=style35 align=left>注意红色圆圈中高亮显示的手电筒标志；这是用于调出数值列表的按钮。在图中所示画面中，您可以单击 LOV 标志，调出数据库中的用户列表，并从列表中选择一个用户。单击按钮 “Go” ，出现该用户的表的一个列表。您还可以使用 “%” 符号指定通配符 — 例如，通过使用 %TRANS% ，可以找出名称中带有单词 TRANS 的所有表。 </P>
<P class=style35 align=left>让我们来看一个示例。选择表 TRANS ，更改其中的一列。单击超链接，调出如图 5 所示的 “ 编辑表 ” 画面。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f5></A><IMG height=345 alt="图 5" src="http://www.dbonline.cn/image/clip_image005.jpg" width=575></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 5 ：表管理 </P>
<P class=style35 align=left>如果您要将列 ACTUAL_RATE 从 NUMBER(10) 改为 NUMBER(11) ，则可以更改数字（引用 1 ），然后单击 “Apply” 。要查看完成该任务的实际 SQL 语句，可以单击按钮 “Show SQL” 。 </P>
<P class=style35 align=left>在同一画面上还可以获得另一条重要信息：增长趋势。您将在以后一篇有关段管理的文章中了解到，观察一段时间内的对象增长情况是可能的。该画面提供了相同的信息，但却是以图形方式表示的。要查看该画面，可单击选项卡 “Segments” （ <A href="http://otn.oracle.com/index.html#f5#f5"><FONT color=#ffffff>图 5 </FONT></A>引用 2 ）。该操作调出段画面，如图 6 所示。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f6></A><IMG height=344 alt="图 6" src="http://www.dbonline.cn/image/clip_image006.jpg" width=575></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 6 ：段画面 </P>
<P class=style35 align=left>注意红色圆圈中标记的项目。该画面显示有多少空间分配给段 (2) 、实际使用了多少 (1) 以及浪费了多少 (3) 。在该画面的下部 (4) ，您可以看到一幅有关对象所用空间以及分配给对象的空间的图形。在本示例中，表的使用模式已经稳定 — 因此是直线。 </P>
<P class=style35 align=left>您可以对表执行其他管理操作，方法是使用那些用于该目的的选项卡，如用于管理约束的 “Constraints” 。 </P>
<P class=style35 align=left><STRONG>使用 EM 进行性能调节 </STRONG></P>
<P class=style35 align=left>到目前为止您已经了解到，虽然 EM 的外观已经更改，但它提供了至少与以前的 Java 版本同样多的功能。但是，与后者不同的是， EM 现在还支持更新的 Oracle 数据库功能。例如， EM 现在能够处理子分区。 </P>
<P class=style35 align=left>但是，有经验的 DBA 希望这种工具能完成更多的工作 — 尤其是在故障诊断或主动性能调节方面。让我们举个例子。回忆前文中我们的数据库正在 “Application” 等待类上处于等待状态，如数据库主页所示（ <A href="http://otn.oracle.com/index.html#f3#f3"><FONT color=#ffffff>图 3 </FONT></A>引用 3 ），而我们需要诊断其原因。在任何调整过程中需要了解的关键事情之一是有多少种组件（如 CPU 、磁盘和主机子系统）在相互作用，这样有助于在上下文环境中综合观察所有这些变量。为此，可在数据库主页中选择 “Performance” 选项卡。此操作调出如图 7 所示的画面。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f7></A><IMG height=337 alt="图 7" src="http://www.dbonline.cn/image/clip_image007.jpg" width=575></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 7 ： “Performance” 选项卡 </P>
<P class=style35 align=left>请注意所有量度已在同一时间轴上对齐，这样更容易观察它们的相互依赖性。注意尖峰 (3) ，它对应于调度程序任务。它表明，在该时刻约有七个会话正在等待与调度程序相关的等待事件。那么，影响因素是什么？注意处于同一位置（绿色区域）的 CPU 量度 — 它们显示了曾经使用过的最大 CPU 使用率，在图形中以虚线 (4) 表示。在该点前后，我们没有看到 CPU 尖峰出现，这就提供了一条线索。注意 CPU 运行队列长度中的尖峰 (1) ，这是调度程序的直接后果，调度程序可能产生了过多的内存需求，导致增加了分页活动 (2) 。如您所见，所有现象集中在一起，促进了对数据库负载 “ 概况 ” 的了解。 </P>
<P class=style35 align=left>注意在时间轴末尾的尖峰 — 增加了运行队列长度 (5) 和分页速率 (6)— 它们与物理读取的另一个尖峰相关 (7) 。原因是什么？ </P>
<P class=style35 align=left>通过比较图形 “Sessions:Waiting and Working” 与尖峰发生的时间，我们可以看到，大部分会话都在 “Application” 等待类上进行等待。但是我们需要确切地查明它在该时期内正在等待什么？单击该时间的区域，调出活动会话画面，如图 8 所示。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f8></A><IMG height=337 alt="图 8" src="http://www.dbonline.cn/image/clip_image008.jpg" width=575></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 8 ：活动会话等待 </P>
<P class=style35 align=left>该画面显示会话正在等待的等待事件是 enq:TX ?row lock contention 。那么导致此问题的 SQL 语句是什么？很简单：画面本身显示了语句 8rkquk6u9fmd0 的 SQL ID （在红色圆圈中）。单击该 SQL ID ，调出如图 9 所示的 SQL 画面。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f9></A><IMG height=337 alt="图 9" src="http://www.dbonline.cn/image/clip_image010.jpg" width=575></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 9 ： SQL 详细信息 </P>
<P class=style35 align=left>在该画面上，您可以看到关于它的 SQL 语句以及相关的详细信息，包括执行计划。它表明，这条 SQL 导致行锁争用，因此应用程序设计可能是问题的根源。 </P>
<P class=style35 align=left><STRONG>栓锁争用 </STRONG></P>
<P class=style35 align=left>假设单击 “Performance” 选项卡出现类似图 10 所示的画面。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f10></A><IMG height=337 alt="图 10" src="http://www.dbonline.cn/image/clip_image011.jpg" width=576></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 10 ： “Performance” 选项卡，示例 2 </P>
<P class=style35 align=left>在图中，请注意红色矩形中高亮显示的量度。您可以看到在 12:20AM 左右有很多与 CPU 相关的等待，这导致在 CPU 中出现庞大的运行队列。我们需要诊断这一等待。 </P>
<P class=style35 align=left>首先，单击显示 CPU 争用区域的图形（在图上标有 “Click Here” ），以详细查看该特定等待，如图 11 所示。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f11></A><IMG height=337 alt="图 11" src="http://www.dbonline.cn/image/clip_image012.jpg" width=575></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 11 ：活动会话等待 </P>
<P class=style35 align=left>注意在 “Active Sessions Working:CPU Used” 图形中带阴影的框 (1) 。您可以使用鼠标拖动它来放置焦点。此操作导致以下的饼形图（ 2 和 3 ）只在该框所包含的时段内进行计算。在这里我们看到，一个具有 id 8ggw94h7mvxd7 的特定 SQL 正在非常困难地运行 (2) 。我们还看到，具有用户名 ARUP 和 SID 265 的用户会话是最主要的运行会话 (3) 。单击该会话，查看其详细信息。此操作调出 “Session Details” 画面。单击选项卡 “Wait Events” ，调出该会话所经历的等待事件的详细信息，其画面类似于图 12 所示。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f12></A><IMG height=337 alt="图 12" src="http://www.dbonline.cn/image/clip_image014.jpg" width=576></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 12 ：等待事件的详细信息 </P>
<P class=style35 align=left>在该画面中，请注意在红色圆圈中高亮显示的 118 厘秒的最长等待，它在等待库高速缓存。当您单击 “Latch:Library Cache” 的超链接时，将会看到类似图 13 所示的画面。 </P>
<TABLE cellPadding=0>
<TBODY>
<TR>
<TD class=style35>
<P align=center><A name=f13></A><IMG height=337 alt="图 13" src="http://www.dbonline.cn/image/clip_image016.jpg" width=575></P></TD></TR></TBODY></TABLE>
<P class=style35 align=center>图 13 ：等待直方图 </P>
<P class=style35 align=left>该画面提供了 10 <EM>g </EM>数据库之前所没有提供的一些独特信息。在诊断这个栓锁争用问题时，如何知道这 118 厘秒的等待是由几个会话中的多个小等待组成，还是只是由一个会话中的一个大等待组成，从而使数据出现偏差呢？ </P>
<P class=style35 align=left>在这里，直方图可以帮助我们。从图上看，您知道大约 250 次会话拥有 1 毫秒的等待（在圆圈中高亮显示）。会话在 4 与 8 毫秒之间的某处等待了大约 180 次。该画面显示，这些等待的时间通常很短，因而它们不是栓锁争用的主要症状。 </P>
<P class=style35 align=left>在数据库主页上，您可以通过单击标为 “Advisor Central” 的选项卡来访问 ADDM 、 SQL Access Advisor 以及其他顾问程序。 ADDM 在收集量度时自动运行，并且结果立即发布在 Advisor Central 页中；当单击该页时，将显示由 ADDM 给出的建议。 SQL Tuning Advisor 也检查这些量度，并在此页上发布其建议。（我们将在以后的文章中更加详细地研究 ADDM 和 SQL Tuning Advisor 。） </P>
<P class=style35 align=left><STRONG>简化维护 </STRONG></P>
<P class=style35 align=left>数据库主页上标为 “Maintenance” 的选项卡是常用维护活动 — 如备份和恢复、数据导出或导入（ 数据泵 ）、数据库克隆以及更多活动 — 的启动控制台。在该画面上，您还可以对策略验证警报所基于的最佳实践的基本原理进行编辑。 </P>
<P class=style35 align=left><STRONG>结论 </STRONG></P>
<P class=style35 align=left>如先前所述，这篇文章所涉及的只是巨大冰山的一角。在本文中，我的目的不是为了提供全面的概述；而是希望提供对一些跨多个技能集的特定活动的快速浏览。 </P>
<P class=style35>Oracle 10 <EM>g </EM>EM 为 DBA 新手提供了足够的资源，以便很快地了解 Oracle 数据库管理的微妙之处。一本有关使用 EM 的任务及技术的好提纲是 Oracle “ 两日速成 DBA” 参考手册 。我强烈建议您阅读它，尤其是在您刚开始学习的时候。 </P>
<P class=style35>&nbsp;</P><img src ="http://www.blogjava.net/kapok/aggbug/2784.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kapok/" target="_blank">笨笨</a> 2005-04-03 18:40 <a href="http://www.blogjava.net/kapok/archive/2005/04/03/2784.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 常用句子</title><link>http://www.blogjava.net/kapok/archive/2005/03/31/2645.html</link><dc:creator>笨笨</dc:creator><author>笨笨</author><pubDate>Thu, 31 Mar 2005 03:38:00 GMT</pubDate><guid>http://www.blogjava.net/kapok/archive/2005/03/31/2645.html</guid><wfw:comment>http://www.blogjava.net/kapok/comments/2645.html</wfw:comment><comments>http://www.blogjava.net/kapok/archive/2005/03/31/2645.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kapok/comments/commentRss/2645.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kapok/services/trackbacks/2645.html</trackback:ping><description><![CDATA[大家在应用ORACLE的时候可能会遇到很多看起来不难的问题, 特别对新手来说, 今天我简单把它总结一下, 发布给大家, 希望对大家有帮助! 和大家一起探讨, 共同进步!之前内容参看： <A href="http://www.pconline.com.cn/pcjob/ittest/data/10308/201089.html">ORACLE应用常见傻瓜问题1000问(之二) </A><BR><BR>对ORACLE高手来说是不用看的. <BR><BR>　　 88. CHR()的反函数是? <BR><BR>　　 ASCII() <BR><BR>　　 SELECT CHAR(65) FROM DUAL; <BR><BR>　　 SELECT ASCII('A') FROM DUAL; <BR><BR>　　 89. 字符串的连接 <BR><BR>　　 SELECT CONCAT(COL1,COL2) FROM TABLE ; <BR><BR>　　 SELECT COL1||COL2 FROM TABLE ; <BR><BR>　　 90. 怎么把select出来的结果导到一个文本文件中？ <BR><BR>　　 SQL&gt;SPOOL C:\ABCD.TXT; <BR><BR>　　 SQL&gt;select * from table; <BR><BR>　　 SQL &gt;spool off; <BR><BR>　　 91. 怎样估算SQL执行的I/O数 ? <BR><BR>　　 SQL&gt;SET AUTOTRACE ON ; <BR><BR>　　 SQL&gt;SELECT * FROM TABLE; <BR><BR>　　 OR <BR><BR>　　 SQL&gt;SELECT * FROM v$filestat ; <BR><BR>　　 可以查看IO数 <BR>　　 92. 如何在sqlplus下改变字段大小? <BR><BR>　　 alter table table_name modify (field_name varchar2(100)); <BR><BR>　　 改大行，改小不行（除非都是空的） <BR><BR>　　 93. 如何查询某天的数据? <BR><BR>　　 select * from table_name where trunc(日期字段)＝to_date('2003-05-02','yyyy-mm-dd'); <BR><BR>　　 94. sql 语句如何插入全年日期？ <BR><BR>create table BSYEAR (d date); <BR>insert into BSYEAR <BR>select to_date('20030101','yyyymmdd')+rownum-1 <BR>from all_objects <BR>where rownum &lt;= to_char(to_date('20031231','yyyymmdd'),'ddd'); <BR><BR>　　 95. 如果修改表名? <BR><BR>　　 alter table old_table_name rename to new_table_name; <BR><BR>　　 96. 如何取得命令的返回状态值？ <BR><BR>　　 sqlcode=0 <BR><BR>　　 97. 如何知道用户拥有的权限? <BR><BR>　　 SELECT * FROM dba_sys_privs ; <BR><BR>　　 98. 从网上下载的ORACLE9I与市场上卖的标准版有什么区别？ <BR><BR>　　 从功能上说没有区别，只不过oracle公司有明文规定；从网站上下载的oracle产品不得用于 商业用途，否则侵权。 <BR>　　 99. 怎样判断数据库是运行在归档模式下还是运行在非归档模式下？ <BR><BR>　　 进入dbastudio，历程--〉数据库---〉归档查看。 <BR><BR>　　 100. sql&gt;startup pfile和ifile,spfiled有什么区别？ <BR><BR>　　 pfile就是Oracle传统的初始化参数文件，文本格式的。ifile类似于c语言里的include，用于把另一个文件引入spfile是9i里新增的并且是默认的参数文件，二进制格式startup后应该只可接pfile <BR><BR>　　 101. 如何搜索出前N条记录？ <BR><BR>SELECT * FROM empLOYEE WHERE ROWNUM &lt; n <BR>ORDER BY empno; <BR><BR>　　 102. 如何知道机器上的Oracle支持多少并发用户数? <BR><BR>　　 SQL&gt;conn internal ; <BR>　　 SQL&gt;show parameter processes ; <BR><BR>　　 103. db_block_size可以修改吗? <BR><BR>　　 一般不可以﹐不建议这样做的。 <BR><BR>　　 104. 如何统计两个表的记录总数? <BR><BR>　　 select (select count(id) from aa)+(select count(id) from bb) 总数 from dual; <BR><BR>　　 105. 怎样用Sql语句实现查找一列中第N大值？ <BR><BR>select * from <BR>(select t.*,dense_rank() over (order by sal) rank from employee) <BR>where rank = N; <BR>　　 106. 如何在给现有的日期加上2年？ <BR><BR>　　 select add_months(sysdate,24) from dual; <BR><BR>　　 107. USED_UBLK为负值表示什么意思? <BR><BR>　　 It is "harmless". <BR><BR>　　 108. Connect string是指什么? <BR><BR>　　 应该是tnsnames.ora中的服务名后面的内容 <BR><BR>　　 109. 怎样扩大REDO LOG的大小？ <BR><BR>　　 建立一个临时的redolog组，然后切换日志，删除以前的日志，建立新的日志。 <BR><BR>　　 110. tablespace 是否不能大于4G? <BR><BR>　　 没有限制. <BR><BR>　　 111. 返回大于等于N的最小整数值? <BR><BR>　　 SELECT CEIL(N) FROM DUAL; <BR><BR>　　 112. 返回小于等于N的最小整数值? <BR><BR>　　 SELECT FLOOR(N) FROM DUAL; <BR><BR>　　 113. 返回当前月的最后一天? <BR><BR>　　 SELECT LAST_DAY(SYSDATE) FROM DUAL; <BR><BR>　　 114. 如何不同用户间数据导入? <BR><BR>　　 IMP SYSTEM/MANAGER FILE=AA.DMP FROMUSER=USER_OLD TOUSER=USER_NEW ROWS=Y INDEXES=Y ; <BR>　　 115. 如何找数据库表的主键字段的名称? <BR><BR>　　 SQL&gt;SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE='P' and table_name='TABLE_NAME'; <BR><BR>　　 116. 两个结果集互加的函数? <BR><BR>　　 SQL&gt;SELECT * FROM BSEMPMS_OLD INTERSECT SELECT * FROM BSEMPMS_NEW; <BR>　　 SQL&gt;SELECT * FROM BSEMPMS_OLD UNION SELECT * FROM BSEMPMS_NEW; <BR>　　 SQL&gt;SELECT * FROM BSEMPMS_OLD UNION ALL SELECT * FROM BSEMPMS_NEW; <BR><BR>　　 117. 两个结果集互减的函数? <BR>　　 SQL&gt;SELECT * FROM BSEMPMS_OLD MINUS SELECT * FROM BSEMPMS_NEW; <BR><BR>　　 118. 如何配置Sequence? <BR><BR>　　 建sequence seq_custid <BR>　　 create sequence seq_custid start 1 incrememt by 1; <BR><BR>　　 建表时: <BR>create table cust <BR>{ cust_id smallint not null, <BR>...} <BR>insert 时: <BR>insert into table cust <BR>values( seq_cust.nextval, ...) <BR><BR><BR>　　 119&gt;.日期的各部分的常用的的写法 <BR><BR>　　 取时间点的年份的写法: <BR><BR>SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL; <BR><BR>　　 120&gt;.取时间点的月份的写法: <BR><BR>SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL; <BR>　　 121&gt;.取时间点的日的写法: <BR><BR>SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL; <BR><BR>　　 122&gt;.取时间点的时的写法: <BR><BR>SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL; <BR><BR>　　 123&gt;.取时间点的分的写法: <BR><BR>SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL; <BR><BR>　　 124&gt;.取时间点的秒的写法: <BR><BR>SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL; <BR><BR>　　 125&gt;.取时间点的日期的写法: <BR><BR>SELECT TRUNC(SYSDATE) FROM DUAL; <BR><BR>　　 126&gt;.取时间点的时间的写法: <BR><BR>SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL; <BR><BR>　　 127&gt;.日期,时间形态变为字符形态 <BR><BR>SELECT TO_CHAR(SYSDATE) FROM DUAL; <BR><BR>　　 128&gt;.将字符串转换成日期或时间形态: <BR><BR>SELECT TO_DATE('2003/08/01') FROM DUAL; <BR><BR>　　 129&gt;.返回参数的星期几的写法: <BR><BR>SELECT TO_CHAR(SYSDATE,'D') FROM DUAL; <BR><BR>　　 130&gt;.返回参数一年中的第几天的写法: <BR><BR>SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL; <BR>　　 131&gt;.返回午夜和参数中指定的时间值之间的秒数的写法: <BR><BR>SELECT TO_CHAR(SYSDATE,'SSSSS') FROM DUAL; <BR><BR>　　 132&gt;.返回参数中一年的第几周的写法: <BR><BR>SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL; <BR><BR>　　 如有问题欢迎大家一起探讨﹗ <img src ="http://www.blogjava.net/kapok/aggbug/2645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kapok/" target="_blank">笨笨</a> 2005-03-31 11:38 <a href="http://www.blogjava.net/kapok/archive/2005/03/31/2645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle的锁机制</title><link>http://www.blogjava.net/kapok/archive/2005/03/20/2269.html</link><dc:creator>笨笨</dc:creator><author>笨笨</author><pubDate>Sun, 20 Mar 2005 15:34:00 GMT</pubDate><guid>http://www.blogjava.net/kapok/archive/2005/03/20/2269.html</guid><wfw:comment>http://www.blogjava.net/kapok/comments/2269.html</wfw:comment><comments>http://www.blogjava.net/kapok/archive/2005/03/20/2269.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kapok/comments/commentRss/2269.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kapok/services/trackbacks/2269.html</trackback:ping><description><![CDATA[<P><U><FONT color=#800080><A href="http://www.51-pass.com/web/ORACLEfengsuo.htm">http://www.51-pass.com/web/ORACLEfengsuo.htm</A></FONT></U><A href="http://www.51-pass.com/web/ORACLEfengsuo.htm"></A></P><img src ="http://www.blogjava.net/kapok/aggbug/2269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kapok/" target="_blank">笨笨</a> 2005-03-20 23:34 <a href="http://www.blogjava.net/kapok/archive/2005/03/20/2269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入了解Oracle数据字典 </title><link>http://www.blogjava.net/kapok/archive/2005/03/20/2267.html</link><dc:creator>笨笨</dc:creator><author>笨笨</author><pubDate>Sun, 20 Mar 2005 14:14:00 GMT</pubDate><guid>http://www.blogjava.net/kapok/archive/2005/03/20/2267.html</guid><wfw:comment>http://www.blogjava.net/kapok/comments/2267.html</wfw:comment><comments>http://www.blogjava.net/kapok/archive/2005/03/20/2267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kapok/comments/commentRss/2267.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kapok/services/trackbacks/2267.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'"><A href="http://blog.csdn.net/emag_oracle/archive/2005/02/01/276714.aspx">http://blog.csdn.net/emag_oracle/archive/2005/02/01/276714.aspx</A><BR><BR>首先，</SPAN><SPAN lang=EN-US>Oracle</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的字典表和视图基本上可以分为三个层次。</SPAN></P>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt"><SPAN lang=EN-US><FONT face=Arial>1.1</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=EN-US><FONT face=Arial>X$</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: Arial; mso-ascii-font-family: Arial">表</SPAN></H2>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">这一部分表是</SPAN><SPAN lang=EN-US>Oracle</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">数据库的运行基础，在数据库启动时由</SPAN><SPAN lang=EN-US>Oracle</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">应用程序动态创建。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">这部分表对数据库来说至关重要，所以</SPAN><SPAN lang=EN-US>Oracle</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">不允许</SPAN><SPAN lang=EN-US>SYSDBA</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">之外的用户直接访问，显示授权不被允许。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">如果显示授权你会收到如下错误</SPAN><SPAN lang=EN-US>:</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>SQL&gt; grant select on x$ksppi to eygle;</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>grant select on x$ksppi to eygle</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>*</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN lang=EN-US>ERROR at line 1:</SPAN><SPAN lang=EN-US style="mso-fareast-font-family: 宋体"><o:p></o:p></SPAN></FONT></FONT></FONT></FONT></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>ORA-02030: can only select from fixed tables/views</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt"><SPAN lang=EN-US><FONT face=Arial>1.2</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=EN-US><FONT face=Arial>GV$</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: Arial; mso-ascii-font-family: Arial">和</SPAN><SPAN lang=EN-US><FONT face=Arial>V$</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: Arial; mso-ascii-font-family: Arial">视图</SPAN></H2>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">从</SPAN><SPAN lang=EN-US>Oracle8</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">开始，</SPAN><SPAN lang=EN-US>GV$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图开始被引入，其含义为</SPAN><SPAN lang=EN-US>Global V$.</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">除了一些特例以外，每个</SPAN><SPAN lang=EN-US>V$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图都有一个对应的</SPAN><SPAN lang=EN-US>GV$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图存在。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>GV$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图的产生是为了满足</SPAN><SPAN lang=EN-US>OPS</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">环境的需要，在</SPAN><SPAN lang=EN-US>OPS</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">环境中，查询</SPAN><SPAN lang=EN-US>GV$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图返回所有实例信息，而每个</SPAN><SPAN lang=EN-US>V$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图基于</SPAN><SPAN lang=EN-US>GV$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图，增加了</SPAN><SPAN lang=EN-US>INST_ID</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">列判断后建立，只包含当前连接实例信息。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">注意，每个</SPAN><SPAN lang=EN-US>V$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图都包含类似语句：</SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN lang=EN-US>where inst_id = USERENV('Instance')</SPAN><SPAN lang=EN-US style="mso-fareast-font-family: 宋体"><o:p></o:p></SPAN></FONT></FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">用于限制返回当前实例信息。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">我们从</SPAN><SPAN lang=EN-US>GV$FIXED_TABLE</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US>V$FIXED_TABLE</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">开始</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>SQL&gt; select view_definition from v_$fixed_view_definition where view_name='V$FIXED_TABLE';</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New">&nbsp;<o:p></o:p></FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>VIEW_DEFINITION</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN lang=EN-US>------------------------------------------------------------------------------</SPAN><SPAN lang=EN-US style="mso-fareast-font-family: 宋体"><o:p></o:p></SPAN></FONT></FONT></FONT></FONT></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN lang=EN-US>select NAME , OBJECT_ID , TYPE , TABLE_NUM from GV$FIXED_TABLE where inst_id = USERENV('Instance')</SPAN><SPAN lang=EN-US style="mso-fareast-font-family: 宋体"><o:p></o:p></SPAN></FONT></FONT></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">这里我们看到</SPAN><SPAN lang=EN-US>V$FIXED_TABLE</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">基于</SPAN><SPAN lang=EN-US>GV$FIXED_TABLE</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">创建。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>SQL&gt; select view_definition from v_$fixed_view_definition where view_name='GV$FIXED_TABLE';</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New">&nbsp;<o:p></o:p></FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>VIEW_DEFINITION</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN lang=EN-US>------------------------------------------------------------------------------</SPAN><SPAN lang=EN-US style="mso-fareast-font-family: 宋体"><o:p></o:p></SPAN></FONT></FONT></FONT></FONT></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>select inst_id,kqftanam, kqftaobj, 'TABLE', indx from x$kqfta </FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>union all </FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>select inst_id,kqfvinam, kqfviobj, 'VIEW', 65537 from x$kqfvi </FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>union all </FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>select inst_id,kqfdtnam, kqfdtobj, 'TABLE', 65537 from x$kqfdt</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">这样我们找到了</SPAN><SPAN lang=EN-US>GV$FIXED_TABLE</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图的创建语句，该视图基于</SPAN><SPAN lang=EN-US>X$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表创建。</SPAN></P>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt"><SPAN lang=EN-US><FONT face=Arial>1.3</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=EN-US><FONT face=Arial>GV_$,V_$</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: Arial; mso-ascii-font-family: Arial">视图和</SPAN><SPAN lang=EN-US><FONT face=Arial>V$,GV$</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: Arial; mso-ascii-font-family: Arial">同义词</SPAN></H2>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">这些视图是通过</SPAN><SPAN lang=EN-US>catalog.ql</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">创建。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">当</SPAN><SPAN lang=EN-US>catalog.sql</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">运行时</SPAN><SPAN lang=EN-US>:</SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>create or replace view v_$fixed_table as select * from v$fixed_table;</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>create or replace public synonym v$fixed_table for v_$fixed_table;</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New">&nbsp;<o:p></o:p></FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>create or replace view gv_$fixed_table as select * from gv$fixed_table;</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>create or replace public synonym gv$fixed_table for gv_$fixed_table;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">我们注意到，第一个视图</SPAN><SPAN lang=EN-US>V_$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US>GV_$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">首先被创建，</SPAN><SPAN lang=EN-US>v_$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US>gv_$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">两个视图。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">然后基于</SPAN><SPAN lang=EN-US>V_$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图的同义词被创建。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">所以，实际上通常我们访问的</SPAN><SPAN lang=EN-US>V$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图，其实是指向</SPAN><SPAN lang=EN-US>V_$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图的同义词。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">而</SPAN><SPAN lang=EN-US>V_$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图是基于真正的</SPAN><SPAN lang=EN-US>V$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图</SPAN><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">这个视图是基于</SPAN><SPAN lang=EN-US>X$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表建立的</SPAN><SPAN lang=EN-US>)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">而</SPAN><SPAN lang=EN-US>v$fixed_view_definition</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图是我们研究</SPAN><SPAN lang=EN-US>Oracle</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">对象关系的一个入口，仔细理解</SPAN><SPAN lang=EN-US>Oracle</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的数据字典机制，有助于深入了解和学习</SPAN><SPAN lang=EN-US>Oracle</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">数据库知识。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt"><SPAN lang=EN-US><FONT face=Arial>1.4</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: Arial; mso-ascii-font-family: Arial">再进一步</SPAN></H2>
<H3 style="MARGIN: 13pt 0cm 13pt 36pt"><SPAN lang=EN-US><FONT size=5>1.4.1</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><FONT size=5><SPAN lang=EN-US>X$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表</SPAN></FONT></H3>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">关于</SPAN><SPAN lang=EN-US>X$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表，其创建信息我们也可以从数据字典中一窥究竟。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">首先我们考察</SPAN><SPAN lang=EN-US>bootstrap$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表，该表中记录了数据库启动的基本及驱动信息。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>SQL&gt; select * from bootstrap$;</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>LINE#<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>OBJ# SQL_TEXT</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN lang=EN-US>------------------------------------------------------------------------------</SPAN><SPAN lang=EN-US style="mso-fareast-font-family: 宋体"><o:p></o:p></SPAN></FONT></FONT></FONT></FONT></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>-1<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>-1 8.0.0.0.0</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>0<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>0 CREATE ROLLBACK SEGMENT SYSTEM STORAGE (<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>INITIAL 112K NEXT 1024K MINEXTENTS 1 M</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>8<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>8 CREATE CLUSTER C_FILE#_BLOCK#("TS#" NUMBER,"SEGFILE#" NUMBER,"SEGBLOCK#" NUMBER)</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>9<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>9 CREATE INDEX I_FILE#_BLOCK# ON CLUSTER C_FILE#_BLOCK# PCTFREE 10 INITRANS 2 MAXT</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>14<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>14 CREATE TABLE SEG$("FILE#" NUMBER NOT NULL,"BLOCK#" NUMBER NOT NULL,"TYPE#" NUMBE</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>5<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=EN-US style="mso-fareast-font-family: 宋体"><SPAN style="mso-spacerun: yes">&nbsp;</SPAN></SPAN><SPAN lang=EN-US>5 CREATE TABLE CLU$("OBJ#" NUMBER NOT NULL,"DATAOBJ#" NUMBER,"TS#" NUMBER NOT NULL</SPAN></FONT></FONT></FONT></FONT></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>6<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>6 CREATE CLUSTER C_TS#("TS#" NUMBER) PCTFREE 10 PCTUSED 40 INITRANS 2 MAXTRANS 255</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>7<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>7 CREATE INDEX I_TS# ON CLUSTER C_TS# PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>....</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp; </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">这部分信息，在数据库启动时最先被加载，跟踪数据库的启动过程，我们发现数据库启动的第一个动作就是</SPAN><SPAN lang=EN-US>:</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>create table bootstrap$ ( line#<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>number not null,<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>obj#</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>number not null,<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>sql_text<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>varchar2(4000) not null)<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>storage (initial</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>50K objno 56 extents (file 1 block 377))</FONT></FONT></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp; </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 12pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">这部分代码是写在</SPAN><SPAN lang=EN-US>Oracle</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">应用程序中的，在内存中创建了</SPAN><SPAN lang=EN-US>bootstrap$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">以后，</SPAN><SPAN lang=EN-US>Oracle</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">就可以从</SPAN><SPAN lang=EN-US>file 1,block 377</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">上读取其他信息，创建重要的数据库对象。从而根据这一部分信息启动数据库，这就实现了数据库的引导，类似于操作系统的初始化。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">这部分你可以参考</SPAN><SPAN lang=EN-US>biti_rainy</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的文章。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>X$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表由此建立。这一部分表可以从</SPAN><SPAN lang=EN-US>v$fixed_table</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">中查到：</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>SQL&gt; select count(*) from v$fixed_table where name like 'X$%';</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>COUNT(*)</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>----------</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</SPAN>394<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></FONT></FONT></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">共有</SPAN><SPAN lang=EN-US>394</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">个</SPAN><SPAN lang=EN-US>X$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">对象被记录。</SPAN><SPAN lang=EN-US> </SPAN></P>
<H3 style="MARGIN: 13pt 0cm 13pt 36pt"><SPAN lang=EN-US><FONT size=5>1.4.2</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><FONT size=5><SPAN lang=EN-US>GV$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US>V$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图</SPAN></FONT></H3>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>X$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表建立以后，基于</SPAN><SPAN lang=EN-US>X$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表的</SPAN><SPAN lang=EN-US>GV$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US>V$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图得以创建。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">这部分视图我们也可以通过查询</SPAN><SPAN lang=EN-US>V$FIXED_TABLE</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">得到。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>SQL&gt; select count(*) from v$fixed_table where name like 'GV$%';</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>COUNT(*)</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>----------</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>259</FONT></FONT></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp; </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">这一部分共</SPAN><SPAN lang=EN-US>259</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">个对象。</SPAN><SPAN lang=EN-US> </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>SQL&gt; select count(*) from v$fixed_table where name like 'V$%';</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>COUNT(*)</FONT></FONT></FONT></FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>----------</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>259<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></FONT></FONT></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">同样是</SPAN><SPAN lang=EN-US>259</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">个对象。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>v$fixed_table</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">共记录了</SPAN><SPAN lang=EN-US>:</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>394 + 259 + 259 </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">共</SPAN><SPAN lang=EN-US> 912 </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">个对象。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">我们通过</SPAN><SPAN lang=EN-US>V$PARAMETER</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">视图来追踪一下数据库的架构</SPAN><SPAN lang=EN-US>:</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>SQL&gt; select view_definition from v$fixed_view_definition a where a.VIEW_NAME='V$PARAMETER';</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>VIEW_DEFINITION</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN lang=EN-US>------------------------------------------------------------------------------</SPAN><SPAN lang=EN-US style="mso-fareast-font-family: 宋体"><o:p></o:p></SPAN></FONT></FONT></FONT></FONT></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>select<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>NUM , NAME , TYPE , VALUE , ISDEFAULT , ISSES_MODIFIABLE , ISSYS_MODIFIA</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>BLE , ISMODIFIED , ISADJUSTED , DESCRIPTION, UPDATE_COMMENT from GV$PARAMETER wh</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>ere inst_id = USERENV('Instance')</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp; </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">我们看到</SPAN><SPAN lang=EN-US>V$PARAMETER</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">是由</SPAN><SPAN lang=EN-US>GV$PARAMETER</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">创建的。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>SQL&gt; select view_definition from v$fixed_view_definition a where a.VIEW_NAME='GV$PARAMETER';</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>VIEW_DEFINITION</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #d9d9d9"><FONT face="Courier New"><SPAN lang=EN-US>-----------------------------------------------------------------------------</SPAN><SPAN lang=EN-US style="mso-fareast-font-family: 宋体"><o:p></o:p></SPAN></FONT></FONT></FONT></FONT></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl,ksppstdf,<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>decode(bitand(kspp</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>iflg/256,1),1,'TRUE','FALSE'),<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>'DEFERRED',<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>3,'IMMEDIATE','FALSE'),<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>decode(bit</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>and(ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE'),<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>decode(bitand(ksppstvf,2)</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>,2,'TRUE','FALSE'),<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>ksppdesc, ksppstcmnt<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>from x$ksppi x, x$ksppcv y where (x.i</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>ndx = y.indx) and<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>((translate(ksppinm,'_','#') not like '#%') or (ksppstdf = 'F</FONT></SPAN></P>
<P class=a4 style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #d9d9d9" face="Courier New" color=#0000ff size=2>ALSE'))</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp; </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">在这里我们看到</SPAN><SPAN lang=EN-US>GV$PARAMETER</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">来源于</SPAN><SPAN lang=EN-US>x$ksppi,x$ksppcv</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">两个</SPAN><SPAN lang=EN-US>X$</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">表。</SPAN><SPAN lang=EN-US> x$ksppi,x$ksppcv </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">基本上包含所有数据库可调整参数，</SPAN><SPAN lang=EN-US>v$parameter</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">展现的是不包含</SPAN><SPAN lang=EN-US>"_"</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">开头的参数。以</SPAN><SPAN lang=EN-US>"_"</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">开头的参数我们通常称为隐含参数，一般不建议修改，但很多因为功能强大经常使用而广为人知。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P><img src ="http://www.blogjava.net/kapok/aggbug/2267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kapok/" target="_blank">笨笨</a> 2005-03-20 22:14 <a href="http://www.blogjava.net/kapok/archive/2005/03/20/2267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle的select for update</title><link>http://www.blogjava.net/kapok/archive/2005/03/08/1849.html</link><dc:creator>笨笨</dc:creator><author>笨笨</author><pubDate>Tue, 08 Mar 2005 14:13:00 GMT</pubDate><guid>http://www.blogjava.net/kapok/archive/2005/03/08/1849.html</guid><wfw:comment>http://www.blogjava.net/kapok/comments/1849.html</wfw:comment><comments>http://www.blogjava.net/kapok/archive/2005/03/08/1849.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/kapok/comments/commentRss/1849.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kapok/services/trackbacks/1849.html</trackback:ping><description><![CDATA[<TABLE style="WORD-BREAK: break-all; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
<TBODY>
<TR>
<TD vAlign=top><BR>在多数情况下，提取循环中所完成的处理都会修改由游标检查出的行，PL/SQL提供了进行这样处理的一种语法。 <BR>这种语法包括两部分——在游标声明部分的FOR&nbsp;UPDATE子句和在UPDATE或DELETE语句中的WHERE&nbsp;CURRENT&nbsp;OF&nbsp;子句。 <BR>通常，SELECT操作将不会对正处理的行执行任何锁定设置，这使得连接到该数据库的其他会话可以改变正在选择的数据。 <BR>但是，结果集仍然是一致性的。当确定了活动集以后，在执行OPEN的时刻，ORACLE会截取下该表的一个快照。在此时刻以前所提交的任何更改操作都会在活动集中反映出来。在此时刻以后所进行的任何更改操作，即使已经提交了它们，都不会被反映出来，除非将该游标重新打开。但是使用FOR&nbsp;UPDATE子句，在OPEN返回以前的活动集的相应行上会加上互斥锁，这些锁会避免其他的会话对活动集中的行进行更改。直到整个事务被提交为止。 <BR><BR>示例： <BR>DECLARE <BR>CURSOR&nbsp;C_CUR&nbsp;IS&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;STUDENDS&nbsp;FOR&nbsp;UPDATE&nbsp;OF&nbsp;XM; <BR>BEGIN <BR>OPEN&nbsp;C_CUR; <BR>WHILE&nbsp;C_CUR%FOUND&nbsp;LOOP <BR><BR>UPDATE&nbsp;STUDENDS&nbsp;SET&nbsp;XM='AA'||XM&nbsp;WHERE&nbsp;CURRENT&nbsp;OF&nbsp;C_CUR; <BR><BR>END&nbsp;LOOP; <BR>CLOSE&nbsp;C_CUR; <BR>COMMIT; <BR>END; <BR><BR><BR>需要注意的是：1、UPDATE语句仅更新在游标声明的FOR&nbsp;UPDATE子句处列出的列。如果没有列出任何列，那么所有的列都可以更新。 <BR>2、示例中的COMMIT是在提取循环完成以后才完成的，因为COMMIT将释放由该会话持有的所有锁。因为FOR&nbsp;UPDATE子句获得了锁，所以COMMIT将释放这些锁。当锁释放了，该游标就无效了。所以后继的提取操作都将返回ORACLE错误。</TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/kapok/aggbug/1849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kapok/" target="_blank">笨笨</a> 2005-03-08 22:13 <a href="http://www.blogjava.net/kapok/archive/2005/03/08/1849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>