1. 程式人生 > >Oracle 語句大全,確實不錯,趕緊轉走!

Oracle 語句大全,確實不錯,趕緊轉走!

1. Oracle安裝完成後的初始口令? 
 internal/oracle 
  sys/change_on_install 
  system/manager 
  scott/tiger 
  sysman/oem_temp

2. ORACLE9IAS WEB CACHE的初始預設使用者和密碼? 
administrator/administrator

3. oracle 8.0.5怎麼建立資料庫? 
用orainst。如果有motif介面,可以用orainst /m

4. oracle 8.1.7怎麼建立資料庫? 
dbassist

5. oracle 9i 怎麼建立資料庫? 
dbca

6. oracle中的裸裝置指的是什麼? 
裸裝置就是繞過檔案系統直接訪問的儲存空間

7. oracle如何區分 64-bit/32bit 版本??? 
$ sqlplus '/ AS SYSDBA' 
SQL*Plus: Release 9.0.1.0.0 - Production on Mon Jul 14 17:01:09 2003 
(c) Copyright 2001 Oracle Corporation. All rights reserved. 
Connected to: 
Oracle9i Enterprise Edition Release 9.0.1.0.0 - Production 
With the Partitioning option 
JServer Release 9.0.1.0.0 - Production 
SQL> select * from v$version; 
BANNER 
---------------------------------------------------------------- 
Oracle9i Enterprise Edition Release 9.0.1.0.0 - Production 
PL/SQL Release 9.0.1.0.0 - Production 
CORE 9.0.1.0.0 Production 
TNS for Solaris: Version 9.0.1.0.0 - Production 
NLSRTL Version 9.0.1.0.0 - Production 
SQL>

8. SVRMGR什麼意思? 
svrmgrl,Server Manager. 
9i下沒有,已經改為用SQLPLUS了 
sqlplus /nolog 
變為歸檔日誌型的

9. 請問如何分辨某個使用者是從哪臺機器登陸ORACLE的? 
SELECT machine , terminal FROM V$SESSION;

10. 用什麼語句查詢欄位呢? 
desc table_name 可以查詢表的結構 
select field_name,... from ... 可以查詢欄位的值 
select * from all_tables where table_name like '%' 
select * from all_tab_columns where table_name='??'

11. 怎樣得到觸發器、過程、函式的建立指令碼? 
desc user_source 
user_triggers

12. 怎樣計算一個表佔用的空間的大小? 
select owner,table_name, 
NUM_ROWS, 
BLOCKS*AAA/1024/1024 "Size M", 
EMPTY_BLOCKS, 
LAST_ANALYZED 
from dba_tables 
where table_name='XXX'; 
Here: AAA is the value of db_block_size ; 
XXX is the table name you want to check

13. 如何檢視最大會話數? 
SELECT * FROM V$PARAMETER WHERE NAME LIKE 'proc%'; 
SQL> 
SQL> show parameter processes 
NAME TYPE VALUE 
------------------------------------ ------- ------------------------------ 
aq_tm_processes integer 1 
db_writer_processes integer 1 
job_queue_processes integer 4 
log_archive_max_processes integer 1 
processes integer 200 
這裡為200個使用者。 
select * from v$license; 
其中sessions_highwater紀錄曾經到達的最大會話數

14. 如何檢視系統被鎖的事務時間? 
select * from v$locked_object ;

15. 如何以archivelog的方式執行oracle。 
init.ora 
log_archive_start = true 
RESTART DATABASE

16. 怎麼獲取有哪些使用者在使用資料庫 
select username from v$session;

17. 資料表中的欄位最大數是多少? 
表或檢視中的最大列數為 1000

18. 怎樣查得資料庫的SID ? 
select name from v$database; 
也可以直接檢視 init.ora檔案

19. 如何在Oracle伺服器上通過SQLPLUS檢視本機IP地址 ? 
select sys_context('userenv','ip_address') from dual; 
如果是登陸本機資料庫,只能返回127.0.0.1,呵呵

20. unix 下怎麼調整資料庫的時間? 
su -root 
date -u 08010000

21. 在ORACLE TABLE中如何抓取MEMO型別欄位為空的資料記錄? 
select remark from oms_flowrec where trim(' ' from remark) is not null ;


22. 如何用BBB表的資料去更新AAA表的資料(有關聯的欄位) 
UP2003-10-17 AAA SET BNS_SNM=(SELECT BNS_SNM FROM BBB WHERE AAA.DPT_NO=BBB.DPT_NO) WHERE BBB.DPT_NO IS NOT NULL;

23. P4計算機安裝方法 
將SYMCJIT.DLL改為SYSMCJIT.OLD

24. 何查詢SERVER是不是OPS? 
SELECT * FROM V$OPTION; 
如果PARALLEL SERVER=TRUE則有OPS能

25. 何查詢每個使用者的許可權? 
SELECT * FROM DBA_SYS_PRIVS;

26. 如何將表移動表空間? 
ALTER TABLE TABLE_NAME MOVE TABLESPACE_NAME;

27. 如何將索引移動表空間? 
ALTER INDEX INDEX_NAME REBUILD TABLESPACE TABLESPACE_NAME;

28. 在LINUX,UNIX下如何啟動DBA STUDIO? 
OEMAPP DBASTUDIO

29. 查詢鎖的狀況的物件有? 
V$LOCK, V$LOCKED_OBJECT, V$SESSION, V$SQLAREA, V$PROCESS ; 
查詢鎖的表的方法: 
SELECT S.SID SESSION_ID, S.USERNAME, DECODE(LMODE, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR(LMODE)) MODE_HELD, DECODE(REQUEST, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR(REQUEST)) MODE_REQUESTED, O.CCBZZP||'.'||O.OBJECT_NAME||' ('||O.OBJECT_TYPE||')', S.TYPE LOCK_TYPE, L.ID1 LOCK_ID1, L.ID2 LOCK_ID2 FROM V$LOCK L, SYS.DBA_OBJECTS O, V$SESSION S WHERE L.SID = S.SID AND L.ID1 = O.OBJECT_ID ;

30. 如何解鎖? 
ALTER SYSTEM KILL SESSION ‘SID,SERIR#’;

31. SQLPLUS下如何修改編輯器? 
DEFINE _EDITOR="" -- 必須加上雙引號 
來定義新的編輯器,也可以把這個寫在$ORACLE_HOME/sqlplus/admin/glogin.sql裡面使它永久有效。

32. ORACLE產生隨機函式是? 
DBMS_RANDOM.RANDOM

33. LINUX下查詢磁碟競爭狀況命令? 
Sar -d

33. LINUX下查詢CPU競爭狀況命令? 
sar -r

34. 查詢當前使用者物件? 
SELECT * FROM USER_OBJECTS; 
SELECT * FROM DBA_SEGMENTS;

35. 如何獲取錯誤資訊? 
SELECT * FROM USER_ERRORS;

36. 如何獲取連結狀況? 
SELECT * FROM DBA_DB_LINKS;

37. 檢視資料庫字元狀況? 
SELECT * FROM NLS_DATABASE_PARAMETERS; 
SELECT * FROM V$NLS_PARAMETERS;

38. 查詢表空間資訊? 
SELECT * FROM DBA_DATA_FILES;

39. ORACLE的INTERAL使用者要口令? 
修改 SQLNET.ORA 
SQLNET.AUTHENTICATION_SERVICES=(NTS)

40. 出現JAVA.EXE的解決辦法? 
一般是將ORACLEORAHOMEXIHTTPSERVER改成手工啟動可以的 
X是8或9

41. 如何給表、列加註釋? 
SQL>comment on table 表 is '表註釋'; 
註釋已建立。 
SQL>comment on column 表.列 is '列註釋'; 
註釋已建立。 
SQL> select * from user_tab_comments where comments is not null;

42. 如何檢視各個表空間佔用磁碟情況? 
SQL> col tablespace format a20 
SQL> select 
b.file_id 檔案ID號, 
b.tablespace_name 表空間名, 
b.bytes 位元組數, 
(b.bytes-sum(nvl(a.bytes,0))) 已使用, 
sum(nvl(a.bytes,0)) 剩餘空間, 
sum(nvl(a.bytes,0))/(b.bytes)*100 剩餘百分比 
from dba_free_space a,dba_data_files b 
where a.file_id=b.file_id 
group by b.tablespace_name,b.file_id,b.bytes 
order by b.file_id 
43. 如把ORACLE設定為MTS或專用模式? 
#dispatchers="(PROTOCOL=TCP) (SERVICE=SIDXDB)" 
加上就是MTS,註釋就是專用模式,SID是指你的例項名。

44. 如何才能得知系統當前的SCN號 ? 
select max(ktuxescnw * power(2, 32) + ktuxescnb) from x$ktuxe;

45. 請問如何在ORACLE中取毫秒? 
9i之前不支援,9i開始有timestamp. 
9i可以用select systimestamp from dual;

__________________ 
風起雲湧,一鍋稀飯。 
人生苦悶,開心就行。

 

向版主反映這個帖子 | IP: 已記錄 
10-13-03 01:20

開心果 
資深會員

註冊日期: Aug 2003 
來自: 福建 
發帖數: 525 
大家在應用ORACLE的時候可能會遇到很多看起來不難的問題, 特別對新手來說, 今天我簡單把它總結一下, 釋出給大家, 希望對大家有幫助! 和大家一起探討, 共同進步!

對ORACLE高手來說是不用看的.

46. 如何在字串里加回車? 
select 'Welcome to visit'||chr(10)||'www.CSDN.NET' from dual ;

47. 中文是如何排序的? 
Oracle9i之前,中文是按照二進位制編碼進行排序的。 
在oracle9i中新增了按照拼音、部首、筆畫排序功能。設定NLS_SORT值 
SCHINESE_RADICAL_M 按照部首(第一順序)、筆劃(第二順序)排序 
SCHINESE_STROKE_M 按照筆劃(第一順序)、部首(第二順序)排序 
SCHINESE_PINYIN_M 按照拼音排序

48. Oracle8i中物件名可以用中文嗎? 
可以

49. 如何改變WIN中SQL*Plus啟動選項? 
SQL*PLUS自身的選項設定我們可以在$ORACLE_HOME/sqlplus/admin/glogin.sql中設定。

50. 怎樣修改oracel資料庫的預設日期? 
alter session set nls_date_format='yyyymmddhh24miss'; 
OR 
可以在init.ora中加上一行 
nls_date_format='yyyymmddhh24miss'

51. 如何將小表放入keep池中? 
alter table xxx storage(buffer_pool keep);

52. 如何檢查是否安裝了某個patch? 
check that oraInventory

53. 如何使select語句使查詢結果自動生成序號? 
select rownum,COL from table;

54. 如何知道資料褲中某個表所在的tablespace? 
select tablespace_name from user_tables where table_name='TEST'; 
select * from user_tables中有個欄位TABLESPACE_NAME,(oracle); 
select * from dba_segments where …;

55. 怎麼可以快速做一個和原表一樣的備份表? 
create table new_table as (select * from old_table);

55. 怎麼在sqlplus下修改procedure? 
select line,trim(text) t from user_source where name =’A’ order by line;

56. 怎樣解除PROCEDURE被意外鎖定? 
alter system kill session ,把那個session給殺掉,不過你要先查出她的session id 
or 
把該過程重新改個名字就可以了。

57. SQL Reference是個什麼東西? 
是一本sql的使用手冊,包括語法、函式等等,oracle官方網站的文件中心有下載.

58. 如何檢視資料庫的狀態? 
unix下 
ps -ef | grep ora 
windows下 
看服務是否起來 
是否可以連上資料庫

59. 請問如何修改一張表的主鍵? 
alter table aaa 
drop constraint aaa_key ; 
alter table aaa 
add constraint aaa_key primary key(a1,b1) ;

60. 改變資料檔案的大小? 
用 ALTER DATABASE .... DATAFILE .... ; 
手工改變資料檔案的大小,對於原來的 資料檔案有沒有損害。

61. 怎樣檢視ORACLE中有哪些程式在執行之中? 
檢視v$sessions表

62. 怎麼可以看到資料庫有多少個tablespace? 
select * from dba_tablespaces;

63. 如何修改oracle資料庫的使用者連線數? 
修改initSID.ora,將process加大,重啟資料庫.

64. 如何查出一條記錄的最後更新時間? 
可以用logminer 察看

65. 如何在PL/SQL中讀寫檔案? 
UTL_FILE包允許使用者通過PL/SQL讀寫作業系統檔案。

66. 怎樣把“&”放入一條記錄中? 
insert into a values (translate ('at{&}t','at{}','at'));

67. EXP 如何加QUERY引數? 
EXP USER/PASS FILE=A.DMP TABLES(BSEMPMS) 
QUERY='"WHERE EMP_NO=\'S09394\'\" ﹔

68. 關於oracle8i支援簡體和繁體的字符集問題? 
ZHS16GBK可以支

69. Data Guard是什麼軟體? 
就是Standby的換代產品

70. 如何建立SPFILE? 
SQL> connect / as sysdba 
SQL> select * from v$version; 
SQL> create pfile from spfile; 
SQL> CREATE SPFILE FROM PFILE='E:\ora9i\admin\eygle\pfile\init.ora'; 
檔案已建立。 
SQL> CREATE SPFILE='E:\ora9i\database\SPFILEEYGLE.ORA' FROM PFILE='E:\ora9i\admin\eygle\pfile\init.ora'; 
檔案已建立。

71. 核心引數的應用? 
shmmax 
  含義:這個設定並不決定究竟Oracle資料庫或者作業系統使用多少實體記憶體,只決定了最多可以使用的記憶體數目。這個設定也不影響作業系統的核心資源。 
  設定方法:0.5*實體記憶體 
  例子:Set shmsys:shminfo_shmmax=10485760 
  shmmin 
  含義:共享記憶體的最小大小。 
  設定方法:一般都設定成為1。 
  例子:Set shmsys:shminfo_shmmin=1: 
  shmmni 
  含義:系統中共享記憶體段的最大個數。 
  例子:Set shmsys:shminfo_shmmni=100 
  shmseg 
  含義:每個使用者程序可以使用的最多的共享記憶體段的數目。 
  例子:Set shmsys:shminfo_shmseg=20: 
  semmni 
  含義:系統中semaphore identifierer的最大個數。 
  設定方法:把這個變數的值設定為這個系統上的所有Oracle的例項的init.ora中的最大的那個processes的那個值加10。 
  例子:Set semsys:seminfo_semmni=100 
  semmns 
  含義:系統中emaphores的最大個數。 
  設定方法:這個值可以通過以下方式計算得到:各個Oracle例項的initSID.ora裡邊的processes的值的總和(除去最大的Processes引數)+最大的那個Processes×2+10×Oracle例項的個數。 
  例子:Set semsys:seminfo_semmns=200 
  semmsl: 
  含義:一個set中semaphore的最大個數。 
  設定方法:設定成為10+所有Oracle例項的InitSID.ora中最大的Processes的值。 
  例子:Set semsys:seminfo_semmsl=-200 
72. 怎樣檢視哪些使用者擁有SYSDBA、SYSOPER許可權? 
SQL>conn sys/change_on_install 
SQL>select * from V_$PWFILE_USERS;

73. 如何單獨備份一個或多個表? 
exp 使用者/密碼 tables=(表1,…,表2)

74. 如何單獨備份一個或多個使用者? 
exp system/manager owner=(使用者1,使用者2,…,使用者n) file=匯出檔案

75. 如何對CLOB欄位進行全文檢索? 
SELECT * FROM A WHERE dbms_lob.instr(a.a,'K',1,1)>0;

76. 如何顯示當前連線使用者? 
SHOW USER

77. 如何檢視資料檔案放置的路徑 ? 
col file_name format a50 
SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;

78. 如何檢視現有回滾段及其狀態 ? 
SQL> col segment format a30 
SQL> SELECT SEGMENT_NAME,CCBZZP,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS

79. 如何改變一個欄位初始定義的Check範圍? 
SQL> alter table xxx drop constraint constraint_name; 
之後再建立新約束: 
SQL> alter table xxx add constraint constraint_name check();

80. Oracle常用系統檔案有哪些? 
通過以下檢視顯示這些檔案資訊:v$database,v$datafile,v$logfile v$controlfile v$parameter;

81. 內連線INNER JOIN? 
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no;

82. 如何外連線? 
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+); 
Select a.* from bsempms a,bsdptms b wherea.dpt_no(+)=b.dpt_no;

83. 如何執行指令碼SQL檔案? 
SQL>@$PATH/filename.sql;

84. 如何快速清空一個大表? 
SQL>truncate table table_name;

85. 如何查有多少個數據庫例項? 
SQL>SELECT * FROM V$INSTANCE;

86. 如何查詢資料庫有多少表? 
SQL>select * from all_tables;

87. 如何測試SQL語句執行所用的時間? 
SQL>set timing on ; 
SQL>select * from tablename; 
88. CHR()的反函式是? 
ASCII() 
SELECT CHAR(65) FROM DUAL; 
SELECT ASCII('A') FROM DUAL;

89. 字串的連線 
SELECT CONCAT(COL1,COL2) FROM TABLE ; 
SELECT COL1||COL2 FROM TABLE ;

90. 怎麼把select出來的結果導到一個文字檔案中? 
SQL>SPOOL C:\ABCD.TXT; 
SQL>select * from table; 
SQL >spool off;

91. 怎樣估算SQL執行的I/O數 ? 
SQL>SET AUTOTRACE ON ; 
SQL>SELECT * FROM TABLE; 
OR 
SQL>SELECT * FROM v$filestat ; 
可以檢視IO數

92. 如何在sqlplus下改變欄位大小? 
alter table table_name modify (field_name varchar2(100)); 
改大行,改小不行(除非都是空的)

93. 如何查詢某天的資料? 
select * from table_name where trunc(日期欄位)=to_date('2003-05-02','yyyy-mm-dd');

94. sql 語句如何插入全年日期? 
create table BSYEAR (d date); 
insert into BSYEAR 
select to_date('20030101','yyyymmdd')+rownum-1 
from all_objects 
where rownum

95. 如果修改表名? 
alter table old_table_name rename to new_table_name;

96. 如何取得命令的返回狀態值? 
sqlcode=0

97. 如何知道使用者擁有的許可權? 
SELECT * FROM dba_sys_privs ;

98. 從網上下載的ORACLE9I與市場上賣的標準版有什麼區別? 
從功能上說沒有區別,只不過oracle公司有明文規定;從網站上下載的oracle產品不得用於 商業用途,否則侵權。

99. 怎樣判斷資料庫是執行在歸檔模式下還是執行在非歸檔模式下? 
進入dbastudio,歷程--〉資料庫---〉歸檔檢視。

100. sql>startup pfile和ifile,spfiled有什麼區別? 
pfile就是Oracle傳統的初始化引數檔案,文字格式的。 
ifile類似於c語言裡的include,用於把另一個檔案引入 
spfile是9i裡新增的並且是預設的引數檔案,二進位制格式 
startup後應該只可接pfile

101. 如何搜尋出前N條記錄? 
SELECT * FROM empLOYEE WHERE ROWNUM

102. 如何知道機器上的Oracle支援多少併發使用者數? 
SQL>conn internal ; 
SQL>show parameter processes ;

103. db_block_size可以修改嗎? 
一般不可以﹐不建議這樣做的。

104. 如何統計兩個表的記錄總數? 
select (select count(id) from aa)+(select count(id) from bb) 總數 from dual;

105. 怎樣用Sql語句實現查詢一列中第N大值? 
select * from 
(select t.*,dense_rank() over (order by sal) rank from employee) 
where rank = N;


106. 如何在給現有的日期加上2年?( 
select add_months(sysdate,24) from dual;

107. USED_UBLK為負值表示什麼意思? 
It is "harmless".

108. Connect string是指什麼? 
應該是tnsnames.ora中的服務名後面的內容

109. 怎樣擴大REDO LOG的大小? 
建立一個臨時的redolog組,然後切換日誌,刪除以前的日誌,建立新的日誌。

110. tablespace 是否不能大於4G? 
沒有限制.

111. 返回大於等於N的最小整數值? 
SELECT CEIL(N) FROM DUAL;

112. 返回小於等於N的最小整數值? 
SELECT FLOOR(N) FROM DUAL;

113. 返回當前月的最後一天? 
SELECT LAST_DAY(SYS2003-10-17) FROM DUAL;

114. 如何不同使用者間資料匯入? 
IMP SYSTEM/MANAGER FILE=AA.DMP FROMUSER=USER_OLD TOUSER=USER_NEW ROWS=Y INDEXES=Y ;

115. 如何找資料庫表的主鍵欄位的名稱? 
SQL>SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE='P' and table_name='TABLE_NAME';

116. 兩個結果集互加的函式? 
SQL>SELECT * FROM BSEMPMS_OLD INTERSECT SELECT * FROM BSEMPMS_NEW; 
SQL>SELECT * FROM BSEMPMS_OLD UNION SELECT * FROM BSEMPMS_NEW; 
SQL>SELECT * FROM BSEMPMS_OLD UNION ALL SELECT * FROM BSEMPMS_NEW;

117. 兩個結果集互減的函式? 
SQL>SELECT * FROM BSEMPMS_OLD MINUS SELECT * FROM BSEMPMS_NEW;

118. 如何配置Sequence? 
建sequence seq_custid 
create sequence seq_custid start 1 incrememt by 1; 
建表時: 
create table cust 
{ cust_id smallint not null, 
...} 
insert 時: 
insert into table cust 
values( seq_cust.nextval, ...)

日期的各部分的常用的的寫法 
119>.取時間點的年份的寫法: 
SELECT TO_CHAR(SYS2003-10-17,'YYYY') FROM DUAL;

120>.取時間點的月份的寫法: 
SELECT TO_CHAR(SYS2003-10-17,'MM') FROM DUAL;

121>.取時間點的日的寫法: 
SELECT TO_CHAR(SYS2003-10-17,'DD') FROM DUAL;

122>.取時間點的時的寫法: 
SELECT TO_CHAR(SYS2003-10-17,'HH24') FROM DUAL;

123>.取時間點的分的寫法: 
SELECT TO_CHAR(SYS2003-10-17,'MI') FROM DUAL;

124>.取時間點的秒的寫法: 
SELECT TO_CHAR(SYS2003-10-17,'SS') FROM DUAL;

125>.取時間點的日期的寫法: 
SELECT TRUNC(SYS2003-10-17) FROM DUAL;

126>.取時間點的時間的寫法: 
SELECT TO_CHAR(SYS2003-10-17,'HH24:MI:SS') FROM DUAL;

127>.日期,時間形態變為字元形態 
SELECT TO_CHAR(SYS2003-10-17) FROM DUAL;

128>.將字串轉換成日期或時間形態: 
SELECT TO_2003-10-17('2003/08/01') FROM DUAL;

129>.返回引數的星期幾的寫法: 
SELECT TO_CHAR(SYS2003-10-17,'D') FROM DUAL;

130>.返回引數一年中的第幾天的寫法: 
SELECT TO_CHAR(SYS2003-10-17,'DDD') FROM DUAL;

131>.返回午夜和引數中指定的時間值之間的秒數的寫法: 
SELECT TO_CHAR(SYS2003-10-17,'SSSSS') FROM DUAL;

132>.返回引數中一年的第幾周的寫法: 
SELECT TO_CHAR(SYS2003-10-17,'WW') FROM DUAL; 
虛擬欄位 
133. CURRVAL 和 nextval 
為表建立序列 
CREATE SEQUENCE EMPSEQ ... ; 
SELECT empseq.currval FROM DUAL ; 
自動插入序列的數值 
INSERT INTO emp 
VALUES (empseq.nextval, 'LEWIS', 'CLERK', 
7902, SYS2003-10-17, 1200, NULL, 20) ; 
134. ROWNUM 
按設定排序的行的序號 
SELECT * FROM emp WHERE ROWNUM 
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_indexes 
where user_ind_columns.index_name = user_indexes.index_name 
and user_ind_columns.table_name = user_indexes.table_name 
order by user_indexes.table_type, user_indexes.table_name, 
user_indexes.index_name, column_position; 
150. 如何監控 SGA 的命中率? 
select a.value + b.value "logical_reads", c.value "phys_reads", 
round(100 * ((a.value+b.value)-c.value) / (a.value+b.value)) "BUFFER HIT RATIO" 
from v$sysstat a, v$sysstat b, v$sysstat c 
where a.statistic# = 38 and b.statistic# = 39 
and c.statistic# = 40; 
151. 如何監控 SGA 中字典緩衝區的命中率? 
select parameter, gets,Getmisses , getmisses/(gets+getmisses)*100 "miss ratio", 
(1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100 "Hit ratio" 
from v$rowcache 
where gets+getmisses 0 
group by parameter, gets, getmisses; 
152. 如何監控 SGA 中共享快取區的命中率,應該小於1% ? 
select sum(pins) "Total Pins", sum(reloads) "Total Reloads", 
sum(reloads)/sum(pins) *100 libcache 
from v$librarycache; 
select sum(pinhits-reloads)/sum(pins) "hit radio",sum(reloads)/sum(pins) "reload percent" 
from v$librarycache; 
153. 如何顯示所有資料庫物件的類別和大小? 
select count(name) num_instances ,type ,sum(source_size) source_size , 
sum(parsed_size) parsed_size ,sum(code_size) code_size ,sum(error_size) error_size, 
sum(source_size) +sum(parsed_size) +sum(code_size) +sum(error_size) size_required 
from dba_object_size 
group by type order by 2; 
154. 監控 SGA 中重做日誌快取區的命中率,應該小於1% 
SELECT name, gets, misses, immediate_gets, immediate_misses, 
Decode(gets,0,0,misses/gets*100) ratio1, 
Decode(immediate_gets+immediate_misses,0,0, 
immediate_misses/(immediate_gets+immediate_misses)*100) ratio2 
FROM v$latch WHERE name IN ('redo allocation', 'redo copy'); 
155. 監控記憶體和硬碟的排序比率,最好使它小於 .10,增加 sort_area_size 
SELECT name, value FROM v$sysstat WHERE name IN ('sorts (memory)', 'sorts (disk)');

156. 如何監控當前資料庫誰在執行什麼SQL語句? 
SELECT osuser, username, sql_text from v$session a, v$sqltext b 
where a.sql_address =b.address order by address, piece; 
157. 如何監控字典緩衝區? 
SELECT (SUM(PINS - RELOADS)) / SUM(PINS) "LIB CACHE" FROM V$LIBRARYCACHE; 
SELECT (SUM(GETS - GETMISSES - USAGE - FIXED)) / SUM(GETS) "ROW CACHE" FROM V$ROWCACHE; 
SELECT SUM(PINS) "EXECUTIONS", SUM(RELOADS) "CACHE MISSES WHILE EXECUTING" FROM V$LIBRARYCACHE; 
後者除以前者,此比率小於1%,接近0%為好。 
SELECT SUM(GETS) "DICTIONARY GETS",SUM(GETMISSES) "DICTIONARY CACHE GET MISSES" 
FROM V$ROWCACHE

158. 監控 MTS 
select busy/(busy+idle) "shared servers busy" from v$dispatcher; 
此值大於0.5時,引數需加大 
select sum(wait)/sum(totalq) "dispatcher waits" from v$queue where type='dispatcher'; 
select count(*) from v$dispatcher; 
select servers_highwater from v$mts; 
servers_highwater接近mts_max_servers時,引數需加大 
159. 如何知道當前使用者的ID號? 
SQL>SHOW USER; 
OR 
SQL>select user from dual; 
160. 如何檢視碎片程度高的表? 
SELECT segment_name table_name , COUNT(*) extents 
FROM dba_segments WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BY segment_name 
HAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP BY segment_name); 
162. 如何知道表在表空間中的儲存情況? 
select segment_name,sum(bytes),count(*) ext_quan from dba_extents where 
tablespace_name='&tablespace_name' and segment_type='TABLE' group by tablespace_name,segment_name; 
163. 如何知道索引在表空間中的儲存情況? 
select segment_name,count(*) from dba_extents where segment_type='INDEX' and owner='&owner' 
group by segment_name; 
164、如何知道使用CPU多的使用者session? 
11是cpu used by this session 
select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value 
from v$session a,v$process b,v$sesstat c 
where c.statistic#=11 and c.sid=a.sid and a.paddr=b.addr order by value desc; 
165. 如何知道監聽器日誌檔案? 
以8I為例 
$ORACLE_HOME/NETWORK/LOG/LISTENER.LOG 
166. 如何知道監聽器引數檔案? 
以8I為例 
$ORACLE_HOME/NETWORK/ADMIN/LISTENER.ORA 
167. 如何知道TNS 連線檔案? 
以8I為例 
$ORACLE_HOME/NETWORK/ADMIN/TNSNAMES.ORA 
168. 如何知道Sql*Net 環境檔案? 
以8I為例 
$ORACLE_HOME/NETWORK/ADMIN/SQLNET.ORA 
169. 如何知道警告日誌檔案? 
以8I為例 
$ORACLE_HOME/ADMIN/SID/BDUMP/SIDALRT.LOG 
170. 如何知道基本結構? 
以8I為例 
$ORACLE_HOME/RDBMS/ADMIN/STANDARD.SQL 
171. 如何知道建立資料字典檢視? 
以8I為例 
$ORACLE_HOME/RDBMS/ADMIN/CATALOG.SQL 
172. 如何知道建立審計用資料字典檢視? 
以8I為例 
$ORACLE_HOME/RDBMS/ADMIN/CATAUDIT.SQL 
173. 如何知道建立快照用資料字典檢視? 
以8I為例 
$ORACLE_HOME/RDBMS/ADMIN/CATSNAP.SQL 
本講主要講的是SQL語句的優化方法! 主要基於ORACLE9I的. 
174. /*+ALL_ROWS*/ 
表明對語句塊選擇基於開銷的優化方法,並獲得最佳吞吐量,使資源消耗最小化. 
例如: 
SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='CCBZZP'; 
175. /*+FIRST_ROWS*/ 
表明對語句塊選擇基於開銷的優化方法,並獲得最佳響應時間,使資源消耗最小化. 
例如: 
SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='CCBZZP'; 
176. /*+CHOOSE*/ 
表明如果資料字典中有訪問表的統計資訊,將基於開銷的優化方法,並獲得最佳的吞吐量; 
表明如果資料字典中沒有訪問表的統計資訊,將基於規則開銷的優化方法; 
例如: 
SELECT /*+CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='CCBZZP'; 
177. /*+RULE*/ 
表明對語句塊選擇基於規則的優化方法. 
例如: 
SELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='CCBZZP'; 
178. /*+FULL(TABLE)*/ 
表明對錶選擇全域性掃描的方法. 
例如: 
SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='CCBZZP'; 
179. /*+ROWID(TABLE)*/ 
提示明確表明對指定表根據ROWID進行訪問. 
例如: 
SELECT /*+ROWID(BSEMPMS)*/ * FROM BSEMPMS WHERE ROWID>='AAAAAAAAAAAAAA' 
AND EMP_NO='CCBZZP'; 
180. /*+CLUSTER(TABLE)*/ 
提示明確表明對指定表選擇簇掃描的訪問方法,它只對簇物件有效. 
例如: 
SELECT /*+CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS 
WHERE DPT_NO='TEC304' AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 
181. /*+INDEX(TABLE INDEX_NAME)*/ 
表明對錶選擇索引的掃描方法. 
例如: 
SELECT /*+INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE BSEMPMS */ FROM BSEMPMS WHERE SEX='M'; 
182. /*+INDEX_ASC(TABLE INDEX_NAME)*/ 
表明對錶選擇索引升序的掃描方法. 
例如: 
SELECT /*+INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='CCBZZP'; 
183. /*+INDEX_COMBINE*/ 
為指定表選擇點陣圖訪問路經,如果INDEX_COMBINE中沒有提供作為引數的索引,將選擇出點陣圖索引的 
布林組合方式. 
例如: 
SELECT /*+INDEX_COMBINE(BSEMPMS SAL_BMI HIRE2003-10-17_BMI)*/ * FROM BSEMPMS 
WHERE SAL
184. /*+INDEX_JOIN(TABLE INDEX_NAME)*/ 
提示明確命令優化器使用索引作為訪問路徑. 
例如: 
SELECT /*+INDEX_JOIN(BSEMPMS SAL_HMI HIRE2003-10-17_BMI)*/ SAL,HIRE2003-10-17 
FROM BSEMPMS WHERE SAL
185. /*+INDEX_DESC(TABLE INDEX_NAME)*/ 
表明對錶選擇索引降序的掃描方法. 
例如: 
SELECT /*+INDEX_DESC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='CCBZZP'; 
186. /*+INDEX_FFS(TABLE INDEX_NAME)*/ 
對指定的表執行快速全索引掃描,而不是全表掃描的辦法. 
例如: 
SELECT /*+INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMS WHERE DPT_NO='TEC305'; 
187. /*+ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,...*/ 
提示明確進行執行規劃的選擇,將幾個單列索引的掃描合起來. 
例如: 
SELECT /*+INDEX_FFS(BSEMPMS IN_DPTNO,IN_EMPNO,IN_SEX)*/ * FROM BSEMPMS WHERE EMP_NO='CCBZZP' AND DPT_NO='TDC306'; 
188. /*+USE_CONCAT*/ 
對查詢中的WHERE後面的OR條件進行轉換為UNION ALL的組合查詢. 
例如: 
SELECT /*+USE_CONCAT*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M'; 
189. /*+NO_EXPAND*/ 
對於WHERE後面的OR 或者IN-LIST的查詢語句,NO_EXPAND將阻止其基於優化器對其進行擴充套件. 
例如: 
SELECT /*+NO_EXPAND*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M'; 
190. /*+NOWRITE*/ 
禁止對查詢塊的查詢重寫操作. 
191. /*+REWRITE*/ 
可以將檢視作為引數. 
192. /*+MERGE(TABLE)*/ 
能夠對檢視的各個查詢進行相應的合併. 
例如: 
SELECT /*+MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELET DPT_NO 
,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO 
AND A.SAL>V.AVG_SAL; 
193. /*+NO_MERGE(TABLE)*/ 
對於有可合併的檢視不再合併. 
例如: 
SELECT /*+NO_MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELET DPT_NO 
,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO 
AND A.SAL>V.AVG_SAL; 
194. /*+ORDERED*/ 
根據表出現在FROM中的順序,ORDERED使ORACLE依此順序對其連線. 
例如: 
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; 
195. /*+USE_NL(TABLE)*/ 
將指定表與巢狀的連線的行源進行連線,並把指定表作為內部表. 
例如: 
SELECT /*+ORDERED USE_NL(BSEMPMS)*/ BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 
196. /*+USE_MERGE(TABLE)*/ 
將指定的表與其它行源通過合併排序連線方式連線起來. 
例如: 
SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE 
BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 
197. /*+USE_HASH(TABLE)*/ 
將指定的表與其它行源通過雜湊連線方式連線起來. 
例如: 
SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE 
BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 
198. /*+DRIVING_SITE(TABLE)*/ 
強制與ORACLE所選擇的位置不同的表進行查詢執行. 
例如: 
SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,[email protected] WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO; 
199. /*+LEADING(TABLE)*/ 
將指定的表作為連線次序中的首表. 
200. /*+CACHE(TABLE)*/ 
當進行全表掃描時,CACHE提示能夠將表的檢索塊放置在緩衝區快取中最近最少列表LRU的最近使用端 
例如: 
SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS; 
201. /*+NOCACHE(TABLE)*/ 
當進行全表掃描時,CACHE提示能夠將表的檢索塊放置在緩衝區快取中最近最少列表LRU的最近使用端 
例如: 
SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS; 
202. /*+APPEND*/ 
直接插入到表的最後,可以提高速度. 
insert /*+append*/ into test1 select * from test4 ; 
203. /*+NOAPPEND*/ 
通過在插入語句生存期內停止並行模式來啟動常規插入. 
insert /*+noappend*/ into test1 select * from test4 ;

ORACLE內部函式篇 
204. 如何得到字串的第一個字元的ASCII值? 
ASCII(CHAR) 
SELECT ASCII('ABCDE') FROM DUAL; 
結果: 65 
205. 如何得到數值N指定的字元? 
CHR(N) 
SELECT CHR(68) FROM DUAL; 
結果: D 
206. 如何連線兩個字串? 
CONCAT(CHAR1,CHAR2) 
SELECT CONCAT('ABC','DEFGH') FROM DUAL; 
結果: 'ABCDEFGH' 
207. 如何將列中的數值代替為字串? 
DECODE(CHAR,N1,CHAR1,N2,CHAR2...) 
SELECT DECODE(DAY,1,'SUN',2,'MON') FROM DUAL; 
208. INITCAP(CHAR) 
將字串CHAR的第一個字元為大寫,其餘為小寫. 
SELECT INITCAP('ABCDE') FROM DUAL; 
209. LENGTH(CHAR) 
取一字串CHAR的長度. 
SELECT LENGTH('ABCDE') FROM DUAL; 
210. LOWER(CHAR) 
將字串CHAR全部變為小寫. 
SELECT LOWER('ABCDE') FROM DUAL; 
211. LPAD(CHAR1,N,CHAR2) 
用字串CHAR2包括的字元左填CHAR1,使其長度為N. 
SELECT LPAD('ABCDEFG',10'123') FROM DUAL; 
結果: '123ABCDEFG' 
212. LTRIM(CHAR,SET) 
從字串CHAR的左邊移去字串SET中的字元,直到第一個不是SET中的字元為止. 
SELECT ('CDEFG','CD') FROM DUAL; 
結果: 'EFG' 
213. NLS_INITCAP(CHAR) 
取字元CHAR的第一個字元大寫,其餘字元為小寫. 
SELECT NLS_INITCAP('ABCDE') FROM DUAL; 
214. NLS_LOWER(CHAR) 
將字串CHAR包括的字元全部小寫. 
SELECT NLS_LOWER('AAAA') FROM DUAL; 
215. NLS_UPPER(CHAR) 
將字串CHAR包括的字元全部大寫. 
SELECT NLS_UPPER('AAAA') FROM DUAL; 
216. REPLACE(CHAR1,CHAR2,CHAR3) 
用字串CHAR3代替每一個列值為CHAR2的列,其結果放在CHAR1中. 
SELECT REPLACE(EMP_NO,'123','456') FROM DUAL; 
217. RPAD(CHAR1,N,CHAR2) 
用字串CHAR2右填字串CHAR1,使其長度為N. 
SELECT RPAD('234',8,'0') FROM DUAL; 
218. RTRIM(CHAR,SET) 
移去字串CHAR右邊的字串SET中的字元,直到最後一個不是SET中的字元為止. 
SELECT RTRIM('ABCDE','DE') FROM DUAL; 
219. SUBSTR(CHAR,M,N) 
得到字串CHAR從M處開始的N個字元. 雙位元組字元,一個漢字為一個字元的. 
SELECT SUBSTR('ABCDE',2,3) FROM DUAL; 
220. SUBSTRB(CHAR,M,N) 
得到字串CHAR從M處開始的N個字元. 雙位元組字元,一個漢字為二個字元的. 
SELECT SUBSTRB('ABCDE',2,3) FROM DUAL; 
221. TRANSLATE(CHAR1,CHAR2,CHAR3) 
將CHAR1中的CHAR2的部分用CHAR3代替. 
SELECT TRANSLATE('ABCDEFGH','DE','MN') FROM DUAL; 
222. UPPER(CHAR) 
將字串CHAR全部為大寫. 
223. ADD_MONTHS(D,N) 
將N個月增加到D日期. 
SELECT ADD_MONTHS(SYS2003-10-17,5) FROM DUAL; 
224. LAST_DAY(D) 
得到包含D日期的月份的最後的一天的日期. 
SELECT LAST_DAY(SYS2003-10-17) FROM DUAL; 
225. MONTH_BETWEEN(D1,D2) 
得到兩個日期之間的月數. 
SELECT MONTH_BETWEEN(D1,D2) FROM DUAL; 
226. NEXT_DAY(D,CHAR) 
得到比日期D晚的由CHAR命名的第一個週日的日期. 
SELECT NEXT_DAY(TO_2003-10-17('2003/09/20'),'SATDAY') FROM DUAL; 
227. ROUNT(D,FMT) 
得到按指定的模式FMT舍入到的最進的日期. 
SELECT ROUNT('2003/09/20',MONTH) FROM DUAL; 
228. SYS2003-10-17 
得到當前系統的日期和時間. 
SELECT SYS2003-10-17 FROM DUAL; 
229. TO_CHAR(D,FMT) 
將日期D轉換為FMT的字串. 
SELECT TO_CHAR(SYS2003-10-17,'YYYY/MM/DD') FROM DUAL; 
230. TO_2003-10-17(CHAR,FMT) 
將字串CHAR按FMT的格式轉換為日期. 
SELECT TO_2003-10-17('2003/09/20','YYYY/MM/DD') FROM DUAL; 
231. ABS(N) 
得到N的絕對值. 
SELECT ABS(-6) FROM DUAL; 
232. CEIL(N) 
得到大於或等於N的最大整數. 
SELECT CEIL(5.6) FROM DUAL; 
233. COS(N) 
得到N的餘弦值. 
SELECT COS(1) FROM DUAL; 
234. SIN(N) 
得到N的正弦值. 
SELECT SIN(1) FROM DUAL; 
235. COSH(N) 
得到N的雙曲餘弦值. 
SELECT COSH(1) FROM DUAL; 
236. EXP(N) 
得到N的E的N次冪. 
SELECT EXP(1) FROM DUAL; 
237. FLOOR(N) 
得到小於或等於N的最小整數. 
SELECT FLOOR(5.6) FROM DUAL; 
238. LN(N) 
得到N的自然對數. 
SELECT LN(1) FROM DUAL; 
239. LOG(M,N) 
得到以M為底N的對數. 
SELECT LOG(2,8) FROM DUAL; 
240. MOD(M,N) 
得到M除以N的餘數. 
SELECT MOD(100,7) FROM DUAL; 
241. POWER(M,N) 
得到M的N冪. 
SELECT POWER(4,3) FROM DUAL; 
242. ROUND(N,M) 
將N舍入到小數點後M位. 
SELECT (78.87653,2) FROM DUAL; 
243. SIGN(N) 
當N0時,得到1; 
當N=0時,得到0; 
SELECT SIGN(99) FROM DUAL; 
244. SINH(N) 
得到N的雙曲正弦值. 
SELECT SINH(1) FROM DUAL; 
245. SORT(N) 
得到N的平方根,N>=0 
SELECT SORT(9) FROM DUAL; 
246. TAN(N) 
得到N的正切值. 
SELECT TAN(0) FROM DUAL; 
247. TANH(N) 
得到N的雙曲正切值. 
SELECT TANH(0) FROM DUAL; 
248. TRUNC(N,M) 
得到在M位截斷的N的值. 
SELECT TRUNC(7.7788,2) FROM DUAL; 
249. COUNT() 
計算滿足條件的記錄數. 
SELECT COUNT(*) FROM TABLE1 WHERE COL1='AAA'; 
250. MAX() 
對指定的列求最大值. 
SELECT MAX(COL1) FROM TABLE1; 
251. MIN() 
對指定的列求最小值. 
SELECT MIN(COL1) FROM TABLE1; 
252. AVG() 
對指定的列求平均值. 
SELECT AVG(COL1) FROM TABLE1; 
253. SUM() 
計算列的和. 
SELECT SUM(COL1) FROM DUAL; 
254. TO_NUMBER(CHAR) 
將字元轉換為數值. 
SELECT TO_NUMBER('999') FROM DUAL; 
ORACLE內部函式篇 
255. CHARTOROWID(CHAR) 
將包含外部語法ROWID的CHAR或VARCHAR2數值轉換為內部的二進位制語法,引數CHAR必須是包含外部語法的ROWID的18字元的字串. 
SELECT NAME FROM BSEMPMS WHERE ROWID=CHARTOROWID('AAAAfZAABAAACp8AAO'); 
NAME : LEIXUE 
256. CONVERT(CHAR,DEST_CHAR_SET,SOURCE_CHAR_SET) 
CONVERT將字串CHAR中的字元從SOURCE_CHAR_SET標識的字符集轉換為由DEST_CHAR_SET標識的字符集 
SELECT CONVERT('GroB','US7ASCII','WE8HP') 'CONVERSION' FROM PUBS; 
CONVERSION: Gross 
257. HEXTORAW(CHAR) 
將包含十六進位制的CHAR轉換為一個RAW數值. 
INSERT INTO BSEMPMS(RAW_COLUMN) SELECT HEXTORAW('7D') FROM TEST; 
258. RAWTOHEX(RAW) 
將RAW數值轉換為一個包含十六進位制的CHAR值. 
SELECT RAWTOHEX(RAW_COLUMN) 'CONVERSION' FROM BSEMPMS; 
CONVERSION: 7D 
259. ROWIDTOCHAR(ROWID) 
將一個ROWID數值轉換為VARCHAR2資料型別. 
SELECT ROWID FROM BSEMPMS WHERE ROWIDTOCHAR(ROWID) LIKE '%BR1AAB%'; 
260. TO_MULTI_BYTE(CHAR) 
將CHAR中的單位元組轉換為等價的多位元組字元. 
SELECT TO_MULTI_BYTE('ASFDFD') FROM TEST; 
261. TO_SINGLE_BYTE(CHAR) 
將CHAR中的多位元組轉換為等價的單位元組字元. 
SELECT TO_SINGLE_BYTE('ASFDFD') FROM TEST; 
262. TRANSLATE USING(TEXT USING {CHAR_CS|NCHAR_CS}) 
將文字TEXT按照指定的轉換方式轉換成資料庫字符集和民族字符集. 
其中TEXT是待轉換的. 
USING CHAR_CS引數轉換TEXT為資料庫字符集,輸出資料型別是VARCHAR2. 
USING NCHAR_CS引數轉換TEXT為資料庫字符集,輸出資料型別是NVARCHAR2. 
CREATE TABLE TEST(CHAR_COL CHAR(20),NCHAR_COL NCHAR(20)); 
INSERT INTO TEST VALUES('HI,N'BYE'); 
SELECT * FROM TEST; 
263. DUMP(EXPR,RETURN_FORMAT,START_POSITION,LENGTH) 
返回一個包含資料型別程式碼,位元組長度等內部表示資訊的VARCHAR2值.返回結果是當前資料庫字符集,資料型別按照下面規定的內部資料型別的編碼作為一個數字進行返回: 
程式碼 資料型別 
0 VARCHAR2 
1 NUMBER 
8 LONG 
12 2003-10-17 
23 RAW 
24 LONG RAW 
69 ROWID 
96 CHAR 
106 MSSLABEL 
引數RETUEN_FORMAT指定按照下面的基數表示返回的數值. 
RETURN_FORMAT RESULT 
8 8進位制 
10 10進位制 
16 16進位制 
17 單字元表示 
如果引數RETURN_FORMAT沒有指定,則按十進位制表示返回. 
如果引數START_POSITION和LENGTH被指定,則從START_POSITION開始的長為LENGTH的位元組將被返回,預設是返回整數表示. 
SELECT DUMP('ABC',1016) FROM TEST; 
select dump(ename,8,3,2) 'example' from emp where name='ccbzzp'; 
264. empty_b|clob() 
返回一個空的LOB定位符,用在初始化LOB變數,或用在INSERT及UP2003-10-17宣告去初始化LOB列或將其屬性置為空. 
INSERT INTO TABLE1 VALUES(EMPTY_BLOB()); 
UP2003-10-17 TABLE1 SET CLOB_COL=EMPTY_BLOB(); 
265. BFILENAME('DIRECTORY','FILENAME') 
返回一個BFILE定位符,相關的二進位制LOB物理檔案在伺服器的檔案系統上.目錄DIRECTORY是指在伺服器的檔案系統上實際搜尋路徑全名的別名. FILENAME是指伺服器的檔案系統的檔名. 
INSERT INTO FILE_TAB VALUES(BFILENAME('LOB_DIR','IMAGE1.GIF')); 
266. GREATEST(EXPR,EXPR,...) 
GREATEST返回引數的最大值. 
SELECT GREATEST('HARRY','HARRIOT','HAROLD') 'SAMPLE' FROM TABLE1; 
267. LEAST(EXPR,EXPR,...) 
LEAST返回引數的最小值. 
SELECT LEAST('HARRY','HARRIOT','HAROLD') 'SAMPLE' FROM TABLE1; 
268. NLS_CHARSET_DECL_LEN(BYTECNT,CSID) 
返回一個NCHAR列的寬度. 
SELECT NLS_CHARSET_DECL_LEN(200,NLS_CHARSET_ID('JA16EEFDFDF')) FROM TABLE1; 
269. NLS_CHARSET_ID(TEXT) 
返回相應於NLS字符集名字的NLS字符集ID數. 
SELECT NLS_CHARSET_D('JADFDFFDF') FROM TABLE1; 
270. NLS_CHARSET_NAME(N) 
返回相應於ID數N的NLS字符集名稱. 
SELECT NLS_CHARSET_NAME(2) FROM TABLE1; 
271. NVL(EXPR1,EXPR2) 
若EXPR1是NULL,則返回EXPR2,否則返回EXPR1. 
SELECT NAME,NVL(TO_CHAR(COMM),'NOT APPLICATION') FROM TABLE1; 
272. UID 
返回唯一標識當前資料庫使用者的整數. 
SELECT UID FROM TABLE1; 
273. USER 
用VARCHAR2資料型別返回當前ORACLE使用者的名稱. 
SELECT USER,UID FROM TABLE1; 
274. USERENV(OPTION) 
返回當前的會話資訊. 
OPTION='ISDBA'若當前是DBA角色,則為TRUE,否則FALSE. 
OPTION='LANGUAGE'返回資料庫的字符集. 
OPTION='SESSIONID'為當前會話識別符號. 
OPTION='ENTRYID'返回可審計的會話識別符號. 
OPTION='LANG'返回會話語言名稱的ISO簡記. 
OPTION='INSTANCE'返回當前的例項. 
SELECT USERENV('LANGUAGE') FROM DUAL; 
275. VSIZE(EXPR) 
返回EXPR內部表示的位元組數. 
SELECT NAME,VSIZE(NAME) FROM TABLE1; 
276. DEREF(E) 
返回引數E的物件引用. 
SELECT DEREF(C2) FROM TABLE1; 
277. REFTOHEX(R) 
將引數R轉換為16進位制. 
SELECT REFTOHEX(C2) FROM TABLE1; 
278. MAKE_REF(TABLE,KEY,KEY...) 
通過把給定的鍵作為主鍵來建立給定檢視物件中一行的引用. 
CREATE TYPE T1 AS OBJECT(A NUMBER,B NUMBER); 
CREATE TABLE TB1(C1 NUMBER,C2 NUMBER,PRIMARY KEY(C1,C2)); 
CREATE VIEW V1 OF T1 WITH OBJECT OID(A,B) AS SELECT * FROM TB1; 
SELECT MAKE_REF(V1,1,3) FROM PUBS; 
279. STDDEV(DISTINCT|ALL X) 
STDDEV給出一組行值的標準差. 
SELECT STDDEV(SALARY) AS EXAMPLE FROM EMPLOYEE; 
280. VARIANCE(DISTINCT|ALL X) 
VARIANCE返回一組行中所有VALUE的方差. 
SELECT VARIANCE(SALARY) AS EXAMPLE FROM EMPLOYEE; 
9I管理的V$檢視。 
281. V$ACCESS 
顯示當前被鎖定的資料庫中的物件及正在訪問他們的會話. 
282. V$ACTIVE_INSTANCES 
為當前安裝的資料庫中出現的所有例項建立從例項名到例項號的對映. 
283. V$ACTIVE_SESS_POOL_MTH 
所有活動的會話池資源分配方法. 
284. V$AQ 
當前資料庫中的佇列的統計量. 
285. V$ARCHIVE 
歸檔所需的重做日誌檔案中的資訊. 
286. V$ARCHIVE_DEST 
當前例項的所有歸檔日誌目的檔案及它們的當前值,模式,狀態. 
287. V$ARCHIVE_PROCESSES 
為一個例項提供不同的ARCH程序狀態的資訊. 
288. V$ARCHIVE_LOG 
控制檔案中的歸檔日誌資訊. 
289. V$BACKUP 
所有聯機資料檔案的備份狀態. 
290. V$BACKUP_ASYNC_IO 
從控制檔案中顯示備份集的資訊. 
291. V$BACKUP_CORRUPTION 
從控制檔案中顯示資料檔案備份中有關損壞的資訊. 
292. V$BACKUP_DATAFILE 
從控制檔案中顯示備份資料檔案和備份控制檔案的資訊. 
293. V$BACKUP_DEVICE 
顯示關於支援備份裝置的資訊. 
294. V$BACKUP_PIECE 
從控制檔案中顯示備份塊的資訊. 
295. V$BACKUP_REDOLOG 
從控制檔案中顯示關於備份集中歸檔日誌的資訊. 
296. V$BACKUP_SET 
從控制檔案中顯示備份集的資訊. 
297. V$BACKUP_SYNC_IO 
從控制檔案中顯示備份集的資訊. 
298. V$BGPROCESS 
描述後臺程序. 
299. V$BH 
是9I的實時應用叢集檢視.為系統全域性區中的每一個緩衝區給出了狀態和探查次數. 
300. V$BSP 
顯示用在快取中塊伺服器後臺程序上的統計資訊. 
301. V$BUFFER_POOL 
顯示例項緩衝池的資訊. 
302. V$BUFFER_POOL_STATISTICS 
顯示例項緩衝池的資訊. 
303. V$CACHE 
包含當前例項的SGA中的每一個塊的頭部資訊. 
304. V$CACHE_LOCK 
包含當前例項的SGA中的每一個塊的頭部資訊. 和V$CACHE非常相似, 
除特使平臺鎖管理器識別符號號不同外. 
305. V$CACHE_TRANSFER 
除了只顯示那些被探查了至少一次的塊的資訊外,和V$CACHE功能相同. 
306. V$CIRCUIT 
包含關於虛電路的資訊,是使用者通過排程程式和伺服器到資料庫的所有連線. 
307. V$CLASS_PING 
顯示每一個塊類中被探查塊的數目. 
308. V$COMPATIBILITY 
顯示資料庫例項使用的特徵,可以阻止資料庫回到早期的版本中去. 
309. V$COMPATSEG 
顯示資料庫例項使用的永久性特徵,可以阻止資料庫回到早期的版本中去. 
310. V$CONTEXT 
列出當前對話的設定屬性. 
311. V$CONTROLFILE 
列出控制檔案的名稱. 
312. V$CONTROLFILE_RECORD_SECTION 
顯示控制檔案記錄部分的資訊. 
313. V$COPY_CORRUPTION 
顯示控制檔案中資料檔案損壞的資訊. 
314. V$CR_BLOCK_SERVER 
顯示用在快取中塊伺服器後臺程序上的統計資訊. 
315. V$DATABASE 
包含控制檔案中資料庫的資訊. 
316. V$DATAFILE 
包含控制檔案中資料庫檔案的資訊. 
317. V$DATAFILE_COPY 
包含控制檔案中資料庫檔案副本的資訊. 
318. V$DATAFILE_HEADER 
顯示資料檔案頭部的資料檔案資訊. 
319. V$DB_CACHE_ADVICE 
根據快取的大小估計出物理讀的數量. 
320. V$DB_OBJECT_CACHE 
快取在庫快取中的資料庫物件. 
321. V$DB_PIPES 
顯示例項中的共享池當前描繪的管道. 
322. V$DBFILE 
列出組成資料庫的所有資料檔案. 
323. V$DBLINK 
查詢會話所開啟的所有資料庫連線. 
324. V$DELETED_OBJECT 
顯示控制檔案中被刪除歸檔日誌. 
325. V$DISPATCHER 
提供排程程序的資訊. 
326. V$DISPATCHER_RATE 
為排程程序提供優質提供速率統計量. 
327. V$DLM_ALL_LOCKS 
列出當前所有鎖的資訊. 
328. V$DLM_CONVERT_LOCAL 
本地鎖轉換操作所消耗的時間. 
329. V$DLM_CONVERT_REMOTE 
遠端鎖轉換操作所消耗的時間. 
330. V$DLM_LATCH 
它是過時的,參見V$LATCH 
331. V$DLM_LOCKS 
這些是鎖管理器已知的被阻塞或阻塞其它物件的鎖資訊. 
332. V$DLM_MISC 
顯示多種DLM統計量. 
333. V$DLM_RESS 
顯示當前鎖管理器已知的全部資源的資訊. 
334. V$ENABLEDPRIVE 
顯示被授予的特權. 
335. V$ENQUEUE_LOCK 
顯示排隊物件所擁有的全部鎖. 
336. V$EVENT_NAME 
包含等待事件的資訊. 
337. V$EXECUTION 
顯示並行執行中的資訊. 
338. V$FALSE_PING 
可能得到探查失敗的緩衝區. 
339. V$FAST_START_SERVERS 
執行並行操作事務恢復的所有從屬操作的資訊. 
340. V$FAST_START_TRANSACTIONS 
恢復中的事務進展資訊. 
341. V$FILE_CACHE_TRANSFER 
顯示每個資料檔案中探查的塊的數量. 
342. V$FILE_PING 
顯示每個資料檔案被探查的塊數目. 
343. V$FILESTAT 
包含檔案關於讀/寫統計量資訊. 
344. V$FIXED_TABLE 
顯示資料庫中所有動態效能表和檢視及匯出表. 
345. V$FIXED_VIEW_DEFINITION 
顯示所有固定檢視的定義. 
346. V$GC_ELEMENTS_WITH_COLLISIONS 
可以找到保護多快取的鎖. 
347. V$GES_BLOCKING_ENQUEUE 
這些是鎖管理器已知的被阻塞或阻塞其它物件的鎖資訊. 
348. V$GES_CONVERT_LOCAL 
本地鎖轉換操作所消耗的時間. 
349. V$GES_CONVERT_REMOTE 
遠端鎖轉換操作所消耗的時間. 
350. V$GES_ENQUEUE 
顯示當前鎖管理員知道的所有的鎖. 
351. V$GES_LATCH 
參見V$LATCH 
352. V$GES_RESOURCE 
顯示當前鎖管理器已知的全部資源的資訊. 
353. V$GES_STATISTICS 
顯示多種DLM統計量. 
354. V$GLOBAL_BLOCKED_LOCKS 
顯示全域性塊鎖. 
355. V$GLOBAL_TRANSACTION 
顯示當前啟用的全域性事務的資訊. 
356. V$HS_AGENT 
標識當前執行在一個給定的主機上的HS代理的集合. 
357. V$HS_SESSION 
ORACLE伺服器開啟的HS會話集. 
358. V$INDEXED_FIXED_COLUMN 
顯示建立索引的動態效能表中的列(X$表). 
359. V$INSTANCE 
顯示當前例項的狀態. 
360. V$INSTANCE_RECOVERY 
用來監視執行使用者指定恢復讀次數的限制機制. 
361. V$LATCH 
為非雙親簡易鎖列出統計量. 
362. V$LATCH_CHILDREN 
關於子簡易鎖的統計量. 
363. V$LATCH_MISSES 
試圖獲得一個簡易鎖失敗的統計量. 
364. V$LATCH_PARENT 
包含關於雙親簡易鎖的統計量. 
365. V$LATCHHOLDER 
當前簡易鎖持有者的資訊. 
366. V$LATCHNAME 
包含關於顯示在V$LATCH中的簡易鎖的解碼簡易鎖名字的資訊. 
367. V$LIBRARYCACHE 
關於快取記憶體效能和活動的統計量. 
368. V$LICENSE 
許可證限制的資訊. 
369. V$LOADCSTAT 
包含在一個直接裝載執行過程中所編譯的SQL*LOADER統計量. 
370. V$LOCK 
當前ORACLE所持有的鎖. 
371. V$LOCK_ACTIVITY 
顯示當前例項的DLM鎖操作活動. 
372. V$LOCK_ELEMENT 
每一個被快取使用的PCM鎖在V$LOCK_ELEMENTS中都有一個條目. 
373. V$LOCKED_OBJECT 
列出每個事務所獲得的全部鎖. 
374. V$LOCK_WITH_COLLISIONS 
可以查詢出保護多緩衝區的鎖. 
375. V$LOG 
控制檔案中日誌檔案的資訊. 
376. V$LOG_HISTORY 
控制檔案中日誌檔案的歷史資訊. 
377. V$LOGFILE 
包含重做日誌檔案的資訊. 
378. V$LOGHIST 
控制檔案中日誌檔案的日誌歷史資訊. 
379. V$LOGMNR_CONTENTS 
日誌歷史資訊. 
380. V$LOGMNR_DICTIONARY 
日誌歷史資訊. 
381. V$LOGMNR_LOGS 
日誌資訊. 
382. V$LOGMNR_PARAMETERS 
日誌資訊. 
383. V$MTS 
包含調節多執行緒的伺服器的資訊. 
384. V$MYSTAT 
當前會話的統計量. 
385. V$NLS_PARAMETERS 
當前NLS引數資訊. 
386. V$NLS_VALID_VALUES 
列出所有NLS引數的有效值. 
387. V$OBJECT_DEPENDENCY 
能夠通過當前裝載在共享池中的包,過程或遊標來決定依賴哪一個物件. 
388. V$OBJECT_USAGE 
來監視索引的使用. 
389. V$OBSOLETE_PARAMETER 
列出陳舊的引數. 
390. V$OFFINE_RANGE 
顯示控制檔案中資料檔案的離線資訊. 
391. V$OPEN_CURSOR 
列出每一個會話當前開啟的和解析的遊標. 
392. V$OPTION 
列出ORACLE服務安裝的狀況. 
393. V$PARALLEL_DEGREE_LIMIT_MTH 
顯示所有有效的並行度限制資源分配的方法. 
394. V$PARAMETER 
列出關於初始化引數的資訊. 
395. V$PARAMETER2 
列出了當前影響會話的引數和引數值. 
396. V$PGASTAT 
列出ORACLE記憶體使用統計. 
397. V$PING 
與V$CACHE一樣. 
398. V$PQ_SESSTAT 
列出並行查詢會話的統計資訊. 
399. V$PQ_SLAVE 
一個例項上每個活動並行執行伺服器的統計量. 
400. V$PQ_SYSSTAT 
列出並行查詢的系統的統計量.

9I管理的資料字典USER檢視。 
645. USER_ALL_TABLES 
包含對使用者可用的表的描述. 
646. USER_ARGUMENTS 
列出對使用者可存取的物件中的引數. 
647. USER_ASSOCIATIONS 
當前使用者所擁有的相關物件的使用者定義的統計. 
648. USER_AUDIT_OBJECT 
關於物件的語句審計跟蹤記錄. 
649. USER_AUDIT_SESSION 
關於使用者連線或斷開的全部審計跟蹤記錄. 
650. USER_AUDIT_STATEMENT 
列出使用者發出的GRANT,REVOKE,AUDIT,NOAUDIT,ALTER SYSTEM語句的審計跟蹤條目. 
651. USER_AUDIT_TRAIL 
與使用者有關的審計跟蹤條目. 
652. USER_BASE_TABLE_MVIEWS 
當前使用者擁有的所有使用物化檢視日誌的物化檢視. 
653. USER_CATALOG 
使用者擁有的表,檢視,同義詞和序列. 
654. USER_CLU_COLUMNS 
使用者表的列到聚集列的對映. 
655. USER_CLUSTER_HASH_EXPRESSIONS 
使用者可存取的所有聚集及雜湊函式. 
656. USER_CLUSTERS 
使用者擁有的聚集的說明. 
657. USER_COL_COMMENTS <