日期:2014-05-16  浏览次数:20653 次

oracle9i 常用问题三:虚拟字段133~173

虚拟字段?

133. CURRVAL 和 nextval?

? ? ?为表创建序列?

? ? ?CREATE SEQUENCE EMPSEQ ... ;?

? ? ?SELECT empseq.currval FROM DUAL ;?

? ? ?自动插入序列的数值?

? ? ?INSERT INTO emp?

? ? ? ? ?VALUES (empseq.nextval, 'LEWIS', 'CLERK',?

? ? ? ? ? ? ? ? ?7902, SYSDATE, 1200, NULL, 20) ;?

134. ROWNUM?

? ? ?按设定排序的行的序号?

? ? ?SELECT * FROM emp WHERE ROWNUM < 10 ;?

135. ROWID?

? ? ?返回行的物理地址?

? ? ?SELECT ROWID, ename FROM emp ?WHERE deptno = 20 ;?

136. 将N秒转换为时分秒格式??

? ? ?set serverout on?

? ? ?declare?

? ? ? ?N number := 1000000;?

? ? ? ?ret varchar2(100);?

? ? ?begin?

? ? ? ?ret := trunc(n/3600) || '小时' || to_char(to_date(mod(n,3600),'sssss'),'fmmi"分 ? "ss"秒"') ;?

? ? ? ?dbms_output.put_line(ret);?

? ? ?end;?

137. 如何查询做比较大的排序的进程??

? ? ?SELECT b.tablespace, b.segfile#, b.segblk#, b.blocks, a.sid, a.serial#, a.username, a.osuser, a.status?

? ? ?FROM v$session a,v$sort_usage b?

? ? ?WHERE a.saddr = b.session_addr?

? ? ?ORDER BY b.tablespace, b.segfile#, b.segblk#, b.blocks ;?

138. 如何查询做比较大的排序的进程的SQL语句??

? ? ?select /*+ ORDERED */ sql_text from v$sqltext a?

? ? ?where a.hash_value = (?

? ? ? ?select sql_hash_value from v$session b?

? ? ? ?where b.sid = &sid and b.serial# = &serial)?

? ? ?order by piece asc ;?

139. 如何查找重复记录??

? ? ?SELECT * FROM TABLE_NAME?

? ? ?WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D?

? ? ? ?WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);?

140. 如何删除重复记录??

? ? ?DELETE FROM TABLE_NAME?

? ? ?WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D?

? ? ?WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);?

141. 如何快速编译所有视图??

? ? ?SQL >SPOOL VIEW1.SQL?

? ? ?SQL >SELECT ‘ALTER VIEW ‘||TNAME||’?

? ? ?COMPILE;’ FROM TAB;?

? ? ?SQL >SPOOL OFF?

? ? ?然后执行VIEW1.SQL即可。?

? ? ?SQL >@VIEW1.SQL;?

142. ORA-01555 SNAPSHOT TOO OLD的解决办法?

? ? ?增加MINEXTENTS的值,增加区的大小,设置一个高的OPTIMAL值。?

143. 事务要求的回滚段空间不够,表现为表空间用满(ORA-01560错误),回滚段扩展到达参数 ? ? ?MAXEXTENTS的值(ORA-01628)的解决办法。?

? ? ?向回滚段表空间添加文件或使已有的文件变大;增加MAXEXTENTS的值。?

144. 如何加密ORACLE的存储过程??

? ? ?下列存储过程内容放在AA.SQL文件中?

? ? ?create or replace procedure testCCB(i in number) as?

? ? ?begin?

? ? ? ?dbms_output.put_line('输入参数是'||to_char(i));?

? ? ?end;?

? ? ?SQL>wrap iname=a.sql;?

? ? ?PL/SQL Wrapper: Release 8.1.7.0.0 - Production on Tue Nov 27 22:26:48 2001?

? ? ?Copyright (c) Oracle Corporation 1993, 2000. ?All Rights Reserved。?

? ? ?Processing AA.sql to AA.plb?

? ? ?运行AA.plb?

? ? ?SQL> @AA.plb ;?

145. 如何监控事例的等待??

? ? ?select event,sum(decode(wait_Time,0,0,1)) "Prev",?

? ? ?sum(decode(wait_Time,0,1,0)) "Curr",count(*) "Tot"?

? ? ?from v$session_Wait?

? ? ?group by event order by 4;?

146. 如何回滚段的争用情况??

? ? ?select name, waits, gets, waits/gets "Ratio"?

? ? ?from v$rollstat C, v$rollname D?

? ? ?where C.usn = D.usn;?

147. 如何监控表空间的 I/O 比例??

? ? ?select B.tablespace_name name, B.file_name "file", A.phyrds pyr, A.phyblkrd pbr, A.phywrts pyw, A.phyblkwrt pbw?

? ? ?from v$filestat A, dba_data_files B?

? ? ?where A.file# = B.file_id?

? ? ?order by B.tablespace_name;?

148. 如何监控文件系统的 I/O 比例??

? ? ?select substr(C.file#,1,2) "#", substr(C.name,1,30) "Name", C.status, C.bytes, D.phyrds, D.phywrts?

? ? ?from v$datafile C, v$filestat D?

? ? ?where C.file# = D.file#;?

149. 如何在某个用户下找所有的索引??

? ? ?select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name?

? ? ?from user_ind_columns, user_index