﻿<?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>IT博客-D盘-随笔分类-Oracle</title><link>http://www.cnitblog.com/wufajiaru/category/6667.html</link><description>workspace</description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 12:53:08 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 12:53:08 GMT</pubDate><ttl>60</ttl><item><title>Oracle DBA职责及日常工作分析</title><link>http://www.cnitblog.com/wufajiaru/archive/2010/01/29/64056.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Fri, 29 Jan 2010 10:17:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2010/01/29/64056.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/64056.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2010/01/29/64056.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/64056.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/64056.html</trackback:ping><description><![CDATA[<p>DBA 职责及日常工作职责:</p>
<p>1.安装和升级数据库服务器,以及应用程序工具构建和配置网络环境.</p>
<p>2.熟悉数据库系统的存储结构预测未来的存储需求,制订数据库的存储方案.</p>
<p>3.根据开发人员设计的应用系统需求创建数据库存储结构.</p>
<p>4.根据开发人员设计的应用系统需求创建数据库对象</p>
<p>5.根据开发人员的反馈信息,在必要的时候修改数据库的结构</p>
<p>6.管理数据库的用户维护数据库的安全性</p>
<p>7.控制和监控用户对数据库的存取访问</p>
<p>8.监控和优化数据库的性能</p>
<p>9.制定数据库备份计划,灾难出现时对数据库信息进行恢复</p>
<p>10.备份和恢复数据库</p>
<p>11.联系数据库系统生产厂商,跟踪技术信息</p>
<p>12.解决客户端中间层和服务器的链接问题</p>
<p>13.保证安全连接 </p>
<p>每日工作:</p>
<p>1 确保服务器工作状态正常,各类数据库状态正常</p>
<p>2 检查硬盘空间是否够用</p>
<p>3 查看数据库日志,查看跟踪文件,检查是否有错误信息</p>
<p>4 检查备份的有效性</p>
<p>5 通过系统的性能监视器对服务器的性能参数监控发现数据库的性能是否下降,寻找原因并解决</p>
<p>6 填写dba日志</p>
<p>每周工作:</p>
<p>1 监控数据库对象的空间扩展情况</p>
<p>2 决定是否调整存储参数</p>
<p>3 对系统健康检查</p>
<p>4 检查删除没有任何意义的数据对象</p>
<p>5 检查删除没有意义的约束和触发器</p>
<p>6 对每周的备份检查处理</p>
<p>每月工作:</p>
<p>1 根据上面的检查情况,分析数据库中是否有影响性能的存储碎片存在</p>
<p>2 根据数据库性能的历史数据,决定如何优化性能</p>
<p>3 处理每日每周每月的备份</p>
<p>4 总结工作,提出下一步的管理计划</p>
<p>Oracle DBA日常工作总结</p>
<p>Oracle管理员应按如下方式对Oracle数据库系统做定期监控：</p>
<p>1、每天对Oracle数据库的运行状态、日志文件、备份情况、数据库空间使用情况、系统资源使用情况进行检查，发现并解决问题。</p>
<p>2、每周对数据库对象的空间扩展情况、数据的增长情况进行监控、对数据库做健康检查、对数据库对象的状态做检查。</p>
<p>3、每月对表和索引等进行analyze、检查表空间碎片、寻找数据库性能调整的机会、进行数据库性能调整、提出下一步空间管理计划。对Oracle数据库状态进行一次全面检查。</p>
<p>每天工作</p>
<p>1、确认所有的instance状态正常登录到所有数据库或实例，检测Oracle后台进程：#ps -ef | grep ora</p>
<p>2、检查文件系统的使用（剩余空间）。如果文件系统的剩余空间小于20%，需删除不用的文件以释放空间。#df -k</p>
<p>3、检查日志文件和trace文件记录alert和trace文件中的错误。 cd $Oracle_BASE/oradata/&lt;sid&gt;/bdumptail -f alert_&lt;sid&gt;.log </p>
<p><br>发现任何新的ORA_错误，记录并解决</p>
<p>4、检查数据库当日备份的有效性</p>
<p>对RMAN备份方式，检查第三方备份工具的备份日志以确定备份是否成功</p>
<p>对EXPORT备份方式，检查exp日志文件以确定备份是否成功</p>
<p>对其它备份方式，检查相应的日志文件</p>
<p>5、检查数据文件的状态记录状态不是&#8220;online"的数据文件，并做恢复。</p>
<p>select file_name from dba_data_files where status="OFFLINE" </p>
<p><br>6、检查表空间的使用情况<br>select a.tablespace_name,round((total-free)/total,3)*100 pecentfrom (select tablespace_name,sum(bytes) free from dba_free_space group by tablespace_name) a,(select tablespace_name,sum(bytes) total from dba_data_files group by tablespace_name) bwhere a.tablespace_name=b.tablespace_name </p>
<p><br>7、检查剩余表空间<br>select tablespace_name,sum(blocks) as free_blk,trunc(sum(bytes)/(1024*1024)) as free_m,max(bytes)/(1024) as big_chunk_k,count(*) as num_chunksfrom dba_free_space group by tablespace_name; </p>
<p><br>8、监控数据库性能</p>
<p>运行utlbstat.sql/utlestat.sql生成系统报告，或者使用statspace收集统计数据</p>
<p>9、检查数据库性能，记录数据库的CPU使用、IO、Buffer命中率等等，使用vmstat,iostat,glance,top</p>
<p>10、日常出现问题的处理</p>
<p>每周的工作</p>
<p>1、控制数据库对象的空间扩展情况，根据本周每天的检查情况找到空间扩展很快的数据库对象，并采取相应的措施。</p>
<p>删除历史数据、扩展表空间<br>alter tablespace &lt;name&gt; add datafile '&lt;file&gt;' size &lt;size&gt; </p>
<p><br>调整数据对象的存储参数　next extent pct_increase</p>
<p>2、监控数据量的增长情况</p>
<p>根据本周每天的检查情况找到记录数据数量增长很快的数据库对象，并采取相应的措施</p>
<p>删除历史数据、扩表空间</p>
<p>alter tablespace &lt;name&gt; add datafile '&lt;file&gt;' size &lt;size&gt; </p>
<p><br>3、系统健康检查</p>
<p>检查以下内容：<br>init&lt;sid&gt;.oracontrolfileredo log filearchiveingsort area sizetablespace(system,temporary,tablespace fragment)datafiles(autoextend,location)object(number of extent,next extent,index)rollback segmentlogging &amp; tracing(alert.log,max_dump_file_size,sqlnet) </p>
<p><br>4、检查无效的数据库对象</p>
<p>select owner,object_name,object_type from dba_objects where status='INVALID' </p>
<p><br>5、检查不起作用的约束</p>
<p>select owner,constraint_name,table_name,constraint_type,status from dba_constraintswhere status='DISABLED' and constraint_type='p' </p>
<p><br>6、检查无效的trigger<br>select owner,trigger_name,table_name,status from dba_triggerswhere status='DISABLED' </p>
<p><br>每月的工作</p>
<p>1、Analyze tables/indexes/cluster</p>
<p>analyze table &lt;name&gt; estimate statistics sample 50 percent;</p>
<p>2、检查表空间碎片</p>
<p>根据本月每周的检查分析数据库碎片，找到相应的解决方法</p>
<p>3、寻找数据库性能调整机会</p>
<p>比较每天对数据库性能的监控报告，确定是否有必要对数据库性能进行调整</p>
<p>4、数据库性能调整，如有必要进行性能调整</p>
<p>5、提出下一步空间管理计划，根据每周的监控，提出空间管理的改进方法</p>
<br><br>原文：<a href="http://edu.cnzz.cn/NewsInfo/23379.aspx">http://edu.cnzz.cn/NewsInfo/23379.aspx</a>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/64056.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2010-01-29 18:17 <a href="http://www.cnitblog.com/wufajiaru/archive/2010/01/29/64056.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle系统权限的分类</title><link>http://www.cnitblog.com/wufajiaru/archive/2010/01/28/64031.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Thu, 28 Jan 2010 07:45:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2010/01/28/64031.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/64031.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2010/01/28/64031.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/64031.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/64031.html</trackback:ping><description><![CDATA[群集权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE CLUSTER <br>在自己的方案中创建、更改和删除群集 <br>CREATE ANY CLUSTER <br>在任何方案中创建群集 <br>ALTER ANY CLUSTER <br>在任何方案中更改群集 <br>DROP ANY CLUSTER <br>在任何方案中删除群集 </div>
<br><br>数据库权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>ALTER DATABASE <br>运行ALTER DATABASE语句，更改数据库的配置 <br>ALTER SYSTEM <br>运行ALTER SYSTEM语句，更改系统的初始化参数 <br>AUDIT SYSTEM <br>运行AUDIT SYSTEM和NOAUDIT SYSTEM语句，审计SQL <br>AUDIT ANY <br>运行AUDIT和NOAUDIT语句，对任何方案的对象进行审计 </div>
<br><br>索引权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE ANY INDEX <br>在任何方案中创建索引 <br>注意：没有CREATE INDEX权限，CREATE TABLE权限包含了CREATE INDEX权限 <br>ALTER ANY INDEX <br>在任何方案中更改索引 <br>DROP ANY INDEX <br>任何方案中删除索引</div>
<br><br>过程权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE PROCEDURE <br>在自己的方案中创建、更改或删除过程、函数和包 <br>CREATE ANY PROCEDURE <br>在任何方案中创建过程、函数和包 <br>ALTER ANY PROCEDURE <br>在任何方案中更改过程、函数和包 <br>DROP ANY PROCEDURE <br>在任何方案中删除过程、函数或包 <br>EXECUTE ANY PROCEDURE <br>在任何方案中执行或者引用过程 </div>
<br><br>概要文件权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE PROFILE <br>创建概要文件 <br>ALTER PROFILE <br>更改概要文件 <br>DROP PROFILE <br>删除概要文件 </div>
<br><br>角色权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE ROLE <br>创建角色 <br>ALTER ANY ROLE <br>更改任何角色 <br>DROP ANY ROLE <br>删除任何角色 <br>GRANT ANY ROLE <br>向其他角色或用户授予任何角色 <br>注意：没有对应的REVOKE ANY ROLE权限 </div>
<br><br>回退段权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE ROLLBACK SEGMENT <br>创建回退段 <br>注意：没有对撤销段的权限 <br>ALTER ROLLBACK SEGMENT <br>更改回退段 <br>DROP ROLLBACK SEGMENT <br>删除回退段 </div>
<br><br><br>序列权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE SEQLENCE <br>在自己的方案中创建、更改、删除和选择序列 <br>CREATE ANY SEQUENCE <br>在任何方案中创建序列 <br>ALTER ANY SEQUENCE <br>在任何方案中更改序列 <br>DROP ANY SEQUENCE <br>在任何方案中删除序列 <br>SELECT ANY SEQUENCE <br>在任何方案中从任何序列中进行选择 </div>
<br><br>会话权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE SESSION <br>创建会话，登录进入（连接到）数据库 <br>ALTER SESSION <br>运行ALTER SESSION语句，更改会话的属性 <br>ALTER RESOURCE COST <br>更改概要文件中的计算资源消耗的方式 <br>RESTRICTED SESSION <br>在数据库处于受限会话模式下连接到数据 </div>
<br><br><br>同义词权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE SYNONYM <br>在自己的方案中创建、删除同义词 <br>CREATE ANY SYNONYM <br>在任何方案中创建专用同义词 <br>CREATE PUBLIC SYNONYM <br>创建公共同义词 <br>DROP ANY SYNONYM <br>在任何方案中删除同义词 <br>DROP PUBLIC SYNONYM <br>删除公共同义词 </div>
<br><br>表权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE TABLE <br>在自己的方案中创建、更改和删除表 <br>CREATE ANY TABLE <br>在任何方案中创建表 <br>ALTER ANY-TABLE <br>在任何方案中更改表 <br>DROP ANY TABLE <br>在任何方案中删除表 <br>COMMENT ANY TABLE <br>在任何方案中为任何表、视图或者列添加注释 <br>SELECT ANY TABLE <br>在任何方案中选择任何表中的记录 <br>INSERT ANY TABLE <br>在任何方案中向任何表插入新记录 <br>UPDATE ANY TABLE <br>在任何方案中更改任何表中的记录 <br>DELETE ANY TABLE <br>在任何方案中删除任何表中的记录 <br>LOCK ANY TABLE <br>在任何方案中锁定任何表 <br>FLASHBACK ANY TABLE <br>允许使用AS OF子句对任何方案中的表、视图执行一个SQL语句的闪回查询 </div>
<br><br>表空间权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE TABLESPACE <br>创建表空间 <br>ALTER TABLESPACE <br>更改表空间 <br>DROP TABLESPACE <br>删除表空间，包括表、索引和表空间的群集 <br>MANAGE TABLESPACE <br>管理表空间，使表空间处于ONLINE（联机）、OFFLINE（脱机）、BEGIN BACKUP（开始备份）、END BACKUP（结束备份）状态 <br>UNLIMITED TABLESPACE <br>不受配额限制地使用表空间 <br>注意：只能将UNLIMITED TABLESPACE授予账户而不能授予角色 </div>
<br><br>用户权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE USER <br>创建用户 <br>ALTER USER <br>更改用户 <br>BECOME USER <br>当执行完全装入时，成为另一个用户 <br>DROP USER <br>删除用户 </div>
<br><br>视图权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE VIEW <br>在自己的方案中创建、更改和删除视图 <br>CREATE ANY VIEW <br>在任何方案中创建视图 <br>DROP ANY VIEW <br>在任何方案中删除视图 <br>COMMENT ANY TABLE <br>在任何方案中为任何表、视图或者列添加注释 <br>FLASHBACK ANY TABLE <br>允许使用AS OF子句对任何方案中的表、视图执行一个SQL语句的闪回查询 </div>
<br><br><br>触发器权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>CREATE TRIGGER <br>在自己的方案中创建、更改和删除触发器 <br>CREATE ANY TRIGGER <br>在任何方案中创建触发器 <br>ALTER ANY TRIGGER <br>在任何方案中更改触发器 <br>DROP ANY TRIGGER <br>在任何方案中删除触发器 <br>ADMINISTER DATABASE TRIGGER <br>允许创建ON DATABASE触发器。在能够创建ON DATABASE触发器之前，还必须先拥有CREATE TRIGGER或CREATE ANY TRIGGER权限 </div>
<br><br>专用权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>SYSOPER <br>（系统操作员权限） <br>STARTUP <br>SHUTDOWN <br>ALTER DATABASE MOUNT/OPEN <br>ALTER DATABASE BACKUP CONTROLFILE <br>ALTER DATABASE BEGIN/END BACKUP <br>ALTER DATABASE ARCHIVELOG <br>RECOVER DATABASE <br>RESTRICTED SESSION <br>CREATE SPFILE/PFILE <br>SYSDBA </div>
（系统管理员权限） <br>SYSOPER的所有权限，并带有WITH ADMIN OPTION子句 <br>CREATE DATABASE <br>RECOVER DATABASE UNTIL <br><br><br>其他权限 <br>
<div class=quote_title>引用</div>
<div class=quote_div>ANALYZE ANY <br>对任何方案中的任何表、群集或者索引执行ANALYZE语句 <br>GRANT ANY OBJECT PRIVILEGE <br>授予任何方案上的任何对象上的对象权限 <br>注意：没有对应的REVOKE ANY OBJECT PRIVILEGE <br>GRANT ANY PRIVILEGE <br>授予任何系统权限 <br>注意：没有对应的REVOKE ANY PRIVILEGE <br>SELECT ANY DICTIONARY <br>允许从sys用户所拥有的数据字典表中进行选择 </div>
<br><br>原文：<a href="http://weiruan85.javaeye.com/blog/284140">http://weiruan85.javaeye.com/blog/284140</a>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/64031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2010-01-28 15:45 <a href="http://www.cnitblog.com/wufajiaru/archive/2010/01/28/64031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLPLUS命令的使用大全 </title><link>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63919.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Fri, 22 Jan 2010 06:15:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63919.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/63919.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63919.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/63919.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/63919.html</trackback:ping><description><![CDATA[<div class=storyTitle>SQLPLUS命令的使用大全 </div>
<div class=noDisplay>=========================================================== </div>
<div class=storyInfo>作者: xsb(http://xsb.itpub.net)<br>发表于:2005.12.29 12:59<br>分类: Oracle <br>出处：http://xsb.itpub.net/post/419/49511<br>--------------------------------------------------------------- <br></div>
<div class=storytext><font size=2>SQL*PLUS命令的使用大全[zt]</font><br>
<p><font size=2>Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中，可以运行sql*plus命令与sql*plus语句。 <br>我们通常所说的DML、DDL、DCL语句都是sql*plus语句，它们执行完后，都可以保存在一个被称为sql buffer的内存区域中，并且只能保存一条最近执行的sql语句，我们可以对保存在sql buffer中的sql 语句进行修改，然后再次执行，sql*plus一般都与数据库打交道。 <br>除了sql*plus语句，在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后，不保存在sql buffer的内存区域中，它们一般用来对输出的结果进行格式化显示，以便于制作报表。 <br>下面就介绍一下一些常用的sql*plus命令： </font></p>
<p><font size=2>1. 执行一个SQL脚本文件 <br>SQL&gt;start file_name <br>SQL&gt;@ file_name <br>我们可以将多条sql语句保存在一个文本文件中，这样当要执行这个文件中的所有的sql语句时，用上面的任一命令即可，这类似于dos中的批处理。 </font></p>
<p><font size=2>2. 对当前的输入进行编辑 <br>SQL&gt;edit </font></p>
<p><font size=2>3. 重新运行上一次运行的sql语句 <br>SQL&gt;/ </font></p>
<p><font size=2>4. 将显示的内容输出到指定文件 <br>SQL&gt; SPOOL file_name <br>在屏幕上的所有内容都包含在该文件中，包括你输入的sql语句。 </font></p>
<p><font size=2>5. 关闭spool输出 <br>SQL&gt; SPOOL OFF <br>只有关闭spool输出，才会在输出文件中看到输出的内容。 </font></p>
<p><font size=2>6．显示一个表的结构 <br>SQL&gt; desc table_name </font></p>
<p><font size=2>7. COL命令： <br>主要格式化列的显示形式。 <br>该命令有许多选项，具体如下： <br>COL[UMN] [{ column|expr} [ option ...]] <br>Option选项可以是如下的子句: <br>ALI[AS] alias <br>CLE[AR] <br>FOLD_A[FTER] <br>FOLD_B[EFORE] <br>FOR[MAT] format <br>HEA[DING] text <br>JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} <br>LIKE { expr|alias} <br>NEWL[INE] <br>NEW_V[ALUE] variable <br>NOPRI[NT]|PRI[NT] <br>NUL[L] text <br>OLD_V[ALUE] variable <br>ON|OFF <br>WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] </font></p>
<p><font size=2>1). 改变缺省的列标题 <br>COLUMN column_name HEADING column_heading <br>For example: <br>Sql&gt;select * from dept; <br>DEPTNO DNAME LOC <br>---------- ---------------------------- --------- <br>10 ACCOUNTING NEW YORK <br>sql&gt;col LOC heading location <br>sql&gt;select * from dept; <br>DEPTNO DNAME location <br>--------- ---------------------------- ----------- <br>10 ACCOUNTING NEW YORK </font></p>
<p><font size=2>2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上： <br>Sql&gt;select * from emp <br>Department name Salary <br>---------- ---------- ---------- <br>10 aaa 11 <br>SQL&gt; COLUMN ENAME HEADING &#8217;Employee|Name&#8217; <br>Sql&gt;select * from emp <br>Employee <br>Department name Salary <br>---------- ---------- ---------- <br>10 aaa 11 <br>note: the col heading turn into two lines from one line. </font></p>
<p><font size=2>3). 改变列的显示长度： <br>FOR[MAT] format <br>Sql&gt;select empno,ename,job from emp; <br>EMPNO ENAME JOB <br>---------- ---------- --------- <br>7369 SMITH CLERK <br>7499 ALLEN SALESMAN <br>7521 WARD SALESMAN <br>Sql&gt; col ename format a40 <br>EMPNO ENAME JOB <br>---------- ---------------------------------------- --------- <br>7369 SMITH CLERK <br>7499 ALLEN SALESMAN <br>7521 WARD SALESMAN </font></p>
<p><font size=2>4). 设置列标题的对齐方式 <br>JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} <br>SQL&gt; col ename justify center <br>SQL&gt; / <br>EMPNO ENAME JOB <br>---------- ---------------------------------------- --------- <br>7369 SMITH CLERK <br>7499 ALLEN SALESMAN <br>7521 WARD SALESMAN <br>对于NUMBER型的列，列标题缺省在右边，其它类型的列标题缺省在左边 </font></p>
<p><font size=2>5). 不让一个列显示在屏幕上 <br>NOPRI[NT]|PRI[NT] <br>SQL&gt; col job noprint <br>SQL&gt; / <br>EMPNO ENAME <br>---------- ---------------------------------------- <br>7369 SMITH <br>7499 ALLEN <br>7521 WARD </font></p>
<p><font size=2>6). 格式化NUMBER类型列的显示： <br>SQL&gt; COLUMN SAL FORMAT $99,990 <br>SQL&gt; / <br>Employee <br>Department Name Salary Commission <br>---------- ---------- --------- ---------- <br>30 ALLEN $1,600 300 </font></p>
<p><font size=2>7). 显示列值时，如果列值为NULL值，用text值代替NULL值 <br>COMM NUL[L] text <br>SQL&gt;COL COMM NUL[L] text </font></p>
<p><font size=2>. 设置一个列的回绕方式 <br>WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] <br>COL1 <br>-------------------- <br>HOW ARE YOU? </font></p>
<p><font size=2>SQL&gt;COL COL1 FORMAT A5 <br>SQL&gt;COL COL1 WRAPPED <br>COL1 <br>----- <br>HOW A <br>RE YO <br>U? </font></p>
<p><font size=2>SQL&gt; COL COL1 WORD_WRAPPED <br>COL1 <br>----- <br>HOW <br>ARE <br>YOU? </font></p>
<p><font size=2>SQL&gt; COL COL1 WORD_WRAPPED <br>COL1 <br>----- <br>HOW A </font></p>
<p><font size=2>9). 显示列的当前的显示属性值 <br>SQL&gt; COLUMN column_name </font></p>
<p><font size=2>10). 将所有列的显示属性设为缺省值 <br>SQL&gt; CLEAR COLUMNS </font></p>
<p><font size=2>8. 屏蔽掉一个列中显示的相同的值 <br>BREAK ON break_column <br>SQL&gt; BREAK ON DEPTNO <br>SQL&gt; SELECT DEPTNO, ENAME, SAL <br>FROM EMP <br>WHERE SAL &lt; 2500 <br>ORDER BY DEPTNO; <br>DEPTNO ENAME SAL <br>---------- ----------- --------- <br>10 CLARK 2450 <br>MILLER 1300 <br>20 SMITH 800 <br>ADAMS 1100 </font></p>
<p><font size=2>9. 在上面屏蔽掉一个列中显示的相同的值的显示中，每当列值变化时在值变化之前插入n个空行。 <br>BREAK ON break_column SKIP n </font></p>
<p><font size=2>SQL&gt; BREAK ON DEPTNO SKIP 1 <br>SQL&gt; / <br>DEPTNO ENAME SAL <br>---------- ----------- --------- <br>10 CLARK 2450 <br>MILLER 1300 </font></p>
<p><font size=2>20 SMITH 800 <br>ADAMS 1100 </font></p>
<p><font size=2>10. 显示对BREAK的设置 <br>SQL&gt; BREAK </font></p>
<p><font size=2>11. 删除6、7的设置 <br>SQL&gt; CLEAR BREAKS </font></p>
<p><font size=2>12. Set 命令： <br>该命令包含许多子命令： <br>SET system_variable value <br>system_variable value 可以是如下的子句之一： <br>APPI[NFO]{ON|OFF|text} <br>ARRAY[SIZE] {15|n} <br>AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n} <br>AUTOP[RINT] {ON|OFF} <br>AUTORECOVERY [ON|OFF] <br>AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] <br>BLO[CKTERMINATOR] {.|c} <br>CMDS[EP] {;|c|ON|OFF} <br>COLSEP {_|text} <br>COM[PATIBILITY]{V7|V8|NATIVE} <br>CON[CAT] {.|c|ON|OFF} <br>COPYC[OMMIT] {0|n} <br>COPYTYPECHECK {ON|OFF} <br>DEF[INE] {&amp;|c|ON|OFF} <br>DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}] <br>ECHO {ON|OFF} <br>EDITF[ILE] file_name[.ext] <br>EMB[EDDED] {ON|OFF} <br>ESC[APE] {|c|ON|OFF} <br>FEED[BACK] {6|n|ON|OFF} <br>FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL} <br>FLU[SH] {ON|OFF} <br>HEA[DING] {ON|OFF} <br>HEADS[EP] {||c|ON|OFF} <br>INSTANCE [instance_path|LOCAL] <br>LIN[ESIZE] {80|n} <br>LOBOF[FSET] {n|1} <br>LOGSOURCE [pathname] <br>LONG {80|n} <br>LONGC[HUNKSIZE] {80|n} <br>MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL <br>{ON|OFF}] [PRE[FORMAT] {ON|OFF}] <br>NEWP[AGE] {1|n|NONE} <br>NULL text <br>NUMF[ORMAT] format <br>NUM[WIDTH] {10|n} <br>PAGES[IZE] {24|n} <br>PAU[SE] {ON|OFF|text} <br>RECSEP {WR[APPED]|EA[CH]|OFF} <br>RECSEPCHAR {_|c} <br>SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_ <br>WRAPPED]|TRU[NCATED]}] <br>SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]} <br>SHOW[MODE] {ON|OFF} <br>SQLBL[ANKLINES] {ON|OFF} <br>SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]} <br>SQLCO[NTINUE] {&gt; |text} <br>SQLN[UMBER] {ON|OFF} <br>SQLPRE[FIX] {#|c} <br>SQLP[ROMPT] {SQL&gt;|text} <br>SQLT[ERMINATOR] {;|c|ON|OFF} <br>SUF[FIX] {SQL|text} <br>TAB {ON|OFF} <br>TERM[OUT] {ON|OFF} <br>TI[ME] {ON|OFF} <br>TIMI[NG] {ON|OFF} <br>TRIM[OUT] {ON|OFF} <br>TRIMS[POOL] {ON|OFF} <br>UND[ERLINE] {-|c|ON|OFF} <br>VER[IFY] {ON|OFF} <br>WRA[P] {ON|OFF} </font></p>
<p><font size=2>1). 设置当前session是否对修改的数据进行自动提交 <br>SQL&gt;SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} </font></p>
<p><font size=2>2)．在用start命令执行一个sql脚本时，是否显示脚本中正在执行的SQL语句 <br>SQL&gt; SET ECHO {ON|OFF} </font></p>
<p><font size=2>3).是否显示当前sql语句查询或修改的行数 <br>SQL&gt; SET FEED[BACK] {6|n|ON|OFF} <br>默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ，则不管查询到多少行都返回。当为off 时，一律不显示查询的行数 </font></p>
<p><font size=2>4).是否显示列标题 <br>SQL&gt; SET HEA[DING] {ON|OFF} <br>当set heading off 时，在每页的上面不显示列标题，而是以空白行代替 </font></p>
<p><font size=2>5).设置一行可以容纳的字符数 <br>SQL&gt; SET LIN[ESIZE] {80|n} <br>如果一行的输出内容大于设置的一行可容纳的字符数，则折行显示。 </font></p>
<p><font size=2>6).设置页与页之间的分隔 <br>SQL&gt; SET NEWP[AGE] {1|n|NONE} <br>当set newpage 0 时，会在每页的开头有一个小的黑方框。 <br>当set newpage n 时，会在页和页之间隔着n个空行。 <br>当set newpage none 时，会在页和页之间没有任何间隔。 </font></p>
<p><font size=2>7).显示时，用text值代替NULL值 <br>SQL&gt; SET NULL text </font></p>
<p><font size=2>.设置一页有多少行数 <br>SQL&gt; SET PAGES[IZE] {24|n} <br>如果设为0，则所有的输出内容为一页并且不显示列标题 </font></p>
<p><font size=2>9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。 <br>SQL&gt; SET SERVEROUT[PUT] {ON|OFF} <br>在编写存储过程时，我们有时会用dbms_output.put_line将必要的信息输出，以便对存储过程进行调试，只有将serveroutput变量设为on后，信息才能显示在屏幕上。 <font size=2><strong>dbms_output.put_line会"吃掉"最前面的空格?在set serveroutput on后加上format wrapped参数!</strong></font></font></p>
<p><font size=2>10).当SQL语句的长度大于LINESIZE时，是否在显示时截取SQL语句。 <br>SQL&gt; SET WRA[P] {ON|OFF} <br>当输出的行的长度大于设置的行的长度时（用set linesize n命令设置），当set wrap on时，输出行的多于的字符会另起一行显示，否则，会将输出行的多于字符切除，不予显示。 </font></p>
<p><font size=2>11).是否在屏幕上显示输出的内容，主要用与SPOOL结合使用。 <br>SQL&gt; SET TERM[OUT] {ON|OFF} <br>在用spool命令将一个大表中的内容输出到一个文件中时，将内容输出在屏幕上会耗费大量的时间，设置set termspool off后，则输出的内容只会保存在输出文件中，不会显示在屏幕上，极大的提高了spool的速度。 </font></p>
<p><font size=2>12).将SPOOL输出中每行后面多余的空格去掉 <br>SQL&gt; SET TRIMS[OUT] {ON|OFF} </font></p>
<p><font size=2>13)显示每个sql语句花费的执行时间 <br>set TIMING {ON|OFF} </font></p>
<p><font size=2>14．修改sql buffer中的当前行中，第一个出现的字符串 <br>C[HANGE] /old_value/new_value <br>SQL&gt; l <br>1* select * from dept <br>SQL&gt; c/dept/emp <br>1* select * from emp </font></p>
<p><font size=2>15．编辑sql buffer中的sql语句 <br>EDI[T] </font></p>
<p><font size=2>16．显示sql buffer中的sql语句，list n显示sql buffer中的第n行，并使第n行成为当前行 <br>L[IST] [n] </font></p>
<p><font size=2>17．在sql buffer的当前行下面加一行或多行 <br>I[NPUT] </font></p>
<p><font size=2>18．将指定的文本加到sql buffer的当前行后面 <br>A[PPEND] <br>SQL&gt; select deptno, <br>2 dname <br>3 from dept; <br>DEPTNO DNAME <br>---------- -------------- <br>10 ACCOUNTING <br>20 RESEARCH <br>30 SALES <br>40 OPERATIONS </font></p>
<p><font size=2>SQL&gt; L 2 <br>2* dname <br>SQL&gt; a ,loc <br>2* dname,loc <br>SQL&gt; L <br>1 select deptno, <br>2 dname,loc <br>3* from dept <br>SQL&gt; / </font></p>
<p><font size=2>DEPTNO DNAME LOC <br>---------- -------------- ------------- <br>10 ACCOUNTING NEW YORK <br>20 RESEARCH DALLAS <br>30 SALES CHICAGO <br>40 OPERATIONS BOSTON </font></p>
<p><font size=2>19．将sql buffer中的sql语句保存到一个文件中 <br>SAVE file_name </font></p>
<p><font size=2>20．将一个文件中的sql语句导入到sql buffer中 <br>GET file_name </font></p>
<p><font size=2>21．再次执行刚才已经执行的sql语句 <br>RUN <br>or <br>/ </font></p>
<p><font size=2>22．执行一个存储过程 <br>EXECUTE procedure_name </font></p>
<p><font size=2>23．在sql*plus中连接到指定的数据库 <br>CONNECT </font><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#117;&#115;&#101;&#114;&#95;&#110;&#97;&#109;&#101;&#47;&#112;&#97;&#115;&#115;&#119;&#100;&#64;&#100;&#98;&#95;&#97;&#108;&#105;&#97;&#115;"><font color=#0000ff size=2><u>user_name/passwd@db_alias</u></font></a><font size=2> </font></p>
<p><font size=2>24．设置每个报表的顶部标题 <br>TTITLE </font></p>
<p><font size=2>25．设置每个报表的尾部标题 <br>BTITLE </font></p>
<p><font size=2>26．写一个注释 <br>REMARK [text] </font></p>
<p><font size=2>27．将指定的信息或一个空行输出到屏幕上 <br>PROMPT [text] </font></p>
<p><font size=2>28．将执行的过程暂停，等待用户响应后继续执行 <br>PAUSE [text] </font></p>
<p><font size=2>Sql&gt;PAUSE Adjust paper and press RETURN to continue. </font></p>
<p><font size=2>29．将一个数据库中的一些数据拷贝到另外一个数据库（如将一个表的数据拷贝到另一个数据库） <br>COPY {FROM database | TO database | FROM database TO database} <br>{APPEND|CREATE|INSERT|REPLACE} destination_table <br>[(column, column, column, ...)] USING query </font></p>
<p><font size=2>sql&gt;COPY FROM </font><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#83;&#67;&#79;&#84;&#84;&#47;&#84;&#73;&#71;&#69;&#82;&#64;&#72;&#81;"><font color=#0000ff size=2><u>SCOTT/TIGER@HQ</u></font></a><font size=2> TO </font><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#74;&#79;&#72;&#78;&#47;&#67;&#72;&#82;&#79;&#77;&#69;&#64;&#87;&#69;&#83;&#84;"><font color=#0000ff size=2><u>JOHN/CHROME@WEST</u></font></a><font size=2> <br>create emp_temp <br>USING SELECT * FROM EMP </font></p>
<p><font size=2>30．不退出sql*plus，在sql*plus中执行一个操作系统命令： <br>HOST </font></p>
<p><font size=2>Sql&gt; host hostname <br>该命令在windows下可能被支持。 </font></p>
<p><font size=2>31．在sql*plus中，切换到操作系统命令提示符下，运行操作系统命令后，可以再次切换回sql*plus： <br>! </font></p>
<p><font size=2>sql&gt;! <br>$hostname <br>$exit <br>sql&gt; </font></p>
<p><font size=2>该命令在windows下不被支持。 </font></p>
<p><font size=2>32．显示sql*plus命令的帮助 <br>HELP <br>如何安装帮助文件： <br>Sql&gt;@ ?sqlplusadminhelphlpbld.sql ?sqlplusadminhelphelpus.sql <br>Sql&gt;help index </font></p>
<p><font size=2>33．显示sql*plus系统变量的值或sql*plus环境变量的值 <br>Syntax <br>SHO[W] option <br>where option represents one of the following terms or clauses: <br>system_variable <br>ALL <br>BTI[TLE] <br>ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY| <br>TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name] <br>LNO <br>PARAMETERS [parameter_name] <br>PNO <br>REL[EASE] <br>REPF[OOTER] <br>REPH[EADER] <br>SGA <br>SPOO[L] <br>SQLCODE <br>TTI[TLE] <br>USER </font></p>
<p><font size=2>1) . 显示当前环境变量的值： <br>Show all </font></p>
<p><font size=2>2) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息 <br>Show error <br>当创建一个函数、存储过程等出错时，变可以用该命令查看在那个地方出错及相应的出错信息，进行修改后再次进行编译。 </font></p>
<p><font size=2>3) . 显示初始化参数的值： <br>show PARAMETERS [parameter_name] </font></p>
<p><font size=2>4) . 显示数据库的版本： <br>show REL[EASE] </font></p>
<p><font size=2>5) . 显示SGA的大小 <br>show SGA </font></p>
<p><font size=2>6). 显示当前的用户名 <br>show user<br>_________________</font></p>
<p><strong>xsb注：</strong></p>
<p><font size=2><strong>@2.sql与@@2.sql的区别：</strong></font></p>
<p><font size=2>比如在e:下sqlplus @e:temp1.sql<br>1.sql里的@2.sql调用的脚本位于e:目下<br>@@2.sql调用的脚本位于e:temp目录下。</font></p>
<p>&#160;</p>
</div>
<div class=storyposted>xsb 发表于:2005.12.29 12:59 ::分类: ( <a href="http://xsb.itpub.net/category/419/1165"><u><font color=#0000ff>Oracle</font></u></a> ) ::阅读:(36922次) :: <a href="http://xsb.itpub.net/post/419/49511"><u><font color=#800080>评论 (6)</font></u></a> :: <a href="http://xsb.itpub.net/trackbacks/419/49511"><u><font color=#0000ff>引用 (0)</font></u></a> </div>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/63919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2010-01-22 14:15 <a href="http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63919.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shell 调用sqlplus 各种情况示例</title><link>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63920.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Fri, 22 Jan 2010 06:15:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63920.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/63920.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/63920.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/63920.html</trackback:ping><description><![CDATA[<p>shell 调用sqlplus 各种情况示例<br>&nbsp; <br>一、最简单的shell里调用sqlplus.</p>
<p>$ vi test1.sh</p>
<p>#!/bin/bash<br>sqlplus -S /nolog &gt; result.log &lt; set heading off feedback off pagesize 0 verify off echo off<br>conn u_test/iamwangnc<br>select * from tab;<br>exit<br>EOF</p>
<p>$ chmod +x test1.sh<br>$ ./test1.sh</p>
<p>二、把sqlplus执行结果传递给shell方法一</p>
<p>注意sqlplus段使用老板键`了, 赋变量的等号两侧不能有空格.</p>
<p>$ vi test2.sh</p>
<p>#!/bin/bash<br>VALUE=`sqlplus -S /nolog &lt; set heading off feedback off pagesize 0 verify off echo off numwidth 4<br>conn u_test/iamwangnc<br>select count(*) from tab;<br>exit<br>EOF`<br>if [ "$VALUE" -gt 0 ]; then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "The number of rows is $VALUE."<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit 0<br>else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "There is no row in the table."<br>fi</p>
<p>$ chmod +x test2.sh<br>$ ./test2.sh</p>
<p>三、把sqlplus执行结果传递给shell方法二</p>
<p>注意sqlplus段使用 col .. new_value .. 定义了变量并带参数exit, 然后自动赋给了shell的$?</p>
<p>$ vi test3.sh</p>
<p>#!/bin/bash<br>sqlplus -S /nolog &gt; result.log &lt; set heading off feedback off pagesize 0 verify off echo off numwidth 4<br>conn u_test/iamwangnc<br>col coun new_value v_coun<br>select count(*) coun from tab;<br>exit v_coun<br>EOF<br>VALUE="$?"<br>echo "The number of rows is $VALUE."</p>
<p>$ chmod +x test3.sh<br>$ ./test3.sh</p>
<p>四、把shell程序参数传递给sqlplus</p>
<p>$1表示第一个参数, sqlplus里可以直接使用, 赋变量的等号两侧不能有空格不能有空格.</p>
<p>$ vi test4.sh</p>
<p>#!/bin/bash<br>NAME="$1"<br>sqlplus -S u_test/iamwangnc &lt; select * from tab where tname = upper('$NAME');<br>exit<br>EOF</p>
<p>$ chmod +x test4.sh<br>$ ./test4.sh ttt</p>
<p>五、为了安全要求每次执行shell都手工输入密码</p>
<p>$ vi test5.sh</p>
<p>#!/bin/bash<br>echo -n "Enter password for u_test:"<br>read PASSWD<br>sqlplus -S /nolog &lt; conn u_test/$PASSWD<br>select * from tab;<br>exit<br>EOF</p>
<p>$ chmod +x test5.sh<br>$ ./test5.sh</p>
<p>六、为了安全从文件读取密码</p>
<p>对密码文件设置权限, 只有用户自己才能读写.</p>
<p>$ echo 'iamwangnc' &gt; u_test.txt<br>$ chmod g-rwx,o-rwx u_test.txt<br>$ vi test6.sh</p>
<p>#!/bin/bash<br>PASSWD=`cat u_test.txt`<br>sqlplus -S /nolog &lt; conn u_test/$PASSWD<br>select * from tab;<br>exit<br>EOF</p>
<p>$ chmod +x test6.sh<br>$ ./test6.sh</p>
<p>--End-- </p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 原文地址 <a href="http://hi.baidu.com/edeed/blog/item/291698228a5694f4d7cae2c1.html">http://hi.baidu.com/edeed/blog/item/291698228a5694f4d7cae2c1.html</a> </p>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/63920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2010-01-22 14:15 <a href="http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle网络配置listener.ora、sqlnet.ora、tnsnames.ora</title><link>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63918.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Fri, 22 Jan 2010 06:13:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63918.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/63918.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63918.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/63918.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/63918.html</trackback:ping><description><![CDATA[<p>oracle网络配置listener.ora、sqlnet.ora、tnsnames.ora<br><br>oracle网络配置<br>三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora ，都是放在$ORACLE_HOME\network\admin目录下。<br>&nbsp;<br>1.&nbsp; sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件，通过这个文件来决定怎么样找一个连接中出现的连接字符串。<br>例如我们客户端输入<br>sqlplus <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#115;&#121;&#115;&#47;&#111;&#114;&#97;&#99;&#108;&#101;&#64;&#111;&#114;&#99;&#108;">sys/oracle@orcl</a><br>假如我的sqlnet.ora是下面这个样子<br>SQLNET.AUTHENTICATION_SERVICES= (NTS)<br>NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)<br>那么，客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名，通过网络的途径去解析它的 ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例，当然我这里orcl并不是一个主机名<br>如果我是这个样子<br>NAMES.DIRECTORY_PATH= (TNSNAMES)<br>那么客户端就只会从tnsnames.ora查找orcl的记录,括号中还有其他选项，如LDAP等并不常用。<br><br>2.&nbsp; Tnsnames.ora------这个文件类似于unix 的hosts文件，提供的tnsname到主机名或者ip的对应，只有当sqlnet.ora中类似<br>NAMES.DIRECTORY_PATH= (TNSNAMES) 这样，也就是客户端解析连接字符串的顺序中有TNSNAMES是，才会尝试使用这个文件。<br>PROTOCOL：客户端与服务器端通讯的协议，一般为TCP，该内容一般不用改。<br>HOST：数据库侦听所在的机器的机器名或IP地址，数据库侦听一般与数据库在同一个机器上，所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。在UNIX或WINDOWS下，可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名，或通过ipconfig(for WINDOWS) or ifconfig（for UNIX）命令得到IP地址。需要注意的是，不管用机器名或IP地址，在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名，否则需要在 hosts文件中加入数据库侦听所在的机器的机器名的解析。<br>PORT：数据库侦听正在侦听的端口，可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。<br>SERVICE_NAME：在服务器端，用system用户登陆后，sqlplus&gt; show parameter service_name命令察看。<br>ORCL 对应的本机，SALES对应的另外一个IP地址，里边还定义了使用主用服务器还是共享服务器模式进行连接<br>&nbsp;<br>#你所要连接的时候输入得TNSNAME<br>ORCL =<br>(DESCRIPTION =<br>(ADDRESS_LIST =<br>#下面是这个TNSNAME对应的主机，端口，协议<br>(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))<br>)<br>(CONNECT_DATA =<br>#使用专用服务器模式去连接需要跟服务器的模式匹配，如果没有就根据服务器的模式自动调节<br>(SERVER = DEDICATED)<br>#对应service_name，SQLPLUS&gt;;show parameter service_name; 进行查看<br>(SERVICE_NAME = orcl)<br>)<br>)<br>#下面这个类似<br>SALES =<br>(DESCRIPTION =<br>(ADDRESS_LIST =<br>(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521))<br>)<br>(CONNECT_DATA =<br>(SERVER = DEDICATED)<br>(SERVICE_NAME = sales)<br>)<br>)<br>注意：如果数据库服务器用MTS，客户端程序需要用database link时最好明确指明客户端用dedicated直连方式,不然会遇到很多跟分布式环境有关的ORACLE BUG。一般情况下数据库服务器用直接的连接会好一些，除非你的实时数据库连接数接近1000。<br>&nbsp;&nbsp;&nbsp; <br>3.&nbsp; listener.ora------listener监听器进程的配置文件<br>关于listener进程就不多说了，接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接，listener进程就不是必需的，同样的如果关闭listener进程并不会影响已经存在的数据库连接。<br>Listener.ora文件的例子<br>#listener.ora Network Configuration File: #E:\oracle\product\10.1.0\Db_2\NETWORK\ADMIN\listener.ora<br># Generated by Oracle configuration tools.<br>#下面定义LISTENER进程为哪个实例提供服务 这里是ORCL，并且它对应的ORACLE_HOME和GLOBAL_DBNAME 其中GLOBAL_DBNAME不是必需的除非<br>#使用HOSTNAME做数据库连接<br>&nbsp;<br>SID_LIST_LISTENER =<br>(SID_LIST =<br>(SID_DESC =<br>(GLOBAL_DBNAME = boway)<br>(ORACLE_HOME = E:\oracle\product\10.1.0\Db_2)<br>(SID_NAME = ORCL)<br>)<br>)<br>#监听器的名字，一台数据库可以有不止一个监听器<br>#再向下面是监听器监听的协议，ｉｐ，端口等，这里使用的ｔｃｐ１５２１端口，并且使＃用的是主机名<br>LISTENER =<br>(DESCRIPTION =<br>(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))<br>)<br>上面的例子是一个最简单的例子，但也是最普遍的。一个listener进程为一个instance(SID)提供服务。<br>监听器的操作命令<br>$ORACLE_HOME/bin/lsnrctl start,其他诸如stop,status等。具体敲完一个lsnrctl后看帮助。</p>
<p>上面说到的三个文件都可以通过图形的配置工具来完成配置<br>$ORACLE_HOME/netca 向导形式的<br>$ORACLE_HOME/netmgr<br>本人比较习惯netmgr,<br>profile 配置的是sqlnet.ora也就是名称解析的方式<br>service name 配置的是tnsnames.ora文件<br>listeners配置的是listener.ora文件，即监听器进程<br>具体的配置可以尝试一下然后来看一下配置文件。</p>
<p>这样一来总体结构就有了，是<br>当你输入sqlplus <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#115;&#121;&#115;&#47;&#111;&#114;&#97;&#99;&#108;&#101;&#64;&#111;&#114;&#99;&#108;">sys/oracle@orcl</a>的时候<br>1． 查询sqlnet.ora看看名称的解析方式，发现是TNSNAME<br>2． 则查询tnsnames.ora文件，从里边找orcl的记录，并且找到主机名，端口和service_name<br>3． 如果listener进程没有问题的话，建立与listener进程的连接。<br>4． 根据不同的服务器模式如专用服务器模式或者共享服务器模式，listener采取接下去的动作。默认是专用服务器模式，没有问题的话客户端就连接上了数据库的server process。<br>5． 这时候网络连接已经建立，listener进程的历史使命也就完成了。</p>
<p>#---------------<br>几种连接用到的命令形式<br>1.sqlplus / as sysdba 这是典型的操作系统认证，不需要listener进程<br>2.sqlplus sys/oracle 这种连接方式只能连接本机数据库，同样不需要listener进程<br>3.sqlplus <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#115;&#121;&#115;&#47;&#111;&#114;&#97;&#99;&#108;&#101;&#64;&#111;&#114;&#99;&#108;">sys/oracle@orcl</a> 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。<br>以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态，操作系统认证也不需要数据库可用，普通用户因为是数据库认证，所以数据库必需处于open状态。<br>init.ora中的Remote_Login_Passwordfile对身份验证的影响<br>&nbsp;&nbsp;&nbsp; 三个可选值：<br>&nbsp;&nbsp;&nbsp; NONE：默认值，指示Oracle系统不使用密码文件，通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限<br>&nbsp;&nbsp;&nbsp; EXCLUSIVE：<br>&nbsp;&nbsp;&nbsp; 1.表示只有一个数据库实例可以使用密码文件<br>&nbsp;&nbsp;&nbsp; 2.允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户<br>&nbsp;&nbsp;&nbsp; SHARED:<br>&nbsp;&nbsp;&nbsp; 1.表示可以有多个数据库实例可以使用密码文件<br>&nbsp;&nbsp;&nbsp; 2.不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户<br>&nbsp;&nbsp;&nbsp; 所以，如果要以操作系统身份登录，Remote_Login_Passwordfile应该设置为NONE<br>&nbsp;&nbsp;&nbsp; 当登录用户不是ORA_DBA组和ORA_OPER组成员时，登录数据库需要在Oracle中创建当前操作系统用户相同的用户名，如果当前用户是域用&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 户，则名称为:domainname\yourname,如果是本地计算机用户，则名称为：computername\yourname<br>&nbsp;&nbsp;&nbsp; 创建方法：<br>&nbsp;&nbsp;&nbsp; create "domainname\yourname" identified externally;<br>&nbsp;&nbsp;&nbsp; 操作系统，修改HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0下面添加AUTH_PREFIX_DOMAIN，值设为FALSE,在创建Oracle用户时可以忽略&nbsp;&nbsp;&nbsp;&nbsp; 掉域名<br>&nbsp;&nbsp;&nbsp; 这种方式下，init.ora中有一个参数将影响数据库如何匹配一个windows用户和Oracle用户os_authent_prefix = ""<br>&nbsp;&nbsp;&nbsp; 缺省为空，Oracle8i以前，无该参数，而使用OPS$作为用户名前缀.(Oracle用户名最大长度限制为30个字符)<br>&nbsp;<br>&nbsp;关于域名(主机名)解析&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /etc/hosts (UNIX)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者windows\hosts(WIN98)&nbsp; winnt\system32\drivers\etc\hosts (WIN2000)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 客户端需要写入数据库服务器IP地址和主机名的对应关系。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; localhost<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.0.35&nbsp;&nbsp;&nbsp; oracledb oracledb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.0.45&nbsp;&nbsp;&nbsp; tomcat tomcat<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 202.84.10.193&nbsp;&nbsp; bj_db&nbsp;&nbsp; bj_db&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有些时候我们配置好第一步后，tnsping 数据库服务器别名显示是成功的，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是sqlplus <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#117;&#115;&#101;&#114;&#110;&#97;&#109;&#101;&#47;&#112;&#97;&#115;&#115;&#119;&#111;&#114;&#100;&#64;&#115;&#101;&#114;&#118;&#105;&#99;&#101;&#110;&#97;&#109;&#101;">username/password@servicename</a>不通,jdbc thin link 也不通的时候,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一定不要忘了在客户端做这一步，原因可能是DNS服务器里没有设置这个服务器IP地址和主机名的对应关系。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果同时有私有IP和Internet上公有IP，私有IP写在前面，公有IP写在后面。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 编辑前最好留一个备份，增加一行时也最好用复制粘贴，避免编辑hosts时空格或者tab字符错误。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;UNIX下ORACLE多数据库的环境，OS客户端需要配置下面两个环境变量<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORACLE_SID=appdb;export ORACLE_SID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TWO_TASK=appdb;export TWO_TASK <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 来指定默认的目标数据库&nbsp; <br>&nbsp;<br>#-------------<br>平时排错可能会用到的<br>1．lsnrctl status查看服务器端listener进程的状态<br>LSNRCTL&gt;; help<br>The following operations are available<br>An asterisk (*) denotes a modifier or extended command:<br>start stop status<br>services version reload<br>save_config trace change_password<br>quit exit set*<br>show*<br>LSNRCTL&gt;; status<br>:em11: <br><br>文章出处：DIY部落(<a href="http://www.diybl.com/course/6_system/linux/Linuxjs/2008622/127482.html">http://www.diybl.com/course/6_system/linux/Linuxjs/2008622/127482.html</a>)</p>
<br><br><br>另外：<a href="http://hi.baidu.com/yjdzh/blog/item/67e11162278ce6dae7113a80.html">http://hi.baidu.com/yjdzh/blog/item/67e11162278ce6dae7113a80.html</a><br>
<div class=cnt id=blog_text>
<h2>tnsnames.ora 监听配置文件详解</h2>
<div class=t_msgfont>监听配置文件<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 为了使得外部进程 如 CAMS后台程序 能够访问 Oracle 数据库 必须配<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 置 Oracle 网络服务器环境 配置 Oracle 网络服务器环境是通过配置<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; listener.ora sqlnet.ora 和 tnsnames.ora 共三个文件来进行的 listener.ora<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 即监听配置文件 在本小节说明 另两个文件分别在随后的两个小节说明<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 监听配置文件 listener.ora 的存放路径为 $ORACLE_HOME/network/admin<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 以下是一个示例<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; LISTENER = &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #监听器名称<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (DESCRIPTION_LIST =<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; (DESCRIPTION =<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; (ADDRESS_LIST =<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; )<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; (ADDRESS_LIST =<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (ADDRESS =<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (PROTOCOL = TCP)<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (HOST = localhost.localdomain)<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (PORT = 1521))<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; )<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; )<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; (DESCRIPTION =<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; (PROTOCOL_STACK =<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (divSENTATION = GIOP)<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (SESSION = RAW)<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; )<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; (ADDRESS =<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (PROTOCOL = TCP)<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (HOST = localhost.localdomain)<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (PORT = 2481))<br><br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; )<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; )<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br>SID_LIST_LISTENER = #命名规则 SID_LIST_+上面定义的监听器名称<br>(SID_LIST =<br>&nbsp;&nbsp;&nbsp; (SID_DESC =<br>&nbsp;&nbsp; (SID_NAME = PLSExtProc1)<br>&nbsp;&nbsp; (ORACLE_HOME = /u01/app/oracle/product/8.1.7)<br>&nbsp;&nbsp; (PROGRAM = extproc)<br>&nbsp;&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp; (SID_DESC =<br>&nbsp;&nbsp; (GLOBAL_DBNAME = cams)<br>&nbsp;&nbsp; (ORACLE_HOME = /u01/app/oracle/product/8.1.7)<br>&nbsp;&nbsp; (SID_NAME = cams)<br>&nbsp;&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp; (SID_DESC =<br>&nbsp;&nbsp; (GLOBAL_DBNAME = oid)<br>&nbsp;&nbsp; (ORACLE_HOME = /u01/app/oracle/product/8.1.7)<br>&nbsp;&nbsp; (SID_NAME = oid)<br>&nbsp;&nbsp;&nbsp; )<br>)<br><br><br>&amp; 说明<br>1 listener.ora 文件中定义一个监听器 其缺省的名称为 LISTENER<br>这个监听器缺省以tcp/ip为协议地址且端口号为1521运行 在CAMS应用中<br>监听文件定义的监听器就使用这个缺省名字 并且使用缺省的协议 tcp/ip<br>和缺省的端口号 1521 待配置好监听文件以及随后说明的 sqlnet.ora 和<br>tnsnames.ora 文件之后 就可以用以下命令将监听文件中定义的监听器启动<br>起来<br>&nbsp;&nbsp;&nbsp; $ lsnrctl start<br>停止监听器的命令为<br>&nbsp;&nbsp;&nbsp; $ lsnrctl stop<br>监测监听器当前状态的命令为<br>&nbsp;&nbsp;&nbsp; $ lsnrctl status<br>当 lsnrctl status 命令有如下输出结果<br>&nbsp;&nbsp;&nbsp; STATUS of the LISTENER<br>&nbsp;&nbsp;&nbsp; ------------------------<br>&nbsp;&nbsp;&nbsp; Alias &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; LISTENER<br>&nbsp;&nbsp;&nbsp; Version &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; TNSLSNR for Linux: Version 8.1.7.4.0 - Production<br>&nbsp;&nbsp;&nbsp; Start Date &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 17-JAN-2004 19:00:08<br>&nbsp;&nbsp;&nbsp; Uptime &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 31 days 15 hr. 27 min. 59 sec<br>就说明监听器正在运行 否则说明监听器已经停止了 CAMS 系统的后台程<br>序的正常运行不仅依赖于数据库实例的运行 还依赖于这个数据库监听器的<br>运行 假如监听器没有启动 即使数据库已经启动 CAMS 后台程序仍然不<br>能正常工作<br>2 如(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))所示的一个<br>IPC 协议地址的监听 是为了外部进程调用用的 在数据库安装时自动设定<br>不需要改动<br><br>3 在监听文件后部还有一个 SID_LIST_LISTENER 段 该段用于定义监听<br>器的服务 即为哪些数据库实例提供监听服务 以 cams 实例为例 其对应的<br>服务信息为<br>(SID_DESC =<br>(GLOBAL_DBNAME = cams) #数据库名<br>&nbsp;&nbsp;&nbsp; (ORACLE_HOME = /u01/app/oracle/product/8.1.7)<br>(SID_NAME = cams) #数据库实例名<br>)<br><br><br>1.2.5 sqlnet.ora 文件<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sqlnet.ora 文件的存放路径为 $ORACLE_HOME/network/admin 以下是一<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 个示例<br><br>NAMES.DEFAULT_DOMAIN = localdomain<br>NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)<br>&amp; 说明<br>NAMES.DEFAULT_DOMAIN 指定网络域名 NAMES.DIRECTORY_PATH<br>指定当解析客户端连接标识符时命名方法 naming metthods 采用的优先顺<br>序 从左至右递减 &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 在 CAMS 应用中 这两个参数采用上述所示的系统缺<br>省值<br><br><br>1.2.6 tnsnames.ora 文件<br>tnsnames.ora 文件的存放路径为 $ORACLE_HOME/network/admin 以下<br>是一个示例<br>OID.LOCALDOMAIN =<br>(DESCRIPTION =<br>&nbsp;&nbsp;&nbsp; (ADDRESS_LIST =<br>&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =<br>1521))<br>&nbsp;&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp; (CONNECT_DATA =<br>&nbsp;&nbsp; (SERVICE_NAME = oid)<br>&nbsp;&nbsp;&nbsp; )<br>)<br>CAMS.LOCALDOMAIN =<br>(DESCRIPTION =<br>&nbsp;&nbsp;&nbsp; (ADDRESS_LIST =<br>&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =<br>1521))<br>&nbsp;&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp; (CONNECT_DATA =<br>&nbsp;&nbsp; (SERVICE_NAME = cams)<br>&nbsp;&nbsp;&nbsp; )<br>)<br>INST1_HTTP.LOCALDOMAIN =<br>(DESCRIPTION =<br>&nbsp;&nbsp;&nbsp; (ADDRESS_LIST =<br>&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =<br><br>1521))<br>&nbsp;&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp; (CONNECT_DATA =<br>&nbsp;&nbsp; (SERVER = SHARED)<br>&nbsp;&nbsp; (SERVICE_NAME = MODOSE)<br>&nbsp;&nbsp; (divSENTATION = http://admin)<br>&nbsp;&nbsp;&nbsp; )<br>)<br>EXTPROC_CONNECTION_DATA.LOCALDOMAIN =<br>(DESCRIPTION =<br>&nbsp;&nbsp;&nbsp; (ADDRESS_LIST =<br>&nbsp;&nbsp; (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))<br>&nbsp;&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp; (CONNECT_DATA =<br>&nbsp;&nbsp; (SID = PLSExtProc1)<br>&nbsp;&nbsp; (divSENTATION = RO)<br>&nbsp;&nbsp;&nbsp; )<br>)<br>　<br><br>&amp; 说明<br>tnsnames.ora 文件中定义一个或多个网络服务 net service cams 实例对<br>应的网络服务为<br>CAMS.LOCALDOMAIN =<br>(DESCRIPTION =<br>(ADDRESS_LIST =<br>(ADDRESS =<br>&nbsp;&nbsp; (PROTOCOL = TCP)<br>&nbsp;&nbsp; (HOST = localhost.localdomain)<br>&nbsp;&nbsp; (PORT = 1521))<br>)<br>(CONNECT_DATA =<br>(SERVICE_NAME = cams)<br>)<br>)<br>注意 这里 ADDRESS项包含三个子参数<br><br>PROTOCOL ：默认协议TCP<br><br>HOST :ip地址<br><br>PORT：端口，默认1521<br><br>CAMS.LOCALDOMAIN为数据名<br><br>要确保在监听文件中也有对应的一个 ADDRESS 项也包含同样的三个子参<br>数 并且子参数的值对应都相等 另外 这里 SERVICE_NAME 的值必需确<br>保与监听文件中某 SID_DESC项下的 SID_NAME参数的值相等</div>
</div>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/63918.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2010-01-22 14:13 <a href="http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63918.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle认证方式的研究</title><link>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63917.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Fri, 22 Jan 2010 06:10:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63917.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/63917.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/63917.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/63917.html</trackback:ping><description><![CDATA[<p><font face=宋体><font face=宋体>ORACLE数据库通过sqlnet.ora文件中的参数sqlnet.authentication_services,参数文件中的remote_login_passwordfile和口令文件pwdsid.ora三者协同作用实现身份认证.</font></font></p>
<p><font face=宋体>Sqlnet.authentication_services=(NTS)|(NONE)<br>NTS:操作系统认证方式,不使用口令文件;<br>NONE:口令文件认证方式</font></p>
<p><font face=宋体>Remote_login_passwordfile=(NONE)|(EXCLUSIVE)|(SHARED)<br>NONE:不使用口令文件,操作系统认证;<br>EXCLUSIVE:口令文件认证方式,但只有一个数据库实例可以使用此文件;<br>SHARED:口令文件认证方式,可以有多个数据库实例可以使用此文件,但此设置下只有SYS帐号能被识别,即使文件中存在其他用户的信息,也不允许他们以SYSOPER/SYSDBA登录.</font></p>
<p><font face=宋体>(1).sqlnet.authentication_services=(NTS)<br>同时Remote_login_passwordfile=(NONE),此时为操作系统认证方式.</font></p>
<p><font face=宋体>当以oracle_dba组下的用户登录进入本地的操作系统后,进行以下操作:<br>sqlplus /nolog<br>SQL&gt;conn /assysdba<br>可以以sysdba身份登录成功,进行数据库方面的操作.</font></p>
<p><font face=宋体>当以远程进行登录时,执行:<br>sqlplus /nolog<br>SQL&gt;conn /assysdba<br>则会显示:<br>ERROR:ORA-01031:insufficient privileges<br>即不允许以sysdba身份远程登录系统,这也是OS认证这所以称为本地认证方式的原因.</font></p>
<p><font face=宋体>(2).Sqlnet.authentication_services=(NONE),同时<br>Remote_login_passwordfile=(EXCLUSIVE)|(SHARED),配合口令文件PWDsid.ora,此时为口令文件认证方式:</font></p>
<p><font face=宋体>当在本地以oracle_dba组下的用户登录进入系统时,进行以下操作:<br>sqlplus /nolog<br>SQL&gt;conn /assysdba<br>则会显示:<br>ERROR:ORA-01031:insufficient privileges</font></p>
<p><font face=宋体>在本地或远程进行下边的操作:<br>sqlplus /nolog<br>SQL&gt;conn sys/密码@服务名assysdba<br>可以进入系统,也就是说口令文件认证方式允许用户从本地或远程以sysdba身份登录,但必须提供口令字.</font></p>
<p><font face=宋体><br>(3).Sqlnet.authentication_services=(NTS),同时<br>Remote_login_passwordfile=(EXCLUSIVE)|(SHARED),配合口令文件PWDsid.ora,此时为操作系统认证和口令文件认证同时起作用:</font></p>
<p>当在本地以oracle_dba组下的用户登录进入操作系统后,进行下边的操作:<br>sqlplus /nolog<br>SQL&gt;conn /assysdba<br>可以进入系统.即操作系统认证方式登录成功.</p>
<p>当在远程执行:<br>sqlplus /nolog<br>SQL&gt;conn sys/密码@服务名assysdba<br>同时可正常登录到数据库系统,即口令文件认证方式登录成功.<br>&nbsp;<wbr><br>&nbsp;<wbr><br>附：<br>要知道以下几种登陆方式不是一种概念<br>sqlplus /nolog<br>1:&nbsp;<wbr> conn /assysdba&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 本机登陆，使用操作系统认证，有无监听都可以<br>2:&nbsp;<wbr> conn sys/password assysdba&nbsp;<wbr>&nbsp;<wbr> 本机登陆，使用密码文件认证，有无监听都可以<br>3:&nbsp;<wbr> conn sys/password@dbanote assysdba&nbsp;<wbr> 可以本机可以远程，使用密码文件认证，必须有监听，必须有tnsnames.ora,remote_login_passwordfile必须是EXCLUSIVE</p>
<br>原文链接：<a href="http://www.sanwww.com/Article/jisuanjikaoshi/Oracle/zuixinzhinan/200904/17040.html">http://www.sanwww.com/Article/jisuanjikaoshi/Oracle/zuixinzhinan/200904/17040.html</a><br><!--   -->
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/63917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2010-01-22 14:10 <a href="http://www.cnitblog.com/wufajiaru/archive/2010/01/22/63917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle版本区别[zz]</title><link>http://www.cnitblog.com/wufajiaru/archive/2009/11/09/62484.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Mon, 09 Nov 2009 04:59:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2009/11/09/62484.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/62484.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2009/11/09/62484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/62484.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/62484.html</trackback:ping><description><![CDATA[<div>从ORACLE数据库产品,从ORACLE2.0开始(没有1.0)一直到ORACLE7.3.4都只是简单的版本号,但从ORACLE8开始,就出现数据库产品特性标识符,如ORACLE8i和9i,这个i是Internet的缩写,表示该产品全面支持Internet应用,简单一点说,就是融入了JAVA技术和对JAVA的支持.</div><div>从ORACLE10称为10g,这个g是Grid的缩写,表示支持"网格运算",简单一点说,就是更好地支持集群和多点应用,到目前为止,最新版的是ORACLE11g,而ORACLE还有一个产品,称为ORACLE11i,全称是Oracle Applications 11i,这里的i是Intelligence的缩写,表示电子商务智能软件,它不是数据库产品,而是一整套电子商务套件,是一套全面的商务应用软件,主要包括以下功能模块:</div><div>.财务管理--Oracle财务管理系统（Financials）</div><div>.人力资源管理--Oracle人力资源管理系统（Human Resources Management System）</div><div>.商务智能--Oracle电子商务智能（E-Business Intelligence）是一套用于报表编制和分析的应用程序</div><div>.物流管理--Oracle物流管理系统（Logistics）</div><div>.维护管理--Oracle企业资产管理（Enterprise Asset Management）、Oracle综合维护、维修和大修管理系统（Maintenance，Repair，and Overhaul）</div><div>.制造管理--Oracle制造管理系统（Manufacturing）</div><div>.市场营销管理--Oracle市场营销管理系统（Marketing）</div><div>.订单履行管理--Oracle订单履行管理系统（Order Fulfillment）</div><div>.产品生命周期管理--Oracle产品生命周期管理系统（Product Lifecycle Management）</div><div>.采购管理--Oracle采购管理系统（Procurement）</div><div>.项目管理--Oracle项目管理系统（Projects）</div><div>.销售管理--Oracle销售管理系统（Sales）</div><div>.供应链计划--Oracle供应链计划系统（Supply Chain Planning）</div><div>Oracle 10g分为4个版本，分别是：</div><div><br></div><div>1.Oracle Database Standard Edition One，最基本的商业版本，包括基本的数据库功能。</div><div><br></div><div>2.Oracle Database Standard Edition ，标准版，包括上面那个版本的功能和RAC，只有在10g的标准版中才开始包含RAC。</div><div><br></div><div>3.Oracle Database Enterprise Edition，企业版，虽说是最强劲的版本，但是并不是所有我们常用的功能都在这个版本中，很多东西仍然是要额外付费的，后面会说到。</div><div><br></div><div>4.Oracle Database Personal Edition，个人版，除了不支持RAC之外包含企业版的所有功能，但是注意的是，只有Windows平台上才提供个人版。</div><div><br></div><div><br></div><div>下面来看一下，在Standard Edition One和Standard Edition中不支持的功能（只是选了一些大家比较常见或者常用的功能），注意，这些功能除了RAC之外仍然包含在个人版中。</div><div><br></div><div>1.Oracle Data Guard，不支持。（想要高可用性的客户，就不能选择标准版）</div><div><br></div><div>2.一些Online操作，比如Online index maintenance，Online table redefinition等不支持</div><div><br></div><div>3.备份和恢复的某些操作受限，比如不支持Block级别的恢复（Block-level media recovery），不支持并行备份和恢复（Parallel backup and recovery），多重备份（Duplexed backup sets）等等</div><div><br></div><div>4.Flashback功能，在标准版中Flashback Table，Flashback Database， Flashback Transaction Query都是不支持的</div><div><br></div><div>5.VPD（Virtual Private Database）不支持</div><div><br></div><div>6.FGA（Fine-grained auditing）不支持</div><div><br></div><div>7.Partitioning，分区也不支持</div><div><br></div><div>8.Data compression，比如表压缩，分区压缩都不支持</div><div><br></div><div>9.Bitmapped index and bitmapped join index，不支持，（如果是数据仓库系统就不能选择标准版了）</div><div><br></div><div>10.Export transportable tablespace，（注意，这里只是导入不支持），但是Import transportable tablespace，包括跨平台的import都是支持的，也就是说你如果选择了标准版，那么想把数据库简单地转移到其它平台上是比较费劲的事情了</div><div><br></div><div>11.一些并行操作都不支持，包括Parallel query，Parallel DML，Parallel index build，Parallel Data Pump export and import。</div><div><br></div><div>12.不支持Streams，又少了一个高可用性的可行性方案</div><div><br></div><div>13.不支持Advanced Replication的multimaster方式，再少一个高可用性方案，当然实体化视图的复制方案仍然是支持的</div><div><br></div><div>14.Connection Manager不支持。</div><div><br></div><div><br></div><div>标准版在10g中虽然支持RAC，但是oracle是有限制的，如果要在标准版中用RAC，那么只能使用Oracle Clusterware（不支持其它任何第三方群集软件），同时必须使用ASM来做数据文件的存储管理（其它任何第三方的卷管理和文件系统都不支持）。</div><div><br></div><div><br></div><div>如果要安装另外一个数据库作为RMAN repository 或者OEM Grid Control repository那么不需要另外付费了。</div><div><br></div><div><br></div><div>另外如果你购买了最低级的那个Standard One的版本，那么下面这些功能都是不支持的。</div><div><br></div><div><br></div><div>1.RAC</div><div><br></div><div>2.Partitioning</div><div><br></div><div>3.Data Mining</div><div><br></div><div>4.Advanced Security</div><div><br></div><div>5.Label Security</div><div><br></div><div>6.OLAP</div><div><br></div><div>7.Spatial</div><div><br></div><div>8.Oracle Management Packs</div><div><br></div><div>最后还有一些关于oracle产品的FAQ：</div><div><br></div><div><br></div><div>1. Oracle数据库软件目前在售的版本号？</div><div><br></div><div>A：目前在售的是Oracle 9i 和Oracle 10g</div><div><br></div><div><br></div><div>2. 10g是不是比9i更好？</div><div><br></div><div>A：一个新版本的软件推出以后，总要经过一段时间的考验，其间会有相当多的补丁。但新版本的软件往往有更多的新特性和更友好的界面。9i和10g作为目前在售的两个版本，各有所长。相比较而言，9i更为稳定成熟，10g则提供了更多新特性。建议用户根据自己业务需求来选择，最合适的就是最好的。 （因为这个FAQ是前年的，现在建议选择oracle 10G R2的版本）</div><div><br></div><div><br></div><div>3. Oracle数据库软件有几类版本？</div><div><br></div><div>A：Oracle数据库软件分个人版、标准版1、标准版、企业版。</div><div><br></div><div><br></div><div>4. 能否说说个人版、标准版1、标准版、企业版各自的特点和区别？</div><div><br></div><div>A：标准版1（Standard Edition One）适用于1-2CPU的服务器，价格有相当的优势，但仅限单机环境，适用于中小型用户入门级应用；</div><div><br></div><div>标准版（Standard Edition）适用于1-4CPU的服务器，包括4CPU单服务器或2台双CPU服务器等配置，可以做双机热备或RAC，价格适中，适用于对数据库性能及安全性有进一步要求的大中型用户工作组级及部门级应用；</div><div><br></div><div>企业版（Enterprise Edition）适用于单机、双机、多CPU多节点集群等各种环境，功能齐全，但费用也比较高，适用于对数据库性能及可靠性有相当高要求的大型、超大型用户企业级、高端企业级应用。</div><div><br></div><div>功能模块上的比较请参考《Oracle数据库白皮书》。</div><div><br></div><div><br></div><div>5. 是不是企业版一定要比标准版好？</div><div><br></div><div>A：企业版功能齐全，提供更高可靠性和性能，但也意味着更多的软件费用和硬件开销。建议用户根据实际需求确定版本，最合适的就是最好的。</div><div><br></div><div><br></div><div>6. Oracle的订购方式？</div><div><br></div><div>A：有按用户数订购和按CPU订购两种方式，其中按CPU订购也即所谓无限用户版。</div><div><br></div><div><br></div><div>7. Oracle用户数的官方定义？</div><div><br></div><div>A：每一个访问Oracle数据库的用户，无论是自然人还是设备，都算作一个用户(Named User)。</div><div><br></div><div>英文官方定义：Named User Plus: is defined as an individual authorized by you to use the programs which are installed on a single server or multiple servers, regardless of whether the individual is actively using the programs at any given time. A non human operated device will be counted.</div><div><br></div><div><br></div><div>8. Oracle的用户数是怎么算的呢？</div><div><br></div><div>A：Oracle官方要求的各类版本的最低用户数为：</div><div><br></div><div>个人版本：1user*PC数</div><div><br></div><div>标准版1=服务器的CPU数*5</div><div><br></div><div>标准版=服务器的CPU数*10user</div><div><br></div><div>企业版=服务器的CPU数*25user；</div><div><br></div><div>用户应该根据自己的实际用户数订购，且不少于相应版本所要求的最低用户数。</div><div><br></div><div><br></div><div>9. 什么情况下须按照CPU订购？</div><div><br></div><div>A：访问Oracle的用户数很多，或者无法预估用户数的情况下，应该按照CPU（Processor）订购。</div><div><br></div><div><br></div><div>10. Processor的官方定义？</div><div><br></div><div>A：等于安装Oracle数据库软件的服务器的CPU总数。</div><div><br></div><div>英文官方定义：Processor: shall be defined as all processors where the Oracle programs are installed and/or running. Programs licensed on a Processor basis may be accessed by your internal users (including agents and contractors) and by your third party users.</div><div><br></div><div><br></div><div>11. 请举例说明？</div><div><br></div><div>A：例如，若用户的应用是基于Internet，Oracle作为网站后台数据库，根据Oracle对用户数的官方定义，每一个通过Internet访问网站（数据库）的都算作1个用户，这样用户数很多，而且无法预估，所以应按照CPU数订购。</div><div><br></div><div><br></div><div>12. 按CPU订购的费用是否很高？</div><div><br></div><div>A：一般情况下，1CPU的费用约等于50user的费用，所以如果用户数&gt;CPU数*50，则按CPU订购反而更为经济</div><div><br></div><div><br></div><div>13. 是否Internet或B/S架构的应用就必须要按照CPU订购？</div><div><br></div><div>A：不一定，如果访问Oracle数据库的用户数可以预估，且用户数不多（小于服务器CPU数*50），也可以按照用户数订购。</div><div><br></div><div><br></div><div>14. Oracle数据库软件的公开报价（List Price）是多少？</div><div><br></div><div>A：请参考公开报价（List Price）表。</div><div><br></div><div><br></div><div>15. Oracle数据库软件的价格是如何计算的？</div><div><br></div><div>A：计算公式：Q=(P*N*(1-D)*(1+22%)+415)*(1+17%)</div><div><br></div><div>其中：</div><div><br></div><div>Q：折扣后含税价格</div><div><br></div><div>P：未税单价（每用户或每CPU）</div><div><br></div><div>N：用户数或CPU（Processor）数；</div><div><br></div><div>D：折扣（%off），起步折扣为30%off。</div><div><br></div><div>22%：一年的标准服务费，其中产品支持7%，升级保障15%；</div><div><br></div><div>C：介质费，目前为人民币600/套。</div><div><br></div><div>17%：增值税</div><div><br></div><div><br></div><div>16. 折扣是多少？</div><div><br></div><div>A：Oracle官方规定Oracle数据库软件到最终用户的起步折扣是25%off，申请特别折扣必须提供最终用户信息，请参考《Oracle软件订购确认函》。</div><div><br></div><div><br></div><div>17. 是否可以提供试用版？试用期限是多长？</div><div><br></div><div>A：达成订购意向后，可以提供试用版供免费试用、评估，试用期为一个月。试用期到后若不订购，用户必须从系统中卸载、删除所安装的Oracle试用版软件。</div><div><br></div><div><br></div><div>zz from:&nbsp;<a href="http://hi.baidu.com/sunboy520555/blog/item/56c4c3102f63e606213f2ecb.html">http://hi.baidu.com/sunboy520555/blog/item/56c4c3102f63e606213f2ecb.html</a></div>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/62484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2009-11-09 12:59 <a href="http://www.cnitblog.com/wufajiaru/archive/2009/11/09/62484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>to_char timestamp @oracle</title><link>http://www.cnitblog.com/wufajiaru/archive/2009/07/08/59935.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Wed, 08 Jul 2009 04:24:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2009/07/08/59935.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/59935.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2009/07/08/59935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/59935.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/59935.html</trackback:ping><description><![CDATA[<div>select to_char(systimestamp,'yyyy-mm-dd HH24:MI:ss.ffi') from dual</div><div><br></div><div>注意ffi为 ff1 ff2 &nbsp;ff3 ... ff9</div><div><br></div><div>例如：</div><div>select to_char(systimestamp,'yyyy-mm-dd HH24:MI:ss.ff3') from dual</div><div><br></div><div>在你的SQLPLUS里执行，看看有什么变化</div>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/59935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2009-07-08 12:24 <a href="http://www.cnitblog.com/wufajiaru/archive/2009/07/08/59935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 存储过程和函数返回结果集[zz]</title><link>http://www.cnitblog.com/wufajiaru/archive/2009/04/28/56796.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Tue, 28 Apr 2009 08:16:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2009/04/28/56796.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/56796.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2009/04/28/56796.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/56796.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/56796.html</trackback:ping><description><![CDATA[牛人还是很多地呀，这个问题一下就搜到完美答案了：<br><br>
<h3 class="" title=""><a href="http://sq1228.javaeye.com/blog/192985"><u><font color=#108ac6>Oracle 存储过程返回结果集</font></u></a></h3>
<strong>关键字: 转载</strong>
<div class=blog_content>
<div class=dp-highlighter>
<div class=bar>
<div class=tools>Sql代码 <a title=复制代码 onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://sq1228.javaeye.com/blog/192985#"><img alt=复制代码 src="http://sq1228.javaeye.com/images/icon_copy.gif"></a></div>
</div>
<ol class=dp-sql>
    <li><span><span>Oracle&nbsp;存储过程返回结果集 &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>过程返回记录集：&nbsp; &nbsp;&nbsp;</span></li>
    <li><span></span><span class=keyword><strong><font color=#7f0055>CREATE</font></strong></span><span>&nbsp;</span><span class=op><font color=#808080>OR</font></span><span>&nbsp;</span><span class=func><font color=#ff1493>REPLACE</font></span><span>&nbsp;PACKAGE&nbsp;pkg_test&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span></span><span class=keyword><strong><font color=#7f0055>AS</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;myrctype&nbsp;</span><span class=keyword><strong><font color=#7f0055>IS</font></strong></span><span>&nbsp;REF&nbsp;</span><span class=keyword><strong><font color=#7f0055>CURSOR</font></strong></span><span>;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>PROCEDURE</font></strong></span><span>&nbsp;get&nbsp;(p_id&nbsp;NUMBER,&nbsp;p_rc&nbsp;</span><span class=keyword><strong><font color=#7f0055>OUT</font></strong></span><span>&nbsp;myrctype);&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span></span><span class=keyword><strong><font color=#7f0055>END</font></strong></span><span>&nbsp;pkg_test;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>/&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span></span><span class=keyword><strong><font color=#7f0055>CREATE</font></strong></span><span>&nbsp;</span><span class=op><font color=#808080>OR</font></span><span>&nbsp;</span><span class=func><font color=#ff1493>REPLACE</font></span><span>&nbsp;PACKAGE&nbsp;BODY&nbsp;pkg_test&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span></span><span class=keyword><strong><font color=#7f0055>AS</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>PROCEDURE</font></strong></span><span>&nbsp;get&nbsp;(p_id&nbsp;NUMBER,&nbsp;p_rc&nbsp;</span><span class=keyword><strong><font color=#7f0055>OUT</font></strong></span><span>&nbsp;myrctype)&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>IS</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlstr&nbsp;&nbsp;&nbsp;VARCHAR2&nbsp;(500);&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>BEGIN</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;p_id&nbsp;=&nbsp;0&nbsp;</span><span class=keyword><strong><font color=#7f0055>THEN</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>OPEN</font></strong></span><span>&nbsp;p_rc&nbsp;</span><span class=keyword><strong><font color=#7f0055>FOR</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>SELECT</font></strong></span><span>&nbsp;ID,&nbsp;</span><span class=keyword><strong><font color=#7f0055>NAME</font></strong></span><span>,&nbsp;sex,&nbsp;address,&nbsp;postcode,&nbsp;birthday&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>FROM</font></strong></span><span>&nbsp;student;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>ELSE</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlstr&nbsp;:=&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'</span><span class=keyword><strong><font color=#7f0055>select</font></strong></span><span>&nbsp;id,</span><span class=keyword><strong><font color=#7f0055>name</font></strong></span><span>,sex,address,postcode,birthday&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>from</font></strong></span><span>&nbsp;student&nbsp;</span><span class=keyword><strong><font color=#7f0055>where</font></strong></span><span>&nbsp;id=:w_id';&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>OPEN</font></strong></span><span>&nbsp;p_rc&nbsp;</span><span class=keyword><strong><font color=#7f0055>FOR</font></strong></span><span>&nbsp;sqlstr&nbsp;USING&nbsp;p_id;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>END</font></strong></span><span>&nbsp;IF;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>END</font></strong></span><span>&nbsp;get;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span></span><span class=keyword><strong><font color=#7f0055>END</font></strong></span><span>&nbsp;pkg_test;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>/&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>函数返回记录集:&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>建立带ref&nbsp;</span><span class=keyword><strong><font color=#7f0055>cursor</font></strong></span><span>定义的包和包体及函数：&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span></span><span class=keyword><strong><font color=#7f0055>CREATE</font></strong></span><span>&nbsp;</span><span class=op><font color=#808080>OR</font></span><span>&nbsp;</span><span class=func><font color=#ff1493>REPLACE</font></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>package&nbsp;pkg_test&nbsp;</span><span class=keyword><strong><font color=#7f0055>as</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>/*&nbsp;定义ref&nbsp;</span><span class=keyword><strong><font color=#7f0055>cursor</font></strong></span><span>类型&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;不加</span><span class=keyword><strong><font color=#7f0055>return</font></strong></span><span>类型，为弱类型，允许动态sql查询，&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;否则为强类型，无法使用动态sql查询;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>*/&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;type&nbsp;myrctype&nbsp;</span><span class=keyword><strong><font color=#7f0055>is</font></strong></span><span>&nbsp;ref&nbsp;</span><span class=keyword><strong><font color=#7f0055>cursor</font></strong></span><span>;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span></span><span class=comment><font color=#008200>--函数申明&nbsp; </font></span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>function</font></strong></span><span>&nbsp;get(intID&nbsp;number)&nbsp;</span><span class=keyword><strong><font color=#7f0055>return</font></strong></span><span>&nbsp;myrctype;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span></span><span class=keyword><strong><font color=#7f0055>end</font></strong></span><span>&nbsp;pkg_test;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>/&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span></span><span class=keyword><strong><font color=#7f0055>CREATE</font></strong></span><span>&nbsp;</span><span class=op><font color=#808080>OR</font></span><span>&nbsp;</span><span class=func><font color=#ff1493>REPLACE</font></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>package&nbsp;body&nbsp;pkg_test&nbsp;</span><span class=keyword><strong><font color=#7f0055>as</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span></span><span class=comment><font color=#008200>--函数体&nbsp; </font></span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>function</font></strong></span><span>&nbsp;get(intID&nbsp;number)&nbsp;</span><span class=keyword><strong><font color=#7f0055>return</font></strong></span><span>&nbsp;myrctype&nbsp;</span><span class=keyword><strong><font color=#7f0055>is</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;myrctype;&nbsp;&nbsp;</span><span class=comment><font color=#008200>--定义ref&nbsp;cursor变量&nbsp; </font></span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlstr&nbsp;varchar2(500);&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>begin</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;intID=0&nbsp;</span><span class=keyword><strong><font color=#7f0055>then</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=comment><font color=#008200>--静态测试，直接用select语句直接返回结果&nbsp; </font></span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>open</font></strong></span><span>&nbsp;rc&nbsp;</span><span class=keyword><strong><font color=#7f0055>for</font></strong></span><span>&nbsp;</span><span class=keyword><strong><font color=#7f0055>select</font></strong></span><span>&nbsp;id,</span><span class=keyword><strong><font color=#7f0055>name</font></strong></span><span>,sex,address,postcode,birthday&nbsp;</span><span class=keyword><strong><font color=#7f0055>from</font></strong></span><span>&nbsp;student;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>else</font></strong></span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=comment><font color=#008200>--动态sql赋值，用:w_id来申明该变量从外部获得&nbsp; </font></span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlstr&nbsp;:=&nbsp;</span><span class=string><font color=#0000ff>'select&nbsp;id,name,sex,address,postcode,birthday&nbsp;from&nbsp;student&nbsp;where&nbsp;id=:w_id'</font></span><span>;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=comment><font color=#008200>--动态测试，用sqlstr字符串返回结果，用using关键词传递参数&nbsp; </font></span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>open</font></strong></span><span>&nbsp;rc&nbsp;</span><span class=keyword><strong><font color=#7f0055>for</font></strong></span><span>&nbsp;sqlstr&nbsp;using&nbsp;intid;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>end</font></strong></span><span>&nbsp;if;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>return</font></strong></span><span>&nbsp;rc;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class=keyword><strong><font color=#7f0055>end</font></strong></span><span>&nbsp;get;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span></span><span class=keyword><strong><font color=#7f0055>end</font></strong></span><span>&nbsp;pkg_test;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>/&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
</div>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/56796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2009-04-28 16:16 <a href="http://www.cnitblog.com/wufajiaru/archive/2009/04/28/56796.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle数据操作和控制语言详解[zz]</title><link>http://www.cnitblog.com/wufajiaru/archive/2009/03/26/55772.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Thu, 26 Mar 2009 07:59:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2009/03/26/55772.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/55772.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2009/03/26/55772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/55772.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/55772.html</trackback:ping><description><![CDATA[<h4 class=TextColor1 style="MARGIN-BOTTOM: 0px">
<h4 class=TextColor1 style="MARGIN-BOTTOM: 0px">Oracle数据操作和控制语言详解（一）</h4>
<div>
<div><font size=3>SQL语言共分为四大类：数据查询语言DQL，数据操纵语言DML， 数据定义语言DDL，数据控制语言DCL。其中用于定义数据的结构，比如 创建、修改或者删除数据库；DCL用于定义数据库用户的权限；在这篇文章中我将详细讲述这两种语言在Oracle中的使用方法。 <br><br>　　<font color=#ac0000>DML语言</font><br><br>　　DML是SQL的一个子集，主要用于修改数据，下表列出了ORACLE支持的DML语句。<br><br></font>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>语句 </td>
            <td>用途</td>
        </tr>
        <tr>
            <td>INSERT</td>
            <td>向表中添加行</td>
        </tr>
        <tr>
            <td>UPDATE</td>
            <td>更新存储在表中的数据</td>
        </tr>
        <tr>
            <td>DELETE </td>
            <td>删除行</td>
        </tr>
        <tr>
            <td>SELECT FOR UPDATE </td>
            <td>禁止其他用户访问DML语句正在处理的行。</td>
        </tr>
        <tr>
            <td>LOCK TABLE </td>
            <td>禁止其他用户在表中使用DML语句</td>
        </tr>
    </tbody>
</table>
<p>　　插入数据<br><br>　　INSERT语句常常用于向表中插入行，行中可以有特殊数据字段，或者可以用子查询从已存在的数据中建立新行。<br><br>　　列目录是可选的，缺省的列的目录是所有的列名，包括comlumn_id,comlumn_id可以在数据字典视图ALL_TAB_COLUMNS,USER_TAB_COLUMNS,或者DBA_TAB_COLUMNS中找到。<br><br>　　插入行的数据的数量和数据类型必须和列的数量和数据类型相匹配。不符合列定义的数据类型将对插入值实行隐式数据转换。NULL字符串将一个NULL值插入适当的列中。关键字NULL常常用于表示将某列定义为NULL值。<br><br>　　下面的两个例子是等价的。<br><br></p>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>INSERT INTO customers(cust_id,state,post_code)<br>VALUE('Ariel',NULL,'94501'); </td>
        </tr>
    </tbody>
</table>
<br>　　或<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>INSERT INTO customers(cust_id,state,post_code)<br>VALUE('Ariel',,'94501');</td>
        </tr>
    </tbody>
</table>
<br>　　更新数据<br><br>　　UPDATE命令用于修改表中的数据。<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>UPDATE order_rollup<br>SET(qty,price)=(SELECT SUM(qty),SUM(price) FROM order_lines WHERE customer_id='KOHL'<br>WHERE cust_id='KOHL'<br>AND order_period=TO_DATE('01-Oct-2000')</td>
        </tr>
    </tbody>
</table>
<br>　　删除数据<br><br>　　DELETE语句用来从表中删除一行或多行数据，该命令包含两个语句：<br><br>　　　1、关键字DELETE FROM后跟准备从中删除数据的表名。<br><br>　　　2、WHERE后跟删除条件<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>DELETE FROM po_lines<br>WHERE ship_to_state IN ('TX','NY','IL')<br>AND order_date&lt;TRUNC(SYSTEM)-90&lt; td&gt; </td>
        </tr>
    </tbody>
</table>
<br>　　清空表<br><br>　　如果你想删除表中所有数据，清空表，可以考虑使用DDL语言的TRUNCATE语句。TRUNCATE就像没有WHERE子句的DELETE命令一样。TRUNCATE将删除表中所有行。TRUNCATE不是DML语句是DDL语句，他和DELETE右不同的特点。<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>TRUNCATE TABLE (schema)table DROP(REUSE) STORAGE </td>
        </tr>
    </tbody>
</table>
<br>　　STORAGE子串是可选的，缺省是DROP STORAGE。当使用DROP STORAGE时将缩短表和表索引，将表收缩到最小范围，并重新设置NEXT参数。REUSE STORAGE不会缩短表或者调整NEXT参数。<br><br>　　TRUNCATE和DELETE有以下几点区别<br><br>　　1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销，而TRUNCATE则不会被撤销。<br><br>　　2、TRUNCATE是一个DDL语言，向其他所有的DDL语言一样，他将被隐式提交，不能对TRUNCATE使用ROLLBACK命令。<br><br>　　3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时，经过TRUNCATE操作后的表比DELETE操作后的表要快得多。<br><br>　　4、TRUNCATE不能触发任何DELETE触发器。<br><br>　　5、不能授予任何人清空他人的表的权限。<br><br>　　6、当表被清空后表和表的索引讲重新设置成初始大小，而delete则不能。<br><br>　　7、不能清空父表。<br><br>　　SELECT FOR UPDATE<br><br>　　select for update语句用于锁定行，阻止其他用户在该行上修改数据。当该行被锁定后其他用户可以用SELECT语句查询该行的数据，但不能修改或锁定该行。<br><br>　　锁定表<br><br>　　LOCK语句常常用于锁定整个表。当表被锁定后，大多数DML语言不能在该表上使用。LOCK语法如下：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>LOCK schema table IN lock_mode</td>
        </tr>
    </tbody>
</table>
<br>　　其中lock_mode有两个选项：<br><br>　　　share 共享方式<br><br>　　　exclusive 唯一方式<br><br>　　例：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>LOCK TABLE intentory IN EXCLUSIVE MODE</td>
        </tr>
    </tbody>
</table>
<br>　　死锁<br><br>　　当两个事务都被锁定，并且互相都在等待另一个被解锁，这种情况称为死锁。<br><br>　　当出现死锁时，ORACLE将检测死锁条件，并返回一个异常。</div>
</div>
</h4>
<h4 class=TextColor1 style="MARGIN-BOTTOM: 0px">Oracle数据操作和控制语言详解（二）</h4>
<div>
<div><font size=3><font color=#ac0000>事务控制<br><br></font>　　事务控制包括协调对相同数据的多个同步的访问。当一个用户改变了另一个用户正在使用的数据时，oracle使用事务控制谁可以操作数据。<br><br>　　事务<br><br>　　事务表示工作的一个基本单元，是一系列作为一个单元被成功或不成功操作的SQL语句。在SQL和PL/SQL中有很多语句让程序员控制事务。程序员可以：<br><br>　　　1、显式开始一个事物，选择语句级一致性或事务级一致性<br><br>　　　2、设置撤销回滚点，并回滚到回滚点<br>　<br>　　　3、完成事务永远改变数据或者放弃修改。<br>　　<br>　　事务控制语句<br><br></font>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>语句</td>
            <td>用途</td>
        </tr>
        <tr>
            <td>Commit </td>
            <td>完成事务，数据修改成功并对其他用户开放</td>
        </tr>
        <tr>
            <td>Rollback </td>
            <td>撤销事务，撤销所有操作</td>
        </tr>
        <tr>
            <td>rollback to savepoint </td>
            <td>撤销在设置的回滚点以后的操作</td>
        </tr>
        <tr>
            <td>set transaction</td>
            <td>响应事务或语句的一致性；特别对于事务使用回滚段</td>
        </tr>
    </tbody>
</table>
<br>　　例：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>BEGIN<br>UPDATE checking<br>SET balance=balance-5000<br>WHERE account='Kieesha';<br><br>INSERT INTO checking_log(action_date,action,amount)<br>VALUES (SYSDATE,'Transfer to brokerage',-5000);<br><br>UPDATE brokerage<br>SET cash_balance=cash_balance+5000<br>WHERE account='Kiesha';<br><br>INSERT INTO brokerage_log(action_date,action,amount)<br>VALUES (SYSDATE,'Tracfer from checking',5000)<br><br>COMMIT<br><br>EXCEPTION<br>WHEN OTHERS<br>ROLLBACK<br><br>END</td>
        </tr>
    </tbody>
</table>
<br>　　Savepoint 和 部分回滚(Partial Rollback)<br><br>　　在SQL和PL/SQL中Savepoint是在一事务范围内的中间标志。经常用于将一个长的事务划分为小的部分。保留点Savepoint可标志长事务中的任何点，允许可回滚该点之后的操作。在应用程序中经常使用Savepoint；例如一过程包含几个函数，在每个函数前可建立一个保留点，如果函数失败，很容易返回到每一个函数开始的情况。在回滚到一个Savepoint之后，该Savepoint之后所获得的数据封锁被释放。为了实现部分回滚可以用带TO Savepoint子句的ROLLBACK语句将事务回滚到指定的位置。<br><br>　　例<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>BEGIN <br><br>INSERT INTO ATM_LOG(who,when,what,where)<br>VALUES ('Kiesha',SYSDATE,'Withdrawal of $100','ATM54')<br>SAVEPOINT ATM_LOGGED;<br><br>UPDATE checking<br>SET balance=balance-100<br>RETURN balance INTO new_balance;<br><br>IF new_balance&lt;0<br>THEN<br>ROLLBACK TO ATM_LOGGED;<br>COMMIT<br>RAISE insufficient_funda;<br>END IF<br><br>END <br></td>
        </tr>
    </tbody>
</table>
<br>　　关键字SAVEPOINT是可选的，所以下面两个语句是等价的：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>ROLLBACK TO ATM_LOGGED;<br>ROLLBACK TO SAVEPOINT ATM_LOGGED;</td>
        </tr>
    </tbody>
</table>
<br>　　<font color=#ac0000>一致性和事务</font><br><br>　　一致性是事物控制的关键慨念。掌握了oracle 的一致性模型，能使您更好的，更恰当的使用事务控制。oracle通过一致性保证数据只有在事务全部完成后才能被用户看见和使用。这项技术对多用户数据库有巨大的作用。<br><br>　　oracle常常使用语句级（state-level)一致性，保证数据在语句的生命期之间是可见的但不能被改变。事务由多个语句组成，当使用事务时，事物级（transaction-level)一致性在整个事务生命期中保证数据对所有语句都是可见的。<br><br>　　oracle通过SCN(syatem change number)实施一致性。一个SCN是一个面向时间的数据库内部键。SCN只会增加不会减少，SCN表示了时间上的一个点，每个数据块都有一个SCN,通过比较这个点实施操作。<br><br>　　事务级一致性<br><br>　　SET TRANSACTION 的一个作用是确保事务级一致或语句级一致中有一个实施。ORACLE使用这些术语：<br><br>　　　ISOLATION LEVEL READ COMMIT 表示语句级一致<br><br>　　　ISOLATION LEVEL SERIALIZABLE 表示事务级一致。<br><br>　　例：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>SET TRANSACTION ISOLATION LEVEL READ COMMIT;<br><br>SET TRANSACTION ISOLATION LEVEL READ COMMIT</td>
        </tr>
    </tbody>
</table>
<br>　　下面的语句也能确保事务级一致：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>SET TRANSCATION READ ONLY</td>
        </tr>
    </tbody>
</table>
<br>　　任何企图在只读（READ ONLY）事务中修改数据的操作都会抛出一个异常。但是，READ ONLY事务只能在下列语句中使用：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>SELECT(没有FOR UPDATE子句）<br>LOCK TABLE<br>SET ROLE<br>ALTER SYSTEM<br>ALTER ALARM</td>
        </tr>
    </tbody>
</table>
<br>　　即使没有改变任何数据，READ ONLY事务依然必须使用一个COMMIT或ROLLBACK以结束整个事务。<br><br>　　SET TRANSCTION的另外一个应用是在回滚时直接使用回滚段（ROLLBACK SEGMENT）。回滚段是ORACLE的一个特殊的数据对象，回滚段的头部包含正在使用该回滚段事务的信息。当用户回滚事务（ROLLBACK）时，ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。oracle用round-robin给事务随机分配回滚段。一个大的事务可以分配任何回滚段，这也许会导致回滚段的大小变得很大。因此要避免让大的事务随机分配回滚段。<br><br>　　事务以SET TRANSACTION开始,象下面这样：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>SET TRANSACTION USE ROLLBACK SEGMENT rb_large;</td>
        </tr>
    </tbody>
</table>
<br>　　rb_large是一个大的回滚段的名称，现在就给一个大的事务分配了一个大的回滚段，其他的小的回滚段将不由动态空间管理，这样就更有效率。<br><br>　　下面我们看一个例子.我们有一个回滚段表空间大小是2G，在高峰时期需要10个回滚段以满足用户的需要，这些高峰在线用户只有小的事务。一周我们连续运行了4个大的事务，这些事务需要删除和加载数据，每一个撤销需要1G，回滚段的大小如下：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>rb_large(initial 100M minextenta 2)<br><br>rb1 (initial 1M next minextents 5) <br>rb2 (initial 1M next minextents 5)<br>rb3 (initial 1M next minextents 5)<br>rb4 (initial 1M next minextents 5)<br>rb5 (initial 1M next minextents 5)<br>rb6 (initial 1M next minextents 5)<br>rb7 (initial 1M next minextents 5)<br>rb8 (initial 1M next minextents 5)<br>rb9 (initial 1M next minextents 5)<br>rb10 (initial 1M next minextents 5) </td>
        </tr>
    </tbody>
</table>
<br>　　所有的都非常恰当的安排在2G的表空间中，如果我们缺省的round-robin给事务分配回滚段，4个大事务将有4个独立的回滚段，每个回滚段的大小将是1G,如果这样我们的2G表空间就不够，而数据库管理员就不得不在夜晚2点起来工作，每个事务都由以下面的语句开始：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>SET TRANSACTION USE ROLLBACK SEGMENT rb_large </td>
        </tr>
    </tbody>
</table>
<br>　　现在 4个事务重用相同的表空间，保正4个回滚段的表空间在2G以内。数据库管理员可以睡到天亮。<br></div>
</div>
<p>Oracle数据操作和控制语言详解&nbsp;（三）</p>
<div>
<div><font size=3>建立和修改用户<br><br>　　CREATE USER 语句将建立一个用户。当一个用户连接到ORACLE数据库时，它必须被验证。ORACLE中验证有三种类型：<br><br>　　　Database<br><br>　　　external<br><br>　　　Global<br><br>　　缺省是数据库验证，当用户连接到数据库时，oracle将检测用户是否是数据库的合法用户，并且要提供正确的password.external验证，oracle将只检测用户是否是合法用户，password已经被网络或系统验证了。global验证也是只检测是否是合法用户，password由oraclesecurity server验证。<br><br>　　Database验证用户账号<br><br>　　数据库验证账号是张好的缺省类型，也是最普通的类型。建立一个账号是piyush,口令是welcome的账号，只需执行下面的命令：<br><br></font>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>CREATE USE piyush IDENTIFIED BY welcome</td>
        </tr>
    </tbody>
</table>
<br>　　piyush可以通过下面的语句将口令改变为saraswatt:<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>ALTER USER piyush IDENTIFIED BY saraswati;</td>
        </tr>
    </tbody>
</table>
<br>　　外部验证用户账号<br><br>　　用户账号进入数据库时可以不提供口令，这种情况下代替数据库识别口令的是客户端操作系统。外部验证账号有时也叫OPS$账号，当他们最初在oracle6开始介绍时，oracle账号都有关键字前缀OPS$,这也就是为什么init.ora 参数os_authent_prefix是OPS$--默认特征与oracle6保持一致。os_authent_prefix定义的字符串必须被预处理为用于Oracle外部识别账号的操作系统账号名。创建操作系统用户appl的语句是：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>CREATE USER ops$appl IDENTIFIED EATERNALLY</td>
        </tr>
    </tbody>
</table>
<br>　　但在通常情况下，os_authent_prefix将被设置为空，像下面这样：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>CREATE USER appl IDENTIFIED EATERNALLY</td>
        </tr>
    </tbody>
</table>
<br>　　这样效果是一样的,关键字IDENTIFIED EXTERNALLY告诉ORACLE这是一个外部识别账号。<br><br>　　GLOBAL用户账号<br><br>　　GLOBAL类型的用户账号数据库不检测口令，而是由X.509目录服务器检测口令。创建一个GLOBAL类型的用户账号的方法是：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>CREATE USER scott IDENTIFIED GLOBALLY AS "CN=scott,OU=divisional,O=sybex,C=US"</td>
        </tr>
    </tbody>
</table>
<br>　　关键字IDENTIFIED GLOBALLY AS表示建立的是一个GLOBAL类型的用户账号.<br><br>　　创建和更改用户账号<br><br>　　CREATE USER 用于建立用户账号和给用户账号的属性赋值。ALTER USER用于更改用户账号和属性。但CREATE USER语句必须包括用户名和口令。<br><br>　　有部分属性能用CREATER USER和ALTER USER语句设置，下面对是这些的属性具体描述：<br><br>　　给用户分配缺省表空间<br><br>　　表空间（tablespace)是放置表、索引、丛等用户对象的。如果在create user语句中没有包含表空间，那么缺省的是系统表空间。<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>CREATE USER piyush IDENTIFIED BY saraswati<br>DEFAULTE TABLESPACE user_data;<br>ALTER USER manoj DEFAULTE TABLESPACE dev1_data;</td>
        </tr>
    </tbody>
</table>
<br>　　给用户分配临时表空间<br><br>　　临时表空间，顾名思义是临时存放表、索引等用户对象的临时段。建立方法一样<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>CREATE USER piyush IDENTIFIED BY saraswati<br>Temporary TABLESPACE user_data;<br>ALTER USER manoj Temporary TABLESPACE dev1_data;</td>
        </tr>
    </tbody>
</table>
<br>　　给用户分配表空间的使用定额<br><br>　　使用定额限制用户在表空间中使用磁盘的数量。定额可以按字节、千字节、兆字节或者无限制来制定。<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>CREATE USER piyush IDENTIFIED BY saraswati<br>DEFAULT TABLESPACE user_data<br>QUOTA UNLIMITED ON user_data<br>QUOTA 20M ON tools;<br>ALTER USER manoj QUOTA 2500K ON tools;</td>
        </tr>
    </tbody>
</table>
<br>　　给用户分配一个简表<br><br>　　简表可以限制用户在会话时消耗的资源。这些资源包括：连接数据库的时间，空闲时间，每次会话的逻辑读数据的数量等等，缺省的简表对资源无限制。<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>CREATE USER piyush IDENTIFIED BY saraswati<br>PROFILE TABLESPACE user_data;<br>ALTER USER manoj Temporary TABLESPACE dev1_data;</td>
        </tr>
    </tbody>
</table>
<br>　　为用户响应指定角色<br><br>　　这个属性只能由ALTER USER语句设置，试图用CREATE USER语句设置将回返回一个例外。<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>ALTER USER manoj DEFAULT ROLE ALL EXCEPT salary_adm;</td>
        </tr>
    </tbody>
</table>
<br>　　为用户的password设定到期时间以便在用户下次登录时更改<br><br>　　当用户的password到期，在下一次登录时将强迫修改password，oracle提示用户输入旧的password,然后输入新的password。这项功能常用于新用户，当新用户用缺省的password登录时必须修改立即修改password.<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>ALTER USER manoj IDENTIFIED BY welcome;<br>ALTER USER manoj PASSWORD EXPIRE;</td>
        </tr>
    </tbody>
</table>
<br>　　锁定账号，是用户不能登录<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>ALTER USER ql AC <br>COUNT LOCK </td>
        </tr>
    </tbody>
</table>
<br>　　对账号解锁，以便用户能登录数据库<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>ALTER USER ql ACCOUNT UNLOCK</td>
        </tr>
    </tbody>
</table>
<br>　　<font color=#ac0000>权限和角色</font><br><br>　　权限允许用户访问属于其它用户的对象或执行程序，ORACLE系统提供三种权限：<br><br>　　　Object 对象级<br><br>　　　System 系统级<br><br>　　　Role 角色级<br><br>　　这些权限可以授予给用户、特殊用户public或角色，如果授予一个权限给特殊用户"Public"（用户public是oracle预定义的，每个用户享有这个用户享有的权限）,那么就意味作将该权限授予了该数据库的所有用户。<br><br>　　对管理权限而言，角色是一个工具，权限能够被授予给一个角色，角色也能被授予给另一个角色或用户。用户可以通过角色继承权限，除了管理权限外角色服务没有其它目的。权限可以被授予，也可以用同样的方式撤销。<br><br>　　建立和使用角色<br><br>　　如前所诉，角色存在的目的就是为了使权限的管理变得轻松。建立角色使用CREATE ROLE语句，他的语法如下：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>CREATE ROLE role_name IDENTIFIED BY password<br>CREATE ROLE role_name IDENTIFIED EXTERNALLY<br>CREATE ROLE role_name IDENTIFIED GLOBALLY</td>
        </tr>
    </tbody>
</table>
<br>　　缺省情况下建立的角色没有password或者其他的识别。如果使用IDENTIFIED BY 子句建立，那么角色不会自动响应，必须用SET ROLE激活。<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>SET ROLE role_name IDENTIFIED BY password</td>
        </tr>
    </tbody>
</table>
<br>　　EXTERNALLY和GLOBALLY类型的角色由操作系统和ORACLE Service server验证。通常用户需要权限修改应用程序中使用的表单中的数据，但是只有在应用程序运行时而不是在使用ad hoc工具时，这种上下文敏感安全可以通过有PASSWORD的角色来实现。当用户在应用程序内部连结数据库时，代码将执行SET ROLE命令，通过安全验证。所以用户不需要知道角色的password,也不需要自己输入SET ROLE命令。<br><br>　　对象权限<br><br>　　对象权限就是指在表、视图、序列、过程、函数或包等对象上执行特殊动作的权利。有九种不同类型的权限可以授予给用户或角色。如下表：<br><br>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td width="13%">权限</td>
            <td width="7%">ALTER</td>
            <td width="8%">DELETE</td>
            <td width="10%">EXECUTE</td>
            <td width="7%">INDEX</td>
            <td width="8%">INSERT</td>
            <td width="7%">READ </td>
            <td width="10%">REFERENCE</td>
            <td width="12%">SELECT </td>
            <td width="18%">UPDATE</td>
        </tr>
        <tr>
            <td width="13%">Directory</td>
            <td width="7%">no </td>
            <td width="8%">no </td>
            <td width="10%">no </td>
            <td width="7%">no </td>
            <td width="8%">no </td>
            <td width="7%">yes</td>
            <td width="10%">no</td>
            <td width="12%">no </td>
            <td width="18%">no</td>
        </tr>
        <tr>
            <td width="13%">function</td>
            <td width="7%">no</td>
            <td width="8%">no</td>
            <td width="10%">yes</td>
            <td width="7%">no </td>
            <td width="8%">no</td>
            <td width="7%">no</td>
            <td width="10%">no</td>
            <td width="12%">no</td>
            <td width="18%">no</td>
        </tr>
        <tr>
            <td width="13%">procedure</td>
            <td width="7%">no </td>
            <td width="8%">no</td>
            <td width="10%">yes</td>
            <td width="7%">no</td>
            <td width="8%">no</td>
            <td width="7%">no </td>
            <td width="10%">no</td>
            <td width="12%">no</td>
            <td width="18%">no</td>
        </tr>
        <tr>
            <td width="13%">package</td>
            <td width="7%">no</td>
            <td width="8%">no</td>
            <td width="10%">yes</td>
            <td width="7%">no</td>
            <td width="8%">no</td>
            <td width="7%">no</td>
            <td width="10%">no</td>
            <td width="12%">no</td>
            <td width="18%">no</td>
        </tr>
        <tr>
            <td width="13%">DB Object</td>
            <td width="7%">no </td>
            <td width="8%">no </td>
            <td width="10%">yes</td>
            <td width="7%">no</td>
            <td width="8%">no </td>
            <td width="7%">no</td>
            <td width="10%">no</td>
            <td width="12%">no</td>
            <td width="18%">no</td>
        </tr>
        <tr>
            <td width="13%">Libary </td>
            <td width="7%">no</td>
            <td width="8%">no</td>
            <td width="10%">yes </td>
            <td width="7%">no</td>
            <td width="8%">no</td>
            <td width="7%">no </td>
            <td width="10%">no </td>
            <td width="12%">no</td>
            <td width="18%">no</td>
        </tr>
        <tr>
            <td width="13%">Operation </td>
            <td width="7%">no </td>
            <td width="8%">no </td>
            <td width="10%">yes</td>
            <td width="7%">no </td>
            <td width="8%">no </td>
            <td width="7%">no </td>
            <td width="10%">no </td>
            <td width="12%">no </td>
            <td width="18%">no</td>
        </tr>
        <tr>
            <td width="13%">Sequence</td>
            <td width="7%">yes </td>
            <td width="8%">no </td>
            <td width="10%">no </td>
            <td width="7%">no </td>
            <td width="8%">no </td>
            <td width="7%">no </td>
            <td width="10%">no </td>
            <td width="12%">no </td>
            <td width="18%">no</td>
        </tr>
        <tr>
            <td width="13%">Table </td>
            <td width="7%">yes </td>
            <td width="8%">yes </td>
            <td width="10%">no</td>
            <td width="7%">yes</td>
            <td width="8%">yes </td>
            <td width="7%">no </td>
            <td width="10%">yes </td>
            <td width="12%">yes </td>
            <td width="18%">yes</td>
        </tr>
        <tr>
            <td width="13%">Type</td>
            <td width="7%">no </td>
            <td width="8%">no </td>
            <td width="10%">yes </td>
            <td width="7%">no </td>
            <td width="8%">no </td>
            <td width="7%">no </td>
            <td width="10%">no </td>
            <td width="12%">no </td>
            <td width="18%">no</td>
        </tr>
        <tr>
            <td width="13%">View </td>
            <td width="7%">no </td>
            <td width="8%">yes </td>
            <td width="10%">no </td>
            <td width="7%">no </td>
            <td width="8%">yes </td>
            <td width="7%">no </td>
            <td width="10%">no </td>
            <td width="12%">yes </td>
            <td width="18%">yes</td>
        </tr>
    </tbody>
</table>
<br>　　对象由不止一个权限，特殊权限ALL可以被授予或撤销。如TABLE的ALL权限就包括：<br><br>　　　SELECT,INSERT,UPDATE和DELETE,还有INDEX,ALTER,和REFERENCE。<br><br>　　如何看这个表我们以ALTER权限为例进行说明<br><br>　　ALTER权限<br><br>　　允许执行ALTER TABLE和LOCK TABLE操作，ALTER TABLE可以进行如下操作：<br><br>　　　　. 更改表名<br><br>　　　　. 增加或删除列<br><br>　　　　. 改变列的数据类型或大小<br><br>　　　　. 将表转变为分区表<br><br>　　在SEQUENCE上的ALTER权限允许执行ALTER Sequence语句，重新给sequence分配最小值、增量和缓冲区大小。<br><br>　　系统权限<br><br>　　系统权限需要授予者有进行系统级活动的能力，如连接数据库，更改用户会话、建立表或建立用户等等。你可以在数据字典视图SYSTEM_PRIVILEGE_MAP上获得完整的系统权限。对象权限和系统权限都通过GRANT语句授予用户或角色。需要注意的是在授予对象权限时语句应该是WITH GRANT OPTION子句，但在授予系统权象时语句是WITH ADMIN OPTION，所以在你试图授予系统权限时，使用语句WITH GRANT OPTION系统会报告一个错误：ONLY ADMIN OPTION can be specified。在考试中要特别注意这个语法和错误信息。<br><br>　　角色和角色权限<br><br>　　角色权限就是将属于用户的权限授予一个角色。任何权限都可以授予给一个角色。授予系统权限给被授予者必须使用WITH_ADMIN_OPTION子句，在会话期间通过SET ROLE语句授予或撤销角色权限。然而，角色权限不能依靠存储在SQL中的权限。如果函数、程序、包、触发器或者方法使用另一个计划拥有的对象，那么就必须直接给对象的拥有者授权，这是因为权限不会在会话之间改变。<br><br>　　授予和撤销权限<br><br>　　　给用户或者角色授予权限使用GRANT 语句,GRANT语句的语法如下：<br><br>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td>GRANT ROLE（或system privilege） TO user(role,Public) WITH ADMIN OPTION（可选）</td>
        </tr>
    </tbody>
</table>
<br>　　对象权限被授予 WITH GRANT OPTION，<br><br>　　权限和数据字典<br><br>　　数据字典是ORACLE存储有关数据库结构信息的地方，数据本身存放在其他地方，数据字典由表和视图组成。在考试中关于数据字典最容易考的内容是：查看那一类权限已经被授予。比如DBA_TAB_PRIV包含了用户授予给另一用户的对象权限和在授予时是否带有WITH GRANT OTPION子串的信息。注意DBA_TAB_PRIV不仅仅包含了对表的权限的关系，他还包括函数、包、队列等等上的权限的关系。下表列出了所有的权限和角色的数据字典视图：<br><br>　　表： 权限的数据字典视图<br><br>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td height=16>视图 </td>
            <td height=16>作用</td>
        </tr>
        <tr>
            <td>ALL_COL_PRIVS</td>
            <td>表示列上的授权，用户和PUBLIC是被授予者</td>
        </tr>
        <tr>
            <td>ALL_COL_PRIVS_MADE </td>
            <td>表示列上的授权，用户是属主和被授予者</td>
        </tr>
        <tr>
            <td>ALL_COL_RECD</td>
            <td>表示列上的授权，用户和PUBLIC是被授予者</td>
        </tr>
        <tr>
            <td>ALL_TAB_PRIVS</td>
            <td>表示对象上的授权，用户是PUBLIC或被授予者或用户是属主</td>
        </tr>
        <tr>
            <td>ALL_TAB_PRIVS_MADE </td>
            <td>表示对象上的权限，用户是属主或授予者</td>
        </tr>
        <tr>
            <td>ALL_TAB_PRIVS_RECD </td>
            <td>表示对象上的权限, 用户是PUBLIC或被授予者</td>
        </tr>
        <tr>
            <td>DBA_COL_PRIVS </td>
            <td>数据库列上的所有授权</td>
        </tr>
        <tr>
            <td>DBA_ROLE_PRIVS </td>
            <td>显示已授予用户或其他角色的角色</td>
        </tr>
        <tr>
            <td>DBA_SYS_PRIVS </td>
            <td>已授予用户或角色的系统权限</td>
        </tr>
        <tr>
            <td>DBA_TAB_PRIVS </td>
            <td>数据库对象上的所有权限</td>
        </tr>
        <tr>
            <td>ROLE_ROLE_PRIVS </td>
            <td>显示已授予用户的角色</td>
        </tr>
        <tr>
            <td>ROLE_SYS_PRIVS</td>
            <td>显示通过角色授予用户的系统权限</td>
        </tr>
        <tr>
            <td>ROLE_TAB_PRIVS</td>
            <td>显示通过角色授予用户的对象权限</td>
        </tr>
        <tr>
            <td>SESSION_PRIVS </td>
            <td>显示用户现在可利用的所有系统权限</td>
        </tr>
        <tr>
            <td>USER_COL_PRIVS</td>
            <td>显示列上的权限，用户是属主、授予者或被授予者</td>
        </tr>
        <tr>
            <td>USER_COL_PRIVS_MADE</td>
            <td>显示列上已授予的权限，用户是属主或授予者</td>
        </tr>
        <tr>
            <td>USER_COL_PRIVS_RECD </td>
            <td>显示列上已授予的权限，用户是属主或被授予者</td>
        </tr>
        <tr>
            <td>USER_ROLE_PRIVS </td>
            <td>显示已授予给用户的所有角色</td>
        </tr>
        <tr>
            <td>USER_SYS_PRIVS </td>
            <td>显示已授予给用户的所有系统权限</td>
        </tr>
        <tr>
            <td>USER_TAB_PRIVS</td>
            <td>显示已授予给用户的所有对象权限</td>
        </tr>
        <tr>
            <td>USER_TAB_PRIVS_MADE </td>
            <td>显示已授予给其他用户的对象权限，用户是属主</td>
        </tr>
        <tr>
            <td>USER_TAB_PRIVS_RECD</td>
            <td>显示已授予给其他用户的对象权限，用户是被授予者</td>
        </tr>
    </tbody>
</table>
</div>
</div>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/55772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2009-03-26 15:59 <a href="http://www.cnitblog.com/wufajiaru/archive/2009/03/26/55772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 最大安全性架构[zz]</title><link>http://www.cnitblog.com/wufajiaru/archive/2009/03/25/55726.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Wed, 25 Mar 2009 02:33:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2009/03/25/55726.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/55726.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2009/03/25/55726.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/55726.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/55726.html</trackback:ping><description><![CDATA[转自：<a href="http://www.dbform.com/html/2009/662.html" target=_blank><u><font color=#0000ff>http://www.dbform.com/html/2009/662.html</font></u></a><br><br><br>很多人应该知道在基于Oracle数据库的系统实施过程中，有一种高可用性的解决方案，称为MAA（Maximum Availability Architecture），通过RAC和Dataguard等一系列技术和选件搭建一个可以获得最大高可用性的IT环境。<br><br><br>MAA保证了IT系统能够被持续使用，而与此同时，另外一个需求就诞生了，系统不但需要能够持续使用，而且还需要能够安全使用。安全，同样也是IT系统能够符合行业标准的前提条件。面对安全需求，Oracle提出了MSA架构，也就是Maximum Security Architecture，最大安全性架构。<br><br><br>IT系统在哪些方面具有安全性需求呢？<br><br><br><strong>1. 用户管理</strong><br><br>应用系统需要有正常的用户登陆以及用户验证，具有权限的用户在自身管理方面是需要注意安全的，以防止被其它人员非法获取登陆或者查看数据的权限。<br><br><br><strong>2. 存取控制</strong><br><br>在应用系统中不同的用户应该具有不同的权限，不同权限的用户可以登陆的范围或者查看数据的多少也是不同的。这是上面一步的延展，不同的用户通过安全的机制登陆进系统了，同样需要有另外一种安全机制来控制不同的用户存取不同的数据。<br><br><br><strong>3. 数据加密以及数据遮盖</strong><br><br>进一步延展，不同的用户安全登陆系统，并且已经各自安全的查看自己的数据了，那么数据本身是否安全呢？这就需要数据加密或者数据遮盖技术来完成。<br><br><br><strong>4. 监控</strong><br><br>这个体系并不仅仅是监控报表，因为那只是事后的工作，也许一个违规的操作出现几天以后，安全报表中才出现记录，哪怕仅仅是几个小时，实际上违规的操作已然发生，产生的危害也许已经是无法挽回的了。因此对于整个应用系统的安全流程，必须要有一个完善的监控体系来实时地给予监控，在违规操作发生的当时就立即予以报警。<br><br><br>那么Oracle提出的MSA架构是如何在各个方面提供相应的技术以及产品呢？同样以上述的四个方面分别阐述。<br><br><br><strong>1. 用户控制<br><br>1.1 单一登录 </strong><br><br>管理多个账户以完成相关的工作任务将导致安全性的薄弱环节和高额的所有权成本。一般地，为完成每天的日常工作，一个员工要管理十四个密码或账户。为了应付&#8220;密码过多&#8221;的问题，员工可能会把密码抄写下来，或选择一个容易猜中的密码。人们经常忘记密码，并频繁地向帮助部门查询。系统管理员甚至面临者一个更大的问题。系统管理员需要花费大量的时间去管理分布于各种数据库，web服务器和网络上的这些账户。如果一个雇员离开了公司，而系统管理员没有注意删除所有的账户，一些老的账号可能就仍然处于激活状态，这无疑埋下了很大的安全隐患。 <br><br><br><img title=点击图片可在新窗口打开 style="CURSOR: pointer" src="http://lh6.ggpht.com/_PdhHhDzFZCs/Sb-RttKIL_I/AAAAAAAAE5A/fVJEKBiPXO8/s400/msa1.jpg" border=0><br>单一登录原理图<br><br><br>这个问题的解决方案就是单一登录。单一登录可以使用户通过一个单一的登录过程就能访问所用被授权的应用。如果只管理一个密码或证明书，用户一般就不会把它记录下来，或选择一个不容易被猜中的密码。每个企业都应该有使雇员强制性选择安全密码的安全性策略。认证证书可以集中存储于一个LDAP目录，因此系统管理员可以在一个单独的地方管理这些账户。账户的集中化可以使系统管理员能更迅速地完成追加，删除和修正账户的工作。Oracle通过单点登陆服务套件(Enterprise Single Sign-On suite)集成Oracle互联网目录LDAP提供了单一认证。Oracle也可以与其他第三方单一登录服务器的集成，如Kerberos 和 Netegrity。 <br><br><br><strong>1.2 超强认证</strong> <br><br>通过互联网你可能看不到正在与谁做生意，所以在数字世界中存在着一种可以让系统识别身份的机制。用户名和密码的组合是一个系统认证和识别用户的最普遍或最基本的方式。一些企业认为，这种基础的，单向的认证方式并不十分安全，特别是当用户需要管理几个密码时更是如此。另一种方式，或者是认证的更安全的方式是所谓的超强认证。我们可以给出几个超强认证的例子，如X.509数字证书，证明卡和生物认证设备。Oracle 通过身份管理(COREid)结合第三方全面支持基本认证和多种超强认证。比如支持以下具有工业标准的高级认证方式：<br>Kerberos <br>RADIUS (Remote Authentication Dial-In User Service) <br>Secure Sockets Layer <br>PKI&nbsp;&nbsp;<br><br><br><strong>2. 存取控制</strong><br><br><strong>2.1 精细的访问控制 </strong><br><br>互联网和在线服务目前已要求服务器能够实现精细的访问控制。如果您考虑数据库服务器将管理互联网上多团体用户的数据，数据库必须保证用户只能访问与它相关的数据，而不涉及其他的数据。例如，在线银行业务服务需要保证客户所访问的账户信息只能是他们自己的，而不能看到其他客户的信息。 <br><br><br>能够控制对敏感信息的访问对需要满足隐私性需求的应用也由帮助。例如，医疗应用软件必须保证医生只能看到他们自己病人的记录。 <br><br><br>因为数据库在传统上是在表的级别上分配权限，而不会控制在单独的记录或更低的级别，附加的应用代码可能被要求取得更精细的访问控制。传统方法的问题是如果用户利用应用之外的方式，如特别的查询工具等访问数据库，就可以绕过安全性设置。而且，维护复杂的访问控制代码会导致高额的开发和管理成本。 <br><br><br><img title=点击图片可在新窗口打开 style="CURSOR: pointer" src="http://lh6.ggpht.com/_PdhHhDzFZCs/Sb-RuJP2eiI/AAAAAAAAE5I/1IyUZMhptkI/s400/msa2.jpg" border=0><br>Oracle10g数据库的标签安全保护最敏感数据<br><br><br>Oracle10g数据库的标签安全性组件（Label Security）是一个精细访问控制或行级别安全性的无限的解决方案。建立在Oracle虚拟个人数据库的工具包基础上的Oracle标签安全性向数据行中追加了一个特别的标记（标签），可以达到行级别的安全性。例如，在线服务可以使用一个订阅标签，它可以将存储于相同数据库服务器中的各企业的数据更安全有效的分离开。 <br><br><br>简单的Label Security设置方法参看我的这篇文章 - 利用OLS实现行级安全性 Step By Step。<br><br><br><strong>2.2内部控制</strong><br><br>企业IT系统的内部安全管理的需求来源于传统的管理用户的模糊定义，尤其是某些特权用户的定义(比如DBA等)，原先只是希望他们管理数据库表结构或本部门的数据，但由于其传统的定义使这类用户可以访问所有的应用数据，甚至敏感数据(如企业HR部门的员工工资和个人信息，Finance部门的重要业务数据等)；同时，随着企业系统的发展，信息整合带来不可避免的数据库合并，大量的子系统的特权用户的访问权限被简单地扩展到了所有系统。 <br><br><br><img title=点击图片可在新窗口打开 style="CURSOR: pointer" src="http://lh5.ggpht.com/_PdhHhDzFZCs/Sb-RuSDoCYI/AAAAAAAAE5Q/n6N3z5d5Vtw/s400/msa3.jpg" border=0><br><br><br>Oracle Database Vault正是为解决上面这些敏感的安全问题而诞生的, Oracle Databse 10g R2 企业版的新增安全选件，Database&nbsp;&nbsp;Vault安全选件可以控制什么人，在什么时间，在什么地点或是什么样的应用程序来访问，保护我们的业务避免来自于内部的用户恶意的攻击。对职责进行严格分离，甚至在我们的系统管理员中，Oracle&nbsp;&nbsp;Database Vault选件额外增加强大的可预见性的控制功能帮助企业或公司满足今天严格法规和敏感的需求。Vault是目前业内最早的相关安全的产品，引入了几个新的强大的安全特性(Realms领域、Factor代理、Rule规则等)来限制对数据库的访问，即便是一些超级用户或特权也是如此。这些特点可应用于一个灵活的，易于定制的样式去增强我们的授权需要，而不需对客户已存在的应用做任何修改。<br><br><br><strong>3. 数据加密以及数据遮盖</strong><br><br><strong>3.1 加密系统 </strong><br><br>通过互联网从事商务活动需要通过网络传输信息。任何人，不论是黑客，解密高手还是不诚实的雇员，都可以下载一个信息包的嗅探器，当信用卡等这类敏感信息在网络中传输时，利用嗅探器可以捕获它们。不怀好意的用户也可以利用一些途径获得对存储于服务器中的数据的非法访问。为了防止对数据的非法访问，可以采用加密系统，利用信息的不规则性保护数据。它涉及数学的计算方法和密钥。公共密钥的基础结构是最普遍采用的方法。它为加密，数据整合，数字认证和数字签名提供了技术。 <br><br><br><img title=点击图片可在新窗口打开 style="CURSOR: pointer" src="http://lh4.ggpht.com/_PdhHhDzFZCs/Sb-RuiFOp2I/AAAAAAAAE5Y/oeqBU1w5IwA/s400/msa4.jpg" border=0><br>Oracle10g数据库的高级安全性组件保证网络传输数据安全<br><br><br>当数据在网络中的所有层，包括用户层，中间层和数据库层传输时，Oracle提供了网络中端到端的加密。Oracle应用服务器提供了网络中用户层和中间层的加密。Oracle数据库的高级安全性组件(Advanced Security)提供了网络中中间层和数据库层的加密。为了强化性能，Oracle通过Oracle与RSA的BSAFE库的集成，支持BHAPI的接口。Oracle也对存储于数据库内部的数据提供加密。对于非常敏感信息如信用卡号的加密，如果有对数据非法访问的企图或摆脱数据库控制的企图，如通过操作系统，可在数据库中追加一个额外的保护层。 <br><br><br><strong>3.2 备份安全</strong><br><br>为了信息的延续性，信息保存的时间要求越来越长，因此备份数据的安全也受到了很大的挑战，一方面，企业使用大量的备份介质来备份数据；一方面，企业不断地从备份数据中恢复以便使用；同时，企业会对大量的备份筛选，淘汰过时的备份，这些复杂的数据备份管理过程中，信息的安全问题也日益突出。<br><br><br>如果企业选择将备份数据保存在磁盘中，那么TDE（Transparent Data Encryption）是应该首选考虑的，TDE可以在包含敏感数据的列，表，表空间上进行加密，加密之后的数据备份到磁盘上，备份文件中的信息也同样是加密的，这样即使备份文件意外丢失，也几乎没有可能通过恢复或者直接扫描裸文件的方法从备份文件中获得敏感数据。<br><br><br>在云计算十分受到追捧的今天，将自己的备份数据存储在第三方提供的云计算存储（比如Amazon S3）中，如何才能放心，如何才能保证其中的敏感数据不被剽窃，TDE无疑是理想的选择。<br><br><br>如果企业选择直接将数据备份到磁带中，那么Oracle Secure Backup提供方便、安全可靠的磁带备份解决方案。<br><br><br><img title=点击图片可在新窗口打开 style="CURSOR: pointer" src="http://lh6.ggpht.com/_PdhHhDzFZCs/Sb-RuxQfLuI/AAAAAAAAE5g/sz87lO2ji7w/s400/msa5.jpg" border=0><br><br><br>为了更好地管理备份数据的安全，Oracle通过10g 之后版本中诞生的最新选件Secure Backup来很好地管理与控制备份介质尤其是磁带备份的安全问题。Secure Backup为数据库备份提供了中央磁带备份管理平台，简化了Oracle数据库与文件系统的备份管理。数据就是企业的生命力，必须被妥善保管并保护，保持在服务器激活的状态过程中不被恶意访问。数据中心的安全策略是保护物理接入服务器、数据、公司网络的关键。当数据保存至磁带，Oracle Secure Backup 将与安全策略平行工作，它提供了安全的Inter-Domain数据交换与控制消息机制，限制授权用户对备份数据的管理并通过RMAN将数据加密写入至备份磁带。<br><br><br>借助于成熟的Secure Socket Layer (SSL) 技术，集成Oracle Advanced Security 选件，Oracle Secure Backup可以实现双向服务器授权、加密备份恢复控制消息、网络传输过程数据加密，从而保证数据备份传输过程中的安全。<br><br><br>数据库备份可以通过RMAN进行加密，然后由Oracle Secure Backup完成对磁带的加密格式写入。这种集成式的加密方案保证了数据在离开数据库之后的安全。RMAN加密备份的解密是在恢复操作或重载时自动完成的，任何需要的时候密钥都是可用的，用户可以任意选用密码或Oracle Encryption Wallet。<br><br><br>Oracle Secure Backup提供了基于密码和关联用户权限的用户层访问控制以避免备份数据被未授权用户所访问。每个配置用户必须被注册拥有指定的系列权限，可以在域内设置执行任何数据保护操作。通过组合内部预置的18种特殊的备份及恢复权力，备份者可以高度精确的控制用户对域内的访问行为。通过选择预定义的5类对用户接入域时对各角度&#8220;读&#8221;或&#8220;写&#8221;的安全控制类，同时用户也可以定义自己的安全控制类来满足用户环境内的安全需求。一个客户只能被赋予一种安全类但是一个安全类可以拥有多个用户。<br><br><br><strong>4. 监控</strong><br><br><strong>4.1 精细审核 </strong><br><br>审核是普遍使用的最有效的安全性机制，它可以保证系统的合法用户能完成他们应该从事的工作，同时又可以限制他们对权限的滥用。通过审核，企业可以跟踪用户的活动，从而发现安全性的漏洞。而且，用户如果知道他们正受到跟踪，他们也不愿意滥用他们的权限。因为传统的审核将产生极大量的数据，因此也很难发现有用的信息，Oracle10g强化了精细审核（FGA）。利用精细的扩展审核，安全性漏洞将会非常容易被发现。例如，如果建立了一个审核策略用于重复性筛选信用卡号，就会自动生成一个警告，警告系统管理员可能的入侵。系统管理员可根据这些警告做出响应，如终止非法数据库的对话。 <br><br><br><strong>4.2 Audit Vault</strong><br><br>如果说Oracle Database Vault是完善了对于数据库SYSDBA的权限控制，那么Oracle Audit Vault则是对于企业内部违规者的进一步预防和监控。<br><br><br>目前最新版本的OAV 10.2.3.1不但支持Oracle的数据库产品（Oracle Database 9i到10gR2的所有数据库版本），同时也提供了对于Microsoft SQL Server 2000/2005. IBM DB2 UDB 8.2/9.5, 以及 Sybase ASE 12.5/15.0等主流关系型数据库的支持，自动获捕获，存储，分析审计数据，用户已经能够通过单一的审计解决方案来完成对企业内各种数据库活动的审计工作。<br><br><br><img title=点击图片可在新窗口打开 style="CURSOR: pointer" src="http://lh5.ggpht.com/_PdhHhDzFZCs/Sb-RvJTZAjI/AAAAAAAAE5o/oZj5ieW8gmk/s400/msa6.jpg" border=0><br><br><br>对于Oracle数据库而言，OAV的元数据可以是数据库redo日志，数据库Audit日志以及操作系统Audit日志（其它类型的数据库会有所不同），这些元数据被Audit Agent通过预先制定的捕获规则抓取到Audit Server中，而Audit Server端则提供了多样的报表查询，并且根据预先定义的企业策略提供违规操作告警功能。<br><br><br>Oracle Audit Vault帮助机构实施&#8220;信任但是验证&#8221;原则。Oracle Audit Vault帮助企业简化合规报告，及早检测到威胁，同时以透明的方式收集并将审计数据整合到企业级的审计整合管理解决方案中；整合并保护从Oracle数据库采集的审计数据；通过简化IT安全官员和内部审计员的工作，大幅度降低企业合规性的成本；使用户拥有最大灵活性的同时，有效监控他们的活动以确保这些行为符合企业的制度。<br><br><br><strong>结论</strong><br><br><br>MSA架构体现了Oracle的深度防御理念（Defense-in-Depth），在网络层，存储层，人员层都提供了完善的防护，同时在监控方面又体现了Proactive的2.0理念，实时并且全方位的给予安全监控。<br><br><br>世上没有安全性的魔术子弹，但Oracle始终站在我们的产品安全性以及我们客户的系统安全性的背后。Oracle提出：<br><br><br>因为我们自己的企业也是运行在Oracle之上，我们也是提供坚不可摧软件的既得利益者。坚不可摧建立在我们具有20年为世界上最具安全性意识的客户建立系统的实力和经验的基础上，这些客户中包括情报部门和国防部，也建立在由十九个独立的安全性评估所提供的保障基础上。（我们最强劲的竞争对手只分别具有零个或一个评估。他们为什么不在安全产品的生命周期和可证明的安全软件上进行投资呢？）<br><br><br>坚不可摧的软件是一个长期的承诺，它已经在实施过程中，它将被扩展到对每个Oracle产品的相同的开发方法和保障评定中。今天，所有强烈关注安全性的客户都会考虑把他们的数据库运行在Oracle上。<br>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/55726.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2009-03-25 10:33 <a href="http://www.cnitblog.com/wufajiaru/archive/2009/03/25/55726.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle的sys用户怎么通过jdbc连接[转]</title><link>http://www.cnitblog.com/wufajiaru/archive/2009/02/20/54770.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Fri, 20 Feb 2009 09:10:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2009/02/20/54770.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/54770.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2009/02/20/54770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/54770.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/54770.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 早看到这篇文章好多问题都不是问题了http://jamesq.bokee.com/1263981.htmloracle的sys用户怎么通过jdbc连接经过GOOGLE 总算知道了如何在JDBC中使用SYSDBA角色连接ORACLE数据库在DriverManager.getConnection通过Properties 设置连接的defaultRowPrefetch，nternal_log...&nbsp;&nbsp;<a href='http://www.cnitblog.com/wufajiaru/archive/2009/02/20/54770.html'>阅读全文</a><img src ="http://www.cnitblog.com/wufajiaru/aggbug/54770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2009-02-20 17:10 <a href="http://www.cnitblog.com/wufajiaru/archive/2009/02/20/54770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oralce错误代码</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/12/22/52911.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Mon, 22 Dec 2008 08:37:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/12/22/52911.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/52911.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/12/22/52911.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/52911.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/52911.html</trackback:ping><description><![CDATA[可以从这个网站查询：<a href="http://www.ora-error.com/">http://www.ora-error.com/</a><br><br>可以参考这个文件：<a href="http://www.cnitblog.com/Files/wufajiaru/Oracle_Errors.zip">Oracle_Errors.zip</a><br><br>当然，也可以自己一个一个去试：） 
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/52911.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-12-22 16:37 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/12/22/52911.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中删除正在连接的用户</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/12/22/52907.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Mon, 22 Dec 2008 08:01:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/12/22/52907.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/52907.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/12/22/52907.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/52907.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/52907.html</trackback:ping><description><![CDATA[首先，在删除数据库用户时遇到了正在连接的用户，此时无法drop掉。<br><br>那么，是否可以强制断开连接呢？答案似乎是肯定的：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">我们知道,在Oracle数据库中,可以通过kill&nbsp;session的方式来终止一个进程,其基本语法结构为:&nbsp;<br></span><span style="COLOR: #0000ff">alter</span><span style="COLOR: #000000">&nbsp;system&nbsp;</span><span style="COLOR: #0000ff">kill</span><span style="COLOR: #000000">&nbsp;session&nbsp;&#8217;sid,serial#&#8217;&nbsp;;&nbsp;&nbsp;</span></div>
对于kill session 的解释，可以参考：<a href="http://www.cngr.cn/article/57/111/2006/200604065534.shtml">Oracle中Kill session的研究</a><br><br>有两个概念必须清楚：<a href="http://blog.sina.com.cn/s/blog_54eeb5d901000cxt.html">v$process的spid与v$session的process</a><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&nbsp;v$process<br>这个视图提供的信息，都是oracle服务进程的信息，没有客户端程序相关的信息<br>服务进程分两类，一是后台的，一是dedicate</span><span style="COLOR: #808080">/</span><span style="COLOR: #000000">shared&nbsp;server<br>pid,&nbsp;serial#&nbsp;这是oracle分配的PID<br>spid&nbsp;这才是操作系统的pid<br>program&nbsp;这是服务进程对应的操作系统进程名<br><br>v$session:<br>这个视图主要提供的是一个数据库connect的信息，<br>主要是client端的信息，比如以下字段：<br>machine&nbsp;在哪台机器上<br>terminal&nbsp;使用什么终端<br>osuser&nbsp;操作系统用户是谁<br>program&nbsp;通过什么客户端程序，比如TOAD<br>process&nbsp;操作系统分配给TOAD的进程号<br>logon_time&nbsp;在什么时间<br>username&nbsp;以什么oracle的帐号登录<br>command&nbsp;执行了什么类型的SQL命令<br>sql_hash_value&nbsp;SQL语句信息<br><br>有一些是server端的信息：<br>paddr&nbsp;即v$process中的server进程的addr<br>server&nbsp;服务器是dedicate</span><span style="COLOR: #808080">/</span><span style="COLOR: #000000">shared<br><br>还有其它一些信息，可以理解为是client</span><span style="COLOR: #808080">/</span><span style="COLOR: #000000">server共享的信息，主要是针对这个session而言的<br>&nbsp;</span></div>
<br>了解了以上知识，可以通过下面的语句关闭指定用户的所有连接（将...put_line改为exec即可执行）：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">DECLARE</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;u_sid&nbsp;&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">varchar2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">50</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;u_serialnumber&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">varchar2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">50</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;u_name&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">varchar2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">50</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp; </span><span style="COLOR: #0000ff">CURSOR</span><span style="COLOR: #000000">&nbsp;c1&nbsp;</span><span style="COLOR: #0000ff">IS</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000">&nbsp;trim(s.sid),trim(s.serial#)<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&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><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000">&nbsp;v$session&nbsp;s,v$process&nbsp;p<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&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><span style="COLOR: #0000ff">where</span><span style="COLOR: #000000">&nbsp;s.paddr&nbsp;</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">&nbsp;p.addr&nbsp;&nbsp;</span><span style="COLOR: #808080">and</span><span style="COLOR: #000000">&nbsp;(s.username</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">u_name);&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">BEGIN</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp; u_name:</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'TESTUSERNAME</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">OPEN</span><span style="COLOR: #000000">&nbsp;c1;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;LOOP<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">FETCH</span><span style="COLOR: #000000">&nbsp;c1&nbsp;</span><span style="COLOR: #0000ff">INTO</span><span style="COLOR: #000000">&nbsp;u_sid,u_serialnumber;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">EXIT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">WHEN</span><span style="COLOR: #000000">&nbsp;c1</span><span style="COLOR: #808080">%</span><span style="COLOR: #000000">NOTFOUND;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbms_output.put_line(</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">alter&nbsp;system&nbsp;kill&nbsp;session&nbsp;</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #808080">||</span><span style="COLOR: #ff0000">''''</span><span style="COLOR: #808080">||</span><span style="COLOR: #000000">trim(u_sid)</span><span style="COLOR: #808080">||</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">,</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #808080">||</span><span style="COLOR: #000000">trim(u_serialnumber)</span><span style="COLOR: #808080">||</span><span style="COLOR: #ff0000">'''</span><span style="COLOR: #ff0000">;</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008080">--</span><span style="COLOR: #008080">exec('');</span><span style="COLOR: #008080"><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #008080"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">END</span><span style="COLOR: #000000">&nbsp;LOOP;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">END</span><span style="COLOR: #000000">;</span></div>
<br>断开连接后，用户可以被drop掉。<br><br>查看所有用户的连接：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000">&nbsp;s.username,s.osuser,s.program,s.MACHINE,&nbsp;s.sid,&nbsp;s.serial#,&nbsp;p.spid,&nbsp;<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">alter&nbsp;system&nbsp;kill&nbsp;session&nbsp;</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #808080">||</span><span style="COLOR: #ff0000">''''</span><span style="COLOR: #808080">||</span><span style="COLOR: #000000">trim(s.sid)</span><span style="COLOR: #808080">||</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">,</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #808080">||</span><span style="COLOR: #000000">trim(s.serial#)</span><span style="COLOR: #808080">||</span><span style="COLOR: #ff0000">'''</span><span style="COLOR: #ff0000">;</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000">&nbsp;v$session&nbsp;s,v$process&nbsp;p<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">where</span><span style="COLOR: #000000">&nbsp;s.paddr&nbsp;</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">&nbsp;p.addr&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">and</span><span style="COLOR: #000000">&nbsp;s.username&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #808080">not</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;&nbsp;</span></div>
<br><br>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/52907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-12-22 16:01 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/12/22/52907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oralce默认帐户</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/10/24/50640.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Fri, 24 Oct 2008 02:23:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/10/24/50640.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/50640.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/10/24/50640.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/50640.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/50640.html</trackback:ping><description><![CDATA[<h5 class=TT><font face=Helvetica color=#330099>Oracle&#174; Database Security Guide</font></h5>
<h5 class=TT>&nbsp;</h5>
<h5 class=TT><a name=1009356></a><a name=1009362></a><strong><font face="Arial, Helvetica, sans-serif"><em>Table 7-2 Default Accounts and Their Status (Standard Installation)</em></font></strong></h5>
<table class=Formal dir=ltr title="" cellSpacing=0 cellPadding=3 rules=groups width="100%" summary="" border=1 frame=hsides>
    <thead>
        <tr class=Formal>
            <th class=Formal vAlign=bottom scope=col align=left><a name=1009500></a><font face="Arial, Helvetica, sans-serif"><strong>USERNAME</strong></font></th>
            <th class=Formal vAlign=bottom scope=col align=left><a name=1009562></a><font face="Arial, Helvetica, sans-serif"><strong>ACCOUNT_STATUS</strong></font></th>
        </tr>
    </thead>
    <tbody>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010760></a>
            <p class=TB><code>ANONYMOUS</code></p>
            </td>
            <td class=Formal><a name=1010762></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010756></a>
            <p class=TB><code>CTXSYS</code></p>
            </td>
            <td class=Formal><a name=1010758></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010752></a>
            <p class=TB><code>DBSNMP</code></p>
            </td>
            <td class=Formal><a name=1010754></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010764></a>
            <p class=TB><code>DIP</code></p>
            </td>
            <td class=Formal><a name=1010766></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010768></a>
            <p class=TB><code>DMSYS</code></p>
            </td>
            <td class=Formal><a name=1010770></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010772></a>
            <p class=TB><code>EXFSYS</code></p>
            </td>
            <td class=Formal><a name=1010774></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010776></a>
            <p class=TB><code>HR</code></p>
            </td>
            <td class=Formal><a name=1010778></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010780></a>
            <p class=TB><code>MDDATA</code></p>
            </td>
            <td class=Formal><a name=1010782></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010784></a>
            <p class=TB><code>MDSYS</code></p>
            </td>
            <td class=Formal><a name=1010786></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010788></a>
            <p class=TB><code>MGMT_VIEW</code></p>
            </td>
            <td class=Formal><a name=1010790></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010864></a>
            <p class=TB><code>ODM</code></p>
            </td>
            <td class=Formal><a name=1010866></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010860></a>
            <p class=TB><code>ODM_MTR</code></p>
            </td>
            <td class=Formal><a name=1010862></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010856></a>
            <p class=TB><code>OE</code></p>
            </td>
            <td class=Formal><a name=1010858></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010852></a>
            <p class=TB><code>OLAPSYS</code></p>
            </td>
            <td class=Formal><a name=1010854></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010848></a>
            <p class=TB><code>ORDPLUGINS</code></p>
            </td>
            <td class=Formal><a name=1010850></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010844></a>
            <p class=TB><code>ORDSYS</code></p>
            </td>
            <td class=Formal><a name=1010846></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010840></a>
            <p class=TB><code>OUTLN</code></p>
            </td>
            <td class=Formal><a name=1010842></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010836></a>
            <p class=TB><code>PM</code></p>
            </td>
            <td class=Formal><a name=1010838></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010832></a>
            <p class=TB><code>QS</code></p>
            </td>
            <td class=Formal><a name=1010834></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010828></a>
            <p class=TB><code>QS_ADM</code></p>
            </td>
            <td class=Formal><a name=1010830></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010824></a>
            <p class=TB><code>QS_CB</code></p>
            </td>
            <td class=Formal><a name=1010826></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010820></a>
            <p class=TB><code>QS_CBADM</code></p>
            </td>
            <td class=Formal><a name=1010822></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010816></a>
            <p class=TB><code>QS_CS</code></p>
            </td>
            <td class=Formal><a name=1010818></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010812></a>
            <p class=TB><code>QS_ES</code></p>
            </td>
            <td class=Formal><a name=1010814></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010808></a>
            <p class=TB><code>QS_OS</code></p>
            </td>
            <td class=Formal><a name=1010810></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010804></a>
            <p class=TB><code>QS_WS</code></p>
            </td>
            <td class=Formal><a name=1010806></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010800></a>
            <p class=TB><code>RMAN</code></p>
            </td>
            <td class=Formal><a name=1010802></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010796></a>
            <p class=TB><code>SCOTT</code></p>
            </td>
            <td class=Formal><a name=1010798></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010792></a>
            <p class=TB><code>SH</code></p>
            </td>
            <td class=Formal><a name=1010794></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010868></a>
            <p class=TB><code>SI_INFORMTN_SCHEMA</code></p>
            </td>
            <td class=Formal><a name=1010870></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010872></a>
            <p class=TB><code>SYS</code></p>
            </td>
            <td class=Formal><a name=1010874></a>
            <p class=TB><code>OPEN</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010876></a>
            <p class=TB><code>SYSMAN</code></p>
            </td>
            <td class=Formal><a name=1010878></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010880></a>
            <p class=TB><code>SYSTEM</code></p>
            </td>
            <td class=Formal><a name=1010882></a>
            <p class=TB><code>OPEN</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010884></a>
            <p class=TB><code>WK_TEST</code></p>
            </td>
            <td class=Formal><a name=1010886></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010900></a>
            <p class=TB><code>WKPROXY</code></p>
            </td>
            <td class=Formal><a name=1010902></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010896></a>
            <p class=TB><code>WKSYS</code></p>
            </td>
            <td class=Formal><a name=1010898></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010892></a>
            <p class=TB><code>WMSYS</code></p>
            </td>
            <td class=Formal><a name=1010894></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
        <tr class=Formal vAlign=top align=left>
            <td class=Formal><a name=1010888></a>
            <p class=TB><code>XDB</code></p>
            </td>
            <td class=Formal><a name=1010890></a>
            <p class=TB><code>EXPIRED</code> &amp; <code>LOCKED</code></p>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/50640.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-10-24 10:23 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/10/24/50640.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle Database与Oracle Instance的关系简介</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/10/08/49981.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Wed, 08 Oct 2008 05:48:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/10/08/49981.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/49981.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/10/08/49981.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/49981.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/49981.html</trackback:ping><description><![CDATA[<p><br><a href="http://www.bitscn.com/oracle/exploiture/200604/19727.html">http://www.bitscn.com/oracle/exploiture/200604/19727.html</a></p>
<p>一般来说，Oracle Database与Oracle Instance一一对应，一个Oracle Database对应一个Oracle Instance。<br>但在Oracle的并行环境（OPS , RAC）中，一个Oracle Database可对应多个Oracle Instance。<br>　　<br>我们通常所说的一个可以访问的数据库实际上有三部分组成：<br>1.Oracle Software：一般存在本机硬盘上。由oracle的软件程序构成。<br>2.Oracle Instance：启动数据库后存在，关闭数据库后消失。是oracle使用的内存结构与后台进程的集合。<br>3.Oracle Database：存在本机硬盘上，或存储设备上。由oracle数据文件构成。<br><br><br><strong>OPS(Oracle Parallel Server)可以让位于不同系统的多个实例同时访问同一个数据库。</strong><br><span class=font14><span class=a14c>&nbsp;</p>
<p style="TEXT-INDENT: 2em"><strong>一：什么是OPS</strong></p>
<p style="TEXT-INDENT: 2em">OPS(Oracle Parallel Server)可以让位于不同系统的多个实例同时访问同一个数据库。并行服务器可以有效地提高系统的可用性和对多系统的访问性能，但是，如果你的数据没有做很好的分割，性能可能还会下降。</p>
<p style="TEXT-INDENT: 2em">安装OPS时，多个实例mount同一数据库文件，实例间的通讯由分布式锁管理器（DLM）来管理。需要注意的是分布式锁管理器与你所使用的硬件和操作系统有着密切的关系。为了确定多个企图同时修改同一数据的实例，Oracle使用了十个后台进程：LCK0-LCK9，来锁定某一实例所使用的资源。</p>
<p style="TEXT-INDENT: 2em">OPS主要用于UNIX/LINUX集群环境中。</p>
<p style="TEXT-INDENT: 2em"><strong>二：OPS的优点</strong></p>
<p style="TEXT-INDENT: 2em">1:高可用性</p>
<p style="TEXT-INDENT: 2em">2:加快事务响应时间 - 可用于决策支持系统</p>
<p style="TEXT-INDENT: 2em">3:增大交易<a class=qs_highlight1 style="FONT-SIZE: 1em" href="http://clk.qunsee.com/click/click.php?cpid=12&amp;ads_id=16&amp;pid=99000806&amp;cid=812&amp;url=http%3A//www.intel.com/cd/business/enterprise/apac/zho/364490.htm%3Fppc_cid%3DCPT2H07cn_4&amp;k=%u8FDE%u63A5&amp;s=http%3A//www.xland.com.cn/article/74/77/0709/23783.htm&amp;rn=731687&amp;v=1&amp;ref=http%3A//www.xland.com.cn/article/74/77/list/11.htm&amp;province=%u5C71%u4E1C&amp;city=%u804A%u57CE" target=_blank><font color=#0000ff><u>连接</u></font></a>数 - 可用于联机事务处理系统</p>
<p style="TEXT-INDENT: 2em"><strong>三：所有的<a class=qs_highlight1 style="FONT-SIZE: 1em" href="http://clk.qunsee.com/click/click.php?cpid=12&amp;ads_id=754&amp;pid=99000806&amp;cid=812&amp;url=http%3A//www.chinajoy.net&amp;k=%u5E94%u7528&amp;s=http%3A//www.xland.com.cn/article/74/77/0709/23783.htm&amp;rn=513169&amp;v=1&amp;ref=http%3A//www.xland.com.cn/article/74/77/list/11.htm&amp;province=%u5C71%u4E1C&amp;city=%u804A%u57CE" target=_blank><font color=#0000ff><u>应用</u></font></a>都是适合OPS吗？</strong></p>
<p style="TEXT-INDENT: 2em">可以根据功能或数据进行分割的应用最适合OPS。那些有"热数据"（经常被多实例同时访问的数据）的应用并不适合使用OPS。</p>
<p style="TEXT-INDENT: 2em"><strong>四：OPS需要特殊的硬件吗？</strong></p>
<p style="TEXT-INDENT: 2em">OPS要求服务器之间互连并共享磁盘子系统。所有可以做成集群的系统都可以，常用的有UNIX/LINUX和NT等。</p>
<p style="TEXT-INDENT: 2em"><strong>五：如何设置OPS？</strong></p>
<p style="TEXT-INDENT: 2em">1.关闭数据库</p>
<p style="TEXT-INDENT: 2em">2.启用OPS选项，在UNIX中通过重新连接Oracle软件的方式来完成。</p>
<p style="TEXT-INDENT: 2em">3.使Oracle软件在所有节点上都有效，可以通过复制软件到其他节点或共享磁盘的方式来完成。</p>
<p style="TEXT-INDENT: 2em">4.个实例要有自己的Redo log file，所以要增加必要的log文件：</p>
<p style="TEXT-INDENT: 2em"></p>
<center><ccid_nobr></ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=#000000 border=1>
    <tbody>
        <tr>
            <td class=code style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code></ccid_code>ALTER DATABASE ADD LOGFILE THREAD 2
            GROUP G4 ('RAW_FILE1') SIZE 500k,
            GROUP G5 ('RAW_FILE2') SIZE 500k,
            GROUP G6 ('RAW_FILE3') SIZE 500k;</pre>
            </td>
        </tr>
    </tbody>
</table>
</center>
<p style="TEXT-INDENT: 2em">ALTER DATABASE ENABLE PUBLIC THREAD 2;</p>
<p style="TEXT-INDENT: 2em">5.每个实例要有自己的回滚段，所以要增加必要的回滚段：</p>
<p style="TEXT-INDENT: 2em">CREATE ROLLBACK SEGMENT RB2 TABLESPACE RBS;</p>
<p style="TEXT-INDENT: 2em">6.辑初始化参数文件initSID.ora文件，添加如下几项：</p>
<p style="TEXT-INDENT: 2em"></p>
<center><ccid_nobr></ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=#000000 border=1>
    <tbody>
        <tr>
            <td class=code style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code></ccid_code>PARALLEL_SERVER = TRUE
            INSTANCE_NUMBER = 1
            THREAD = 1
            ROLLBACK_SEGMENTS = (r01, r02, r03, r04)</pre>
            </td>
        </tr>
    </tbody>
</table>
</center>
<p style="TEXT-INDENT: 2em">7.创建OPS所需的数据字典，即运行CATPARR.SQL。</p>
<p style="TEXT-INDENT: 2em">8.在所有的节点上启动实例。　　</p>
<p style="TEXT-INDENT: 2em"><strong>六：如何确定一个数据库是运行在并行状态？</strong></p>
<p style="TEXT-INDENT: 2em"></p>
<center><ccid_nobr></ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=#000000 border=1>
    <tbody>
        <tr>
            <td class=code style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code></ccid_code>show parameter parallel_server</pre>
            </td>
        </tr>
    </tbody>
</table>
</center>
<p style="TEXT-INDENT: 2em"><strong>七：如何跟踪<a class=qs_highlight1 style="FONT-SIZE: 1em" href="http://clk.qunsee.com/click/click.php?cpid=510&amp;ads_id=723&amp;pid=99000806&amp;cid=812&amp;url=http%3A//www.qunsee.com/promotion.php&amp;k=%u6D3B%u52A8&amp;s=http%3A//www.xland.com.cn/article/74/77/0709/23783.htm&amp;rn=409054&amp;v=1&amp;ref=http%3A//www.xland.com.cn/article/74/77/list/11.htm&amp;province=%u5C71%u4E1C&amp;city=%u804A%u57CE" target=_blank><font color=#0000ff><u>活动</u></font></a>的实例？</strong></p>
<p style="TEXT-INDENT: 2em"></p>
<center><ccid_nobr></ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=#000000 border=1>
    <tbody>
        <tr>
            <td class=code style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code></ccid_code>SELECT * FROM SYS.V_&#8194;$ACTIVE_INSTANCES;
            SELECT * FROM SYS.V_&#8194;$THREAD;</pre>
            </td>
        </tr>
    </tbody>
</table>
</center></span></span><br><br><strong>RAC (real application clusters 真正应用集群) 是Oracle9i数据库中采用的一项新技术，也是Oracle数据库支持网格计算环境的核心技术。<br><br></strong><br>　RAC (real application clusters 真正应用集群) 是Oracle9i数据库中采用的一项新技术，也是Oracle数据库支持网格计算环境的核心技术。它的出现解决了传统数据库应用中面临的一个重要问题：高性能、高可伸缩性与低价格之间的矛盾!<br>
<div class=spctrl></div>
　　Oracle Real Application Clusters (RAC)可以支持24 x 7 有效的数据库应用 系统，您可以在由低成本的服务器构成的高可用性系统上自由部署您的应用，而无需修改您的应用程序。已经有超过4200个用户从中受益。现在Oracle在10g RAC中更提供免费的集群软件和存储管理软件，为您降低应用成本。拥有RAC您无需再为成本而牺牲性能和 可靠性。<br>
<div class=spctrl></div>
　　关键特性<br>
<div class=spctrl></div>
　　高可用性<br>
<div class=spctrl></div>
　　Oracle Real Application Clusters 提供一个高性能低成本的应用平台，支持所有类型的应用系统，无论是事务处理型应用还是分析型应用。所有应用共享同样的服务器和存储资源。出现任何的服务器或磁盘故障，系统会自动重新接管发生故障的功能。这些对前端用户的完全透明的。同样，如果您需要增加服务器或改变其他组件的配置也不会影响到应用系统。<br>
<div class=spctrl></div>
　　高性能<br>
<div class=spctrl></div>
　　Oracle Real Application Clusters保持着TPC-C的记录，达到每分钟 118万个事务的处理能力，和仅仅 $5.52 每tpmC的成本。在3,000 GB的 TPC-H数据仓库Benchmark 测试中, Oracle RAC同样保持性价比的领先地位，保证我们的用户能够达到更好更快的 ROI。这仅仅是Oracle 保持的多项Benchmark 记录中的最 近的一些指标。<br>
<div class=spctrl></div>
　　按需扩充<br>
<div class=spctrl></div>
　　您现有的系统可能是基于当前的工作负载而构建的，当 应用规模需要扩充时(支持更多的数据、用户或应用)，您就需要扩展您的系统以保证系统的性能。当您的应用是构建于大型的SMP主机时，您可能需要购买另一 台昂贵的主机，但可能只能使用到其处理能力的很小一部分。但是如果您使用Oracle RAC的话，您可以通过增加一台或多台低成本的服务器来扩充您的应用系统的处理能力，满足应用需 求。<br>
<div class=spctrl></div>
　　第三方应用支持<br>
<div class=spctrl></div>
　　Oracle RAC数据库服务器象一个单一镜像的数据库服务 器，所有的应用无需任何改动都可以直接部署 (例如Oracle EBS, SAP, Siebel, 您自己的应用), 同时可以提高应用性能和可靠性。 Oracle和SAP的应用在RAC上完成了一系列的benchmarks性能测试，获 得了非常优异的测试结果， 象ABB 和Colgate一些大客户都是在Oracle RAC上运行他们的 SAP 应用软件。<br>
<div class=spctrl></div>
　　技术应答<br>
<div class=spctrl></div>
　　我听说RAC无法证明其在超过4个处理器的集群上的伸缩性 &#8211; 您有什么证据来证明RAC 的高可用性、高伸缩性和高可靠性?<br>
<div class=spctrl></div>
　　标准的benchmark 性能测试表 明 SAP 运 行于RAC上可以达到80%的伸缩性。一个明显的例证是最近在HP上所作的标准 TPC-C测试。第一个测试是Oracle运行于有64个Intel Itanium2&amp;reg; CPU 的HP SuperDome SMP巨型服务器。第二个测试是16个节点的集群系统，每个节点是4个CPU的SMP服务器。测试结果表明RAC环境性能超过SuperDome 18% ，这两个测试使用了完全同样的 Itanium2&amp;reg; CPU，处理器总数都是64。所以在同样的CPU处理能力下，RAC具有更好的伸缩性。<br>
<div class=spctrl></div>
　　当您再进一步考察这两种方案的成本时，您会发现RAC的成本更低。HP SuperDome 将近800万美元，而同样的集群系统的成本仅仅不到300万美元， 其成本只是大型机的1/3。<br>
<div class=spctrl></div>
　　为什么说Oracle Real Application Clusters 10g 要远远超过它的竞争对手?<br>
<div class=spctrl></div>
　　最基本的不同是，Oracle Real Application Clusters 10g 中所有服务器都可以直接访问数据库中的所有数据，其他的数据库在开放系统中都做不到这点， 正是由于这个原因，您可以非常方便地根据需求随时增加服务器来扩充您的系统，无需重新分布数据和应用。Real Application Clusters象一个单一的系统一样工作，任何节点的故障都不会影响其他节点对数据的访问。所以说增加服 务器就增加了系统的可靠性。另外一点，对用户来说RAC是一个数据库系统，对它的维护管理如同单机一样简单方便。<br>
<div class=spctrl></div>
　　Microsoft SQL Server和IBM DB2都有active-active 的故障切换方式，为什么我要采用Oracle Real Application Cluster 10g ?<br>
<div class=spctrl></div>
　　其他的数据库系统都无法 真正的支持 active-active方式的集群系统，即集群的两个节点可以支持同样的应用。实际上，他们只能支持双向的active-passive 架 构，即节点 A 运行应用A，同时节点B 运行应用B，每个节点作为另一个节点的备份节点。但是同样的应用无法同时运行在两个不同的节点。在Oracle Real Application Cluster 10g 中，同样的应用可以运行在两个或更多的节点，每一个节点都可作为所有其它节点的备份机。当 出现单点故障时，整个Real Application Clusters数据库系统的效率只会有很小的降低。<br>
<div class=spctrl></div>
　　我的分布式应用 系统运行非常好，为什么我要把我的数据库进行集中?<br>
<div class=spctrl></div>
　　如果您的应用系统正运行 于Oracle上，他们当然可以支持您的业务需求。但是集群的数据库可以让您管理更少的数据库，意味着更 少的管理成本。同时如果您把数据集中到Oracle Real Application Cluster 10g 上，您可以提高整个系 统的可用性，达到99.99%甚至更高。<br>
<div class=spctrl></div>
　　我们已经有了集 群硬件环境，并且可以进行应用的切换，为什么我还需要Oracle Real Application Clusters 10g?<br>
<div class=spctrl></div>
　　当您在集群环境下运行您 的应用，如果不采用Oracle Real Application Clusters 10g 的话，您的应用是运行于单例程状态下。虽然您的服务 器是集群的一部分，但实际上相当于只运行在一台单机上。在硬件集群环境下，如HP ServiceGuard、 Sun Cluster 和 Microsoft Cluster Services, 您可以在集群的任何一个 节点重新启动 Oracle数据库 (因为硬盘可以共享). 这就是我们所说的 &#8216;cold failover&#8217;。&#8217;Cold failover&#8217; 切 换速度依赖于相关硬件资源的切换速度，这可能需要5到 25 分钟的时间恢复。如果使用Oracle Real Application Clusters 10g， 在服务器发生故障时，其他存活的服务器可以自动快速的恢复故障服务器的例程。Oracle Real Application Clusters 10g 可以提供业界最快的系统恢复，在60秒内可以对系统故障进行恢复，这至少比硬件的 &#8216;cold failover&#8217;方 案快5倍。<br>
<div class=spctrl></div>
　　我们使用Data Guard来实现故障切 换，为什么我还需要Oracle Real Application Clusters 10g?<br>
<div class=spctrl></div>
　　使用Data Guard来保护您的数 据是一个正确的选择 - Data Guard可以在各种故障情况(无论是数据坏块还是人为失误)下保护您的数据，Data Guard 也确实提供故障切换的功能，但是切换时间可能会需 要10分 钟，RAC可 以提供低于60秒的切换。同时RAC还可以提供无限的伸缩性，Data Guard 只能提供有限的伸缩性。RAC和Data Guard提供100% 技术来最大程度地保护 您的数据库应用。<br>
<div class=spctrl></div>
　　为什么选择Linux? 为什么选择Linux 环境下的Oracle Real Application Clusters 10g?<br>
<div class=spctrl></div>
　　采用SMP UNIX服务器的原因是他 们在过去可以为您的业务系统提供高可用性和伸缩性。在今天对成本非常敏感的环境下，我们需要一种低成本的可以提供高可用性和高质量的系统。通过把您的应用 系统迁移到Linux环境下的Oracle Real Application Clusters 10g ，您可以得到比SMP服务器更好的可用性，同时可以方便地扩充您的系统，最关键的是总体拥有成本可以控制的很 低。使用小型 Intel 服务器构建集群成本远远低于大型的SMP 服务器，同时可以拥有无限的伸缩性。<br>
<div class=spctrl></div>
　　Oracle Real Application Clusters只是Oracle Parallel Server的新的版本, 是吗?<br>
<div class=spctrl></div>
　　Real Application Clusters是一个全新的产品，10g 是它的第二个版本。在RAC中，我们有多项新的专利技术，专注于如何为应用系统创建一个高可用性、高伸缩性和高效的集 群系统，而无需修改现有的应用系统。同时，我们在RAC的易管理性上作了大量工作。 RAC系统架构把所有复杂的内部结构都封装起来，对开发人员和用 户完全透明。<br>
<div class=spctrl></div>
　　您认为Oracle RAC的典型硬件配 置是什么样的?<br>
<div class=spctrl></div>
　　首先我们知道 RAC选件支持所有的Oracle数据库支持的平台，如: Windows, Linux, Solaris, HP-UX等等。所以无论您选择什么样的系统，RAC都可以非常好的运行。如果是 系统选型，那要取决于您的应用需求。我们可以看到Windows 和Linux平台都是常用的基于Intel架构的平台，RAC 在这些平台都有很好的表现，这意味着您可以以低成本得到更高的可用性、可靠性和伸缩性。同 时，RAC可 以在任何价位上获得良好的性能，您可以在HP SuperDomes、Sun boxes或Linux/Windows Intel 服务器上非常方便地配置RAC。<br>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/49981.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-10-08 13:48 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/10/08/49981.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 中关于 SID db_name、instance_name （转）</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/09/24/49499.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Wed, 24 Sep 2008 06:51:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/09/24/49499.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/49499.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/09/24/49499.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/49499.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/49499.html</trackback:ping><description><![CDATA[<div class=post>
<div class=postcontent>SID主要用于区分同一台计算机上的同一个数据库的不同实例。<br>oarcle数据库服务器主要有两部分组成：物理数据库和数据库管理系统<br>数据库管理系统是用户和物理数据库之间的一个中间层，是软件层。这个软件层具有一定的结构，这个结构又被称为例程结构。<br>在启动数据库时，oracle首先要在内存中获取、划分、保留各种用途的区域，运行各种用途的后台进程，即创建一个例程（instance），然后由该例程装载、打开数据库，最后由这个例程来访问和控制数据库的各种物理结构。<br>在启动数据库并使用数据库的时候，实际上是连接到该数据库的例程，通过例程来连接、使用数据库。所以例程是用户和数据库之间的一个中间层。<br>例程是由操作系统的内存结构和一系列进程所组成的，可以启动和关闭。<br>一台计算机上可以创建多个oracle数据库，当同时要使用这些数据库时，就要创建多个例程。为了不使这些例程相互混淆，每个例程都要用称为SID的符号来区分，即创建这些数据库时填写的数据库SID。<br><br><br>
<div class=tit>关于db_name、instance_name、ORACLE_SID</div>
<div class=date>&nbsp;</div>
<table style="TABLE-LAYOUT: fixed">
    <tbody>
        <tr>
            <td>
            <div class=cnt id=blog_text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据库名(DB_NAME)、实例名(Instance_name)、以及操作系统环境变量(ORACLE_SID) <br>　　<br>　　在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。在ORACLE8i、9i中出现了新的参数，即<strong>数据库域名(db_domain)</strong>、<strong>服务名(service_name)</strong>、以及<strong>操作系统环境变量(ORACLE_SID)</strong>。这些都存在于同一个数据库中的标识，用于区分不同数据库的参数。 <br>　　<br>　　<strong>一、什么是数据库名(db_name)？</strong><br>　　数据库名是用于区分数据的内部标识，是以二进制方式存储于数据库控制文件中的参数，在数据安装或创建之后将不得修改。数据库安装完成后，该参数被写入数据库参数文件pfile中，格式如下： <br>　　<br>　　代码: <br>　　<br>　　......... <br>　　db_name="orcl"　　　 #(不允许修改) <br>　　db_domain=dbcenter.toys.com <br>　　instance_name=orcl <br>　　service_names=orcl.dbcenter.toys.com <br>　　control_file=(............... <br>　　......... <br>　　 <br>　　在每一个运行的ORACLE8i数据库中都有一个数据库名(db_name),如果一个服务器程序中创建了两个数据库，则有两个数据库名。其控制参数据分属在不同的pfile中控制着相关的数据库。 <br>　　<br>　　<strong>二、什么是数据库实例名(instance_name)</strong> <br>　　数据库实例名则用于和操作系统之间的联系，用于对外部连接时使用。在操作系统中要取得与数据库之间的交互，必须使用数据库实例名。例如，要和某一个数据库server连接，就必须知道其数据库实例名，只知道数据库名是没有用的，与数据库名不同，在数据安装或创建数据库之后，实例名可以被修改。数据库安装完成后，该实例名被写入数据库参数文件pfile中，格式如下： <br>　　代码: <br>　　<br>　　db_name="orcl"　　　 #(不允许修改) <br>　　db_domain=dbcenter.toys.com <br>　　instance_name=orcl　#(可以修改,可以与db_name相同也可不同) <br>　　service_names=orcl.dbcenter.toys.com <br>　　control_file=(............... <br>　　......... <br>　　 <br>　　数据库名与实例名之间的关系。 <br>　　数据库名与实例名之间的关系一般是一一对应关系，有一个数据库名就有一个实例名，如果在一个服务器中创建两个数据库，则有两个数据库名，两个数据库实例名，用两个标识确定一个数据库，用户和实例相连接。 <br>　　但在8i、9i的并行服务器结构中，数据库与实例之间不存在一一对应关系，而是一对多关系，(一个数据库对应多个实例，同一时间内用户只一个实例相联系，当某一实例出现故障，其它实例自动服务，以保证数据库安全运行。) <br>　　<br>　　<strong>三、操作系统环境变量(ORACLE_SID)</strong> <br>　　在实际中，对于数据库实例名的描述有时使用实例名(instance_name)参数，有时使用ORACLE_SID参数。这两个都是数据库实例名，它们有什么区别呢？(经常弄混) <br>　　代码: <br>　　<br>　　　　　(ORACLE_SID) <br>　　OS&lt;----------------&gt; ORACLE 数据库 &lt;--------(Instance_name(实例名)) <br>　　<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>　　代码: <br>　　<br>　　export ORACLE_SID=orcl <br>　　 <br>　　如果在同一服务器中创建了多个数据库，则必然同时存在多个数据库实例,这时可以重复上述定义过程，以选择不同实例。 <br>　　<br>　　还可以用 <br>　　代码: <br>　　<br>　　[oracle@Datacent]$ . oraenv <br></div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div class=itemdesc>发表于 2008-06-03 15:14 <a href="http://www.cnblogs.com/gergro/"><u><font color=#0000ff>New Yang Bo Element </font></u></a>阅读(245) <a href="http://www.cnblogs.com/gergro/archive/2008/06/03/1212837.html#Post"><u><font color=#800080>评论(0)</font></u></a> &nbsp;<a href="http://www.cnblogs.com/gergro/admin/EditPosts.aspx?postid=1212837"><u><font color=#0000ff>编辑</font></u></a> <a onclick="PutInWz();return false;" href="http://www.cnblogs.com/gergro/archive/2008/06/03/1212837.html#"><u><font color=#800080>收藏</font></u></a> 所属分类: <a href="http://www.cnblogs.com/gergro/category/51154.html"><u><font color=#0000ff>everything except .NET</font></u></a> </div>
</div>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/49499.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-09-24 14:51 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/09/24/49499.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 权限与角色(后面的权限的数据字典视图很有用)</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/07/15/46753.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Tue, 15 Jul 2008 09:42:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/07/15/46753.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/46753.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/07/15/46753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/46753.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/46753.html</trackback:ping><description><![CDATA[权限允许用户访问属于其它用户的对象或执行程序，ORACLE系统提供三种权限：
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>Object 对象级</strong></font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>System 系统级</strong></font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>Role 角色级</strong></font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这些权限可以授予给用户、特殊用户public或角色，如果授予一个权限给特殊用户"Public"（用户public是oracle预定义的，每个用户享有这个用户享有的权限）,那么就意味作将该权限授予了该数据库的所有用户。</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对管理权限而言，角色是一个工具，权限能够被授予给一个角色，角色也能被授予给另一个角色或用户。用户可以通过角色继承权限，除了管理权限外角色服务没有其它目的。权限可以被授予，也可以用同样的方式撤销。</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>建立和使用角色</strong></font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如前所诉，角色存在的目的就是为了使权限的管理变得轻松。建立角色使用CREATE ROLE语句，他的语法如下：</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE ROLE role_name IDENTIFIED BY password<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE ROLE role_name IDENTIFIED EXTERNALLY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE ROLE role_name IDENTIFIED GLOBALLY <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 缺省情况下建立的角色没有password或者其他的识别。如果使用IDENTIFIED BY 子句建立，那么角色不会自动响应，必须用SET ROLE激活。</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET ROLE role_name IDENTIFIED BY password </font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXTERNALLY和GLOBALLY类型的角色由操作系统和ORACLE Service server验证。通常用户需要权限修改应用程序中使用的表单中的数据，但是只有在应用程序运行时而不是在使用ad hoc工具时，这种上下文敏感安全可以通过有PASSWORD的角色来实现。当用户在应用程序内部连结数据库时，代码将执行SET ROLE命令，通过安全验证。所以用户不需要知道角色的password,也不需要自己输入SET ROLE命令。</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>对象权限</strong></font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对象权限就是指在表、视图、序列、过程、函数或包等对象上执行特殊动作的权利。有九种不同类型的权限可以授予给用户或角色。如下表：</font></p>
<p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td width="13%"><font color=#000000>权限</font></td>
            <td width="7%"><font color=#000000>ALTER</font></td>
            <td width="8%"><font color=#000000>DELETE</font></td>
            <td width="10%"><font color=#000000>EXECUTE</font></td>
            <td width="7%"><font color=#000000>INDEX</font></td>
            <td width="8%"><font color=#000000>INSERT</font></td>
            <td width="7%"><font color=#000000>READ </font></td>
            <td width="10%"><font color=#000000>REFERENCE</font></td>
            <td width="12%"><font color=#000000>SELECT </font></td>
            <td width="18%"><font color=#000000>UPDATE</font></td>
        </tr>
        <tr>
            <td width="13%"><font color=#000000>Directory</font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>no </font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>no </font></td>
            <td width="7%"><font color=#000000>yes</font></td>
            <td width="10%"><font color=#000000>no</font></td>
            <td width="12%"><font color=#000000>no </font></td>
            <td width="18%"><font color=#000000>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font color=#000000>function</font></td>
            <td width="7%"><font color=#000000>no</font></td>
            <td width="8%"><font color=#000000>no</font></td>
            <td width="10%"><font color=#000000>yes</font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>no</font></td>
            <td width="7%"><font color=#000000>no</font></td>
            <td width="10%"><font color=#000000>no</font></td>
            <td width="12%"><font color=#000000>no</font></td>
            <td width="18%"><font color=#000000>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font color=#000000>procedure</font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>no</font></td>
            <td width="10%"><font color=#000000>yes</font></td>
            <td width="7%"><font color=#000000>no</font></td>
            <td width="8%"><font color=#000000>no</font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>no</font></td>
            <td width="12%"><font color=#000000>no</font></td>
            <td width="18%"><font color=#000000>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font color=#000000>package</font></td>
            <td width="7%"><font color=#000000>no</font></td>
            <td width="8%"><font color=#000000>no</font></td>
            <td width="10%"><font color=#000000>yes</font></td>
            <td width="7%"><font color=#000000>no</font></td>
            <td width="8%"><font color=#000000>no</font></td>
            <td width="7%"><font color=#000000>no</font></td>
            <td width="10%"><font color=#000000>no</font></td>
            <td width="12%"><font color=#000000>no</font></td>
            <td width="18%"><font color=#000000>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font color=#000000>DB Object</font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>yes</font></td>
            <td width="7%"><font color=#000000>no</font></td>
            <td width="8%"><font color=#000000>no </font></td>
            <td width="7%"><font color=#000000>no</font></td>
            <td width="10%"><font color=#000000>no</font></td>
            <td width="12%"><font color=#000000>no</font></td>
            <td width="18%"><font color=#000000>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font color=#000000>Libary </font></td>
            <td width="7%"><font color=#000000>no</font></td>
            <td width="8%"><font color=#000000>no</font></td>
            <td width="10%"><font color=#000000>yes </font></td>
            <td width="7%"><font color=#000000>no</font></td>
            <td width="8%"><font color=#000000>no</font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>no </font></td>
            <td width="12%"><font color=#000000>no</font></td>
            <td width="18%"><font color=#000000>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font color=#000000>Operation </font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>yes</font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>no </font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>no </font></td>
            <td width="12%"><font color=#000000>no </font></td>
            <td width="18%"><font color=#000000>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font color=#000000>Sequence</font></td>
            <td width="7%"><font color=#000000>yes </font></td>
            <td width="8%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>no </font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>no </font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>no </font></td>
            <td width="12%"><font color=#000000>no </font></td>
            <td width="18%"><font color=#000000>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font color=#000000>Table </font></td>
            <td width="7%"><font color=#000000>yes </font></td>
            <td width="8%"><font color=#000000>yes </font></td>
            <td width="10%"><font color=#000000>no</font></td>
            <td width="7%"><font color=#000000>yes</font></td>
            <td width="8%"><font color=#000000>yes </font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>yes </font></td>
            <td width="12%"><font color=#000000>yes </font></td>
            <td width="18%"><font color=#000000>yes</font></td>
        </tr>
        <tr>
            <td width="13%"><font color=#000000>Type</font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>yes </font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>no </font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>no </font></td>
            <td width="12%"><font color=#000000>no </font></td>
            <td width="18%"><font color=#000000>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font color=#000000>View </font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>yes </font></td>
            <td width="10%"><font color=#000000>no </font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="8%"><font color=#000000>yes </font></td>
            <td width="7%"><font color=#000000>no </font></td>
            <td width="10%"><font color=#000000>no </font></td>
            <td width="12%"><font color=#000000>yes </font></td>
            <td width="18%"><font color=#000000>yes</font></td>
        </tr>
    </tbody>
</table>
</p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对象由不止一个权限，特殊权限ALL可以被授予或撤销。如TABLE的ALL权限就包括：</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT,INSERT,UPDATE和DELETE,还有INDEX,ALTER,和REFERENCE。</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如何看这个表我们以ALTER权限为例进行说明</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALTER权限</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 允许执行ALTER TABLE和LOCK TABLE操作，ALTER TABLE可以进行如下操作：</font></p>
<p><font color=#000000>　　　　. 更改表名</font></p>
<p><font color=#000000>　　　　. 增加或删除列</font></p>
<p><font color=#000000>　　　　. 改变列的数据类型或大小</font></p>
<p><font color=#000000>　　　　. 将表转变为分区表</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在SEQUENCE上的ALTER权限允许执行ALTER Sequence语句，重新给sequence分配最小值、增量和缓冲区大小。</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>系统权限</strong></font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统权限需要授予者有进行系统级活动的能力，如连接数据库，更改用户会话、建立表或建立用户等等。你可以在数据字典视图SYSTEM_PRIVILEGE_MAP上获得完整的系统权限。对象权限和系统权限都通过GRANT语句授予用户或角色。需要注意的是在授予对象权限时语句应该是WITH GRANT OPTION子句，但在授予系统权象时语句是WITH ADMIN OPTION，所以在你试图授予系统权限时，使用语句WITH GRANT OPTION系统会报告一个错误：ONLY ADMIN OPTION can be specified。在考试中要特别注意这个语法和错误信息。</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong> 角色和角色权限</strong></font></p>
<p><font color=#000000>　　角色权限就是将属于用户的权限授予一个角色。任何权限都可以授予给一个角色。授予系统权限给被授予者必须使用WITH_ADMIN_OPTION子句，在会话期间通过SET ROLE语句授予或撤销角色权限。然而，角色权限不能依靠存储在SQL中的权限。如果函数、程序、包、触发器或者方法使用另一个计划拥有的对象，那么就必须直接给对象的拥有者授权，这是因为权限不会在会话之间改变。</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>授予和撤销权限</strong></font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 给用户或者角色授予权限使用GRANT 语句,GRANT语句的语法如下：</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GRANT ROLE（或system privilege） TO user(role,<strong>Public</strong>) WITH ADMIN OPTION（可选） </font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对象权限被授予 WITH GRANT OPTION，</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>权限和数据字典</strong></font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据字典是ORACLE存储有关数据库结构信息的地方，数据本身存放在其他地方，数据字典由表和视图组成。在考试中关于数据字典最容易考的内容是：查看那一类权限已经被授予。比如DBA_TAB_PRIV包含了用户授予给另一用户的对象权限和在授予时是否带有WITH GRANT OTPION子串的信息。注意DBA_TAB_PRIV不仅仅包含了对表的权限的关系，他还包括函数、包、队列等等上的权限的关系。下表列出了所有的权限和角色的数据字典视图：</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表： 权限的数据字典视图<br></font></p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td height=16><font color=#000000>视图 </font></td>
            <td height=16><font color=#000000>作用</font></td>
        </tr>
        <tr>
            <td><font color=#000000>ALL_COL_PRIVS</font></td>
            <td><font color=#000000>表示列上的授权，用户和PUBLIC是被授予者</font></td>
        </tr>
        <tr>
            <td><font color=#000000>ALL_COL_PRIVS_MADE </font></td>
            <td><font color=#000000>表示列上的授权，用户是属主和被授予者</font></td>
        </tr>
        <tr>
            <td><font color=#000000>ALL_COL_RECD</font></td>
            <td><font color=#000000>表示列上的授权，用户和PUBLIC是被授予者</font></td>
        </tr>
        <tr>
            <td><font color=#000000>ALL_TAB_PRIVS</font></td>
            <td><font color=#000000>表示对象上的授权，用户是PUBLIC或被授予者或用户是属主</font></td>
        </tr>
        <tr>
            <td><font color=#000000>ALL_TAB_PRIVS_MADE </font></td>
            <td><font color=#000000>表示对象上的权限，用户是属主或授予者</font></td>
        </tr>
        <tr>
            <td><font color=#000000>ALL_TAB_PRIVS_RECD </font></td>
            <td><font color=#000000>表示对象上的权限, 用户是PUBLIC或被授予者</font></td>
        </tr>
        <tr>
            <td><font color=#000000>DBA_COL_PRIVS </font></td>
            <td><font color=#000000>数据库列上的所有授权</font></td>
        </tr>
        <tr>
            <td><font color=#000000>DBA_ROLE_PRIVS </font></td>
            <td><font color=#000000>显示已授予用户或其他角色的角色</font></td>
        </tr>
        <tr>
            <td><font color=#000000>DBA_SYS_PRIVS </font></td>
            <td><font color=#000000>已授予用户或角色的系统权限</font></td>
        </tr>
        <tr>
            <td><font color=#000000>DBA_TAB_PRIVS </font></td>
            <td><font color=#000000>数据库对象上的所有权限</font></td>
        </tr>
        <tr>
            <td><font color=#000000>ROLE_ROLE_PRIVS </font></td>
            <td><font color=#000000>显示已授予用户的角色</font></td>
        </tr>
        <tr>
            <td><font color=#000000>ROLE_SYS_PRIVS</font></td>
            <td><font color=#000000>显示通过角色授予用户的系统权限</font></td>
        </tr>
        <tr>
            <td><font color=#000000>ROLE_TAB_PRIVS</font></td>
            <td><font color=#000000>显示通过角色授予用户的对象权限</font></td>
        </tr>
        <tr>
            <td><font color=#000000>SESSION_PRIVS </font></td>
            <td><font color=#000000>显示用户现在可利用的所有系统权限</font></td>
        </tr>
        <tr>
            <td><font color=#000000>USER_COL_PRIVS</font></td>
            <td><font color=#000000>显示列上的权限，用户是属主、授予者或被授予者</font></td>
        </tr>
        <tr>
            <td><font color=#000000>USER_COL_PRIVS_MADE</font></td>
            <td><font color=#000000>显示列上已授予的权限，用户是属主或授予者</font></td>
        </tr>
        <tr>
            <td><font color=#000000>USER_COL_PRIVS_RECD </font></td>
            <td><font color=#000000>显示列上已授予的权限，用户是属主或被授予者</font></td>
        </tr>
        <tr>
            <td><font color=#000000>USER_ROLE_PRIVS </font></td>
            <td><font color=#000000>显示已授予给用户的所有角色</font></td>
        </tr>
        <tr>
            <td><font color=#000000>USER_SYS_PRIVS </font></td>
            <td><font color=#000000>显示已授予给用户的所有系统权限</font></td>
        </tr>
        <tr>
            <td><font color=#000000>USER_TAB_PRIVS</font></td>
            <td><font color=#000000>显示已授予给用户的所有对象权限</font></td>
        </tr>
        <tr>
            <td><font color=#000000>USER_TAB_PRIVS_MADE </font></td>
            <td><font color=#000000>显示已授予给其他用户的对象权限，用户是属主</font></td>
        </tr>
        <tr>
            <td><font color=#000000>USER_TAB_PRIVS_RECD</font></td>
            <td><font color=#000000>显示已授予给其他用户的对象权限，用户是被授予者</font></td>
        </tr>
    </tbody>
</table>
</p>
<p><br><strong><font color=#000000>角色相关的视图.</font></strong></p>
<p><u><font color=#000000>一. 概述</font></u></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 与权限,角色相关的视图大概有下面这些:</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; USER_SYS_PRIVS: 当前用户所拥有的系统权限</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SESSION_PRIVS:&nbsp;&nbsp;&nbsp; 当前用户所拥有的全部权限</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROLE_SYS_PRIVS:&nbsp;&nbsp;&nbsp; 某个角色所拥有的系统权限</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意: 要以SYS用户登陆查询这个视图,否则返回空.</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROLE_ROLE_PRIVS:&nbsp;&nbsp;&nbsp; 当前角色被赋予的角色</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SESSION_ROLES:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前用户被激活的角色</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; USER_ROLE_PRIVS:&nbsp;&nbsp; 当前用户被授予的角色</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外还有针对表的访问权限的视图:</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TABLE_PRIVILEGES</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALL_TAB_PRIVS&nbsp;&nbsp; </font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROLE_TAB_PRIVS:&nbsp;&nbsp;&nbsp;&nbsp; 某个角色被赋予的相关表的权限</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...&nbsp;&nbsp;&nbsp; </font></p>
<p><u><font color=#000000>二. Examples</font></u></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 查询当前用户所拥有的权限</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Select * from session_privs;</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.&nbsp;&nbsp; 查询某个用户被赋予的系统权限.</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以有多种方式</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Select * from user_sys_privs;</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者: select * from DBA_SYS_PRIVS where grantee='XXX' </font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (需要当前用户拥有DBA角色)</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. 查询当前用户被授予的角色:</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.&nbsp;&nbsp; Select * from SESSION_ROLES order by ROLE&nbsp;&nbsp; </font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明: 这个查询会返回当前用户所被授予的全部角色, 其中包括嵌套授权的角色. 例如将DBA角色授予了一个用户,DBA角色已经被授予的角色(例如exp_full_database 和 imp_full_database)也会被查询出来&nbsp;&nbsp;&nbsp; </font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. Select * from USER_ROLE_PRIVS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4. 查询某一角色被赋予的系统权限</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Select Privilege from ROLE_SYS_PRIVS where ROLE=&amp;Role</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入 role='CONNECT'</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输出:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PRIVILEGE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALTER SESSION<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE CLUSTER<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE DATABASE LINK<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE SEQUENCE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE SESSION<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE SYNONYM<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE TABLE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE VIEW </font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5. 查询当前角色被授予的角色</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Select GRANTED_ROLE from ROLE_ROLE_PRIVS where ROLE=&amp;ROLE</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入 role= 'DBA'</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输出:</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GRANTED_ROLE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DELETE_CATALOG_ROLE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXECUTE_CATALOG_ROLE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXP_FULL_DATABASE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IMP_FULL_DATABASE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PLUSTRACE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT_CATALOG_ROLE</font></p>
<p><font color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明: PLUSTRACE这个角色是用于执行SQL AUTO TRACE的, 通过执行$ORACLE_HOME/sqlplus/admin/plustrce.sql可以生成这个角色.<br></font></p>
<p>&#160;</p>
<p><strong>Oracle数据库的系统和对象权限:</strong></p>
<p style="TEXT-INDENT: 2em"></p>
<center><ccid_nobr></ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=#000000 border=1>
    <tbody>
        <tr>
            <td class=code style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code></ccid_code>alter any cluster 修改任意簇的权限
            　　alter any index 修改任意索引的权限
            　　alter any role 修改任意角色的权限
            　　alter any sequence 修改任意序列的权限
            　　alter any snapshot 修改任意快照的权限
            　　alter any table 修改任意表的权限
            　　alter any trigger 修改任意触发器的权限
            　　alter cluster 修改拥有簇的权限
            　　alter database 修改数据库的权限
            　　alter procedure 修改拥有的存储过程权限
            　　alter profile 修改资源限制简表的权限
            　　alter resource cost 设置佳话资源开销的权限
            　　alter rollback segment 修改回滚段的权限
            　　alter sequence 修改拥有的序列权限
            　　alter session 修改数据库会话的权限
            　　alter sytem 修改数据库服务器设置的权限
            　　alter table 修改拥有的表权限
            　　alter tablespace 修改表空间的权限
            　　alter user 修改用户的权限
            　　analyze 使用analyze命令分析数据库中任意的表、索引和簇
            　　audit any 为任意的数据库对象设置审计选项
            　　audit system 允许系统操作审计
            　　backup any table 备份任意表的权限
            　　become user 切换用户状态的权限
            　　commit any table 提交表的权限
            　　create any cluster 为任意用户创建簇的权限
            　　create any index 为任意用户创建索引的权限
            　　create any procedure 为任意用户创建存储过程的权限
            　　create any sequence 为任意用户创建序列的权限
            　　create any snapshot 为任意用户创建快照的权限
            　　create any synonym 为任意用户创建同义名的权限
            　　create any table 为任意用户创建表的权限
            　　create any trigger 为任意用户创建触发器的权限
            　　create any view 为任意用户创建视图的权限
            　　create cluster 为用户创建簇的权限
            　　create database link 为用户创建的权限
            　　create procedure 为用户创建存储过程的权限
            　　create profile 创建资源限制简表的权限
            　　create public database link 创建公共数据库链路的权限
            　　create public synonym 创建公共同义名的权限
            　　create role 创建角色的权限
            　　create rollback segment 创建回滚段的权限
            　　create session 创建会话的权限
            　　create sequence 为用户创建序列的权限
            　　create snapshot 为用户创建快照的权限
            　　create synonym 为用户创建同义名的权限
            　　create table 为用户创建表的权限
            　　create tablespace 创建表空间的权限
            　　create user 创建用户的权限
            　　create view 为用户创建视图的权限
            　　delete any table 删除任意表行的权限
            　　delete any view 删除任意视图行的权限
            　　delete snapshot 删除快照中行的权限
            　　delete table 为用户删除表行的权限
            　　delete view 为用户删除视图行的权限
            　　drop any cluster 删除任意簇的权限
            　　drop any index 删除任意索引的权限
            　　drop any procedure 删除任意存储过程的权限
            　　drop any role 删除任意角色的权限
            　　drop any sequence 删除任意序列的权限
            　　drop any snapshot 删除任意快照的权限
            　　drop any synonym 删除任意同义名的权限
            　　drop any table 删除任意表的权限
            　　drop any trigger 删除任意触发器的权限
            　　drop any view 删除任意视图的权限
            　　drop profile 删除资源限制简表的权限
            　　drop public cluster 删除公共簇的权限
            　　drop public database link 删除公共数据链路的权限
            　　drop public synonym 删除公共同义名的权限
            　　drop rollback segment 删除回滚段的权限
            　　drop tablespace 删除表空间的权限
            　　drop user 删除用户的权限
            　　execute any procedure 执行任意存储过程的权限
            　　execute function 执行存储函数的权限
            　　execute package 执行存储包的权限
            　　execute procedure 执行用户存储过程的权限
            　　force any transaction 管理未提交的任意事务的输出权限
            　　force transaction 管理未提交的用户事务的输出权限
            　　grant any privilege 授予任意系统特权的权限
            　　grant any role 授予任意角色的权限
            　　index table 给表加索引的权限
            　　insert any table 向任意表中插入行的权限
            　　insert snapshot 向快照中插入行的权限
            　　insert table 向用户表中插入行的权限
            　　insert view 向用户视图中插行的权限
            　　lock any table 给任意表加锁的权限
            　　manager tablespace 管理（备份可用性）表空间的权限
            　　references table 参考表的权限
            　　restricted session 创建有限制的数据库会话的权限
            　　select any sequence 使用任意序列的权限
            　　select any table 使用任意表的权限
            　　select snapshot 使用快照的权限
            　　select sequence 使用用户序列的权限
            　　select table 使用用户表的权限
            　　select view 使用视图的权限
            　　unlimited tablespace 对表空间大小不加限制的权限
            　　update any table 修改任意表中行的权限
            　　update snapshot 修改快照中行的权限
            　　update table 修改用户表中的行的权限
            　　update view 修改视图中行的权限</pre>
            </td>
        </tr>
    </tbody>
</table>
</center>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/46753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-07-15 17:42 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/07/15/46753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在ORACLE中实现SELECT TOP N的方法[转]</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/07/11/46609.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Fri, 11 Jul 2008 09:29:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/07/11/46609.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/46609.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/07/11/46609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/46609.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/46609.html</trackback:ping><description><![CDATA[<table style="TABLE-LAYOUT: fixed">
    <tbody>
        <tr>
            <td>
            <div class=cnt id=blog_text><span class=t18>
            <div class=tit>在ORACLE中实现SELECT TOP N的方法</div>
            <p>
            <table class=FCK__ShowTableBorders style="TABLE-LAYOUT: fixed">
                <tbody>
                    <tr>
                        <td>
                        <div class=cnt>
                        <p>1.在ORACLE中实现SELECT TOP N</p>
                        <p>&nbsp;&nbsp;&nbsp; 由于ORACLE不支持SELECT TOP语句，所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询。</p>
                        <p>&nbsp;&nbsp; 简单地说，实现方法如下所示：</p>
                        <p>&nbsp;&nbsp; SELECT　列名１．．．列名ｎ　FROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; (SELECT　列名１．．．列名ｎ　FROM 表名 ORDER BY 列名１．．．列名ｎ)</p>
                        <p>&nbsp;&nbsp;&nbsp; WHERE ROWNUM &lt;= N（抽出记录数）</p>
                        <p>&nbsp;&nbsp; ORDER BY ROWNUM ASC</p>
                        <p>&nbsp;&nbsp;&nbsp; 下面举个例子简单说明一下。</p>
                        <p>&nbsp;&nbsp; 顾客表customer(id,name)有如下数据：</p>
                        <p>&nbsp;&nbsp; ID NAME</p>
                        <p>&nbsp;&nbsp;&nbsp; 01 first</p>
                        <p>&nbsp;&nbsp;&nbsp; 02 Second</p>
                        <p>&nbsp;&nbsp;&nbsp; 03 third</p>
                        <p>&nbsp;&nbsp;&nbsp; 04 forth</p>
                        <p>&nbsp;&nbsp;&nbsp; 05 fifth</p>
                        <p>&nbsp;&nbsp;&nbsp; 06 sixth</p>
                        <p>&nbsp;&nbsp;&nbsp; 07 seventh</p>
                        <p>&nbsp;&nbsp;&nbsp; 08 eighth</p>
                        <p>&nbsp;&nbsp;&nbsp; 09 ninth</p>
                        <p>&nbsp;&nbsp;&nbsp; 10 tenth</p>
                        <p>&nbsp;&nbsp;&nbsp; 11 last</p>
                        <p>&nbsp;&nbsp;&nbsp; 则按NAME的字母顺抽出前三个顾客的SQL语句如下所示：</p>
                        <p>&nbsp;&nbsp; SELECT * FROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; (SELECT * FROM CUSTOMER ORDER BY NAME)</p>
                        <p>&nbsp;&nbsp;&nbsp; WHERE ROWNUM &lt;= 3</p>
                        <p>&nbsp;&nbsp;&nbsp; ORDER BY ROWNUM ASC</p>
                        <p>&nbsp;&nbsp;&nbsp; 输出结果为：</p>
                        <p>&nbsp;&nbsp; ID NAME</p>
                        <p>&nbsp;&nbsp;&nbsp; 08 eighth</p>
                        <p>&nbsp;&nbsp;&nbsp; 05 fifth</p>
                        <p>&nbsp;&nbsp;&nbsp; 01 first</p>
                        <p>2.在TOP N纪录中抽出第M（M &lt;= N）条记录</p>
                        <p>&nbsp;&nbsp; 在得到了TOP N的数据之后，为了抽出这N条记录中的第M条记录，我们可以考虑从ROWNUM着手。我们知道，ROWNUM是记录表中数据编号的一个隐藏子段，所以可以在得到TOP N条记录的时候同时抽出记录的ROWNUM，然后再从这N条记录中抽取记录编号为M的记录，即使我们希望得到的结果。</p>
                        <p>&nbsp;&nbsp; 从上面的分析可以很容易得到下面的SQL语句。</p>
                        <p>&nbsp;&nbsp; SELECT 列名１．．．列名ｎ FROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT ROWNUM RECNO, 列名１．．．列名ｎFROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SELECT 列名１．．．列名ｎ FROM 表名 ORDER BY 列名１．．．列名ｎ)</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE ROWNUM &lt;= N（抽出记录数）</p>
                        <p>&nbsp;&nbsp;&nbsp; ORDER BY ROWNUM ASC</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</p>
                        <p>&nbsp;&nbsp;&nbsp; WHERE RECNO = M（M &lt;= N）</p>
                        <p>&nbsp;&nbsp; 同样以上表的数据为基础，那么得到以NAME的字母顺排序的第二个顾客的信息的SQL语句应该这样写：</p>
                        <p>&nbsp;&nbsp;&nbsp; SELECT ID, NAME FROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT ROWNUM RECNO, ID, NAME FROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SELECT * FROM CUSTOMER ORDER BY NAME)</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE ROWNUM &lt;= 3</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY ROWNUM ASC )</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE RECNO = 2</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结果则为：</p>
                        <p>&nbsp;&nbsp;&nbsp; ID NAME</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; 05 fifth</p>
                        <p>3.抽出按某种方式排序的记录集中的第N条记录</p>
                        <p>&nbsp;&nbsp;&nbsp; 在2的说明中，当M = N的时候，即为我们的标题讲的结果。实际上，2的做法在里面N&gt;M的部分的数据是基本上不会用到的，我们仅仅是为了说明方便而采用。</p>
                        <p>&nbsp;&nbsp;&nbsp; 如上所述，则SQL语句应为：</p>
                        <p>&nbsp;&nbsp;&nbsp; SELECT 列名１．．．列名ｎ FROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT ROWNUM RECNO, 列名１．．．列名ｎFROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SELECT 列名１．．．列名ｎ FROM 表名 ORDER BY 列名１．．．列名ｎ)</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE ROWNUM &lt;= N（抽出记录数）</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY ROWNUM ASC</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE RECNO = N</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 那么，2中的例子的SQL语句则为：</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; SELECT ID, NAME FROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT ROWNUM RECNO, ID, NAME FROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SELECT * FROM CUSTOMER ORDER BY NAME)</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE ROWNUM &lt;= 2</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY ROWNUM ASC</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE RECNO = 2</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结果为：</p>
                        <p>&nbsp;&nbsp;&nbsp; ID NAME</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; 05 fifth</p>
                        <p>4.抽出按某种方式排序的记录集中的第M条记录开始的X条记录</p>
                        <p>&nbsp;&nbsp;&nbsp; 3里所讲得仅仅是抽取一条记录的情况，当我们需要抽取多条记录的时候，此时在2中的N的取值应该是在N &gt;= (M + X - 1)这个范围内，当让最经济的取值就是取等好的时候了的时候了。当然最后的抽取条件也不是RECNO = N了，应该是RECNO BETWEEN M AND (M + X - 1)了，所以随之而来的SQL语句则为：</p>
                        <p>&nbsp;&nbsp;&nbsp; SELECT 列名１．．．列名ｎ FROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; (</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT ROWNUM RECNO, 列名１．．．列名ｎFROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT 列名１．．．列名ｎ FROM 表名 ORDER BY 列名１．．．列名ｎ)</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE ROWNUM &lt;= N （N &gt;= (M + X - 1)）</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY ROWNUM ASC</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE RECNO BETWEEN M AND (M + X - 1)</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; 同样以上面的数据为例，则抽取NAME的字母顺的第2条记录开始的3条记录的SQL语句为：</p>
                        <p>&nbsp;&nbsp;&nbsp; SELECT ID, NAME FROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT ROWNUM RECNO, ID, NAME FROM</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SELECT * FROM CUSTOMER ORDER BY NAME)</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE ROWNUM &lt;= (2 + 3 - 1)</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY ROWNUM ASC</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE RECNO BETWEEN 2 AND (2 + 3 - 1)</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结果如下：</p>
                        <p>&nbsp;&nbsp;&nbsp; ID NAME</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; 05 fifth</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; 01 first</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; 04 forth</p>
                        <p>&nbsp;&nbsp;&nbsp;&nbsp; 以此为基础，再扩展的话，做成存储过程，将开始记录数以及抽取记录数为参数，就可以轻松实现分页抽取数据。</p>
                        <p>&#160;</p>
                        <p>&nbsp;&nbsp;&nbsp; 当然了，上面所讲的都是一些最基本的，实际应用中往往都没有这么简单，但是不管怎么说，不管复杂的应用总是由这些简单的元素构成，掌握一些最基本的方法始终是重要的。</p>
                        <p>&nbsp;&nbsp;&nbsp; 实际上网上这样的文章比较多，我也只是稍微梳理了一下条理而写的这篇文章。希望能给初学者一些帮助。</p>
                        </div>
                        </td>
                    </tr>
                </tbody>
            </table>
            </p>
            <p><span class=t18><strong>附加例子</strong>(下面两个结果相同):</span></p>
            <p><span class=t18>select * from (select * from system.jd_jdxx where DWBH='10001' and JDZBH='JDZXX000205' order by BH ) where rownum&lt;=3 order by rownum desc</span></p>
            <p><span class=t18>select * from (select * from system.jd_jdxx where DWBH='10001' and JDZBH='JDZXX000205' order by BH asc) where rownum&lt;=3 order by rownum </span></p>
            </span></div>
            </td>
        </tr>
    </tbody>
</table>
<br><br><br>转自：<a href="http://hi.baidu.com/liuliangzhou/blog/item/27a80a58314675da9d82045f.html">http://hi.baidu.com/liuliangzhou/blog/item/27a80a58314675da9d82045f.html</a>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/46609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-07-11 17:29 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/07/11/46609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 权限与角色</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40520.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Wed, 05 Mar 2008 06:35:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40520.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/40520.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40520.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/40520.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/40520.html</trackback:ping><description><![CDATA[<div><font size=2>权限允许用户访问属于其它用户的对象或执行程序，ORACLE系统提供三种权限：<br><br>　　　Object 对象级<br><br>　　　System 系统级<br><br>　　　Role 角色级<br><br>　　这些权限可以授予给用户、特殊用户public或角色，如果授予一个权限给特殊用户"Public"（用户public是oracle预定义的，每个用户享有这个用户享有的权限）,那么就意味作将该权限授予了该数据库的所有用户。<br><br>　　对管理权限而言，角色是一个工具，权限能够被授予给一个角色，角色也能被授予给另一个角色或用户。用户可以通过角色继承权限，除了管理权限外角色服务没有其它目的。权限可以被授予，也可以用同样的方式撤销。<br><br>　　<strong>建立和使用角色</strong><br><br>　　如前所诉，角色存在的目的就是为了使权限的管理变得轻松。建立角色使用CREATE ROLE语句，他的语法如下：<br><br></font></div>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td><font size=2>CREATE ROLE role_name IDENTIFIED BY password<br>CREATE ROLE role_name IDENTIFIED EXTERNALLY<br>CREATE ROLE role_name IDENTIFIED GLOBALLY</font></td>
        </tr>
    </tbody>
</table>
<div><font size=2></font></div>
<div><font size=2>转自:http://blog.csdn.net/wwweducn/archive/2006/03/19/629434.aspx<br>　　缺省情况下建立的角色没有password或者其他的识别。如果使用IDENTIFIED BY 子句建立，那么角色不会自动响应，必须用SET ROLE激活。<br><br></font></div>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td><font size=2>SET ROLE role_name IDENTIFIED BY password</font></td>
        </tr>
    </tbody>
</table>
<br><font size=2>　　EXTERNALLY和GLOBALLY类型的角色由操作系统和ORACLE Service server验证。通常用户需要权限修改应用程序中使用的表单中的数据，但是只有在应用程序运行时而不是在使用ad hoc工具时，这种上下文敏感安全可以通过有PASSWORD的角色来实现。当用户在应用程序内部连结数据库时，代码将执行SET ROLE命令，通过安全验证。所以用户不需要知道角色的password,也不需要自己输入SET ROLE命令。<br><br>　　<strong>对象权限</strong><br><br>　　对象权限就是指在表、视图、序列、过程、函数或包等对象上执行特殊动作的权利。有九种不同类型的权限可以授予给用户或角色。如下表：<br></font>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td width="13%"><font size=2>权限</font></td>
            <td width="7%"><font size=2>ALTER</font></td>
            <td width="8%"><font size=2>DELETE</font></td>
            <td width="10%"><font size=2>EXECUTE</font></td>
            <td width="7%"><font size=2>INDEX</font></td>
            <td width="8%"><font size=2>INSERT</font></td>
            <td width="7%"><font size=2>READ </font></td>
            <td width="10%"><font size=2>REFERENCE</font></td>
            <td width="12%"><font size=2>SELECT </font></td>
            <td width="18%"><font size=2>UPDATE</font></td>
        </tr>
        <tr>
            <td width="13%"><font size=2>Directory</font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>no </font></td>
            <td width="10%"><font size=2>no </font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>no </font></td>
            <td width="7%"><font size=2>yes</font></td>
            <td width="10%"><font size=2>no</font></td>
            <td width="12%"><font size=2>no </font></td>
            <td width="18%"><font size=2>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font size=2>function</font></td>
            <td width="7%"><font size=2>no</font></td>
            <td width="8%"><font size=2>no</font></td>
            <td width="10%"><font size=2>yes</font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>no</font></td>
            <td width="7%"><font size=2>no</font></td>
            <td width="10%"><font size=2>no</font></td>
            <td width="12%"><font size=2>no</font></td>
            <td width="18%"><font size=2>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font size=2>procedure</font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>no</font></td>
            <td width="10%"><font size=2>yes</font></td>
            <td width="7%"><font size=2>no</font></td>
            <td width="8%"><font size=2>no</font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="10%"><font size=2>no</font></td>
            <td width="12%"><font size=2>no</font></td>
            <td width="18%"><font size=2>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font size=2>package</font></td>
            <td width="7%"><font size=2>no</font></td>
            <td width="8%"><font size=2>no</font></td>
            <td width="10%"><font size=2>yes</font></td>
            <td width="7%"><font size=2>no</font></td>
            <td width="8%"><font size=2>no</font></td>
            <td width="7%"><font size=2>no</font></td>
            <td width="10%"><font size=2>no</font></td>
            <td width="12%"><font size=2>no</font></td>
            <td width="18%"><font size=2>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font size=2>DB Object</font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>no </font></td>
            <td width="10%"><font size=2>yes</font></td>
            <td width="7%"><font size=2>no</font></td>
            <td width="8%"><font size=2>no </font></td>
            <td width="7%"><font size=2>no</font></td>
            <td width="10%"><font size=2>no</font></td>
            <td width="12%"><font size=2>no</font></td>
            <td width="18%"><font size=2>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font size=2>Libary </font></td>
            <td width="7%"><font size=2>no</font></td>
            <td width="8%"><font size=2>no</font></td>
            <td width="10%"><font size=2>yes </font></td>
            <td width="7%"><font size=2>no</font></td>
            <td width="8%"><font size=2>no</font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="10%"><font size=2>no </font></td>
            <td width="12%"><font size=2>no</font></td>
            <td width="18%"><font size=2>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font size=2>Operation </font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>no </font></td>
            <td width="10%"><font size=2>yes</font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>no </font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="10%"><font size=2>no </font></td>
            <td width="12%"><font size=2>no </font></td>
            <td width="18%"><font size=2>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font size=2>Sequence</font></td>
            <td width="7%"><font size=2>yes </font></td>
            <td width="8%"><font size=2>no </font></td>
            <td width="10%"><font size=2>no </font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>no </font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="10%"><font size=2>no </font></td>
            <td width="12%"><font size=2>no </font></td>
            <td width="18%"><font size=2>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font size=2>Table </font></td>
            <td width="7%"><font size=2>yes </font></td>
            <td width="8%"><font size=2>yes </font></td>
            <td width="10%"><font size=2>no</font></td>
            <td width="7%"><font size=2>yes</font></td>
            <td width="8%"><font size=2>yes </font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="10%"><font size=2>yes </font></td>
            <td width="12%"><font size=2>yes </font></td>
            <td width="18%"><font size=2>yes</font></td>
        </tr>
        <tr>
            <td width="13%"><font size=2>Type</font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>no </font></td>
            <td width="10%"><font size=2>yes </font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>no </font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="10%"><font size=2>no </font></td>
            <td width="12%"><font size=2>no </font></td>
            <td width="18%"><font size=2>no</font></td>
        </tr>
        <tr>
            <td width="13%"><font size=2>View </font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>yes </font></td>
            <td width="10%"><font size=2>no </font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="8%"><font size=2>yes </font></td>
            <td width="7%"><font size=2>no </font></td>
            <td width="10%"><font size=2>no </font></td>
            <td width="12%"><font size=2>yes </font></td>
            <td width="18%"><font size=2>yes</font></td>
        </tr>
    </tbody>
</table>
<font size=2>　对象由不止一个权限，特殊权限ALL可以被授予或撤销。如TABLE的ALL权限就包括：<br><br>　　　SELECT,INSERT,UPDATE和DELETE,还有INDEX,ALTER,和REFERENCE。<br><br>　　如何看这个表我们以ALTER权限为例进行说明<br><br>　　ALTER权限<br><br>　　允许执行ALTER TABLE和LOCK TABLE操作，ALTER TABLE可以进行如下操作：<br><br>　　　　. 更改表名<br><br>　　　　. 增加或删除列<br><br>　　　　. 改变列的数据类型或大小<br><br>　　　　. 将表转变为分区表<br><br>　　在SEQUENCE上的ALTER权限允许执行ALTER Sequence语句，重新给sequence分配最小值、增量和缓冲区大小。<br><br>　　<strong>系统权限</strong><br><br>　　系统权限需要授予者有进行系统级活动的能力，如连接数据库，更改用户会话、建立表或建立用户等等。你可以在数据字典视图SYSTEM_PRIVILEGE_MAP上获得完整的系统权限。对象权限和系统权限都通过GRANT语句授予用户或角色。需要注意的是在授予对象权限时语句应该是WITH GRANT OPTION子句，但在授予系统权象时语句是WITH ADMIN OPTION，所以在你试图授予系统权限时，使用语句WITH GRANT OPTION系统会报告一个错误：ONLY ADMIN OPTION can be specified。在考试中要特别注意这个语法和错误信息。<br><br>　　<strong>角色和角色权限</strong><br><br>　　角色权限就是将属于用户的权限授予一个角色。任何权限都可以授予给一个角色。授予系统权限给被授予者必须使用WITH_ADMIN_OPTION子句，在会话期间通过SET ROLE语句授予或撤销角色权限。然而，角色权限不能依靠存储在SQL中的权限。如果函数、程序、包、触发器或者方法使用另一个计划拥有的对象，那么就必须直接给对象的拥有者授权，这是因为权限不会在会话之间改变。<br><br>　　<strong>授予和撤销权限</strong><br><br>　　　给用户或者角色授予权限使用GRANT 语句,GRANT语句的语法如下：<br><br></font>
<table cellPadding=0 width="100%" bgColor=#ffffff border=0>
    <tbody>
        <tr>
            <td><font size=2>GRANT ROLE（或system privilege） TO user(role,Public) WITH ADMIN OPTION（可选）</font></td>
        </tr>
    </tbody>
</table>
<br><font size=2>　　对象权限被授予 WITH GRANT OPTION，<br><br>　　<strong>权限和数据字典</strong><br><br>　　数据字典是ORACLE存储有关数据库结构信息的地方，数据本身存放在其他地方，数据字典由表和视图组成。在考试中关于数据字典最容易考的内容是：查看那一类权限已经被授予。比如DBA_TAB_PRIV包含了用户授予给另一用户的对象权限和在授予时是否带有WITH GRANT OTPION子串的信息。注意DBA_TAB_PRIV不仅仅包含了对表的权限的关系，他还包括函数、包、队列等等上的权限的关系。下表列出了所有的权限和角色的数据字典视图：<br><br>　　表： 权限的数据字典视图<br><br></font>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td height=16><font size=2>视图 </font></td>
            <td height=16><font size=2>作用</font></td>
        </tr>
        <tr>
            <td><font size=2>ALL_COL_PRIVS</font></td>
            <td><font size=2>表示列上的授权，用户和PUBLIC是被授予者</font></td>
        </tr>
        <tr>
            <td><font size=2>ALL_COL_PRIVS_MADE </font></td>
            <td><font size=2>表示列上的授权，用户是属主和被授予者</font></td>
        </tr>
        <tr>
            <td><font size=2>ALL_COL_RECD</font></td>
            <td><font size=2>表示列上的授权，用户和PUBLIC是被授予者</font></td>
        </tr>
        <tr>
            <td><font size=2>ALL_TAB_PRIVS</font></td>
            <td><font size=2>表示对象上的授权，用户是PUBLIC或被授予者或用户是属主</font></td>
        </tr>
        <tr>
            <td><font size=2>ALL_TAB_PRIVS_MADE </font></td>
            <td><font size=2>表示对象上的权限，用户是属主或授予者</font></td>
        </tr>
        <tr>
            <td><font size=2>ALL_TAB_PRIVS_RECD </font></td>
            <td><font size=2>表示对象上的权限, 用户是PUBLIC或被授予者</font></td>
        </tr>
        <tr>
            <td><font size=2>DBA_COL_PRIVS </font></td>
            <td><font size=2>数据库列上的所有授权</font></td>
        </tr>
        <tr>
            <td><font size=2>DBA_ROLE_PRIVS </font></td>
            <td><font size=2>显示已授予用户或其他角色的角色</font></td>
        </tr>
        <tr>
            <td><font size=2>DBA_SYS_PRIVS </font></td>
            <td><font size=2>已授予用户或角色的系统权限</font></td>
        </tr>
        <tr>
            <td><font size=2>DBA_TAB_PRIVS </font></td>
            <td><font size=2>数据库对象上的所有权限</font></td>
        </tr>
        <tr>
            <td><font size=2>ROLE_ROLE_PRIVS </font></td>
            <td><font size=2>显示已授予用户的角色</font></td>
        </tr>
        <tr>
            <td><font size=2>ROLE_SYS_PRIVS</font></td>
            <td><font size=2>显示通过角色授予用户的系统权限</font></td>
        </tr>
        <tr>
            <td><font size=2>ROLE_TAB_PRIVS</font></td>
            <td><font size=2>显示通过角色授予用户的对象权限</font></td>
        </tr>
        <tr>
            <td><font size=2>SESSION_PRIVS </font></td>
            <td><font size=2>显示用户现在可利用的所有系统权限</font></td>
        </tr>
        <tr>
            <td><font size=2>USER_COL_PRIVS</font></td>
            <td><font size=2>显示列上的权限，用户是属主、授予者或被授予者</font></td>
        </tr>
        <tr>
            <td><font size=2>USER_COL_PRIVS_MADE</font></td>
            <td><font size=2>显示列上已授予的权限，用户是属主或授予者</font></td>
        </tr>
        <tr>
            <td><font size=2>USER_COL_PRIVS_RECD </font></td>
            <td><font size=2>显示列上已授予的权限，用户是属主或被授予者</font></td>
        </tr>
        <tr>
            <td><font size=2>USER_ROLE_PRIVS </font></td>
            <td><font size=2>显示已授予给用户的所有角色</font></td>
        </tr>
        <tr>
            <td><font size=2>USER_SYS_PRIVS </font></td>
            <td><font size=2>显示已授予给用户的所有系统权限</font></td>
        </tr>
        <tr>
            <td><font size=2>USER_TAB_PRIVS</font></td>
            <td><font size=2>显示已授予给用户的所有对象权限</font></td>
        </tr>
        <tr>
            <td><font size=2>USER_TAB_PRIVS_MADE </font></td>
            <td><font size=2>显示已授予给其他用户的对象权限，用户是属主</font></td>
        </tr>
        <tr>
            <td><font size=2>USER_TAB_PRIVS_RECD</font></td>
            <td><font size=2>显示已授予给其他用户的对象权限，用户是被授予者</font></td>
        </tr>
    </tbody>
</table>
<div><font size=2></font></div>
<div><font size=2>--------------------------------------------------------------------------</font></div>
<div><font size=2></font></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>角色相关的视图.</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>一. 概述</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp; 与权限,角色相关的视图大概有下面这些:</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; USER_SYS_PRIVS:&nbsp;&nbsp; 当前用户所拥有的系统权限</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; SESSION_PRIVS:&nbsp;&nbsp;&nbsp;&nbsp; 当前用户所拥有的全部权限</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; ROLE_SYS_PRIVS:&nbsp;&nbsp;&nbsp;&nbsp; 某个角色所拥有的系统权限</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; 注意: 要以SYS用户登陆查询这个视图,否则返回空.</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; ROLE_ROLE_PRIVS:&nbsp;&nbsp;&nbsp; 当前角色被赋予的角色</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp; SESSION_ROLES:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前用户被激活的角色</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; USER_ROLE_PRIVS:&nbsp;&nbsp; 当前用户被授予的角色</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; 另外还有针对表的访问权限的视图:</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; TABLE_PRIVILEGES</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; ALL_TAB_PRIVS &nbsp;&nbsp;</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; ROLE_TAB_PRIVS:&nbsp;&nbsp;&nbsp;&nbsp; 某个角色被赋予的相关表的权限</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...&nbsp;&nbsp;&nbsp; </font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>二. Examples</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp; 1. 查询当前用户所拥有的权限</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Select * from session_privs;</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp; 2.&nbsp;&nbsp; 查询某个用户被赋予的系统权限.</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以有多种方式</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Select * from user_sys_privs;</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者: select * from DBA_SYS_PRIVS where grantee='XXX' </font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (需要当前用户拥有DBA角色)</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp; 3. 查询当前用户被授予的角色:</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. Select * from SESSION_ROLES order by ROLE&nbsp;&nbsp; </font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明: 这个查询会返回当前用户所被授予的全部角色, 其中包括嵌套授权的</font></span></div>
<div style="TEXT-INDENT: 63pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>角色. 例如将DBA角色授予了一个用户,DBA角色已经被授予的角色(例如 </font></span></div>
<div style="TEXT-INDENT: 63pt; LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>exp_full_database 和 imp_full_database)也会被查询出来 &nbsp;&nbsp;&nbsp;</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. Select * from USER_ROLE_PRIVS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp; 4. 查询某一角色被赋予的系统权限</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Select Privilege from ROLE_SYS_PRIVS where ROLE=&amp;Role</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入 role='CONNECT'</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输出:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PRIVILEGE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALTER SESSION<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE CLUSTER<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE DATABASE LINK<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE SEQUENCE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE SESSION<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE SYNONYM<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE TABLE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE VIEW</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2></font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp; 5. 查询当前角色被授予的角色</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Select GRANTED_ROLE from ROLE_ROLE_PRIVS where ROLE=&amp;ROLE</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入 role= 'DBA'</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输出:</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GRANTED_ROLE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------------------<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DELETE_CATALOG_ROLE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; EXECUTE_CATALOG_ROLE<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; EXP_FULL_DATABASE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; IMP_FULL_DATABASE<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PLUSTRACE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; SELECT_CATALOG_ROLE</font></span></div>
<div style="LINE-HEIGHT: 150%"><span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明: PLUSTRACE这个角色是用于执行SQL AUTO TRACE的, 通过执行 $ORACLE_HOME/sqlplus/admin/plustrce.sql可以生成这个角色.</font></span></div>
<p><font size=2></font></p>
<p><font size=2><strong><font color=#295200>oracle创建一个角色的完整sql语句</font></strong> </font></p>
<p style="MARGIN: 5px; LINE-HEIGHT: 150%"><code><span style="COLOR: #000000"><font size=2><font face=新宋体><span style="COLOR: #0000ff">CREATE</span> ROLE <span style="COLOR: #ff00ff">"TESTROLE"</span> <br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #0000ff">IDENTIFIED</span> <span style="COLOR: #0000ff">BY</span> <span style="COLOR: #ff00ff">"hawkingwan"</span><span style="COLOR: #0000cc">;</span><br><span style="COLOR: #0000ff">GRANT</span> <span style="COLOR: #0000ff">ALTER</span> <span style="COLOR: #0000ff">ANY</span> <span style="COLOR: #0000ff">INDEX</span> <span style="COLOR: #0000ff">TO</span> <span style="COLOR: #ff00ff">"TESTROLE"</span> <span style="COLOR: #0000ff">WITH</span> ADMIN <span style="COLOR: #0000ff">OPTION</span><br><span style="COLOR: #0000ff">GRANT</span> <span style="COLOR: #0000ff">SELECT</span> <span style="COLOR: #0000ff">ANY</span> <span style="COLOR: #0000ff">TABLE</span> <span style="COLOR: #0000ff">TO</span> <span style="COLOR: #ff00ff">"TESTROLE"</span> <span style="COLOR: #0000ff">WITH</span> ADMIN <span style="COLOR: #0000ff">OPTION</span><br><span style="COLOR: #0000ff">GRANT</span> <span style="COLOR: #ff00ff">"CONNECT"</span> <span style="COLOR: #0000ff">TO</span> <span style="COLOR: #ff00ff">"TESTROLE"</span><span style="COLOR: #0000cc">;</span><br><span style="COLOR: #0000ff">GRANT</span> <span style="COLOR: #ff00ff">"DBA"</span> <span style="COLOR: #0000ff">TO</span> <span style="COLOR: #ff00ff">"TESTROLE"</span><span style="COLOR: #0000cc">;</span><br><span style="COLOR: #0000ff">BEGIN</span><br>&nbsp;&nbsp;&nbsp;&nbsp; dbms_resource_manager_privs<span style="COLOR: #0000cc">.</span>grant_switch_consumer_group<span style="COLOR: #0000cc">(</span> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grantee_name <span style="COLOR: #0000cc">=</span><span style="COLOR: #0000cc">&gt;</span> <span style="COLOR: #ff00ff">'TESTROLE'</span><span style="COLOR: #0000cc">,</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; consumer_group <span style="COLOR: #0000cc">=</span><span style="COLOR: #0000cc">&gt;</span> <span style="COLOR: #ff00ff">'DEFAULT_CONSUMER_GROUP'</span><span style="COLOR: #0000cc">,</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grant_option <span style="COLOR: #0000cc">=</span><span style="COLOR: #0000cc">&gt;</span> <span style="COLOR: #0000ff">FALSE</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">;</span><br><span style="COLOR: #0000ff">END</span><span style="COLOR: #0000cc">;</span></font></font></span></code></p>
<p style="MARGIN: 5px; LINE-HEIGHT: 150%"></p>
<p style="MARGIN: 5px; LINE-HEIGHT: 150%"><code><span style="COLOR: #000000"><font size=2><font face=新宋体><span style="COLOR: #0000cc">转自：<a href="http://blog.csdn.net/kdnuggets/archive/2007/12/09/1925591.aspx"><u><font color=#0000ff>http://blog.csdn.net/kdnuggets/archive/2007/12/09/1925591.aspx</font></u></a></span></font></font></span></code></p>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/40520.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-03-05 14:35 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40520.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle用户权限管理【转】</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40517.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Wed, 05 Mar 2008 06:01:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40517.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/40517.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40517.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/40517.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/40517.html</trackback:ping><description><![CDATA[ORACLE数据库用户与权限管理<br><br>ORACLE是多用户系统，它允许许多用户共享系统资源。为了保证数据库系统的安全，数据库管理系统配置了良好的安全机制。<br><br>2. 1 ORACLE数据库安全策略<br><br>建立系统级的安全保证<br>系统级特权是通过授予用户系统级的权利来实现，系统级的权利（系统特权）包括：建立表空间、建立用户、修改用户的权利、删除用户等。系统特权可授予用户，也可以随时回收。ORACLE系统特权有80多种。<br><br>建立对象级的安全保证<br>对象级特权通过授予用户对数据库中特定的表、视图、序列等进行操作（查询、增、删改）的权利来实现。<br><br>建立用户级的安全保证<br>用户级安全保障通过用户口令和角色机制（一组权利）来实现。引入角色机制的目的是简化对用户的授权与管理。做法是把用户按照其功能分组，为每个用户建立角色，然后把角色分配给用户，具有同样角色的用户有相同的特权。<br><br>2.2 用户管理<br><br>ORACLE用户管理的内容主要包括用户的建立、修改和删除<br><br>用户的建立<br>SQL&gt;CREATE USER jxzy<br><br>&gt;IDENTIFIED BY jxzy_password<br><br>&gt;DEFAULT TABLESPACE system<br><br>&gt;QUATA 5M ON system; //供用户使用的最大空间限额<br><br>用户的修改<br>SQL&gt;CREATE USER jxzy<br><br>&gt;IDENTIFIED BY jxzy_pw<br><br>&gt;QUATA 10M ON system;<br><br>删除用户及其所建对象<br>SQL&gt;DROP USER jxzy CASCADE; //同时删除其建立的实体<br><br>2.3系统特权管理与控制<br><br>ORACLE 提供了80多种系统特权，其中每一个系统特权允许用户执行一个或一类数据库操作。<br><br>授予系统特权<br>SQL&gt;GRANT CREATE USER,ALTER USER,DROP USER<br><br>&gt;TO jxzy_new<br><br>&gt;WITH ADMIN OPTION;<br><br>回收系统特权<br>SQL&gt;REVOKE CREATE USER,ALTER USER,DROP USER<br><br>&gt;FROM jxzy_new<br><br>//但没有级联回收功能<br><br>显示已被授予的系统特权（某用户的系统级特权）<br>SQL&gt;SELECT*FROM sys.dba_sys_privs<br><br>2.4 对象特权管理与控制<br><br>ORACLE对象特权指用户在指定的表上进行特殊操作的权利。这些特殊操作包括增、删、改、查看、执行（存储过程）、引用（其它表字段作为外键）、索引等。<br><br>授予对象特权<br>SQL&gt;GRANT SELECT,INSERT(office_num,office_name),<br><br>&gt;UPDATE(desc)ON office_organization<br><br>&gt;TO new_adminidtrator<br><br>&gt;WITH GRANT OPTION;<br><br>//级联授权<br><br>SQL&gt;GRANT ALL ON office_organization<br><br>&gt;TO new_administrator<br><br>回收对象特权<br>SQL&gt;REVOKE UPDATE ON office_orgaization<br><br>&gt;FROM new_administrator<br><br>//有级联回收功能<br><br>SQL&gt;REVOKE ALL ON office_organization<br><br>&gt;FROM new_administrator<br><br>显示已被授予的全部对象特权<br>SQL&gt;SELECT*FROM sys.dba_tab_privs<br><br>2.5 角色的管理<br><br>ORACLE的角色是命名的相关特权组（包括系统特权与对象特权），ORACLE用它来简化特权管理，可把它授予用户或其它角色。<br><br>ORACLE数据库系统预先定义了CONNECT 、RESOURCE、 DBA、 EXP_FULL_DATABASE、 IMP_FULL_DATABASE五个角色。CONNECT具有创建表、视图、序列等特权；RESOURCE具有创建过程、触发器、表、序列等特权、DBA具有全部系统特权；EXP_FULL_DATABASE、 IMP_FULL_DATABASE具有卸出与装入数据库的特权。<br><br>通过查询sys.dba_sys_privs可以了解每种角色拥有的权利。<br><br>授予用户角色<br>SQL&gt;GRANT DBA TO new_administractor<br><br>&gt;WITH GRANT OPTION;<br><br><br>==============================================================<br><br><br><br>Oracle 的用户根据所被授予的权限分为系统权限和对象权限。其中最高的权限是sysdba。 Sysdba具有控制Oracle一切行为的特权，诸如创建、启动、关闭、恢复数据库，使数据库归档/非归档，备份表空间等关键性的动作只能通过具有sysdba权限的用户来执行。这些任务即使是普通DBA角色也不行。Sysoper是一个与sysdba相似的权限，只不过比sysdba少了SYSOPER privileges WITH ADMIN OPTION，CREATE DATABASE，RECOVER DATABASE UNTIL这几个权限而已。这两者的认证方式是相同的办法，所以下面只介绍sysdba的认证管理。 <br> <br>　　一般对sysdba的管理有两种方式： *** 作系统认证和密码文件认证。具体选择那一种认证方式取决于：你是想在Oracle运行的机器上维护数据库，还是在一台机器上管理分布于不同机器上的所有的Oracle数据库。若选择在本机维护数据库，则选择 *** 作系统认证可能是一个简单易行的办法；若有好多数据库，想进行集中管理，则可以选择password文件认证方式。 <br>　　下图比较直观的说明了这个选择权衡过程： <br>　　 <br>　　使用 *** 作系统认证方式的配置过程： <br>　　1． 在 *** 作系统中建立一个合法帐户。 <br>　　具体来说，在NT上，首先建立一个本地用户组，取名为ORA_<sid>_DBA,其中SID为该数据库实例的SID，或者建立一个ORA_DBA地组，该组不对应于任何一个单独的Oracle实例。这样当一个NT上有好几个Oracle实例时，不用分别管理。然后再NT上建立一个用户，并且把它归入该组中。但是实际上这两步在Oracle8I安装过程中已经自动完成了，一般不用手动进行。 <br>　　第三步：在sqlnet.ora（位于$ORACLE_HOME/NETWORK/ADMIN目录中）中，把SQLNET.AUTHENTICATION _　SERVICES 设置为SQLNET.AUTHENTICATION_SERVICES= (NTS)，意思为使用NT认证方式。 <br>　　第四步，在INIT<sid>.ORA中，把REMOTE_LOGIN_PASSWORD设置为NONE，意思是不用password认证方式。 <br>　　完成以上步骤后，就可以在登录到NT后，直接在SQL*Plus 和SERVER MANAGER中CONNECT INTERNAL (CONNECT / AS SYSDBA)来作为超级用户登录到Oracle中，执行一些只有超级用户才能进行的 *** 作。 <br>　　在Unix下，情况有些不同。毕竟这是两个完全不同的 *** 作系统。 <br>　　首先，在安装Oracle之前，建立一个DBA组，这一步不用说了，不然是装不上Oracle的。一般还建立一个名为Oracle的用户，并把它加入到DBA组中。 <br>　　第二步， 设置REMOTE_LOGIN_PASSWORD为NONE。在Oracle8.1以后，该参数默认为EXCLUSIVE。一定要记得改过来。 <br>　　第三步, 用该用户名登录Unix，运行SQL*Plus 或者SERVER MANAGER，输入以下命令：CONNECT INTERNAL　(CONNECT / AS SYSDBA)来登录到Oracle中。 <br> <br>　　使用password文件认证的具体步骤： <br>　　Oracle提供orapwd实用程序来创建password 文件，运用orapwd建立该认证方式的具体步骤如下： <br>　　1． 使用Orapwd实用程序来创建一个PASSWORD文件。语法： <br>　　　orapwd file=文件名 password=internal用户密码 entried=entries. <br>　　详细解释： <br>　　　文件名要包含完整的全路径名，如果不指定，Oracle把它默认放置$ORACLE_HOME/dbs（Unix下）或者$ORACLE_HOME/DATABASE（NT下）下。 <br>　　用户密码是用户internal的密码。当然后来还可以再向里边加入别的超级用户。 <br>　　Entries表示最大允许有的超级用户数目。这个是一个可选的。前两者是必须指定的。一般会把它设置的比实际需要大一些，以免不够。 <br> <br>　　2． 把INIT<sid>.ORA中REMOTE_LOGIN_PASSWORD设置为EXCLUSIVE 或SHARED.使用EXCLUSIVE表示只有当前INSTANCE使用这个password文件。而且允许有别的用户作为sysdba登录进系统里边，而若选择了SHARED，则表明不止一个实例使用这个密码文件，伴随着一个很强的约束：sysdba权限只能授予sys和internal这两个用户名。（其实internal不是一个实际用户，而只是sys作为sysdba登录时的一个别名。） <br>　　同时还要记得把sqlnet.ora文件中SQLNET.AUTHENTICATION _SERVICES设置为NONE。一般在Unix下它是默认设置。在NT下，若选择典型安装时，会使用OS认证，而自定义时会使用密码文件认证方式。在安装过程中会提示输入INTERNAL密码。这样的话，就不用在手工创建密码文件和设定INTERNAL的密码了。 <br> <br>　　3． 用SQL*Plus 或SERVER MANAGER运行下面命令登录进系统：CONNECT INTERNAL/密码。 <br><br> <br>　　注意点： <br>　　1．在Oracle8.1.6安装在WIN2000下创建数据库时，常常会发生凭证检索失败的错误。这是由于Oracle不能应用OS认证的结果。一般可以通过修改sqlnet.ora中SQLNET.AUTHENTICATION _SERVICES为NONE来解决。这时，Oracle将采用密码文件认证方式。 <br>　　2.由于Oracle有几个系统预建的用户，所以最好在安装完成以后马上改变这些用户的密码。系统默认得密码分别为：internal/oracle , sys/change_on_install, system/manager. <br> <br>　　3.当选择密码文件认证方式时，可以再向系统中加入其他超级用户。比如用以下语句把用户SCOTT加入超级用户之中：(由具有sysdba权限的人执行) <br>　　SQL&gt;GRANT SYSDBA TO SCOTT;这样SCOTT用户就具有了sysdba权限。注意，此时SCOTT用户可以以两种身份登录：SCOTT , SYS.当SCOTT在登录时没有输入AS SYSDBA时，SCOTT是作为普通用户登录的。而当登录时输入了AS SYSDBA时，此时SCOTT登录进去的用户实际上为sys。 <br> <br>　　4． 当前系统中的具有sysdba权限的用户名可以从数据字典视图v$pwfile_user中查询得到： <br>SELECT * FROM V$PWFILE_USERS; 如上图所示。 <br>　　5． 系统中最大的具有sysdba权限的用户数由创建密码文件时的ENTRIES参数决定。当需要创建更多的具有sysdba权限的用户时，就需要删除原有的密码文件，重新创建一个。这需要关闭数据库，删除密码文件，重新创建一个新的密码文件，在entries中输入足够大的数目。再启动Oracle。这时，所有原来北授权的超级用户都不再存在，需要重新授权。所以在重新创建密码文件前，先要查询该视图，记下用户名，再在创建完密码文件后重新授权。 <br>　　6． Internal用户密码忘记的处理方法： <br>　　有两种办法： <br>　　1． ALTER USER SYS IDENTIFIED BY 新密码；//这同时也改变了Internal的密码,在Oracle8I中通过 <br>　　2． 重新创建一个新的密码文件，指定一个新的密码。<br>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/40517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-03-05 14:01 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】oracle的系统和对象权限（找了好多资料，终于找到这篇哈）</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40516.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Wed, 05 Mar 2008 05:55:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40516.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/40516.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40516.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/40516.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/40516.html</trackback:ping><description><![CDATA[<div class=cnt><font color=#333333>　　alter any cluster 修改任意簇的权限 <br>　　alter any index 修改任意索引的权限 <br>　　alter any role 修改任意角色的权限 <br>　　alter any sequence 修改任意序列的权限 <br>　　alter any snapshot 修改任意快照的权限 <br>　　alter any table 修改任意表的权限 <br>　　alter any trigger 修改任意触发器的权限 <br>　　alter cluster 修改拥有簇的权限 <br>　　alter database 修改数据库的权限 <br>　　alter procedure 修改拥有的存储过程权限 <br>　　alter profile 修改资源限制简表的权限 <br>　　alter resource cost 设置佳话资源开销的权限 <br>　　alter rollback segment 修改回滚段的权限 <br>　　alter sequence 修改拥有的序列权限 <br>　　alter session 修改数据库会话的权限 <br>　　alter sytem 修改数据库服务器设置的权限 <br>　　alter table 修改拥有的表权限 <br>　　alter tablespace 修改表空间的权限 <br>　　alter user 修改用户的权限 <br>　　analyze 使用analyze命令分析数据库中任意的表、索引和簇 <br>　　audit any 为任意的数据库对象设置审计选项 <br>　　audit system 允许系统操作审计 <br>　　backup any table 备份任意表的权限 <br>　　become user 切换用户状态的权限 <br>　　commit any table 提交表的权限 <br>　　create any cluster 为任意用户创建簇的权限 <br>　　create any index 为任意用户创建索引的权限 <br>　　create any procedure 为任意用户创建存储过程的权限 <br>　　create any sequence 为任意用户创建序列的权限 <br>　　create any snapshot 为任意用户创建快照的权限 <br>　　create any synonym 为任意用户创建同义名的权限 <br>　　create any table 为任意用户创建表的权限 <br>　　create any trigger 为任意用户创建触发器的权限 <br>　　create any view 为任意用户创建视图的权限 <br>　　create cluster 为用户创建簇的权限 <br>　　create database link 为用户创建的权限 <br>　　create procedure 为用户创建存储过程的权限 <br>　　create profile 创建资源限制简表的权限 <br>　　create public database link 创建公共数据库链路的权限 <br>　　create public synonym 创建公共同义名的权限 <br>　　create role 创建角色的权限 <br>　　create rollback segment 创建回滚段的权限 <br>　　create session 创建会话的权限 <br>　　create sequence 为用户创建序列的权限 <br>　　create snapshot 为用户创建快照的权限 <br>　　create synonym 为用户创建同义名的权限 <br>　　create table 为用户创建表的权限 <br>　　create tablespace 创建表空间的权限 <br>　　create user 创建用户的权限 <br>　　create view 为用户创建视图的权限 <br>　　delete any table 删除任意表行的权限 <br>　　delete any view 删除任意视图行的权限 <br>　　delete snapshot 删除快照中行的权限 <br>　　delete table 为用户删除表行的权限 <br>　　delete view 为用户删除视图行的权限 <br>　　drop any cluster 删除任意簇的权限 <br>　　drop any index 删除任意索引的权限 <br>　　drop any procedure 删除任意存储过程的权限 <br>　　drop any role 删除任意角色的权限 <br>　　drop any sequence 删除任意序列的权限 <br>　　drop any snapshot 删除任意快照的权限 <br>　　drop any synonym 删除任意同义名的权限 <br>　　drop any table 删除任意表的权限 <br>　　drop any trigger 删除任意触发器的权限 <br>　　drop any view 删除任意视图的权限 <br>　　drop profile 删除资源限制简表的权限 <br>　　drop public cluster 删除公共簇的权限 <br>　　drop public database link 删除公共数据链路的权限 <br>　　drop public synonym 删除公共同义名的权限 <br>　　drop rollback segment 删除回滚段的权限 <br>　　drop tablespace 删除表空间的权限 <br>　　drop user 删除用户的权限 <br>　　execute any procedure 执行任意存储过程的权限 <br>　　execute function 执行存储函数的权限 <br>　　execute package 执行存储包的权限 <br>　　execute procedure 执行用户存储过程的权限 <br>　　force any transaction 管理未提交的任意事务的输出权限 <br>　　force transaction 管理未提交的用户事务的输出权限 <br>　　grant any privilege 授予任意系统特权的权限 <br>　　grant any role 授予任意角色的权限 <br>　　index table 给表加索引的权限 <br>　　insert any table 向任意表中插入行的权限 <br>　　insert snapshot 向快照中插入行的权限 <br>　　insert table 向用户表中插入行的权限 <br>　　insert view 向用户视图中插行的权限 <br>　　lock any table 给任意表加锁的权限 <br>　　manager tablespace 管理（备份可用性）表空间的权限 <br>　　references table 参考表的权限 <br>　　restricted session 创建有限制的数据库会话的权限 <br>　　select any sequence 使用任意序列的权限 <br>　　select any table 使用任意表的权限 <br>　　select snapshot 使用快照的权限 <br>　　select sequence 使用用户序列的权限 <br>　　select table 使用用户表的权限 <br>　　select view 使用视图的权限 <br>　　unlimited tablespace 对表空间大小不加限制的权限 <br>　　update any table 修改任意表中行的权限 <br>　　update snapshot 修改快照中行的权限 <br>　　update table 修改用户表中的行的权限 <br>　　update view 修改视图中行的权限 </font></div>
<br>转自：<a href="http://blog.chinaunix.net/u/21280/showart_441908.html">http://blog.chinaunix.net/u/21280/showart_441908.html</a> <br><br><br>一、权限是用户对一项功能的执行权力。在Oracle中，根据系统管理方式不同，将权限分为系统权限与实体权限两类。系统权限是指是否被授权用户可以连接到数据库上，在数据库中可以进行哪些系统操作。而实体权限是指用户对具体的模式实体(schema)所拥有的权限。这样讲可以有些模糊，举个例子来说：select any table是系统权限，它表示可以查看任何表。而select on table1是实体权限，表示对表table1的查询权限。<br><br>二、见上表<br><br>
<p>三、系统权限授权命令的使用<br>　　语法：<br>GRANT 权限名 TO　用户|角色|PUBLIC<br>其中，PUBLIC表示将权限赋给数据库中所有的用户<br>例：赋给用户USER1权限CREATE TABLE的授权命令如下：<br>SQL&gt;GRANT CREATE TABLE TO USER1;<br>授权语句还可以增加WITH ADMIN OPTION选项，表示被授权的用户可以将它所得权限赋给其它用户，如：<br>SQL&gt;GRANT CREATE TABLE,CREATE VIEW TO USER1,USER2 WITH ADMIN OPTION;<br>若要了解各用户所拥有的系统权限，可以查询数据字典USER_SYS_PRIVS、ROLE_SYS_PRIVS。<br>若要回收权限，则使用REVOKE命令，如：<br>SQL&gt;REVOKE CREATE TABLE FROM USER1; </p>
<p>四、实体权限管理<br>　　实体权限是指某一用户对某一特定schema对象的操作权限。<br>1.实体权限分类<br>　　不同的实体类型有不同的实体权限，如下表<br><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/truexf/priv_schema.jpg"></p>
<p>2.实体权限的授命令</p>
<p>　　语法如下：<br>GRANT 实体权限名|ALL TO 用户|角色|PUBLIC<br>其中，ALL表示实体的所有实体权限。<br>如：<br>SQL&gt;GRANT SELECT ON BOOKS_QUTHORS TO USER1;<br>以下语句用来查询表的实体权限的授权信息：<br>SQL&gt;SELECT * FROM USER_TAB_PRIVES<br>若要回收实体权限，使用REVOKE,其语法如下：<br>REVOKE 实体权限名|ALL ON 实体名 FROM 用户名|角色名|PUBLIC。<br></p>
<br>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/40516.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-03-05 13:55 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/03/05/40516.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下启动Oracle服务和监听程序</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/02/20/39978.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Wed, 20 Feb 2008 03:28:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/02/20/39978.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/39978.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/02/20/39978.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/39978.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/39978.html</trackback:ping><description><![CDATA[哈，又学了好几招：<br><br>
<div class=postTitle>
<script src="http://wz.csdn.net/javascripts/vote.js"></script>
<iframe style="MARGIN-TOP: 0px; FLOAT: left" border=0 marginWidth=0 frameSpacing=0 marginHeight=0 src="http://wz.csdn.net/vote.aspx?t=%5Boracle%5Dlinux%u5E73%u53F0%u542F%u52A8%u5173%u95EDoracle%u6570%u636E%u5E93%20-%20blueilove2003%u7684%u4E13%u680F%20-%20CSDNBlog&amp;u=http%3A//blog.csdn.net/blueilove2003/archive/2008/01/28/2070075.aspx" frameBorder=0 noResize width=54 scrolling=no height=75></iframe><a href="http://blog.csdn.net/blueilove2003/archive/2008/01/28/2070075.aspx"><img height=13 src="http://blog.csdn.net/images/zhuan.gif" width=15 border=0><u><font color=#800080>&nbsp;[oracle]linux平台启动关闭oracle数据库</font></u></a>&nbsp;&nbsp;
<script src="http://blog.csdn.net/count.aspx?ID=2070075&amp;Type=Rank"></script>
<img title=文章指数:0 alt=文章指数:0 src="http://blog.csdn.net/images/star_0.gif" border=0>&nbsp;&nbsp;<img title="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" alt="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" src="http://blog.csdn.net/images/ask.gif" border=0> </div>
<div class=postText>
<p id=fp>oracle数据库是重量级的，其管理非常复杂，将其在linux平台上的启动和关闭步骤整理一下。</p>
<p>安装完毕oracle以后，需要创建oracle系统用户，并在/home/oracle下面的.bash_profile添加几个环境变量：ORACLE_SID,ORACLE_BASE,ORACLE_HOME。比如：</p>
<p>export ORACLE_SID=test&nbsp; export ORACLE_BASE=oracle_install_dir export ORACLE_HOME=xxx</p>
<p>启动步骤：注意$代表shell命令提示符，这里的oracle是9.0以上版本。</p>
<ol>
    <li>$ su - oracle
    <li>$ sqlplus / nolog
    <li>sql&gt; conn / as sysdba
    <li>sql&gt; startup (一般不需要加参数，只要设置好环境变量）
    <li>sql&gt; quit (退出sql模式)
    <li>$ lsnrctl start (启动监听器）<a id=more-15></a>关闭oracle
    <ol>
        <li>$ lsnrctl stop(关闭监听器，在这之前，应该先关闭应用程序）
        <li>$ sqlplus&nbsp; /nolog
        <li>sql&gt;shutdown 其参数 ：shutdown有四个参数，四个参数的含义如下：<br>Normal&nbsp;需要等待所有的用户断开连接<br>Immediate&nbsp;等待用户完成当前的语句<br>Transactional&nbsp;等待用户完成当前的事务<br>Abort&nbsp;不做任何等待，直接关闭数据库<br>normal需要在所有连接用户断开后才执行关闭数据库任务，所以有的时候看起来好象命令没有运行一样！在执行这个命令后不允许新的连接<br>immediate在用户执行完正在执行的语句后就断开用户连接，并不允许新用户连接。<br>transactional&nbsp;在拥护执行完当前事物后断开连接，并不允许新的用户连接数据库。<br>abort&nbsp;执行强行断开连接并直接关闭数据库。<br>前三种方式不回丢失用户数据。第四种在不的已的情况下，不建议采用！ </li>
    </ol>
    <p>经常遇到的问题：</p>
    <p>1）权限问题，解决方法，切换到oracle用户；</p>
    <p>2）没有关闭监听器 ，解决方法：关闭监听器</p>
    <p>3）有oracle实例没有关闭，解决办法：关闭oracle实例</p>
    <p>4）环境变量设置不全，解决办法：修改环境变量 </p>
    </li>
</ol>
</div>
<br><br><iframe style="MARGIN-TOP: 0px; FLOAT: left" border=0 marginWidth=0 frameSpacing=0 marginHeight=0 src="http://wz.csdn.net/vote.aspx?t=Oracle%u6570%u636E%u5E93%u7684%u542F%u52A8%u548C%u5173%u95ED%u65B9%u5F0F%u5C0F%u7ED3%20-%20%u4EBF%u7845%u5728%u7EBF%3A%u4EBF%u7845%u4E13%u680F%3A%u4EBF%u7845%u8F6F%u4EF6%3A%u706B%u72D0%u4E13%u680F%3Afirefox%u4E13%u680F%20-%20CSDNBlog&amp;u=http%3A//blog.csdn.net/3yugui/archive/2002/05/20/13483.aspx" frameBorder=0 noResize width=54 scrolling=no height=75></iframe><a href="http://blog.csdn.net/3yugui/archive/2002/05/20/13483.aspx"><img height=13 src="http://blog.csdn.net/images/authorship.gif" width=15 border=0><font color=#000080>&nbsp;Oracle数据库的启动和关闭方式小结</font></a>&nbsp;&nbsp;
<script src="http://blog.csdn.net/count.aspx?ID=13483&amp;Type=Rank"></script>
<span title=文章指数:89><img src="http://blog.csdn.net/images/star.gif" border=0><img src="http://blog.csdn.net/images/star.gif" border=0><img src="http://blog.csdn.net/images/star.gif" border=0><img src="http://blog.csdn.net/images/star.gif" border=0><img src="http://blog.csdn.net/images/star_half.gif" border=0></span>&nbsp;&nbsp;<img title="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" alt="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" src="http://blog.csdn.net/images/ask.gif" border=0>
<div class=postText>
<p>Oracle数据库的启动和关闭方式</p>
<p><font color=#111111>一、几种启动方式：</font></p>
<p><font color=#111111>1、startup&nbsp;nomount&nbsp; <br>&nbsp;&nbsp;&nbsp;非安装启动，这种方式启动下可执行：重建控制文件、重建数据库&nbsp; <br>&nbsp;&nbsp;&nbsp;启动instance，即启动SGA和后台进程，这种启动只需要init.ora文件。&nbsp; <br>2、startup&nbsp;mount&nbsp;dbname&nbsp; <br>&nbsp;&nbsp;&nbsp;安装启动，这种方式启动下可执行：数据库日志归档、数据库恢复、重新命名一些数据库文件&nbsp; <br>&nbsp;&nbsp;&nbsp;如：系统表空间或日志文件。&nbsp; <br>&nbsp;&nbsp;&nbsp;执行&#8220;nomount&#8221;，然后打开控制文件&nbsp; <br>3、startup&nbsp;open&nbsp;dbname&nbsp; <br>&nbsp;&nbsp;&nbsp;先执行&#8220;nomount&#8221;，然后执行&#8220;mount&#8221;，再打开包括Redo&nbsp;log文件在内的所有数据库文件，&nbsp; <br>&nbsp;&nbsp;&nbsp;这种方式下可访问数据库中的数据。&nbsp; <br>4、startup，等于以下三个命令&nbsp; <br>&nbsp;&nbsp;&nbsp;startup&nbsp;nomount&nbsp; <br>&nbsp;&nbsp;&nbsp;alter&nbsp;database&nbsp;mount&nbsp; <br>&nbsp;&nbsp;&nbsp;alter&nbsp;database&nbsp;open&nbsp; <br>5、startup&nbsp;restrict&nbsp; <br>&nbsp;&nbsp;&nbsp;约束方式启动&nbsp; <br>&nbsp;&nbsp;&nbsp;这种方式能够启动数据库，但只允许具有一定特权的用户访问&nbsp; <br>&nbsp;&nbsp;&nbsp;非特权用户访问时，会出现以下提示：&nbsp; <br>&nbsp;&nbsp;&nbsp;ERROR：&nbsp; <br>&nbsp;&nbsp;&nbsp;ORA-01035:&nbsp;ORACLE&nbsp;只允许具有&nbsp;RESTRICTED&nbsp;SESSION&nbsp;权限的用户使用&nbsp; <br>6、startup&nbsp;force&nbsp; <br>&nbsp;&nbsp;&nbsp;强制启动方式&nbsp; <br>&nbsp;&nbsp;&nbsp;当不能关闭数据库时，可以用startup&nbsp;force来完成数据库的关闭&nbsp; <br>&nbsp;&nbsp;&nbsp;先关闭数据库，再执行正常启动数据库命令&nbsp; <br>7、startup&nbsp;pfile=参数文件名&nbsp; <br>&nbsp;&nbsp;&nbsp;带初始化参数文件的启动方式&nbsp; <br>&nbsp;&nbsp;&nbsp;先读取参数文件，再按参数文件中的设置启动数据库&nbsp; <br>&nbsp;&nbsp;&nbsp;例：startup&nbsp;pfile=E:\Oracle\admin\oradb\pfile\init.ora&nbsp; <br>8、startup&nbsp;EXCLUSIVE&nbsp; </font></p>
<p><font color=#111111>二、几种关闭方式：</font></p>
<p>
<table cellSpacing=0 cellPadding=0 width=700 align=center border=0>
    <tbody>
        <tr>
            <td vAlign=top><font color=#090909>1、shutdown&nbsp;normal&nbsp; <br>&nbsp;&nbsp;&nbsp;正常方式关闭数据库。&nbsp; <br>2、shutdown&nbsp;immediate&nbsp; <br>&nbsp;&nbsp;&nbsp;立即方式关闭数据库。&nbsp; <br>&nbsp;&nbsp;&nbsp;在SVRMGRL中执行shutdown&nbsp;immediate，数据库并不立即关闭，&nbsp; <br>&nbsp;&nbsp;&nbsp;而是在Oracle执行某些清除工作后才关闭（终止会话、释放会话资源），&nbsp; <br>&nbsp;&nbsp;&nbsp;当使用shutdown不能关闭数据库时，shutdown&nbsp;immediate可以完成数据库关闭的操作。&nbsp; <br>3、shutdown&nbsp;abort&nbsp; <br>&nbsp;&nbsp;&nbsp;直接关闭数据库，正在访问数据库的会话会被突然终止，&nbsp; <br>&nbsp;&nbsp;&nbsp;如果数据库中有大量操作正在执行，这时执行shutdown&nbsp;abort后，重新启动数据库需要很长时间。</font></td>
        </tr>
    </tbody>
</table>
</p>
<br><br>
<p id=TBPingURL>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=13483</p>
<br><br><iframe style="MARGIN-TOP: 0px; FLOAT: left" border=0 marginWidth=0 frameSpacing=0 marginHeight=0 src="http://wz.csdn.net/vote.aspx?t=Oracle9i%20%u7684%u542F%u52A8%u548C%u5173%u95ED%20-%20I%27m%20a%20coder%20-%20CSDNBlog&amp;u=http%3A//blog.csdn.net/gaofeng2000/archive/2004/08/26/85205.aspx" frameBorder=0 noResize width=54 scrolling=no height=75></iframe><a href="http://blog.csdn.net/gaofeng2000/archive/2004/08/26/85205.aspx"><img height=13 src="http://blog.csdn.net/images/authorship.gif" width=15 border=0><font color=#000000 size=2>&nbsp;Oracle9i 的启动和关闭</font></a>&nbsp;&nbsp;
<script src="http://blog.csdn.net/count.aspx?ID=85205&amp;Type=Rank"></script>
<span title=文章指数:86><img src="http://blog.csdn.net/images/star.gif" border=0><img src="http://blog.csdn.net/images/star.gif" border=0><img src="http://blog.csdn.net/images/star.gif" border=0><img src="http://blog.csdn.net/images/star.gif" border=0><img src="http://blog.csdn.net/images/star_half.gif" border=0></span>&nbsp;&nbsp;<img title="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" alt="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" src="http://blog.csdn.net/images/ask.gif" border=0>
<div class=postText>
<p>一、启动</p>
<p>语法：startup [force] [pfile=文件名] [exclusive|shared] [mount 数据库名|normal 数据库名] [nomount]</p>
<p>1、正常启动：</p>
<p>sql&gt;conn sys/sys as sysdba;</p>
<p>sql&gt;startup</p>
<p>也可在启动时指定数据库名</p>
<p>sql&gt;startup ora9</p>
<p>2、安装和非安装启动</p>
<p>安装启动的选项是mount，表示例程只将数据库装入，而不打开数据库;非安装启动的选项是nomount，表示只建立数据库现场，并不装入数据库，当然也不能打开。</p>
<p>sql&gt;startup mount --安装启动</p>
<p>sql&gt;startup nomount--非安装启动</p>
<p>3、独占和共享启动</p>
<p>独占启动的选项是exclusive，表示只允许一个例程使用该数据库；共享启动的参数是shared，表示允许多个例程并行使用该数据库，即将数据库装入多个现场。</p>
<p>4、约束启动</p>
<p>约束启动的选项是restrict，它启动数据库时装入并打开它，但是此时的数据库只能为有特殊权限的数据库管理员使用，一般用户不能联入到该数据库。</p>
<p>sql&gt;startup restrict</p>
<p>一般说来，当用户有create session权限时，可以联入数据库，但对于restrict方式启动的数据库，则只有用户具有restricted session系统权限才允许联入。</p>
<p>若要在数据库运行过程中改变这一方式，可用alter system命令。</p>
<p>sql&gt;alter system disable restricted session;</p>
<p>也可以先将数据库关闭再重新以非restrict方式启动数据库。</p>
<p>5、强制启动</p>
<p>若在正常启动数据库时遇到一些麻烦，或在上次关闭数据库时不能正常关闭，则可以采取强制启动，其选项是force。</p>
<p>联入sys用户</p>
<p>sql&gt;startup force</p>
<p>6、带初始化参数文件的启动</p>
<p>初始化参数文件在数据库启动时由系统读取，设置一些全局参数，它并不影响数据库的运行方式。</p>
<p>sql&gt;startup pfile=d:\oracle\admin\site\pfile\init.ora</p>
<p>技巧：用alter database可以进行一些启动模式转换，但是转换的类型十分有限，比如从mount模式下将数据库打开，则可用以下命令：</p>
<p>sql&gt;alter database open;</p>
<p>还可以从mount状态转为mount状态，如下所示：</p>
<p>sql&gt;alter database mount;</p>
<p>二、关闭</p>
<p>1、正常关闭</p>
<p>正常关闭数据库所用的选项是normal，数据库在关闭前将检查所有的连接，并且发出命令后不允许再有新的用户连接，在等待所有连接都断开后再关闭数据库，再次启动数据库不需要任何恢复过程。</p>
<p>联入sys用户</p>
<p>sql&gt;shutdown normal;</p>
<p>2、紧急关闭</p>
<p>该方式用在某些紧急的情况下，比如通知马上停电，此时需要紧急关闭数据库以应付这些情况。这种方式用的选项是immediate，在这种方式下并不等待所有的用户断开连接再关闭，而是由系统断开连接，然后关闭数据库。</p>
<p>sql&gt;shutdown immediate;</p>
<p>一旦执行了这条命令，则将当前正在处理的sql语句马上停止，然后将所有未提交的事务回退，并且不等待当前联入数据库的用户断开连接，而是由系统强行将各个联接断开。在下次启动数据库时要执行恢复动作，不过是由系统自动执行的，用户不必去了解它。</p>
<p>3、异常关闭</p>
<p>异常关闭选项是abort，此种方式下系统并不做任何检查和断开用户操作以及回退操作，而是直接将数据库现场撤销，这样现场中的数据库数据当然就无效了，数据库自然也就被关掉了。</p>
<p>&nbsp;sql&gt;shutdown abort;</p>
<p>以abort方式关闭数据库时只有一行关闭信息表示关闭了数据库现场。以abort方式关闭的数据库再次启动时必须要进行恢复动作，这些恢复操作同样是系统自动来完成的，需要的时间较长。</p>
<br><br>
<p id=TBPingURL>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=85205</p>
<br><br><br></div>
<br><br><br><br>
<div class=tit>linux下oracle数据库服务和监听的启动停止</div>
<div class=date>2007/10/23 19:33</div>
<table style="TABLE-LAYOUT: fixed">
    <tbody>
        <tr>
            <td>
            <div class=cnt>1、启动数据库：<br>oracle@suse92:~&gt; sqlplus /nolog<br><br>SQL*Plus: Release 9.2.0.4.0 - Production on Fri Jan 20 02:29:37 2006<br><br>Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.<br><br>SQL&gt; connect /as sysdba<br>Connected to an idle instance.<br>SQL&gt; startup<br>ORACLE instance started.<br><br>Total System Global Area 135352820 bytes<br>Fixed Size 455156 bytes<br>Variable Size 109051904 bytes<br>Database Buffers 25165824 bytes<br>Redo Buffers 679936 bytes<br>Database mounted.<br>2、关闭数据库：<br>oracle@suse92:~&gt; sqlplus /nolog<br><br>SQL*Plus: Release 9.2.0.4.0 - Production on Fri Jan 20 02:29:37 2006<br><br>Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.<br><br>SQL&gt; connect /as sysdba<br>Connected to an idle instance.<br>SQL&gt; shutdwon abort;<br>3、启动监听器<br>oracle@suse92:~&gt; lsnrctl start<br>4、停止监听器<br>oracle@suse92:~&gt; lsnrctl stop<br>5、查看监听器状态<br>oracle@suse92:~&gt; lsnrctl<br></div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/39978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-02-20 11:28 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/02/20/39978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>果然是艰苦历程啊，又解决了Oralce安装界面乱码的问题哈！</title><link>http://www.cnitblog.com/wufajiaru/archive/2008/02/19/39947.html</link><dc:creator>巴西木</dc:creator><author>巴西木</author><pubDate>Tue, 19 Feb 2008 09:55:00 GMT</pubDate><guid>http://www.cnitblog.com/wufajiaru/archive/2008/02/19/39947.html</guid><wfw:comment>http://www.cnitblog.com/wufajiaru/comments/39947.html</wfw:comment><comments>http://www.cnitblog.com/wufajiaru/archive/2008/02/19/39947.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/wufajiaru/comments/commentRss/39947.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wufajiaru/services/trackbacks/39947.html</trackback:ping><description><![CDATA[<p><br>
<table width="100%" border=0>
    <tbody>
        <tr>
            <td>
            <div align=center><strong><font color=#ff0000 size=5>中文Linux9下安装Oracle9界面乱码</font></strong></div>
            </td>
        </tr>
        <tr>
            <td height=30>
            <div align=center><font color=#cc6600>来源：&nbsp;&nbsp; 作者：</font></div>
            </td>
        </tr>
        <tr>
            <td>
            <p>
            <p>出现乱码是因为字符集的问题，将环境变量LANG改为en，然后再执行runinstaller。如果想在安装过程中使用中文环境，需要修改Disk1\stage\Components\oracle.swd.jre\1.3.1.0.0\1\DataFiles\Expanded\jre\linux\lib\font.properties.zh，将其中所有 &nbsp; <br>&nbsp; -tlc-song-medium-r-normal--*-%d-*-*-c-*-gbk-0 &nbsp; <br>&nbsp; 替换为 &nbsp; <br>&nbsp; -tlc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-gbk-0 &nbsp; <br>&nbsp; 并将LANG最好改为zh_CN，缺省的值是zh_CN18030，如果不改，在执行netca和dbca时还是乱码。 &nbsp; <br>&nbsp; 停住不动就不知道是什么原因了。</p>
            </td>
        </tr>
    </tbody>
</table>
<br><br><br>还有人这么说，不过没试哈：<br><br><br></p>
<div class=middleSize id=articleContent>
<div>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><font size=3><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在安装</span><font face=宋体><span lang=EN-US XML:LANG="EN-US">oracle</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">前，</span><span lang=EN-US XML:LANG="EN-US">root</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户和</span><span lang=EN-US XML:LANG="EN-US">oracle</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户会遇到乱码问题</span><span lang=EN-US XML:LANG="EN-US">,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">经高人指点问题解决，解决方式如下：在</span><span lang=EN-US XML:LANG="EN-US">.bash_profile</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件里添加</span></font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="COLOR: red" XML:LANG="EN-US"><font size=3><font face=宋体>LANG=C </font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="COLOR: red" XML:LANG="EN-US"><font size=3><font face=宋体>export LANG</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>例如：</font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font size=3><font face=宋体>[oracle@linuxapple ~]$ vi .bash_profile</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font face=宋体 size=3>&nbsp;</font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font size=3><font face=宋体># .bash_profile</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font face=宋体 size=3>&nbsp;</font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font size=3><font face=宋体># Get the aliases and functions</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font size=3><font face=宋体>if [ -f ~/.bashrc ]; then</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font size=3><font face=宋体><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> . ~/.bashrc</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="COLOR: red" XML:LANG="EN-US"><font size=3><font face=宋体>LANG=C</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="COLOR: red" XML:LANG="EN-US"><font size=3><font face=宋体>export LANG</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font size=3><font face=宋体>fi</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font face=宋体 size=3>&nbsp;</font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font size=3><font face=宋体># User specific environment and startup programs</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font face=宋体 size=3>&nbsp;</font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font size=3><font face=宋体>PATH=$PATH:$HOME/bin</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font face=宋体 size=3>&nbsp;</font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font size=3><font face=宋体>export PATH</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US XML:LANG="EN-US"><font face=宋体 size=3>unset USERNAME</font></span></p>
</div>
<div class=invisible id=reference>文章引用自：<a href="" target=_blank></a> </div>
</div>
<p><br><br>&nbsp;</p>
<img src ="http://www.cnitblog.com/wufajiaru/aggbug/39947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wufajiaru/" target="_blank">巴西木</a> 2008-02-19 17:55 <a href="http://www.cnitblog.com/wufajiaru/archive/2008/02/19/39947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>