﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-ivaneeo's blog-随笔分类-oralce-为什么这么强大</title><link>http://www.blogjava.net/ivanwan/category/36394.html</link><description>自由的力量，自由的生活。</description><language>zh-cn</language><lastBuildDate>Fri, 14 Jan 2011 04:27:56 GMT</lastBuildDate><pubDate>Fri, 14 Jan 2011 04:27:56 GMT</pubDate><ttl>60</ttl><item><title>oracle 10g ubuntu 64bit 不能启动问题</title><link>http://www.blogjava.net/ivanwan/archive/2011/01/13/342939.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Thu, 13 Jan 2011 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2011/01/13/342939.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/342939.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2011/01/13/342939.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/342939.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/342939.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="Description" content="Copy-Paste Buffer" />
<meta name="Generator" content="Zim" />
<h1>Install Oracle 64Bit On Ubuntu</h1>
<p>
Creating A Listener For the New DB<br />
</p>
<p>
It's not a requirement to create a Listener before you create a database, but it's a good idea to do so. A Listener is a process which listens on a well-known port for requests from remote users seeking to connect to the Oracle database. Without one, therefore, you'd only ever be able to connect to the database whilst directly logged onto the server itself, which is obviously a bit of a show-stopper!<br />
</p>
<p>
To create a Listener, we use the Network Configuration Assistant. To invoke the Assistant, just issue the command netca (should be in path) as the oracle user in a new terminal session. Press "Next" to accept the defaults. After a bit you will get to "Finish" which is where you want to finish.<br />
</p>
<p>
netca<br />
</p>
<p>
Creating a Database<br />
</p>
<p>
First, find out the id of the oinstall group. You can find this from looking in System -&gt; Admin -&gt; Users and Groups -&gt; Manage Groups. Alternatively, use:<br />
</p>
<p>
cat /etc/group | grep oinstall<br />
</p>
<p>
NB: The oinstall Group Id should be 1002 or similar. If the User/Group Applet is giving "0" then try double checking the Properties of the group. I've noticed that the Users/Groups Applet can be unreliable...<br />
</p>
<p>
Then, as root, perform the following command. (NB: This can't be performed by sudo, you must be root)<br />
</p>
<p>
echo "&lt;dba_group_gid&gt;" &gt; /proc/sys/vm/hugetlb_shm_group<br />
</p>
<p>
This allows the oinstall group access to hugetlbpages. Without this you will get error "ORA-27125: unable to create shared memory segment" when setting up the database.<br />
</p>
<p>
Run the Database Configuration Assistant, or DBCA for short. You will need to be the Oracle user you set up earlier.<br />
</p>
<p>
dbca<br />
</p>
<p>
This is not a difficult thing to do: mostly, in our case, it involves clicking "Next" to walk through the wizard, accepting all defaults. You will be prompted when you actually need to enter something.<br />
</p>
<p>
Just be sure to specify the correct database name (it should match what is set as your ORACLE_SID, but with a proper domain extension. By default the ORACLE_SID is orcl10, and can be found out by running the oraenv command in the oracle bin directory...<br />
</p>
<p>
Use the password "oracle" for the password and write down the values it spits out at the end...!<br />
</p>
<p>
NB: If you get a "ORA-12547- Lost Contact" error, make sure you have libaio1installed (sudo apt-get install libaio1)...<br />
Well Done...!<br />
</p>
<p>
If it all went well you now have an Oracle Db on your machine. Pat yourself on the back for getting this far and sticking with it. You still have a way to go before its all installed but go and have some tea to celebrate...! And then go on to Part 2...<br />
Last Updated on Saturday, 16 January 2010 12:09<br />
</p>
<img src ="http://www.blogjava.net/ivanwan/aggbug/342939.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2011-01-13 16:51 <a href="http://www.blogjava.net/ivanwan/archive/2011/01/13/342939.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>powerdesigner 导入Excel文档 做成 实体表</title><link>http://www.blogjava.net/ivanwan/archive/2010/12/04/339776.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Sat, 04 Dec 2010 02:45:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2010/12/04/339776.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/339776.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2010/12/04/339776.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/339776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/339776.html</trackback:ping><description><![CDATA[<div>这个功能只能用powerdesigner 的脚本功能来实现，使用起来也简单</div>
<div><br />
</div>
<div>打开powerdesigner，shift + ctrl + X 打开脚本窗口</div>
<div><br />
</div>
<div>输入执行的脚本，点 run 即可。</div>
<div><br />
</div>
<div>简单的导入Excel脚本</div>
<div><br />
</div>
<div>
<div>'开始</div>
<div>Option Explicit</div>
<div><br />
</div>
<div>Dim mdl ' the current model</div>
<div>Set mdl = ActiveModel</div>
<div>If (mdl Is Nothing) Then</div>
<div>&nbsp;&nbsp; MsgBox "There is no Active Model"</div>
<div>End If</div>
<div><br />
</div>
<div>Dim HaveExcel</div>
<div>Dim RQ</div>
<div>RQ = vbYes 'MsgBox("Is Excel Installed on your machine ?", vbYesNo + vbInformation, "Confirmation")</div>
<div>If RQ = vbYes Then</div>
<div>&nbsp;&nbsp; HaveExcel = True</div>
<div>&nbsp;&nbsp; ' Open &amp; Create Excel Document</div>
<div>&nbsp;&nbsp; Dim x1 &nbsp;'</div>
<div>&nbsp;&nbsp; Set x1 = CreateObject("Excel.Application")</div>
<div>&nbsp;&nbsp; x1.Workbooks.Open "D:\11.xls" &nbsp; '指定excel文档路径</div>
<div>&nbsp;&nbsp; x1.Workbooks(1).Worksheets("Sheet1").Activate &nbsp; '指定要打开的sheet名称</div>
<div>Else</div>
<div>&nbsp;&nbsp; HaveExcel = False</div>
<div>End If</div>
<div><br />
</div>
<div>a x1, mdl</div>
<div><br />
</div>
<div>sub a(x1, mdl)</div>
<div>dim rwIndex &nbsp;&nbsp;</div>
<div>dim tableName</div>
<div>dim colname</div>
<div>dim table</div>
<div>dim col</div>
<div>dim count</div>
<div><br />
</div>
<div>on error Resume Next</div>
<div><br />
</div>
<div>set table = mdl.Tables.CreateNew '创建一个表实体</div>
<div>table.Name = "卡片信息表" &nbsp; &nbsp;'指定表名，如果在Excel文档里有，也可以 .Cells(rwIndex, 3).Value 这样指定</div>
<div>table.Code = "AM_CARDINFO" &nbsp;'指定表名</div>
<div>count = count + 1</div>
<div><br />
</div>
<div>For rwIndex = 2 To 1000 &nbsp; '指定要遍历的Excel行标 &nbsp;由于第1行是表头，从第2行开始</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;With x1.Workbooks(1).Worksheets("Sheet1")</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If .Cells(rwIndex, 1).Value = "" Then</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Exit For</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;End If</div>
<div><br />
</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set col = table.Columns.CreateNew &nbsp; '创建一列/字段</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'MsgBox .Cells(rwIndex, 1).Value, vbOK + vbInformation, "列"</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If .Cells(rwIndex, 3).Value = "" Then</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;col.Name = .Cells(rwIndex, 1).Value &nbsp; '指定列名</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else&nbsp;</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;col.Name = .Cells(rwIndex, 3).Value</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; End If</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'MsgBox col.Name, vbOK + vbInformation, "列"</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; col.Code = .Cells(rwIndex, 1).Value &nbsp; '指定列名</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; col.DataType = .Cells(rwIndex, 2).Value &nbsp; '指定列数据类型</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; col.Comment = .Cells(rwIndex, 5).Value &nbsp;'指定列说明</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If .Cells(rwIndex, 4).Value = "否" Then</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; col.Mandatory = true &nbsp; &nbsp; &nbsp; &nbsp;'指定列是否可空 &nbsp;true &nbsp;为不可空 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; End If</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If rwIndex = 2 Then</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; col.Primary = true &nbsp; &nbsp;'指定主键</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; End If</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;End With</div>
<div>Next</div>
<div>MsgBox "生成数据表结构共计 " + CStr(count), vbOK + vbInformation, "表"</div>
<div><br />
</div>
<div>Exit Sub</div>
<div>End sub</div>
</div>
<div><br />
</div>
<div><br />
</div>
<img src ="http://www.blogjava.net/ivanwan/aggbug/339776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2010-12-04 10:45 <a href="http://www.blogjava.net/ivanwan/archive/2010/12/04/339776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle10g常见HINT的用法</title><link>http://www.blogjava.net/ivanwan/archive/2010/12/02/339588.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Thu, 02 Dec 2010 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2010/12/02/339588.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/339588.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2010/12/02/339588.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/339588.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/339588.html</trackback:ping><description><![CDATA[提示里不区分大小写, 多个提示用空格分开, 如：select /*+ hint1(tab1) hint2(TAB1 idx1) */ col1, col2 from tab1 where col1='xxx';<br />
如果表使用了别名, 那么提示里也必须使用别名, 如：select /*+ hint1(t1) */ col1, col2 from tab1 t1 where col1='xxx';<br />
在SQL优化过程中常见HINT的用法(前10个比较常用, 前3个最常用)：<br />
1. /*+ INDEX */ 和 /*+ INDEX(TABLE INDEX1, index2) */ 和 /*+ INDEX(tab1.col1 tab2.col2) */ 和 /*+ NO_INDEX */ 和 /*+ NO_INDEX(TABLE INDEX1, index2) */<br />
表明对表选择索引的扫描方法. 第一种不指定索引名是让Oracle对表中可用索引比较并选择某个最佳索引; 第二种是指定索引名且可指定多个索引; 第三种是10g开始有的, 指定列名, 且表名可不用别名; 第四种即全表扫描; 第五种表示禁用某个索引, 特别适合于准备删除某个索引前的评估操作. 如果同时使用了INDEX和NO_INDEX则两个提示都会被忽略掉. <br />
例如:SELECT /*+ INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE BSEMPMS */ FROM BSEMPMS WHERE SEX='M';<br />
2. /*+ ORDERED */<br />
FROM子句中默认最后一个表是驱动表,ORDERED将from子句中第一个表作为驱动表. 特别适合于多表连接非常慢时尝试. <br />
例如:SELECT /*+ ORDERED */ A.COL1,B.COL2,C.COL3 FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.COL1=B.COL1 AND B.COL1=C.COL1;<br />
3. /*+ PARALLEL(table1,DEGREE) */ 和 /*+ NO_PARALLEL(table1) */<br />
该提示会将需要执行全表扫描的查询分成多个部分（并行度）执行, 然后在不同的操作系统进程中处理每个部分. 该提示还可用于DML语句. 如果SQL里还有排序操作, 进程数会翻倍,此外还有一个一个负责组合这些部分的进程,如下面的例子会产生9个进程. 如果在提示中没有指定DEGREE, 那么就会使用创建表时的默认值. 该提示在默认情况下会使用APPEND提示. NO_PARALLEL是禁止并行操作,否则语句会使用由于定义了并行对象而产生的并行处理. <br />
例如:select /*+ PARALLEL(tab_test,4) */ col1, col2 from tab_test order by col2;<br />
4. /*+ FIRST_ROWS */ 和 /*+ FIRST_ROWS(n) */<br />
表示用最快速度获得第1/n行, 获得最佳响应时间, 使资源消耗最小化.<br />
在update和delete语句里会被忽略, 使用分组语句如group by/distinct/intersect/minus/union时也会被忽略.<br />
例如:SELECT /*+ FIRST_ROWS */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';<br />
5. /*+ RULE */<br />
表明对语句块选择基于规则的优化方法.<br />
例如:SELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; <br />
6. /*+ FULL(TABLE) */<br />
表明对表选择全局扫描的方法.<br />
例如:SELECT /*+ FULL(A) */ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT';<br />
7. /*+ LEADING(TABLE) */<br />
类似于ORDERED提示, 将指定的表作为连接次序中的驱动表.<br />
8. /*+ USE_NL(TABLE1,TABLE2) */<br />
将指定表与嵌套的连接的行源进行连接,以最快速度返回第一行再连接,与USE_MERGE刚好相反.<br />
例如:SELECT /*+ ORDERED USE_NL(BSEMPMS) */ BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;<br />
9. /*+ APPEND */ 和 /*+ NOAPPEND */<br />
直接插入到表的最后,该提示不会检查当前是否有插入操作所需的块空间而是直接添加到新块中, 所以可以提高速度. 当然也会浪费些空间, 因为它不会使用那些做了delete操作的块空间. NOAPPEND提示则相反,所以会取消PARALLEL提示的默认APPEND提示.<br />
例如:insert /*+ append */ into test1 select * from test4;<br />
insert /*+ parallel(test1) noappend */ into test1 select * from test4;<br />
10. /*+ USE_HASH(TABLE1,table2) */<br />
将指定的表与其它行源通过哈希连接方式连接起来.为较大的结果集提供最佳响应时间. 类似于在连接表的结果中遍历每个表上每个结果的嵌套循环, 指定的hash表将被放入内存, 所以需要有足够的内存（hash_area_size或pga_aggregate_target）才能保证语句正确执行, 否则将在磁盘里进行. <br />
例如:SELECT /*+ USE_HASH(BSEMPMS,BSDPTMS) */ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;<br />
----------------------------------------------------------------------------------------------------<br />
11. /*+ USE_MERGE(TABLE) */<br />
将指定的表与其它行源通过合并排序连接方式连接起来.特别适合于那种在多个表大量行上进行集合操作的查询, 它会将指定表检索到的的所有行排序后再被合并, 与USE_NL刚好相反. <br />
例如:SELECT /*+ USE_MERGE(BSEMPMS,BSDPTMS) */ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;<br />
12. /*+ ALL_ROWS */<br />
表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 可能会限制某些索引的使用. <br />
例如:SELECT /*+ ALL+_ROWS */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; <br />
13. /*+ CLUSTER(TABLE) */ <br />
提示明确表明对指定表选择簇扫描的访问方法. 如果经常访问连接表但很少修改它, 那就使用集群提示.<br />
例如:SELECT /*+ CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS WHERE DPT_NO='TEC304' AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;<br />
14. /*+ INDEX_ASC(TABLE INDEX1, INDEX2) */<br />
表明对表选择索引升序的扫描方法. 从8i开始, 这个提示和INDEX提示功能一样, 因为默认oracle就是按照升序扫描索引的, 除非未来oracle还退出降序扫描索引. <br />
例如:SELECT /*+ INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';<br />
15. /*+ INDEX_COMBINE(TABLE INDEX1, INDEX2) */<br />
指定多个位图索引, 对于B树索引则使用INDEX这个提示,如果INDEX_COMBINE中没有提供作为参数的索引,将选择出位图索引的布尔组合方式.<br />
例如:SELECT /*+ INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI) */ * FROM BSEMPMS WHERE SAL&lt;5000000 AND HIREDATE&lt;SYSDATE;<br />
16. /*+ INDEX_JOIN(TABLE INDEX1, INDEX2) */<br />
合并索引, 所有数据都已经包含在这两个索引里, 不会再去访问表, 比使用索引并通过rowid去扫描表要快5倍. <br />
例如:SELECT /*+ INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI) */ SAL,HIREDATE FROM BSEMPMS WHERE SAL&lt;60000;<br />
17. /*+ INDEX_DESC(TABLE INDEX1, INDEX2) */<br />
表明对表选择索引降序的扫描方法.<br />
例如:SELECT /*+ INDEX_DESC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';<br />
18. /*+ INDEX_FFS(TABLE INDEX_NAME) */<br />
对指定的表执行快速全索引扫描,而不是全表扫描的办法.要求要检索的列都在索引里, 如果表有很多列时特别适用该提示. <br />
例如:SELECT /*+ INDEX_FFS(BSEMPMS IN_EMPNAM) */ * FROM BSEMPMS WHERE DPT_NO='TEC305';<br />
19. /*+ NO_EXPAND */<br />
对于WHERE后面的OR 或者IN-LIST的查询语句,NO_EXPAND将阻止其基于优化器对其进行扩展, 缩短解析时间.<br />
例如:SELECT /*+ NO_EXPAND */ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';<br />
20. /*+ DRIVING_SITE(TABLE) */<br />
强制与ORACLE所选择的位置不同的表进行查询执行.特别适用于通过dblink连接的远程表. <br />
例如:SELECT /*+ DRIVING_SITE(DEPT) */ * FROM BSEMPMS,DEPT@BSDPTMS DEPT WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO;<br />
21. /*+ CACHE(TABLE) */ 和 /*+ NOCACHE(TABLE) */<br />
当进行全表扫描时,CACHE提示能够将表全部缓存到内存中,这样访问同一个表的用户可直接在内存中查找数据. 比较适合数据量小但常被访问的表, 也可以建表时指定cache选项这样在第一次访问时就可以对其缓存. NOCACHE则表示对已经指定了CACHE选项的表不进行缓存. <br />
例如:SELECT /*+ FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;<br />
22. /*+ PUSH_SUBQ */<br />
当SQL里用到了子查询且返回相对少的行时, 该提示可以尽可能早对子查询进行评估从而改善性能, 不适用于合并连接或带远程表的连接. <br />
例如:select /*+ PUSH_SUBQ */ emp.empno, emp.ename, itemno from emp, orders where emp.empno = orders.empno and emp.deptno = (select deptno from dept where loc='XXX');<br />
23. /*+ INDEX_SS(TABLE INDEX1,INDEX2) */<br />
指示对特定表的索引使用跳跃扫描, 即当组合索引的第一列不在where子句中时, 让其使用该索引.<br />
<img src ="http://www.blogjava.net/ivanwan/aggbug/339588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2010-12-02 11:40 <a href="http://www.blogjava.net/ivanwan/archive/2010/12/02/339588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle表空间操作集锦</title><link>http://www.blogjava.net/ivanwan/archive/2010/12/02/339578.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Thu, 02 Dec 2010 02:31:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2010/12/02/339578.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/339578.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2010/12/02/339578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/339578.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/339578.html</trackback:ping><description><![CDATA[<p>一、建立表空间</p>
<p>CREATE TABLESPACE test<br />
DATAFILE 'c:/oracle/oradata/db/test01.dbf' SIZE 50M<br />
UNIFORM SIZE 1M;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #指定区尺寸为128k,如不指定，区尺寸默认为64k</p>
<p>或</p>
<p>CREATE TABLESPACE test<br />
DATAFILE 'c:/oracle/oradata/db/test01.dbf' SIZE 50M<br />
MINIMUM EXTENT 50K EXTENT MANAGEMENT LOCAL<br />
DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0);</p>
<p>可从dba_tablespaces中查看刚创建的表空间的信息</p>
<p>二、建立UNDO表空间</p>
<p>CREATE UNDO TABLESPACE test_undo<br />
DATAFILE 'c:/oracle/oradata/db/test_undo.dbf' SIZE 50M</p>
<p>UNDO表空间的EXTENT是由本地管理的，而且在创建时的SQL语句中只能使用DATAFILE和EXTENT MANAGEMENT子句。</p>
<p>ORACLE规定在任何时刻只能将一个还原表空间赋予数据库，即在一个实例中可以有多个还原表空间存在，但只能有一个为活动的。可以使用ALTER SYSTEM命令进行还原表空间的切换。</p>
<p>SQL&gt; ALTER SYSTEM SET UNDO_TABLESPACE = test_undo;</p>
<p>三、建立临时表空间</p>
<p>CREATE TEMPORARY TABLESPACE test_temp<br />
TEMPFILE '/oracle/oradata/db/test_temp.dbf' SIZE 50M</p>
<p>查看系统当前默认的临时表空间<br />
select * from dba_properties where property_name like 'DEFAULT%'</p>
<p>改变系统默认临时表空间<br />
alter database default temporary tablespace test_temp;</p>
<p>四、改变表空间状态</p>
<p>1.使表空间脱机</p>
<p>ALTER TABLESPACE test OFFLINE;</p>
<p>如果是意外删除了数据文件，则必须带有RECOVER选项</p>
<p>ALTER TABLESPACE game test FOR RECOVER;</p>
<p>2.使表空间联机</p>
<p>ALTER TABLESPACE test ONLINE;</p>
<p><br />
3.使数据文件脱机</p>
<p>ALTER DATABASE DATAFILE 3 OFFLINE;</p>
<p>4.使数据文件联机</p>
<p>ALTER DATABASE DATAFILE 3 ONLINE;</p>
<p>5.使表空间只读</p>
<p>ALTER TABLESPACE test READ ONLY;</p>
<p>6.使表空间可读写</p>
<p>ALTER TABLESPACE test READ WRITE;</p>
<p>五、删除表空间</p>
<p>DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;</p>
<p>DROP TABLESPACE　表空间名 [INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]]</p>
<p>1. INCLUDING CONTENTS　子句用来删除段</p>
<p>2. AND DATAFILES　子句用来删除数据文件</p>
<p>3. CASCADE CONSTRAINTS　子句用来删除所有的引用完整性约束</p>
<p>六、扩展表空间</p>
<p>首先查看表空间的名字和所属文件</p>
<p>select tablespace_name, file_id, file_name,<br />
round(bytes/(1024*1024),0) total_space<br />
from dba_data_files<br />
order by tablespace_name;</p>
<p>1.增加数据文件<br />
&nbsp;&nbsp;  ALTER TABLESPACE test<br />
&nbsp;&nbsp;  ADD DATAFILE '/oracle/oradata/db/test02.dbf' SIZE 1000M;</p>
<p>2.手动增加数据文件尺寸<br />
&nbsp;&nbsp;  ALTER DATABASE DATAFILE 'c:/oracle/oradata/db/test01.dbf'<br />
&nbsp;&nbsp;  RESIZE 100M;</p>
<p>3.设定数据文件自动扩展<br />
&nbsp;&nbsp;  ALTER DATABASE DATAFILE 'c:/oracle/oradata/db/test01.dbf'<br />
&nbsp;&nbsp;  AUTOEXTEND ON NEXT 100M<br />
&nbsp;&nbsp;  MAXSIZE 200M;</p>
<p>设定后可从dba_tablespace中查看表空间信息，从v$datafile中查看对应的数据文件信息</p>
<img src ="http://www.blogjava.net/ivanwan/aggbug/339578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2010-12-02 10:31 <a href="http://www.blogjava.net/ivanwan/archive/2010/12/02/339578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>六分钟学会创建Oracle表空间的步骤</title><link>http://www.blogjava.net/ivanwan/archive/2010/12/02/339571.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Thu, 02 Dec 2010 01:37:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2010/12/02/339571.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/339571.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2010/12/02/339571.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/339571.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/339571.html</trackback:ping><description><![CDATA[<p>经过长时间学习创建Oracle表空间，于是和大家分享一下，看完本文你肯定有不少收获，希望本文能教会你更多东西。</p>
<p><strong>1、先查询空闲空间</strong></p>
<pre>
<ol class="dp-xml">
    <li class="alt"><span><span>select&nbsp;tablespace_name,file_id,block_id,bytes,blocks&nbsp;from&nbsp;dba_free_space;&nbsp;</span></span></li>
</ol>
</pre>
<p><strong>2、增加Oracle表空间</strong></p>
<p>先查询数据文件名称、大小和路径的信息，语句如下：</p>
<pre>
<ol class="dp-xml">
    <li class="alt"><span><span>select&nbsp;tablespace_name,file_id,bytes,file_name&nbsp;from&nbsp;dba_data_files;&nbsp;</span></span></li>
</ol>
</pre>
<p><strong>3、修改文件大小语句如下</strong></p>
<pre>
<ol class="dp-xml">
    <li class="alt"><span><span>alter&nbsp;database&nbsp;datafile&nbsp; &nbsp;</span></span></li>
    <li class=""><span>'需要增加的数据文件路径，即上面查询出来的路径 &nbsp;</span></li>
    <li class="alt"><span>'resize&nbsp;800M;&nbsp;</span></li>
</ol>
</pre>
<p><strong>4、创建Oracle表空间</strong></p>
<pre>
<ol class="dp-xml">
    <li class="alt"><span><span>create&nbsp;tablespace&nbsp;test &nbsp;</span></span></li>
    <li class=""><span>datafile&nbsp;'/home/app/oracle/oradata/oracle8i/test01.dbf'&nbsp;size&nbsp;8M &nbsp;</span></li>
    <li class="alt"><span>autoextend&nbsp;on &nbsp;</span></li>
    <li class=""><span>next&nbsp;5M &nbsp;</span></li>
    <li class="alt"><span>maxsize&nbsp;10M; &nbsp;</span></li>
    <li class=""><span>&nbsp;</span></li>
    <li class="alt"><span>create&nbsp;tablespace&nbsp;sales &nbsp;</span></li>
    <li class=""><span>datafile&nbsp;'/home/app/oracle/oradata/oracle8i/sales01.dbf'&nbsp;size&nbsp;800M &nbsp;</span></li>
    <li class="alt"><span>autoextend&nbsp;on &nbsp;</span></li>
    <li class=""><span>next&nbsp;50M &nbsp;</span></li>
    <li class="alt"><span>maxsize&nbsp;unlimited &nbsp;</span></li>
    <li class=""><span>maxsize&nbsp;unlimited&nbsp;是大小不受限制 &nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span></li>
    <li class=""><span>create&nbsp;tablespace&nbsp;sales &nbsp;</span></li>
    <li class="alt"><span>datafile&nbsp;'/home/app/oracle/oradata/oracle8i/sales01.dbf'&nbsp;size&nbsp;800M &nbsp;</span></li>
    <li class=""><span>autoextend&nbsp;on &nbsp;</span></li>
    <li class="alt"><span>next&nbsp;50M &nbsp;</span></li>
    <li class=""><span>maxsize&nbsp;1000M &nbsp;</span></li>
    <li class="alt"><span>extent&nbsp;management&nbsp;local&nbsp;uniform; &nbsp;</span></li>
    <li class=""><span>unform表示区的大小相同，默认为1M &nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span></li>
    <li class=""><span>create&nbsp;tablespace&nbsp;sales &nbsp;</span></li>
    <li class="alt"><span>datafile&nbsp;'/home/app/oracle/oradata/oracle8i/sales01.dbf'&nbsp;size&nbsp;800M &nbsp;</span></li>
    <li class=""><span>autoextend&nbsp;on &nbsp;</span></li>
    <li class="alt"><span>next&nbsp;50M &nbsp;</span></li>
    <li class=""><span>maxsize&nbsp;1000M &nbsp;</span></li>
    <li class="alt"><span>extent&nbsp;management&nbsp;local&nbsp;uniform&nbsp;size&nbsp;500K; &nbsp;</span></li>
    <li class=""><span>unform&nbsp;size&nbsp;500K表示区的大小相同，为500K &nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span></li>
    <li class=""><span>create&nbsp;tablespace&nbsp;sales &nbsp;</span></li>
    <li class="alt"><span>datafile&nbsp;'/home/app/oracle/oradata/oracle8i/sales01.dbf'&nbsp;size&nbsp;800M &nbsp;</span></li>
    <li class=""><span>autoextend&nbsp;on &nbsp;</span></li>
    <li class="alt"><span>next&nbsp;50M &nbsp;</span></li>
    <li class=""><span>maxsize&nbsp;1000M &nbsp;</span></li>
    <li class="alt"><span>extent&nbsp;management&nbsp;local&nbsp;autoallocate; &nbsp;</span></li>
    <li class=""><span>autoallocate表示区的大小由随表的大小自动动态改变，大表使用大区小表使用小区 &nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span></li>
    <li class=""><span>create&nbsp;tablespace&nbsp;sales &nbsp;</span></li>
    <li class="alt"><span>datafile&nbsp;'/home/app/oracle/oradata/oracle8i/sales01.dbf'&nbsp;size&nbsp;800M &nbsp;</span></li>
    <li class=""><span>autoextend&nbsp;on &nbsp;</span></li>
    <li class="alt"><span>next&nbsp;50M &nbsp;</span></li>
    <li class=""><span>maxsize&nbsp;1000M &nbsp;</span></li>
    <li class="alt"><span>temporary; &nbsp;</span></li>
    <li class=""><span>temporary创建字典管理临时表空间 &nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span></li>
    <li class=""><span>create&nbsp;temporary&nbsp;tablespace&nbsp;sales &nbsp;</span></li>
    <li class="alt"><span>tempfile&nbsp;'/home/app/oracle/oradata/oracle8i/sales01.dbf'&nbsp;size&nbsp;800M &nbsp;</span></li>
    <li class=""><span>autoextend&nbsp;on &nbsp;</span></li>
    <li class="alt"><span>next&nbsp;50M &nbsp;</span></li>
    <li class=""><span>maxsize&nbsp;1000M &nbsp;</span></li>
    <li class="alt"><span>创建本地管理临时表空间，如果是临时表空间，所有语句中的datafile都换为tempfile &nbsp;</span></li>
    <li class=""><span>&nbsp;</span></li>
    <li class="alt"><span>8i系统默认创建字典管理临时表空间，要创建本地管理临时表空间要加temporary&nbsp;tablespace关键字 &nbsp;</span></li>
    <li class=""><span>创建本地管理临时表空间时，不得使用atuoallocate参数，系统默认创建uniform管理方式 &nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span></li>
    <li class=""><span>为表空间增加数据文件： &nbsp;</span></li>
    <li class="alt"><span>alter&nbsp;tablespace&nbsp;sales&nbsp;add &nbsp;</span></li>
    <li class=""><span>datafile&nbsp;'/home/app/oracle/oradata/oracle8i/sales02.dbf'&nbsp;size&nbsp;800M &nbsp;</span></li>
    <li class="alt"><span>autoextend&nbsp;on&nbsp;next&nbsp;50M &nbsp;</span></li>
    <li class=""><span>maxsize&nbsp;1000M;&nbsp;</span></li>
</ol>
</pre>
<p>创建本地管理临时Oracle表空间，如果是临时表空间，所有语句中的datafile都换为tempfile8i系统默认创建字典管理临时表空
间，要创建本地管理临时表空间要加temporary
tablespace关键字创建本地管理临时表空间时，不得使用atuoallocate参数，系统默认创建uniform管理方式</p>
<p>为表空间增加数据文件：</p>
<pre>
<ol class="dp-xml">
    <li class="alt"><span><span>alter&nbsp;tablespace&nbsp;sales&nbsp;add &nbsp;</span></span></li>
    <li class=""><span>datafile&nbsp;'/home/app/oracle/oradata/oracle8i/sales02.dbf'&nbsp;size&nbsp;800M &nbsp;</span></li>
    <li class="alt"><span>autoextend&nbsp;on&nbsp;next&nbsp;50M &nbsp;</span></li>
    <li class=""><span>maxsize&nbsp;1000M;&nbsp;</span></li>
</ol>
</pre>
<p><strong>5、更改自动扩展属性：</strong></p>
<pre>
<ol class="dp-xml">
    <li class="alt"><span><span>alter&nbsp;database&nbsp;datafile &nbsp;</span></span></li>
    <li class=""><span>'/home/app/oracle/oradata/oracle8i/sales01.dbf', &nbsp;</span></li>
    <li class="alt"><span>'/home/app/oracle/oradata/oracle8i/sales02.dbf' &nbsp;</span></li>
    <li class=""><span>'/home/app/oracle/oradata/oracle8i/sales01.dbf &nbsp;</span></li>
    <li class="alt"><span>autoextend&nbsp;off;&nbsp;</span></li>
</ol>
</pre>
<p>以上介绍创建Oracle表空间，在这里拿出来和大家分享一下，希望对大家有用。</p>
<img src ="http://www.blogjava.net/ivanwan/aggbug/339571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2010-12-02 09:37 <a href="http://www.blogjava.net/ivanwan/archive/2010/12/02/339571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Redo Log和Archive Log</title><link>http://www.blogjava.net/ivanwan/archive/2010/10/19/335574.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Tue, 19 Oct 2010 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2010/10/19/335574.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/335574.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2010/10/19/335574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/335574.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/335574.html</trackback:ping><description><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">熟悉Oracle9i的人应该都知道，Oracle9i中有2种日志，一种称为Redo Log（重做日志），另一种叫做Archive Log（归档日志），但是这两种日志在Oracle9i数据库中所起到的作用相信很难有人说清楚，下面我就结合自己对Oracle9i的认识来进行一下说明<img src="http://kiddwyl.javaeye.com/javascripts/fckeditor/editor/images/smiley/msn/shades_smile.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "><font>重做日志redo log file是LGWR进程从Oracle实例中的redo log buffer写入的，是循环利用的。就是说一个redo log file(group) 写满后，才写下一个。<br />
归档日志archive log是当数据库运行在归档模式下时，一个redo log file(group)写满后，由ARCn进程将重做日志的内容备份到归档日志文件下，然后这个redo log file(group)才能被下一次使用。</font></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "><font>不管数据库是否是归档模式，重做日志是肯定要写的。而只有数据库在归档模式下，重做日志才会备份，形成归档日志。</font></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "><font>归档日志结合全备份，用于数据库出现问题后的恢复使用。</font></p>
<img src ="http://www.blogjava.net/ivanwan/aggbug/335574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2010-10-19 15:00 <a href="http://www.blogjava.net/ivanwan/archive/2010/10/19/335574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>guid类型的使用</title><link>http://www.blogjava.net/ivanwan/archive/2008/12/01/243711.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Mon, 01 Dec 2008 07:08:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2008/12/01/243711.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/243711.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2008/12/01/243711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/243711.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/243711.html</trackback:ping><description><![CDATA[oracle guid类型其实是raw(16)类型
<div>生成: SELECT SYS_GUID ()<br />
   INTO v_guid<br />
   FROM DUAL;</div>

<img src ="http://www.blogjava.net/ivanwan/aggbug/243711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2008-12-01 15:08 <a href="http://www.blogjava.net/ivanwan/archive/2008/12/01/243711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>for in 使用的例子</title><link>http://www.blogjava.net/ivanwan/archive/2008/12/01/243710.html</link><dc:creator>ivaneeo</dc:creator><author>ivaneeo</author><pubDate>Mon, 01 Dec 2008 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/ivanwan/archive/2008/12/01/243710.html</guid><wfw:comment>http://www.blogjava.net/ivanwan/comments/243710.html</wfw:comment><comments>http://www.blogjava.net/ivanwan/archive/2008/12/01/243710.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ivanwan/comments/commentRss/243710.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ivanwan/services/trackbacks/243710.html</trackback:ping><description><![CDATA[declare
c number(4);
begin
for k in 1..13 loop
c := 590+k;
dbms_job.submit(c,
'ODS_UTL_DIFF.DIFF('||k||',2,''0,21'');',
sysdate,
'trunc(sysdate)+21/24+7');
commit;
end loop;
end;
<img src ="http://www.blogjava.net/ivanwan/aggbug/243710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ivanwan/" target="_blank">ivaneeo</a> 2008-12-01 15:07 <a href="http://www.blogjava.net/ivanwan/archive/2008/12/01/243710.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>