﻿<?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-走在空中的人-随笔分类-oracle</title><link>http://www.blogjava.net/wx886104/category/34073.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 21 Dec 2011 21:07:02 GMT</lastBuildDate><pubDate>Wed, 21 Dec 2011 21:07:02 GMT</pubDate><ttl>60</ttl><item><title>win7在64位下PL/SQL Developer连接远程oracle数据库(转+补充)</title><link>http://www.blogjava.net/wx886104/archive/2011/12/21/instantclient_oracle_plsql.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Wed, 21 Dec 2011 02:59:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2011/12/21/instantclient_oracle_plsql.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/366914.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2011/12/21/instantclient_oracle_plsql.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/366914.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/366914.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: win7在64位下PL/SQL Developer连接远程oracle数据库(转+补充)&nbsp;&nbsp;<a href='http://www.blogjava.net/wx886104/archive/2011/12/21/instantclient_oracle_plsql.html'>阅读全文</a><img src ="http://www.blogjava.net/wx886104/aggbug/366914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2011-12-21 10:59 <a href="http://www.blogjava.net/wx886104/archive/2011/12/21/instantclient_oracle_plsql.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle的rownum原理和使用(转)</title><link>http://www.blogjava.net/wx886104/archive/2008/12/13/246109.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Sat, 13 Dec 2008 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/12/13/246109.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/246109.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/12/13/246109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/246109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/246109.html</trackback:ping><description><![CDATA[转自 http://jinguo.javaeye.com/blog/225596<br />
<strong>关键字: oracle的rownum原理和使用</strong>
<div class="blog_content">Oracle的rownum原理和使用 <br />
在Oracle中，要按特定条件查询前N条记录，用个rownum就搞定了。 <br />
select * from emp where rownum &lt;= 5 <br />
而且书上也告诫，不能对rownum用"&gt;"，这也就意味着，如果你想用 <br />
select * from emp where rownum &gt; 5 <br />
则是失败的。要知道为什么会失败，则需要了解rownum背后的机制： <br />
1 Oracle executes your query. <br />
<br />
2 Oracle fetches the first row and calls it row number 1. <br />
<br />
3 Have we gotten past row number meets the criteria? If no, then Oracle discards the row, If yes, then Oracle return the row. <br />
<br />
4 Oracle fetches the next row and advances the row number (to 2, and then to 3, and then to 4, and so forth). <br />
<br />
5 Go to step 3. <br />
<br />
了解了原理，就知道rownum&gt;不会成功，因为在第三步的时候查询出的行已经被丢弃，第四步查出来的rownum仍然是1,这样永远也不会成功。 <br />
<br />
同样道理，rownum如果单独用=,也只有在rownum=1时才有用。 <br />
<br />
<br />
<br />
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号，返回的第一行分配的是1，第二行是2，依此类推，这个伪字段可以用于限制查询返回的总行数，而且rownum不能以任何表的名称作为前缀。 <br />
举例说明： <br />
例如表：student(学生)表，表结构为： <br />
ID　　　&nbsp;&nbsp;&nbsp; char(6)　　　　　 --学号 <br />
name　　　　VARCHAR2(10)　　　--姓名 <br />
create table student (ID char(6), name VARCHAR2(100)); <br />
insert into sale values('200001',&#8216;张一&#8217;); <br />
insert into sale values('200002',&#8216;王二&#8217;); <br />
insert into sale values('200003',&#8216;李三&#8217;); <br />
insert into sale values('200004',&#8216;赵四&#8217;); <br />
commit; <br />
(1) rownum 对于等于某值的查询条件 <br />
如果希望找到学生表中第一条学生的信息，可以使用rownum=1作为条件。但是想找到学生表中第二条学生的信息，使用rownum=2结果查不到数据。因为rownum都是从1开始，但是1以上的自然数在rownum做等于判断是时认为都是false条件，所以无法查到rownum = n（n&gt;1的自然数）。 <br />
SQL&gt; select rownum,id,name from student where rownum=1;（可以用在限制返回记录条数的地方，保证不出错，如：隐式游标） <br />
SQL&gt; select rownum,id,name from student where rownum=1; <br />
&nbsp;&nbsp;&nbsp; ROWNUM ID&nbsp;&nbsp;&nbsp;&nbsp; NAME <br />
---------- ------ --------------------------------------------------- <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 200001 张一 <br />
SQL&gt; select rownum,id,name from student where rownum =2; <br />
&nbsp;&nbsp;&nbsp; ROWNUM ID&nbsp;&nbsp;&nbsp;&nbsp; NAME <br />
---------- ------ --------------------------------------------------- <br />
（2）rownum对于大于某值的查询条件 <br />
&nbsp;&nbsp; 如果想找到从第二行记录以后的记录，当使用rownum&gt;2是查不出记录的，原因是由于rownum是一个总是从1开始的伪列，Oracle 认为rownum&gt; n(n&gt;1的自然数)这种条件依旧不成立，所以查不到记录 <br />
SQL&gt; select rownum,id,name from student where rownum &gt;2; <br />
ROWNUM ID&nbsp;&nbsp;&nbsp;&nbsp; NAME <br />
---------- ------ --------------------------------------------------- <br />
那如何才能找到第二行以后的记录呀。可以使用以下的子查询方法来解决。注意子查询中的rownum必须要有别名，否则还是不会查出记录来，这是因为rownum不是某个表的列，如果不起别名的话，无法知道rownum是子查询的列还是主查询的列。 <br />
SQL&gt;select * from(select rownum no ,id,name from student) where no&gt;2; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO ID&nbsp;&nbsp;&nbsp;&nbsp; NAME <br />
---------- ------ --------------------------------------------------- <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 200003 李三 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 200004 赵四 <br />
SQL&gt; select * from(select rownum,id,name from student)where rownum&gt;2; <br />
&nbsp;&nbsp;&nbsp; ROWNUM ID&nbsp;&nbsp;&nbsp;&nbsp; NAME <br />
---------- ------ --------------------------------------------------- <br />
（3）rownum对于小于某值的查询条件 <br />
如果想找到第三条记录以前的记录，当使用rownum&lt;3是能得到两条记录的。显然rownum对于rownum&lt;n（(n&gt;1的自然数）的条件认为是成立的，所以可以找到记录。 <br />
SQL&gt; select rownum,id,name from student where rownum &lt;3; <br />
&nbsp;&nbsp;&nbsp; ROWNUM ID&nbsp;&nbsp;&nbsp;&nbsp; NAME <br />
---------- ------ --------------------------------------------------- <br />
1 200001 张一 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 200002 王二 <br />
综上几种情况，可能有时候需要查询rownum在某区间的数据，那怎么办呀从上可以看出rownum对小于某值的查询条件是人为true的，rownum对于大于某值的查询条件直接认为是false的，但是可以间接的让它转为认为是true的。那就必须使用子查询。例如要查询rownum在第二行到第三行之间的数据，包括第二行和第三行数据，那么我们只能写以下语句，先让它返回小于等于三的记录行，然后在主查询中判断新的rownum的别名列大于等于二的记录行。但是这样的操作会在大数据集中影响速度。 <br />
SQL&gt; select * from (select rownum no,id,name from student where rownum&lt;=3 ) where no &gt;=2; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO ID&nbsp;&nbsp;&nbsp;&nbsp; NAME <br />
---------- ------ --------------------------------------------------- <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 200002 王二 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 200003 李三 <br />
（4）rownum和排序 <br />
Oracle中的rownum的是在取数据的时候产生的序号，所以想对指定排序的数据去指定的rowmun行数据就必须注意了。 <br />
SQL&gt; select rownum ,id,name from student order by name; <br />
&nbsp;&nbsp;&nbsp; ROWNUM ID&nbsp;&nbsp;&nbsp;&nbsp; NAME <br />
---------- ------ --------------------------------------------------- <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 200003 李三 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 200002 王二 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 200001 张一 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 200004 赵四 <br />
可以看出，rownum并不是按照name列来生成的序号。系统是按照记录插入时的顺序给记录排的号，rowid也是顺序分配的。为了解决这个问题，必须使用子查询 <br />
SQL&gt; select rownum ,id,name from (select * from student order by name); <br />
&nbsp;&nbsp;&nbsp; ROWNUM ID&nbsp;&nbsp;&nbsp;&nbsp; NAME <br />
---------- ------ --------------------------------------------------- <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 200003 李三 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 200002 王二 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 200001 张一 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 200004 赵四 <br />
这样就成了按name排序，并且用rownum标出正确序号（有小到大） <br />
</div>
<img src ="http://www.blogjava.net/wx886104/aggbug/246109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-12-13 11:58 <a href="http://www.blogjava.net/wx886104/archive/2008/12/13/246109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE PL/SQL使用经验总结(收集)</title><link>http://www.blogjava.net/wx886104/archive/2008/11/11/239949.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Tue, 11 Nov 2008 13:18:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/11/11/239949.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/239949.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/11/11/239949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/239949.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/239949.html</trackback:ping><description><![CDATA[ <img src ="http://www.blogjava.net/wx886104/aggbug/239949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-11-11 21:18 <a href="http://www.blogjava.net/wx886104/archive/2008/11/11/239949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle如何建立一个新方案</title><link>http://www.blogjava.net/wx886104/archive/2008/11/08/239410.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Sat, 08 Nov 2008 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/11/08/239410.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/239410.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/11/08/239410.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/239410.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/239410.html</trackback:ping><description><![CDATA[1.打开企业管理器-安全性-创建用户test,授予connect和resource权限,在系统选项卡里赋予无限表空间权限(unlimited tablespace).<br />
&nbsp;<br />
2.在企业管理器-存储-表空间中创建2个新的表空间,一个设为永久空间,一个设为临时空间.<br />
&nbsp;<br />
3.双击用户test,给其设定永久空间和临时空间,对应上一步创建的2个空间.<br />
&nbsp;<br />
4.此时,在方案中还没有出现test方案,只需在任意方案下右击,创建一个新表,在方案下拉列表中就会出现test方案,创建表成功后,刷新一下,就可以看到新的方案test了. <br />
<br />
转自&nbsp; http://blog.tom.com/netmax2008/article/942.html
<img src ="http://www.blogjava.net/wx886104/aggbug/239410.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-11-08 15:00 <a href="http://www.blogjava.net/wx886104/archive/2008/11/08/239410.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle语句收集</title><link>http://www.blogjava.net/wx886104/archive/2008/11/07/239158.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Fri, 07 Nov 2008 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/11/07/239158.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/239158.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/11/07/239158.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/239158.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/239158.html</trackback:ping><description><![CDATA[在Oracle中查看各个表、表空间占用空间的大小<br />
<div class="NewsContent" id="NewsContentLabel">查看当前用户每个表占用空间的大小：<br />
&nbsp;&nbsp;&nbsp; Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name<br />
<br />
查看每个表空间占用空间的大小：<br />
&nbsp;&nbsp;&nbsp; Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name<br />
</div>
-------------------------------------------------------------------------------------------------------------<br />
查询Oralce中某个用户有多少个存储过程<br />
select distinct name from user_source where type='PROCEDURE';<br />
select distinct name from dba_source where type='PROCEDURE' and owner='XG_TEST';<br />
-------------------------------------------------------------------------------------------------------------<br />
oracle的使用心得 <br />
<br />
<br />
<br />
1、DDL(Data Definition Language) Command<br />
&nbsp; &nbsp;create,alter,drop objects;<br />
&nbsp; &nbsp;grant,revoke privileges and roles;<br />
&nbsp; &nbsp;establishing auditing options;<br />
&nbsp; &nbsp;add comments to the data dictionary;<br />
&nbsp; &nbsp;Before and after each DDL statement,Oracle implicitly commit the current transactions.<br />
<br />
2、DML(Data Manipulation Language) Command<br />
&nbsp; &nbsp;Query and Modify data within existing schema objects;<br />
&nbsp; &nbsp;DML statements consist of DELETE,INSERT,SELECT and UPDATE statements;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EXPLAIN PLAN statements;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LOCK TABLE statements;<br />
&nbsp; &nbsp;Unlike DDL Command , a commit is not implicit , after execute DDL Command ,must execute commit command&nbsp; &nbsp; to commit a transaction;<br />
<br />
3、Dynamic Performance Tables<br />
&nbsp; &nbsp;These tables are created at the instance startup and used to store information about the performance&nbsp; &nbsp; of the instance. This information includes connection informatioion,I/OS, initialization parameter&nbsp; &nbsp; values and so on..<br />
<br />
4、Procedure and Function are identical except that Founction are always return a value(Procedure do not).<br />
<br />
5、Schema is a collection of Objects that associated with the DataBase.<br />
<br />
6、SGA is made up of :<br />
&nbsp; &nbsp;DataBase Buffers;<br />
&nbsp; &nbsp;Redo Log Buffers;<br />
&nbsp; &nbsp;The Shared Pool;<br />
<br />
7、Transaction is a logical unit of work consisting of one or more SQL statements,ending in a commit or rollback.<br />
<br />
8、 The DataBase<br />
The Physical Layer<br />
（1）One or more datafiles;<br />
（2）Two or more redo log files;<br />
（3）One or more control files;<br />
The Logical Layer<br />
（1）One or more tablespaces;<br />
（2）The database schema;<br />
<br />
9、The database is devided into one or more logical pieces known as tablespace;<br />
<br />
10、Recommend that every one need DBA roles should have a different account , thus , if auditing is enabled , there is a record who made these system changes.<br />
<br />
11、The Instance is the logical term that refers to the components necessary to access the data in a database.<br />
<br />
12、数据库实例（也称为服务器Server），是用来访问一个数据库文件集的一个存储结构及后台进程的集合。Oralce并行服务器是指一个单独的数据库可以被多个实例访问。<br />
<br />
13、查询实例名：<br />
&nbsp; &nbsp;select instance_name from v$instance；<br />
<br />
14、查询动态视图v$waitstat、v$system_event、v$session_event、v$session_wait和v$ buffer_pool_statistics（在Oracle8中通过catperf.sql脚本创建）以获取下面所的统计信息，<br />
目的是为了检查服务器进程是否正等待DBWR（对单个会话而言，也对整个数据库而言）。<br />
<br />
15、<br />
(1)SMON：系统监控程序<br />
(2)PMON：进程监控程序<br />
(3)DBWR：数据库写入程序<br />
(4)LGWR：日志写入程序<br />
(5)CKPT：检查点进程<br />
(6)ARCH：归档日志<br />
(7)RECO：恢复进程<br />
(8)SNPn：快照进程<br />
(9)LCKn：锁定进程<br />
(10)Dnnn：调度程序进程<br />
(11)Snnn：服务器进程<br />
(12)Pnnn：并行查询服务器进程<br />
<br />
16、数据库备份之前，若使用了shutdown abort命令，则需要进行如下操作，然后才能进行数据库备份：<br />
1)&nbsp; &nbsp; 执行一个shutdown abort命令；<br />
2)&nbsp; &nbsp; 启动数据库实例；<br />
3)&nbsp; &nbsp; 执行shutdown命令；<br />
<br />
17、使用OPS数据库时，如何解决两个服务器同时对同一记录的更新？<br />
更新同一个表的数据的用户使用同一个实例来访问数据库。<br />
<br />
18、通过ORACLE数据库对非ORACLE数据库进行访问，首先需要在运行非ORACLE数据库的服务器端安装ORACLE透明网关产品，每种被访问的数据引擎需要一个独立的网关；然后需要在本地ORACLE数据库中建立一个数据库连接（DATABASE LINK）。<br />
<br />
19、外部文件访问：<br />
1)&nbsp; &nbsp; 用作脚本文件的源代码写入SQL*PLUS、SQL、PL/SQL中；<br />
2)&nbsp; &nbsp; 用作SQL*PLUS脚本文件的输出，用SPOOL命令生成；<br />
3)&nbsp; &nbsp; 用作PL/SQL程序的输入或输出，通过UTL_FILE软件包访问；<br />
4)&nbsp; &nbsp; 用作PL/SQL程序的脚本文件的输出，通过DBMS_OUTPUT软件包生成；<br />
5)&nbsp; &nbsp; 用作通过BFILE数据类型在数据库中引用的外部数据，BFILE数据类型含有一个指向外部二进制数据文件的指针，用户必须通过CREATE DIRECTORY命令，在ORACLE中创建一个目录指针，指向存储文件的目录。<br />
6)&nbsp; &nbsp; 用作通过DBMS_PIPE访问的外部程序，该程序必须以ORACLE支持的3GL来编写。<br />
<br />
20、取消用户在SYSTEM表空间上创建对象的定额：<br />
ALTER USER USER_NAME QUOTA 0 ON SYSTEM;<br />
注：<br />
如果一个用户被授权UNLIMITED_TABLESPACE系统权限或RESOURCE角色(Resouce角色拥有使用数据库中所有表空间的权限)，则这个授权将覆盖用户的任何定额设置。<br />
21、创建一个用户，并且指定缺省表空间：<br />
CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD DEFAULT TABLESPACE TABLESPACE_NAME;<br />
<br />
22、重新指定用户的缺省表空间：<br />
ALTER USER USER_NAME DEFAULT TABLESPACE TABLESPACE_NAME;<br />
<br />
23、从数据表中分离出已有的索引：<br />
ALTER INDEX INDEX_NAME REBUILD<br />
&nbsp; &nbsp;TABLESPACE INDEX_TABLESPACE<br />
&nbsp; &nbsp;STORAGE(INITIAL 2M NEXT 2M PCTINCREASE 0);<br />
<br />
24、创建表时指定数据表空间和索引表空间：<br />
CREATE TABLE TAB_NAME(<br />
COLUMN_A TYPE,<br />
COLUMN_B TYPE，<br />
&#8230;<br />
COLUM_N TYPE,<br />
CONSTRAINT TAB_NAME_PK PRIMARY KEY (COLUMN_A)<br />
USING INDEX TABLESPACE TABLESPACE_INDEXES<br />
STORAGE(INITIAL 2M NEXT 2M PCTINCREASE 0))<br />
TABLESPACE TABLESPACE_DATA<br />
STORAGE(INITIAL 5M NEXT 5M PCTINCREASE 0);<br />
<br />
25、TEMP表空间只有在大型排序操作时才使用；<br />
<br />
26、STORAGE子句的意义：<br />
Storage（initial 盘区大小 next 盘区大小 pctincrease 每个顺序盘区几何增长的系数）；<br />
使用非零pctincrease参数的结果：<br />
storage（initial 10M next 10M pctincrease 50）;<br />
盘区号&nbsp; &nbsp; &nbsp; &nbsp; 大小&nbsp; &nbsp; &nbsp; &nbsp; 总块数&nbsp; &nbsp; &nbsp; &nbsp; 盘区容量注释<br />
1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 10&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 10&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INITIAL<br />
2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 10&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 20&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NEXT<br />
3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 15&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 35&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NEXT&#215;1.5<br />
4&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 22.5&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 57.5&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NEXT&#215;1.5&#215;1.5<br />
5&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 33.75&nbsp; &nbsp; &nbsp; &nbsp; 91.25&nbsp; &nbsp; &nbsp; &nbsp; NEXT&#215;1.5&#215;1.5&#215;1.5<br />
.. .. .. .. .. ..<br />
理想的情况：<br />
一个段只具有一个大小合适的盘区，并且next值较小，设表的pctincrease值为零；<br />
实际上：<br />
在表空间级设置pctincrease的值为零，会影响ORACLE自动合并表空间中自由空间的能力，把表空间缺省pctincrese设置为一个非常低的值，例如1；<br />
<br />
27、通常称作TEMP的临时表空间，由于其自身的特点会有很多碎片，临时段总是在不断的创建、扩展和撤销，对于临时表，将INITIAL和NEXT盘区大小设为表空间大小的1/20到1/50，对于这个表空间，INITIAL和NEXT缺省设置应该相等，PCTINCREASE的值为0，这样，段将有同样大小的盘区构成，当撤消这些段时，下一个临时段将能够重新利用这些已撤消的盘区。<br />
<br />
28、<br />
1）将一个表空间改为临时表空间：<br />
alter tablespace tablespace_name temporary;<br />
2）将一个表空间转换为能存储永久对象：<br />
alter tablespace tablespace_name permenent;<br />
3）强制表空间合并其自由空间(只能合并位置相邻的自由盘区)：<br />
alter tablespace talbespace_name coalesce;<br />
<br />
29、<br />
1)手工缩放数据文件(只能增大不能减小)：<br />
alter database datafile '$path/datafile01.dat' resize nnnM;<br />
2)创建一个在需要时自动扩展的文件：<br />
CREATE TABLESPACE DATA <br />
DATAFILE '$PATH/DATAFILE01.DAT' SIZE 200M<br />
AUTOEXTEND ON<br />
NEXT 10M<br />
MAXSIZE 250M;<br />
3)通过ALTER TABLESPACE增加一个新的数据文件：<br />
alter tablespace tablespace_name <br />
add datafile '$path/datafile02.dat' size 200M<br />
autoextend on<br />
maxsize 300M;<br />
<br />
40、移动数据文件：<br />
1）&nbsp; &nbsp; 关闭实例；<br />
2）&nbsp; &nbsp; 使用操作系统命令来移动数据文件；<br />
3）&nbsp; &nbsp; 安装数据文件并使用ALTER DATABASE命令改变数据库中的文件名；<br />
4）&nbsp; &nbsp; 启动实例；<br />
具体步骤如下：<br />
1)&gt;svrmgrl<br />
&gt;connect internal<br />
&gt;shutdown<br />
&gt;exit<br />
2)mv /db01/oracle/cc1/data01.dbf /db02/oracle/cc1/<br />
3)&gt;svrmgrl<br />
&gt;connect internal<br />
&gt;startup mount cc1<br />
&gt;alter database rename file '/db01/oracle/cc1/data01.dbf' to '/db02/oracle/cc1/data01.dbf';<br />
4)&nbsp; &nbsp; startup<br />
<br />
31、<br />
查看回滚段名称:v$rollname<br />
查看表空间：dba_tablespace;<br />
查看用户表空间：user_tablespaces;<br />
查看回滚段状态信息：dba_rollback_segs;<br />
查看数据库回滚段的当前分配情况：dba_segments;<br />
<br />
32、<br />
若系统中有多个表空间，就需要在system表空间中创建"第二回滚段"来支持多个表空间，有了"第二回滚段"，system表空间就只用于管理数据库级的事务。<br />
<br />
33、<br />
ipcs | grep oracle<br />
ipcrm [-m|-s] ipcid(数字)<br />
<br />
34、连接字符串：||&nbsp; &nbsp;<br />
select 'drop talbe '||table_name from user_tables;<br />
<br />
35、视图中不能使用order by，但可以用group by 代替来达到排序目的：<br />
create view as select b1,b2 from table_b group by b1,b2;<br />
<br />
36、用户间复制数据:<br />
copy from user1@databasex to user2@databasey create table2 using select * from talbe1;<br />
<br />
37、察看数据库的大小，和空间使用情况<br />
select b.file_id FileID,b.tablespace_name TableSpace,b.file_name PhysicalFileName,b.bytes TotalBytes,(b.bytes-sum(nvl(a.bytes,0))) UsedSpace,sum(nvl(a.bytes,0)) FreeSpace,sum(nvl(a.bytes,0))/(b.bytes)*100 FreePecent from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_name,b.file_id,b.bytes order by b.tablespace_name;<br />
<br />
38、Oracle提供了几个包，它们可以用来完成很多任务，从内部进程通信到文件I/O，到在PL/SQL块中动态创建和执行SQL语句。所有这些包由SYS用户所拥有-当Oracle最初安装时两个用户中的一个，这些包中最重要的包括：<br />
DBMS_ALERT&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 不用轮询就允许应用命名并发出警告条件信号的过程与函数<br />
DBMS_DDL&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 允许获取PL/SQL程序内部一定数量的DDL语句的过程<br />
DBMS_DESCRIBE&nbsp; &nbsp; 为存储过程与函数描述API的过程<br />
DBMS_JOB&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;管理BLOBs、CLOBs、NCLOBs与BFILEs的过程与函数<br />
DBMS_OUTPUT&nbsp; &nbsp; &nbsp; &nbsp; 允许PL/SQL程序生成终端输出的过程与函数<br />
DBMS_PIPE&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;允许数据库会话使用管道通信(通信频道)的过程与函数<br />
DBMS_SQL&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;在PL/SQL程序内部执行动态SQL的过程与函数<br />
DBMS_ULTILITY&nbsp; &nbsp; &nbsp; &nbsp; DBMS_ULTILITY<br />
ULT_FILE&nbsp; &nbsp; 允许PL/SQL程序读写服务器文件系统上的文本文件的过程与函数<br />
<br />
39、如何解决单机监听不启动的问题：<br />
你给IP固定一个值，然后配置NET8时最好用机器名，把listener.ora,tnsname.ora里的IP改成机器名。<br />
<br />
40、查看日志文件的路径和数量：<br />
select * from v$logfile;<br />
<br />
41、oracle中的配置文件：<br />
init.ora<br />
tnsname.ora<br />
listener.ora<br />
sqlnet.ora<br />
<br />
42、如何利用rownum 检索纪录：（在oracle中，只能通过rownum检索比rownum值小的所有的列）利用如下方法，可以检索表中rownum等于固定值的列：<br />
select * from ( select rownum rn,column1,column2,&#8230; from table_name) where rn=要查询的值；<br />
<br />
43、利用translate（char,from,to）函数判断一个字符串是否可以转换成 number 型：<br />
translate(str,'x1234567890','x') is null，则str为纯字符串。<br />
利用from to 参数，把str字段中所有的0-9的字符替换为空，然后判断函数返回值，返回值为空，则str一定可以转换成number型。<br />
<br />
44、如何修改internal 用户的密码？<br />
用法：orapwd file= password= entries=<br />
参数解释：<br />
　　　　file - name of password file (mand),<br />
　　　　password - password for SYS and INTERNAL (mand),<br />
　　　　entries - maximum number of distinct DBA and OPERs (opt),<br />
　　　　There are no spaces around the equal-to (=) character.<br />
1)进入DOS下<br />
2)默认internal密码文件在c:\orant\database下，是隐藏属性，文件名称与数据库实例名有关<br />
　 如默认ORACLE实例名为ORCL，则internal密码文件名为pwdorcl.ora<br />
3)建立新的internal密码文件，起个新名字为pwdora8.ora<br />
　 orapwd80 file=pwdora8.ora password=B entries=5　　　　　<br />
--注：password项一定要用大写，并且不要用单引号<br />
4)拷贝pwdora8.ora文件到c:\orant\database目录下<br />
5)运行regedit，修改口令文件指向<br />
6)找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE项<br />
　 定位ORA_ORCL_PWFILE子项，改变其值为c:\orant\database\pwdora8.ora<br />
7)关闭ORACLE数据库，重新启动<br />
<img alt="Cool" src="http://bbs.sinobuy.cn/Smileys/default/cool.gif" border="0" />进入svrmgrl服务程序，测试internal密码是否更改成功<br />
<br />
45、只有对象的拥有者才有对对象的操作权。如，把用户user1下的表tab_1赋给用户user2 查看的权限。此时，必须以uer1用户登陆，让后执行如下语句：<br />
grant select on tab_1 to user2;<br />
<br />
46、Oracle的本地进程&nbsp; &nbsp; ps -aef | grep LOCAL=YES&nbsp; &nbsp;的父进程ID不能为 1 ，若为 1 ，则该进程被掉死，需要用命令杀死改进程！！<br />
<br />
47、在Windows 2000 server 操作系统下，用 net start 命令启动oracle的服务,如下：<br />
net start OracleServiceORCL<br />
net start OracleStartORCL<br />
net start OracleTNSListener80<br />
net start OracleWWWListener80<br />
或者，利用 net stop 命令来终止服务：<br />
net stop oraclestartorcl<br />
net stop oracleserviceorcl<br />
net stop oracletnslistener80<br />
&#8230;<br />
启动数据库的另外一个方法：<br />
oradim -startup -sid SID<br />
关闭数据库的另外一个方法：<br />
oradim -shutdown -sid SID<br />
<br />
48、多表操作在被实际执行前，查询优化器会根据连接条件，列出几组可能的连接方案并从中找出系统开销最小的最佳方案。连接条件要充份考虑带有索引的表、行数多的表；内外表的选择可由公式：外层表中的匹配行数*内层表中每一次查找的次数确定，乘积最小为最佳方案。<br />
<br />
49、保持Oracle数据库优良性能的若干诀窍：<br />
1）&nbsp; &nbsp; 分区：<br />
根据实际经验所得，在一个大数据库中，数据库空间的绝大多数是被少量的表所占有。如何简化大数据库和管理，如何改善应用的查询性能，一般可以使用分区这种手段。所谓分区就是动态地将表中记录分离到若干不同的表空间上，使数据在物理上被分割开来，便于维护、备份、恢复、事务及查询性能。当使用的时候可建立一个连接所有分区的视图，使其在逻辑上仍以一个整体出现。 <br />
(1)建立分区表 <br />
Create table Employee ( <br />
EmpNo varchar2(10) primary key, <br />
Name varchar2(30), <br />
DeptNo Number(2)<br />
)<br />
Partition by range(DeptNo) <br />
( <br />
partition PART1 values less than (11)<br />
tablespace PART1_TS, <br />
partition PART2 values less than (21)<br />
tablespace PART2_TS, <br />
partition PART3 values less than (31)<br />
tablespace PART3_TS <br />
partition PART4 values less than (MAXVALUE)<br />
tablespace PART4_TS<br />
); <br />
表Employee依据DeptNo列进行分区。 <br />
(2)分区索引 <br />
Create index Employee_DeptNo on Employee(DeptNo)<br />
local (<br />
partition PART1 tablespace PART1_NDX_TS, <br />
partition PART2 tablespace PART2_NDX_TS, <br />
partition PART3 tablespace PART3_NDX_TS, <br />
partition PART4 tablespace PART4_NDX_TS, <br />
); <br />
当分区中出现许多事务并且要保证所有分区中的数据记录的唯一性时采用全局索引，如： <br />
Create index Employee_DeptNo on Employee(DeptNo) <br />
global partition by range (DeptNo) <br />
( <br />
partition PART1 values less than (11) <br />
tablespace PART1_NDX_TS, <br />
partition PART2 values less than (21) <br />
tablespace PART2_NDX_TS, <br />
partition PART3 values less than (31) <br />
tablespace PART3_NDX_TS <br />
partition PART4 values less than (MAXVALUE) <br />
tablespace PART4_NDX_TS <br />
); <br />
在建立全局索引时，global子句允许指定索引的范围值，这个范围值可以不同于表分区的范围值。只有建立局部索引才会使索引索引分区与表分区间建立起一一对应关系。因此，在大多数情况下，应该使用局部索引分区。若使用了此索引，分区就能够很容易地将索引分区与表分区建立关联，局部索引比全局索引更易于管理。 <br />
(3)分区管理 <br />
根据实际需要，还可以使用 alter table 命令来增加、丢弃、交换、移动、修改、重命名、划分、截短一个已存在分区的结构。 <br />
<br />
2)Rebuild Indexes（重建索引不会影响存储过程） <br />
如果表中记录频繁的被删除或插入，尽管表中的记录总量保持不变，索引空间的使用量会不断增加。虽然记录从索引中被删除，但是该记录索引项的使用空间不能被重新使用。因此，如果表变化不定，索引空间量会不断增加，不管表中记录数量是否增加--只仅仅是因为索引中无效空间量的增加。 <br />
要回收那些曾被删除记录使用的空间，需要使用alter index rebuild 命令。可以做一个定期运行的批处理程序，来重建最活动表的索引。这个批处理程序可以在空闲时运行，以避免程序与用户冲突。若能坚持索引的这一程序规划，便可以及时回收那些未使用空间，提高空间利用率。 <br />
<br />
3)段的碎片整理 <br />
当生成一个数据库对象时（一个表或一个索引），通过用户缺省值或指定值来为它指定表空间。一个在表空间中所生成的段，用于存储对象的相关数据。在段被关闭、收缩、截断之前，段所分配的空间将不被释放。<br />
一个段是由范围组成，而范围是由相邻的Oracle块组成。一旦存在的范围不能再存储新的数据，那这个段就会去获得新的范围，且并不要求这些范围是彼此相邻的。这样的扩展会一直继续下去，直到表空间中的数据文件不能提供更多的自由空间，或者范围数量已达到极限。<br />
因此，一个碎片太多的数据段，不仅会影响运行，也会引发表空间中的空间管理问题。所以，每个数据段只含有一个范围是十分有益的。借助监控系统，可以通过检查DBA_SEGMENTS数据字典视图来了解哪些数据库对象含有10个或更多范围的段，确定其数据段碎片。 <br />
若一个段的碎片过多，可用两种方法解决这个问题： <br />
(1)用正确的存储参数建立一个新表，将旧表中的数据插入到新表中，再删除旧表； <br />
(2)利用Export/Import工具。<br />
如：exp system/manager file=exp.dmp compress=Y grants=Y indexes=Y tables=(T1,T2) <br />
若输出成功，进入Oracle，删除上述表。 <br />
注：compress=Y决定将在输出过程中修改它们的存储参数。 <br />
imp system/manager file=exp.dmp commit=Y buffer=64000 full=Y <br />
注：在输入时重新配置新的存储参数。 <br />
<br />
自由范围的碎片整理 <br />
表空间中的一个自由范围是表空间中相连自由（空间）块的集合。当一个段关闭时，它的范围将被释放，并被标记为自由范围。然而，这些自由范围再也不能与相邻的自由范围合并，它们之间的界线始终存在。但是当表空间的缺省值pctincrease设置不为0时，SMON后台进会定期的将这些相邻的自由范围合并。若pctincrease设置为0，那相邻自由范围不会被数据库自动合并。但可以使用 alter tablespace 命令coalesce选项，来强迫进行相邻自由范围的合并。 <br />
不进行自由范围合并，在日后的空间请求中，会影响到表空间中的空间分配。当需要一个足够大的范围时，数据库并不会合并相邻的自由范围，除非没有其他选择。这样，当表空间中前面较小自由范围已被相关使用时，将使用表空间中后面部分最大的一个自由范围。结果，会因为它们没有足够多的使用空间，从而导致表空间中速度上的矛盾。由于这样的进程出现，使数据库的空间分配距理想越来越远。自由空间碎片常会出现在那些经常关闭又重新生成的数据库表和索引中。<br />
在理想的ORACLE表空间中，每一个数据库对象存储在一个单独的范围中，并且所有有效自由空间集中在一个巨大而连续的范围中。这样，在一个对象需要附加存储空间时，可以在增加获取足够大自由空间的可能性同时，最小化空间中的循环调用，提高自由空间使用率<br />
<br />
50、查看和修改Oracle服务器端字符集：<br />
方法一：<br />
1)&nbsp; &nbsp; 查看服务器端字符集：<br />
select * from v$nls_parameters;<br />
select * from nls_database_parameters;<br />
select * from sys.props$;<br />
2)&nbsp; &nbsp; 修改服务器端字符集(用sys用户)：<br />
首先执行：update props$ set value$ = 'WE8ISO8859P1' where name ='NLS_CHARACTERSET';<br />
update props$ set value$ = 'china' where name ='NLS_LANGUAGE';<br />
提交（commit），然后，重新启动数据库；<br />
3）用客户端工具（PL/SQL DEVELOP or PB etc.）查询数据库，若显示乱码，先查询出数据库端的字符集，然后，从注册表中修改NLS_LANG字段的值，可能为AMERICAN_AMERICA.WE8ISO8859P1或者SIMPLIFIED CHINESE_CHINA.ZHS16GBK或者NA等。<br />
方法二：<br />
alter system enable restricted session;<br />
alter database ORCL character set ZHS16GBK;<br />
alter database ORCL national character set ZHS16GBK;<br />
<br />
51、查看系统中的角色：<br />
select * from dba_roles;<br />
-------------------------------------------------------------------------------------------------------------<br />
Oracle中查看所有的表<br />
select &nbsp; table_name &nbsp; from &nbsp; user_tables; &nbsp; &nbsp; //当前用户的表 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; select &nbsp; table_name &nbsp; from &nbsp; all_tables; &nbsp; &nbsp; //所有用户的表 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; select &nbsp; table_name &nbsp; from &nbsp; dba_tables; &nbsp; &nbsp; &nbsp; //包括系统表<br />
-------------------------------------------------------------------------------------------------------------<br />
<img src ="http://www.blogjava.net/wx886104/aggbug/239158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-11-07 09:34 <a href="http://www.blogjava.net/wx886104/archive/2008/11/07/239158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle11g修改密码心得</title><link>http://www.blogjava.net/wx886104/archive/2008/11/05/238848.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Wed, 05 Nov 2008 08:57:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/11/05/238848.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/238848.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/11/05/238848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/238848.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/238848.html</trackback:ping><description><![CDATA[今天在服务器上安装oracle11g，是我同事装的。他在安装的时候，处于安全考虑，将密码都更改了。结果安装好后。登录不上去。以致无法导入备份。（不过sqlplus可以正常连接）。他在百度一下说是在安装oracle11g的时候，修改了密码就会这样。（我保留怀疑态度）我和以前折腾半天没搞出来，最后我想了下，直接修改了密码。一切ok
<img src ="http://www.blogjava.net/wx886104/aggbug/238848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-11-05 16:57 <a href="http://www.blogjava.net/wx886104/archive/2008/11/05/238848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 密码丢失解决方法祥述</title><link>http://www.blogjava.net/wx886104/archive/2008/11/05/238845.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Wed, 05 Nov 2008 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/11/05/238845.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/238845.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/11/05/238845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/238845.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/238845.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em">在使用Oracle过各中经常会遇到密码丢失的时候，本文用两种试来解决这个问题。
<p style="text-indent: 2em"><strong>一种方法:</strong>
<p style="text-indent: 2em">
<center><ccid_nobr>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
    <tbody>
        <tr>
            <td class="code" style="font-size: 9pt" bgcolor="#e6e6e6">
            <pre><ccid_code>sqlplus "/ as sysdba"
            SQL&gt;startup
            SQL&gt;alter user system identified by root123;</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="text-indent: 2em">如果sqlplus "/ as sysdba"不能进入,让输入密码,我输入原始密码和修改的密码后都不行的话,修改unix环境下:
<p style="text-indent: 2em">1. $ORACLE_HOME\network\admin\SQLNET.ORA中为：
<p style="text-indent: 2em">SQLNET.AUTHENTICATION_SERVICES=(NTS)
<p style="text-indent: 2em">重起数据库/监听服务，就可以用操作系统认证sqlplus "/ as sysdba"了,来进入你的数据库，从而轻而易举的搞定你的数据库了。
<p style="text-indent: 2em">2.
<center><ccid_nobr>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
    <tbody>
        <tr>
            <td class="code" style="font-size: 9pt" bgcolor="#e6e6e6">
            <pre><ccid_code>sqlplus /nolog
            sql&gt;connect /as sysdba</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="text-indent: 2em"><strong>第二种方法:</strong>
<p style="text-indent: 2em">
<p style="text-indent: 2em">详细步骤如下：
<p style="text-indent: 2em">一：查询视图V$PWFILE_USERS：select * from V$PWFILE_USERS；记录下拥有 SYSOPER／SYSDBA系统权限的用户信息。
<p style="text-indent: 2em">二：关闭数据库 shutdown immediate。
<p style="text-indent: 2em">三：删除密码文件，文件路径一般为：ORACLE_HOME＼DATABASE，文件名为PWD.ORA。
<p style="text-indent: 2em">四：创建密码文件：
<p style="text-indent: 2em">ORAPWD　FILE=＜ FILENAME ＞　PASSWORD =＜ PASSWORD ＞
<p style="text-indent: 2em">五：向密码文件中增加用户：
<p style="text-indent: 2em">CONNECT　SYS／internal_user_passsword AS　SYSDBA；
<p style="text-indent: 2em">启动数据库实例并打开数据库； 创建相应用户帐号，对其授权授予 权限：GRANT　SYSDBA　TO user_name（如果先前数据库只有sys具有sysdba权限，可不做这步）。
<p style="text-indent: 2em">六：修改密码文件状态，默认密码文件的状态shared，要将初始化参数里的REMOTE_LOGIN_PASSWORDFILE 设置成EXCLUSIVE。（T006） </p>
<img src ="http://www.blogjava.net/wx886104/aggbug/238845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-11-05 16:43 <a href="http://www.blogjava.net/wx886104/archive/2008/11/05/238845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle的to_date()方法的小妙用（原创）</title><link>http://www.blogjava.net/wx886104/archive/2008/11/01/238048.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Sat, 01 Nov 2008 06:11:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/11/01/238048.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/238048.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/11/01/238048.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/238048.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/238048.html</trackback:ping><description><![CDATA[通常在表中设置的日期列，用于存放与信息相关的日期。<br />
在某些时候需要通过日期中的年，月，日等来统计数据，通常我们会将日期取出，再在程序中获取当前日期。进行比较，这样会加大开销。<br />
现在可以通过to_date来截取日期中的年，月，日的来获取数据。<br />
如： to_char(to_date(b_time,'yyyy-mm-dd'),'yyyy')=to_char(to_date(?,'yyyy-mm-dd hh24:mi:ss'),'yyyy')<br />
这样获取的就是年的字符串，就可得到指定年的数据。<br />
月：to_char(to_date(b_time,'yyyy-mm-dd'),'mm')=to_char(to_date(?,'yyyy-mm-dd hh24:mi:ss'),'mm')<br />
日：to_char(to_date(b_time,'yyyy-mm-dd'),'dd')=to_char(to_date(?,'yyyy-mm-dd hh24:mi:ss'),'dd')<br />
<br />
<img src ="http://www.blogjava.net/wx886104/aggbug/238048.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-11-01 14:11 <a href="http://www.blogjava.net/wx886104/archive/2008/11/01/238048.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 导出导入 小结</title><link>http://www.blogjava.net/wx886104/archive/2008/10/11/233721.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Sat, 11 Oct 2008 03:52:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/10/11/233721.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/233721.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/10/11/233721.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/233721.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/233721.html</trackback:ping><description><![CDATA[oracle可以使用exp/imp进行逻辑导出和导入。<br />
例:exp导出<br />
&nbsp;&nbsp;&nbsp;&nbsp;exp <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;&#100;&#97;&#116;&#97;&#98;&#97;&#115;&#101;">username/password@database</a> file=xxx/xxx/xx.dmp<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp; imp导入<br />
&nbsp;&nbsp;&nbsp;&nbsp;imp <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;&#100;&#97;&#116;&#97;&#98;&#97;&#115;&#101;">username/password@database</a> file=xxx/xxx/xxx.dmp FULL=y<br />
<br />
以上的例子是对整个数据库进行的导出导入，除了以数据库外，还可以导出表，表空间。<br />
注意在导入是如果遇到imp-00015提示following statement failed because the objiect already exits时，只需对该信息后面的所存在的对象删除，再次导入即可。<br />
<img src ="http://www.blogjava.net/wx886104/aggbug/233721.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-10-11 11:52 <a href="http://www.blogjava.net/wx886104/archive/2008/10/11/233721.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>