星期日, 9月 10, 2006

Oracle常用傻瓜問題1000問 [9I ADMIN]

忘了這編是從那裡下載,但我覺得非常值得記錄下來作日後參考.
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;

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{&amp;}t','at{}','at'));

67. EXP 如何加?????參數?
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 COL1COL2 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 <= to_char(to_date('20031231','yyyymmdd'),'ddd'); 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 <>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 < deptno =" 20" saddr =" b.session_addr" hash_value =" (" sid =" &sid" col1="D.COL1" col2="D.COL2);" col1="D.COL1" col2="D.COL2);">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<5000000 emp_no="CCBZZP" sex="M" dpt_no="V.DPT_NO">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,DEPT@BSDPTMS 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) 當N<0時,得到-1;>0時,得到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_CSNCHAR_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_bclob() 返回一個空的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(DISTINCTALL X) STDDEV給出一組行值的標準差. SELECT STDDEV(SALARY) AS EXAMPLE FROM EMPLOYEE;
280. VARIANCE(DISTINCTALL 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
列出用戶表或視圖的列上的註釋.
658. USER_COL_PRIVS
列出列上的授權,用戶是所有者,授予者或被授予者.
659. USER_COL_PRIVS_MADE
列出用戶擁有對象的列上的全部授權.
660. USER_COL_PRIVS_RECD
列出列上的授權,用戶是被授予者.
661. USER_COLL_TYPES
用戶的命名集合類型.
662. USER_CONS_COLUMNS
用戶擁有的約束定義中的列信息.
663. USER_CONSTRAINTS
用戶表上的約束定義.
664. USER_DB_LINKS
數據庫鏈信息.
665. USER_DEPENDENCIES
因戶的對象之間的依賴關係.
666. USER_DIM_ATTRIBUTES
當前用戶模式下維級別和功能依賴之間的關係.
667. USER_DIM_CHILD_OF
當前用戶擁有的1到N維水平的層次關係.
668. USER_DIM_HIERARCHIES
當前用戶擁有的維的層次.
669. USER_DIM_JOIN_KEY
當前用戶擁有的維之間的連接.
670. USER_DIM_LEVEL_KEY
當前用戶擁有的一個維級的列.
671. USER_DIM_LEVELS
當前用戶擁有的一個維列.
672. USER_DIMENSIONS
當前用戶模式下維對像.
673. USER_ERRORS
用戶的所有存儲對像上的當前錯誤.
674. USER_EXTENTS
屬於用戶對象的段的範圍.
675. USER_EXTERNAL_TABLES
當前用戶擁有的所有的外部對像.
676. USER_FREE_SPACE
用戶可存取表空間中的空閒範圍.
678. USER_HISTOGRAMS
該視圖是USER_HISTOGRAMS的同義詞.
679. USER_IND_COLUMNS
用戶索引和表上的列.
680. USER_IND_EXPRESSIONS
當前用戶擁有的表上基於函數的索引的表達式.
681. USER_IND_SUBPARTITIONS
當前用戶擁有的每個字分區的屬性,分區級別的分區信息,子分區的存儲參數,ANALYZE決定的各種分
區統計.
682. USER_INDEXES
當前用戶擁有的索引的說明.
683. USER_INDEXTYPE_COMMENTS
當前用戶擁有的用戶定義的索引類型的所有註釋.
684. USER_INDEXTYPE_OPERATORS
當前用戶擁有的索引類型的所有操作.
685. USER_INDEXTYPES
當前用戶擁有的所有索引類型.
686. USER_INTERNAL_TRIGGERS
當前用戶擁有的所有表上的內部觸發器.
687. USER_JOBS
用戶擁有的所有作業.
688. USER_JOIN_IND_COLUMNS
當前用戶擁有的數據庫中所有的連接條件.
689. USER_LIBRARIES
列出用戶擁有的所有庫.
690. USER_LOB_PARTITIONS
當前用戶擁有的LOB數據子分區中的分區級屬性.
691. USER_LOBS
顯示用戶表中包含的LOB.
692. USER_LOG_GROUP_COLUMNS
當前用戶擁有的在日誌中指定的列.
693. USER_LOG_GROUPS
數據庫中當前用戶擁有的所有表的日誌組定義.
694. USER_METHOD_PARAMS
當前用戶擁有的用戶類型的方法參數.
695. USER_MVIEW_AGGREGATES
當前用戶擁有的在聚集實例化視圖的SELECT列表中出現的分組函數.
696. USER_MVIEW_ANALYSIS
當前用戶擁有的所有的物化視圖用來潛在地支持查詢重寫並有可用於應用程序分析的附加信息.
697. USER_MVIEW_DETAIL_RELATIONS
代表命名細節關係.
698. USER_MVIEW_JOINS
描述在一個實例化視圖的WHERE子句中,兩個列之間的連接.
699. USER_MVIEW_KEYS
物化視圖基於當前用戶模式的在SELECT列表中的列或表達式.
700. USER_MVIEW_REFRESH_TIMES
數據庫中當前用戶擁有的所有的物化視圖的刷新時間.
701. USER_MVIEWS
數據庫中當前用戶擁有的所有的物化視圖.
702. USER_NESTED_TABLES
當前用戶擁有的表中的嵌套表.
703. USER_OBJ_AUDIT_OPTS
用戶擁有的表和視圖的審計選項.
704. USER_OBJECT_SIZE
用戶擁有的PL/SQL對象的大小.
705. USER_OBJECT_TABLES
用戶擁有的對象表.
706. USER_OBJECT
用戶擁有的對象.
707. USER_OPANCILLARY
當前用戶擁有的操作的輔助信息.
708. USER_OPARGUMENTS
當前用戶擁有的操作的論據信息.
709. USER_OPBINDINGS
當前用戶擁有的操作的綁定.
710. USER_OPERATOR_COMMENTS
當前用戶擁有的用戶自定義的操作的所有註釋.
711. USER_OPERATORS
當前用戶擁有的所有操作.
712. USER_OUTLINE_HINTS
當前用戶擁有的組成概要的暗示的設置.
713. USER_OUTLINES
當前用戶擁有的所有概要.
714. USER_PART_COL_STATISTICS
當前用戶擁有的表分區的列統計和柱狀圖數據.
715. USER_PART_HISTOGRAMS
當前用戶可存取的表分區上柱狀圖數據.
716. USER_PART_KEY_COLUMNS
當前用戶擁有的分區對象的分區鍵列.
717. USER_PART_INDEXES
當前用戶擁有的所有分區所有的對象級分區信息.
718. USER_PART_LOBS
當前用戶擁有的分區大型對象的表級信息.
719. USER_PART_TABLES
當前用戶擁有的分區表的對象級分區信息.
720. USER_PARTIAL_DROP_TABS
當前用戶模式下有部分刪除表操作的所有表.
721. USER_PASSWORD_LIMITS
分配給用戶的口令參數文件.
722. USER_POLICIES
當前用戶擁有的所有對象的安全策略.
723. USER_PROCEDURES
當前用戶擁有的所有的函數和過錯以及它們的相關屬性.
724. USER_PROXIES
當前用戶被允許代理的連接信息.
725. USER_PUBLISHED_COLUMNS
描述有特權的所有存在的源表列.
726. USER_QUEUE_SCHEDULES
關於隊列時間表的信息.
727. USER_QUEUE_TABLES
只描述用戶模式中創建的隊列表中的隊列.
728. USER_QUEUES
用戶模式中的每個隊列的所有刷新組.
729. USER_REFRESH
當前用戶擁有的所有刷新組.
730. USER_REFRESH_CHILDREN
列出刷新組中的所有對象.
731. USER_REFS
用戶表的對象類型列中的REF列和REF屬性.
732. USER_REGISTERED_MVIEWS
當前用戶擁有的所有註冊的物化視圖.
733. USER_REGISTERED_SNAPSHOTS
當前用戶擁有的所有註冊的快照.
734. USER_RESOURCE_LIMITS
當前用戶的資源限制.
735. USER_RESUMABLE
列出當前用戶執行的可恢復語句.
736. USER_ROLS_PRIVS
列出授予用戶的角色.
737. USER_RSRC_CONSUMER_GROUP_PRIVS
列出授予用戶的所有的資源消耗組.
738. USER_RSRC_MANAGER_SYSTEM_PRIVS
列出所有被授予了DBMS_RESOURCE_MANAGER包的系統特權的用戶.
739. USER_SEGMENTS
列出屬於用戶對象的數據庫段的存儲分配信息.
740. USER_SEQUENCES
用戶序列的說明.
741. USER_SNAPSHOT_LOGS
用戶擁有的所有快照日誌.
742. USER_SNAPSHOT_REFRESH_TIMES
快照刷新的次數.
743. USER_SNAPSHOTS
用戶可查看的快照.
744. USER_SOURCE
屬於用戶的所有存儲對象的文本來源.
745. USER_SORCE_TABLES
允許你查看所有有預定特權的現有的源表.
746. USER_SQLJ_TYPE_ATTRS
當前用戶擁有的關於SQLJ對象的所有屬性.
747. USER_SQLJ_TYPE_METHODS
當前用戶擁有的類型方法.
748. USER_SQLJ_TYPES
當前用戶擁有的關於SQLJ對像類型信息.
749. USER_STORED_SETTINGS
當前用戶擁有的存儲的PL/SQL單元的永久參數設置.
750. USER_SUBPART_COL_STATISTICS
顯示當前用戶擁有的子分區對象的子分區的列統計和柱狀圖信息.
751. USER_SUBPART_HISTOGRAMS
顯示當前用戶擁有的表子分區中柱狀圖的實際柱狀圖數據.
752. USER_SUBPART_KEY_COLUMNS
顯示當前用戶擁有的子分區對象的子分區的列統計和柱狀圖信息.
753. USER_SUBSCRIBED_COLUMNS
允許發行者查看所有的預定的所有發行的列.
754. USER_SUBSCRIBED_TABLES
允許發行者查看所有的預定的所有發行的表.
755. USER_SUBSCRIPTIONS
允許發行者查看所有的預定.
756. USER_SYSNONYMS
當前用戶擁有的私人同義詞.
757. USER_SYS_PRIVS
授予用戶的系統特權.
758. USER_TAB_COL_STATISTICS
包含USER_TAB_COLUMNS視圖中的列統計和柱狀圖信息.
759. USER_TAB_COLUMNS
用戶表或視圖或聚集上的列的信息.
760. USER_TAB_COMMENTS
用戶擁有表或視圖上的註釋.
761. USER_TAB_HISTOGRAMS
用戶表的列上的柱狀圖.
762. USER_TAB_MODIFICATIONS
用戶擁有了的所有上次統計後被修改了的表.
763. USER_TAB_PARTITIONS
用戶擁有的每個表子分區的名稱,存儲屬性,其所屬表和分區名.
764. USER_TAB_PRIVS
對像上的特權.
765. USER_TAB_PRIVS_MADE
用戶擁有對象上的全部特權.
766. USER_TAB_PRIVS_RECD
包含對像上的特權,用戶為被授予者.
767. USER_TAB_SUBPARTITIONS
用戶擁有的每個子分區的名稱,存儲屬性,其所屬表和分區名.
768. USER_TABLES
用戶擁有的關係表的描述.
769. USER_TABLESPACES
可存取的表空間的描述.
770. USER_TRANSFORMATIONS
特定用戶擁有的轉變信息.
771. USER_TRIGGER_COLS
用戶觸發器中列的用法.
772. USER_TRIGGERS
用戶觸發器的說明.
773. USER_TYPES
表中用戶的類型.
774. USER_TYPE_ATTRS
用戶的類型的屬性.
775. USER_TS_QUOTAS
用戶的表空間限額.
776. USER_METHODS
用戶的方法類型.
777. USER_UNUSED_COL_TABS
包含了未用列的所有表.
778. USER_UPDATABLE_COLUMNS
在連接視圖中對用戶可修改的列的描述.
779. USER_USERS
當前用戶的信息.
780. USER_USTATS
用戶擁有的用戶定義統計.
781. USER_VARRAYS
用戶擁有的所有數組.
782. USER_VIEWS
用戶擁有的視圖的文本.   9I管理的數據字典ALL視圖。

783. ALL_ALL_TABLES
用戶可存取的所有表.
784. ALL_ARGUMENTS
用戶可存取的對象的所有參數.
785. ALL_ASSOCIATIONS
用戶定義的統計信息.
786. ALL_BASE_TABLE_MVIEWS
用戶可存取的所有物化視圖信息.
787. ALL_CATALOG
用戶可存取的全部表,同義詞,視土和序列.
788. ALL_CLUSTER_HASH_EXPRESSIONS
用戶可存取的聚集的HASH函數.
789. ALL_CLUSTERS
用戶可存取的所有聚集.
790. ALL_COL_COMMENTS
用戶可存取的表或視圖上註釋.
791. ALL_COL_PRIVS
列出列上的授權,用戶或PUBLIC是授予者.
792. ALL_COL_PRIVS_MADE
列出列上的授權,用戶是屬主或授權者.
793. ALL_COL_PRIVS_RECD
列出列上的授權,用戶或PUBLIC是授權者.
794. ALL_COLL_TYPES
用戶可存取的命名的集合類型.
795. ALL_CONS_COLUMNS
包含在約束定義中可存取列的信息.
796. ALL_CONSTRAINTS
列出可存取表上的約束定義.
797. ALL_CONTEXT
顯示活動的上下問信息.
798. ALL_DB_LINKS
用戶可存取的數據鏈.
799. ALL_DEF_AUDIT_OPTS
包含在對像建立時所應用的缺省對像審計選項.
800. ALL_DEPENDENCIES
用戶可存取的的對象之間的依賴關係.
801. ALL_DIM_HIERARCHIES
顯示維的層次.
802. ALL_DIM_JOIN_KEY
描述兩個維之間的連接.
803. ALL_DIM_LEVEL_KEY
描述維級的列.
804. ALL_DIM_LEVELS
描述維級別.
805. ALL_DIMENSIONS
包含維對象的信息.
806. ALL_DIRECTORIES
用戶可存取的所有目錄描述.
807. ALL_ERRORS
用戶可存取的所有對象上的當前錯誤.
808. ALL_EXTERNAL_TABLES
用戶可存取的外部表.
809. ALL_HISTOGRAMS
等於ALL_TAB_HISTOGRAMS別名.
810. ALL_IND_COLUMNS
用戶可存取的索引列.
811. ALL_IND_EXPRESSIONS
用戶可存取的表上的功能索引表達式.
812. ALL_IND_PARTITIONS
為索引分區,描述分區級的分區信息.
813. ALL_IND_SUBPARTITONS
為索引子分區,描述子分區級的分區信息.
814. ALL_INDEXES
用戶可存取的表上的索引描述.
815. ALL_INDEXTYPE_COMMNETS
用戶可存取的用戶定義的索引類型.
816. ALL_INDEXTYPE_OPERATORS
顯示索引類型支持的所有操作符.
817. ALL_INDEXTYPES
顯示所有的索引類型.
818. ALL_INTERNAL_TRIGGERS
用戶可存取的內部觸發器.
819. ALL_JOBS
數據庫中的所有作業.
820. ALL_JOIN_IND_COLUMNS
描述你存取的位映像連接索引的連接條件.
821. ALL_LIBRARIES
用戶可存取的所有庫.
822. ALL_LOB_PARTITIONS
用戶可存取的表中包含LOB.
823. ALL_LOB_SUBPARTITIONS
顯示LOB數據子分區的分區級別.
824. ALL_LOBS
用戶可存取的表中包含LOB.
825. ALL_LOG_GROUP_COLUMNS
用戶可存取的定義在日誌組中的列.
826. ALL_LOG_GROUPS
用戶可存取的表上的日誌組定義.
827. ALL_METHOD_PARAMS
用戶可存取的類型的方法參數.
828. ALL_METHOD_RESULTS
用戶可存取的類型的方法結果.
829. ALL_MVIEW_AGGREGATES
合計類的物化視圖的SELECT列表中出現的分組函數.
830. ALL_MVIEW_ANALYSIS
描述可能支持查詢重寫和有可用於應用程序分析的額外信息的物化視圖,但不包含遠程和非靜態的.
831. ALL_MVIEW_DETAIL_RELATIONS
描述物化視圖FROM列表中的,或間接被FROM列表中視圖引用的命名細節關係.
832. ALL_MVIEW_JOINS
描述物化視圖WHERE子句中兩列間的連接.
833. ALL_MVIEW_KEYS
描述物化視圖FROM列表中的,或間接被FROM列表中視圖引用的命名細節關係.
834. ALL_MVIEW_REFRESH_TIMES
用戶可存取的物化視圖的刷新時間.
835. ALL_MVIEWS
用戶可存取的所有的物化視圖.
836. ALL_NESTED_TABLES
用戶可存取的表中的嵌套表.
837. ALL_OBJECT_TABLES
用戶可存取的對象表的描述.
838. ALL_OPANCILLARY
顯示操作符的輔助信息.
839. ALL_OPARGUMENTS
顯示操作符捆綁的變元信息.
840. ALL_OPBINDINGS
顯示操作符捆綁.
841. ALL_OPERATOR_COMMENTS
用戶可存取的用戶定義操作的所有註釋.
842. ALL_OPERATORS
用戶可存取的操作符.
843. ALL_OUTLINE_HINTS
用戶可存取的概要的提示.
844. ALL_OUTLINES
用戶可存取的所有概要.
845. ALL_PART_COL_STATISTICS
用戶可存取的表分區的列統計和柱狀圖信息.
846. ALL_PART_HISTOGRAMS
用戶可存取的表分區的柱狀數據.
847. ALL_PART_INDEXES
當前用戶可存取的所有分區索引的對象級分區信息.
848. ALL_PART_KEY_COLUMNS
當前用戶可存取的分區對象的分區鍵值.
849. ALL_PART_LOBS
當前用戶可存取的分區LOB的表級信息.
850. ALL_PART_TABLES
當前用戶可存取的分區表的對象級分區信息.
851. ALL_PARTIAL_DROP_TABS
當前用戶可存取的有局部刪除表的表.
852. ALL_POLICIES
當前用戶可存取的所有表和視圖上的所有策略.
853. ALL_PROCEDURES
列出所有的函數和過程及相關屬性.
854. ALL_PUBLISHED_COLUMNS
描述用戶有特權的存在的源表列.
855. ALL_QUEUE_TABLES
當前用戶可存取的隊列表的所有隊列.
856. ALL_QUEUES
顯示用戶有入隊或出隊特權的隊列信息.
857. ALL_REFRESH
當前用戶可存取的所有刷新組.
858. ALL_REFRESH_CHILDREN
列出刷新組中的所有對象.
859. ALL_REFRESH_DEPENDENCIES
顯示當前模式中所有概要或快照的依賴細節或容器表名稱.
860. ALL_REFS
當前用戶可存取的對象類型列中的REF列和REF屬性.
861. ALL_REGISTERED_MVIEWS
當前用戶可存取的所有物化視圖.
862. ALL_REGISTERED_SNAPSHOTS
列出所有註冊的快照.
863. ALL_SEQUENCES
當前用戶可存取的所有序列.
864. ALL_SNAPSHOT_LOGS
當前用戶可存取的物化視圖日誌.
865. ALL_SNAPSHOT_REFRESH_TIMES
快照刷新次數.
866. ALL_SOURCE
當前用戶可存取的所有存儲對象的文本源.
867. ALL_SOURCE_TABLES
允許發行者查看所有存在的源表.
868. ALL_SQLJ_TYPE_ATTRS
當前用戶可存取的關於SQLJ對象的所有屬性.
869. ALL_SQLJ_TYPE_METHODS
當前用戶可存取的類型方法.
870. ALL_SQLJ_TYPES
當前用戶可存取的關於SQLJ對像類型信息.
871. ALL_STORED_SETTINGS
當前用戶有其執行特權的存儲PL/SQL單元的永久參數設置.
872. ALL_SUBPART_COL_STATISTICS
包含USER_TAB_COLUMNS的列統計和柱狀信息.
873. ALL_SUBPART_HISTOGRAMS
顯示表子分區中柱狀圖的實際柱狀圖信息.
874. ALL_SUBPART_KEY_COLUMNS
顯示使用復合範圍/HASH方法分區的表的子分區鍵值.
875. ALL_SUBSCRIBED_COLUMNS
允許發行者查看他們預定的所有發行的列.
876. ALL_SUBSCRIBED_TABLES
允許發行者查看他們預定的所有發行的表.
877. ALL_SUBSCRIPTIONS
允許發行者查看他們所有的預定.
878. ALL_SUMDELIA
用戶可存取的直接路徑裝載條目.
879. ALL_SYNONYMS
用戶可存取的所有同義詞.
880. ALL_TAB_COL_STATISTICS
包含ALL_TAB_COLUMNS的列統計和柱狀信息.
881. ALL_TAB_COLUMNS
用戶可存取的所有表,視圖和聚集的列.
882. ALL_TAB_COMMENTS
用戶可存取的表和視圖中的註釋.
883. ALL_TAB_HISTOGRAMS
用戶可存取的表和視圖中的柱狀信息.
884. ALL_TAB_MODIFICATIONS
用戶可存取的上次統計後被修改了的表.
885. ALL_TAB_PRIVS
列出對像上的授權,用戶或PUBLIC用戶是被授予者.
886. ALL_TAB_PRIVS_MADE
列出用戶的授權和用戶對像上的授權.
887. ALL_TAB_PRIVS_RECD
列出對像上的授權,用戶和PUBLIC是被授予者.
888. ALL_TAB_SUBPARTITIONS
用戶可存取的每個表子分區的名稱,存儲屬性,其所屬的表和分區名.
889. ALL_TABLES
用戶可存取的關係表的描述.
890. ALL_TRIGGERS
用戶擁有的觸發器.
891. ALL_TRIGGER_COLS
用戶擁有的觸發器的列及用法.
892. ALL_TYPE_ATTRS
用戶可存取的類型的屬性.
893. ALL_TYPE_METHODS
用戶可存取的類型的方法.
894. ALL_TYPES
用戶可存取的類型.
895. ALL_UNUSED_COL_TABS
包含未使用列的所有表.
896. ALL_UPDATABLE_COLUMNS
包含莫連接視圖中可以修改的所有列的描述.
897. ALL_USERS
數據庫中所有用戶的信息.
898. ALL_USTATS
用戶可存取的用戶定義統計.
899. ALL_VARRAYS
用戶可存取的所有數組.
900. ALL_VIEWS
用戶可存取的視圖的文本.
ORACLE9I的數據字典.
901. CHAINED_ROWS
存儲帶LIST CHAINED ROWS子句的ANALYZE命令的輸出.
902. CHAINGE_SOURCES
允許發行者查看現有的變化資源.
903. CHANGE_SETS
允許發行者查看現有的變化設置.
904. CHANGE_TABLES
允許發行者查看現有的變化表.
905. CODE_PIECES
ORACLE存取這個視圖用於創建關於對像大小的視圖.
906. CODE_SIZE
ORACLE存取這個視圖用於創建關於對像大小的視圖.
907. COLS
USER_TAB_COLUMNS同義詞.
908. COLUMN_PRIVILEGES
列出列上的授權狀況.
909. DATABASE_PROPERTIES
列出當前缺省的臨時表空間的名稱.
910. DBMS_ALERT_INFO
描述註冊了的警告.
911. DBMS_LOCK_ALLOCATED
描述用戶分配了的鎖.
912. DEPTREE
有UTLDTREE.SQL創建,包好對像依賴樹的信息.
913. DICT_COLUMNS
包含數據字典表和視圖列的描述.
914. DICTIONARY
包含數據字典表和視圖列的描述.
915. ERROR_SIZE
ORACLE存取這個視圖用於創建關於對像大小的視圖.
916. EXCEPTIONS
包含完整約束的違反信息.
917. FILE_LOCKS
實時應用集群視圖,顯示到GC_FILES_TO_LOCKS中指定數據文件的PCM鎖映像.
918. FILE_PING
實時應用集群視圖,顯示每個數據文件連接的塊數.
919. GLOBAL_NAME
當前數據庫的全局名.
920. HS_ALL_CAPS
包含關於非ORACLE(FDS)數據存儲有關的所有兼容性信息.
921. HS_ALL_DD
包含關於非ORACLE(FDS)數據存儲的數據字典信息.
922. HS_ALL_INITS
包含關於非ORACLE(FDS)數據存儲的初始化參數信息.
923. HS_BASE_CAPS
包含關於非ORACLE(FDS)數據存儲的基本性能信息.
924. HS_BASE_DD
顯示基本數據字典翻譯表的信息.
925. HS_CLASS_CAPS
包含屬於非ORACLE(FDS)數據存儲的類指定性能信息.
926. HS_CLASS_INIT
包含關於非ORACLE(FDS)類指定初始化參數信息.
927. HS_EXTERNAL_OBJECT_PRIVILEGES
包含授予用戶的對象上的特權的信息.
928. HS_EXTERNAL_OBJECTS
包含ORACLE服務器可存取的所有分佈式外部對象的信息.
929. HS_FDS_CLASS
包含合法的非ORACLE(FDS)類的信息.
930. HS_FDS_INST
包含合法的非ORACLE(FDS)實例的信息.
931. HS_INST_CAPS
包含實例指定的性能信息.
932. HS_INST_DD
顯示非ORACLE(FDS)實例特定的數據字典翻譯的信息.
933. HS_INST_INIT
顯示非ORACLE(FDS)實例指定的初始化參數的信息.
934. IDEPTREE
列出依賴樹.
935. INDEX_HISTOGRAM
包含THE ANALYZE INDEX ... VALIDATE STRUCTURE命令的信息.
936. INDEX_STATS
包含ANALYZE INDEX ... VALIDATE STRUCTURE命令的信息.
937. NLS_DATABASE_PRAMETERS
列出數據庫中永久的NLS參數信息.
938. NLS_INSTANCE_PARAMETERS
列出實例中永久的NLS參數信息.
939. NLS_SESSION_PARAMETERS
列出會話中永久的NLS參數信息.
940. PARSED_PIECES
ORACLE存取這個視圖用於創建關於對像大小的視圖.
941. PARSED_SIZE
ORACLE存取這個視圖用於創建關於對像大小的視圖.
942. PLAN_TABLE
是EXPLAN PLAN語句的結果表.
943. PLUGGABLE_SET_CHECK
包含可插入的設置檢查.
944. PRODUCT_COMPONENT_VERSION
包含組成產品的版本和狀態信息.
945. PROXY_USERS
描述那些能假設其它用戶身份的用戶.
946. PSTUBTBL
包含PSTUB程序生成的根上的信息,以便ORACLE FORM3.0客戶可以調用ORACLE數據庫中的存儲過程.
947. PUBLIC_DEPTENDENCY
列出對象的依賴.
948. PUBUCSYN
包含公共同義詞上的信息.
949. QUEUE_PRIVILEGES
顯示那些特權授予給了會話的高級查詢對像.
950. RESOURCE_COST
列出每個資源的開銷.
951. RESOURCE_MAP
包含資源的描述.
952. ROLE_ROLE_PRIVS
包含授予其它角色的角色信息.
953. ROLE_SYS_PRIVS
包含授予角色的系統特權的信息.
954. ROLE_TAB_PRIVS
包含授予角色的表特權的信息.
955. SESSION_CONTEXT
列出當前會話的屬性和值設置.
956. SESSION_PRIVS
列出當前對用戶可用的特權.
957. SESSION_ROLES
列出當前對用戶啟用的角色.
958. SOURCE_SIZE
ORACLE存取這個視圖用於創建關於對像大小的視圖.
959. STMT_AUDIT_OPTION_MAP
包含審計選項類型代碼的信息.
960. SYSCATALOG
該視圖用於與ORACLE5版本保持兼容,建議不使用之.
961. SYSFILES
該視圖用於與ORACLE5版本保持兼容,建議不使用之.
962. SYSSEGOBJ
該視圖用於與ORACLE5版本保持兼容,建議不使用之.
963. SYSTEM_PRIVILEGE_MAP
包含系統特權代碼的信息.
964. SYS_OBJECTS
將對像ID映射到對像類型和段數據塊地址.
965. TABLE_PRIVILEGE_MAP
包含關於存取特權代碼的信息.
966. TABLE_PRIVILEGES
包含對像上的特權信息.
967. TABQUOTAS
該視圖用於與ORACLE5版本保持兼容,建議不使用之.
968. TRUSTED_SERVERS
顯示服務器是信任的還是不信任的.
969. TS_PITR_CHECK
提供可能禁止表空間及時點恢復繼續的依賴或約束信息.
970. TS_PITR_OBJECTS_TO_BE_DROPPED
列出作為執行表空間及時點恢復的結果而丟失的所有對象.
971. UNI_PLUGGABLE_SET_CHECK
保護可插的檢查信息.

Aptana Javascript(Object Oriented)備忘記

JavaScript 起源於 1995 年, 主要目的是為了減輕當時 Server-side Perl 的 validation 問題.
Netscape Navigator 改良後並稱它為 JavaScript,
目的是減輕服務器端的工作, 並提供客戶端更多功能.


由於微軟出現另一套 IE VBScript, 使得客戶端 Script 不相容.
後來 ECMA (ECMA-262)及 ISO/IEC (ISO/IEC-16262) 標準化為 ECMAScript.


JavaScript 主要由三部份組成:
ECMASCript 核心:描述語法及基本 objects
DOM (Docucment Object Model):描述網頁工作內容的方法及介面
BOM (Browser Object Model):描述瀏覽器互動的方法及介面



開始備忘記
[1] 安裝 Aptana
[2] 建立第一個 Aptana project
[3] 使用 zInherit library 實作上例
[4] DHTML 繪圖(Bar Chart)
[5] 分析百度 scrolling text
[6] 實作 Mouse Over Block
[7] 實作 Sorting Table:
[8] 其他 Javascript 常用實例


[1] 安裝 Aptana:
下載 Aptana_IDE_Setup_Windows_Next.zip
http://www.aptana.org/download_windows.php
http://www.web20.com/downloads/next/Windows/Aptana_IDE_Setup_Windows_Next.zip
解壓縮至 D:\aptana
點擊 D:\aptana\aptana.exe 開啟 aptana


[2] 建立第一個 Aptana project:
Aptana: File -> Project... -> Simple -> Project 按 Next
Project name:FirstAptanaTest 按 Finish


右鍵點擊 FirstAptanaTest -> New -> HTML File
Container:/FirstAptanaTest
File name:InheritanceTest.html


<!----------------- InheritanceTest.html ----------------->
<script>
function Polygon(iSides) {
this.sides = iSides;

if (typeof Polygon._initialized == "undefined") { // dynamic prototyping
Polygon.prototype.getArea = function () {
return 0;
};
Polygon._initialized = true;
}
}


function Triangle(iBase, iHeight) {
Polygon.call(this, 3); // method 1. Object masquerading inheritance
// Polygon.apply(this, new Array(3)); // method 2
// this.pointer = Polygon; // method 3.
// this.pointer(3);
// delete this.pointer;
this.base = iBase;
this.height = iHeight;
}
Triangle.prototype = new Polygon(); // Prototype chaining inheritance
Triangle.prototype.getArea = function () {
return 0.5 * this.base * this.height;
};


function Rectangle(iLength, iWidth) {
Polygon.call(this, 4);
this.length = iLength;
this.width = iWidth;

if (typeof Rectangle._initialized == "undefined") { // dynamic prototyping
//Rectangle.prototype = new Polygon();
// 為甚麼沒有將上面與 Polygon 的 prototype chaining 放在這裡?
// 由於 prototype 在 物件 new 時才產生關聯.
// 所以當 Rectangle 物件初始化時已經與預設的 prototype object 發生關聯,
// 故第一個 Rectangle 物件初始化並沒有關聯至 Polygon,
// 只有在第二個 Rectangle 物件之後的初始化才開始發生關聯


Rectangle.prototype.getArea = function () {
return this.length * this.width;
};
Rectangle._initialized = true;
}
}
Rectangle.prototype = new Polygon();

function Area(polygon){
if(polygon instanceof Polygon){
return polygon.getArea();
}
return "Invalid class!";
}

var triangle = new Triangle(3, 4);
var rectangle = new Rectangle(5, 6);


document.write("Failed:" + Area("blah") + "<br/>");
document.write("Triable area:" + Area(triangle) + "<br/>");
document.write("Rectangle area:" + Area(rectangle) + "<br/>");
</script>
<!----------------- InheritanceTest.html ----------------->


按 code panel 左下角按 preview , 輸出為
Failed:Invalid class!
Triable area:6
Rectangle area:30


如下圖所示


在這個例題裡還未能解決 多繼承 及 dynamic prototyping 的問題.
下面將使用 zInherit library 解決上面兩個問題.



[3] 使用 zInherit library 實作上例.
下載 zInherit1.0.zip
http://www.nczonline.net/downloads/
http://www.nczonline.net/downloads/zInherit1.0.zip

解壓後將 zInherit\src\zinherit.js 拖放進 FirstAptanaTest project 裡
內容為:
/*----------------- zinherit.js ----------------- */
/*------------------------------------------------------------------------------
* JavaScript zInherit Library
* Version 1.0
* by Nicholas C. Zakas,
http://www.nczonline.net/
* Copyright (c) 2004-2005 Nicholas C. Zakas. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*------------------------------------------------------------------------------
*/

/**
* Inherits properties and methods from the given class.
* @scope public
* @param fnClass The constructor function to inherit from.
*/
Object.prototype.inheritFrom = function (fnClass /*: Function */) /*:void*/ {


/**
* Inherits all classes going up the inheritance chain recursively.
* @param fnClass The class to inherit from.
* @param arrClasses The array of classes to build up.
* @scope private
*/

function inheritClasses(fnClass /*:Function*/,
arrClasses /*:Array*/) /*:void*/ {

arrClasses.push(fnClass);


if (typeof fnClass.__superclasses__ == "object") {
for (var i=0; i < fnClass.__superclasses__.length; i++){
inheritClasses(fnClass.__superclasses__[i], arrClasses);
}
}
}

if (typeof this.constructor.__superclasses__ == "undefined") {
this.constructor.__superclasses__ = new Array();
}

inheritClasses(fnClass, this.constructor.__superclasses__);

for (prop in fnClass.prototype) {
if (typeof fnClass.prototype[prop] == "function") {
this[prop] = fnClass.prototype[prop];
}
}
};


/**
* Determines if the given object is an instance of a given class.
* This method is necessary because using
{@link #inheritFrom} renders
* the JavaScript <code>instanceof</code> operator useless.
* @param fnClass The constructor function to test.
* @return True if the object is an instance of the class, false if not.
* @scope public
*/

Object.prototype.instanceOf = function (fnClass /*:Function*/) /*: boolean */ {


if (this.constructor == fnClass) {
return true;
} else if (typeof this.constructor.__superclasses__ == "object") {
for (var i=0; i < this.constructor.__superclasses__.length; i++) {
if (this.constructor.__superclasses__[i] == fnClass) {
return true;
}
}
return false;
} else {
return false;
}
};
/*----------------- zinherit.js ----------------- */


右鍵點擊 FirstAptanaTest -> New -> HTML File
Container:/FirstAptanaTest
File name:InheritanceTest2.html


<!----------------- InheritanceTest2.html ----------------->
<script src="zinherit.js"></script>
<script>
function Polygon(iSides) {
this.sides = iSides;

if (typeof Polygon._initialized == "undefined") { // dynamic prototyping
Polygon.prototype.getArea = function () {
return 0;
};
Polygon._initialized = true;
}
}


function Triangle(iBase, iHeight) {
Polygon.call(this, 3); // method 1. Object masquerading inheritance
// Polygon.apply(this, new Array(3)); // method 2
// this.pointer = Polygon; // method 3.
// this.pointer(3);
// delete this.pointer;
this.base = iBase;
this.height = iHeight;
}
Triangle.prototype.inheritFrom(Polygon);
Triangle.prototype.getArea = function () {
return 0.5 * this.base * this.height;
};


function Rectangle(iLength, iWidth) {
Polygon.call(this, 4);
this.length = iLength;
this.width = iWidth;

if (typeof Rectangle._initialized == "undefined") { // dynamic prototyping
Rectangle.prototype.inheritFrom(Polygon);
Rectangle.prototype.getArea = function () {
return this.length * this.width;
};
Rectangle._initialized = true;
}
}

function Area(polygon){
if(polygon.instanceOf(Polygon)){
return polygon.getArea();
}
return "Invalid class!";
}

var triangle = new Triangle(3, 4);
var rectangle = new Rectangle(5, 6);


document.write("Failed:" + Area("blah") + "<br/>");
document.write("Triable area:" + Area(triangle) + "<br/>");
document.write("Rectangle area:" + Area(rectangle) + "<br/>");
</script>
<!----------------- InheritanceTest2.html ----------------->



按 code panel 左下角按 preview , 輸出為
Failed:Invalid class!
Triable area:6
Rectangle area:30


輸出結果與上圖一樣.


[4] DHTML 繪圖(Bar Chart).
右鍵點擊 FirstAptanaTest -> New -> HTML File
Container:/FirstAptanaTest
File name:BarChartTest.html


<!----------------- BarChartTest.html ----------------->
<html>
<script type="text/javascript">

function BarChart(datas, width, height) {
var chart = document.createElement("div"); // 建立繪畫邊框 element

chart.style.position = "relative"; // 設定為使用相對路徑
chart.style.width = width + "px"; // 設定邊框的寬度
chart.style.height = height + "px"; // 設定邊框的高度
chart.style.border = "solid red 1px"; // 設定 border 的顏色及大小
chart.style.backgroundColor = "white"; // 設定背景顏色

var barwidth = Math.floor(width/datas.length); // 計算每條 bar 的寬度
var maxdata = Math.max.apply(this, datas); // 計算出最大的資料
var scale = height/maxdata; // 計算邊框高度與最大資料的比率

for(var i = 0; i < datas.length; i++) { // 繪畫每條 bar
var bar = document.createElement("div"); // 建立繪畫 bar 的 element
var barheight = datas[i] * scale; // Compute height of bar


bar.style.position = "absolute"; // 設定為使用相對路徑
bar.style.left = (barwidth*i)+"px"; // 設定每條 bar 與左面的位置
bar.style.top = height-barheight+"px"; // 設定每條 bar 與上面的位置
bar.style.width = (barwidth-2) + "px"; // 設定 bar 寬度, -2 作為間隔
bar.style.height = (barheight) + "px"; // 設定 bar 高度
bar.style.backgroundColor = "blue"; // 設定 bar 顏色


chart.appendChild(bar); // 將每個 bar element 加入到邊框 element 裡
}
document.body.appendChild(chart); // 將邊框 element 加入到 body 裡
return chart;


}
window.onload = function(){ // 設定當頁面 load 完後呼叫 BarChart function
BarChart([120,50,90,150,130,220,400], 400, 200);
}
</script>


<body></body>
</html>
<!----------------- BarChartTest.html ----------------->


按 code panel 左下角按 preview
輸出如下圖所示



[5] 分析百度 scrolling text:
右鍵點擊 FirstAptanaTest -> New -> HTML File
Container:/FirstAptanaTest
File name:ScollingTest.html


<!----------------- ScollingTest.html ----------------->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />


<script>
// 這個 scolling test 是參考百度
function startmarquee(lh,speed,delay) {
var p = false;
var t;
var o = document.getElementById("marqueebox");
o.innerHTML += o.innerHTML; // 重覆加入相同的內容, 防止重新轉動時顯示空白
o.style.marginTop=0;
o.onmouseover=function(){p=true;} // 當 mouse over 時停止轉動
o.onmouseout=function(){p=false;} // 當 mouse out 時啟動轉動
function start(){
t=setInterval(scrolling,speed); // 排程執行 scrolling ,間隔為 speed
if(!p){ // 這裡判斷是否要轉動
o.style.marginTop = parseInt(o.style.marginTop)-1+"px";
// 這裡作用是每次轉動 lh pixel 時, 作用是使其值在開始時不等於 lh 的倍數
}
}
function scrolling(){
if(parseInt(o.style.marginTop)%lh != 0){ // 判斷 marginTop 是否等於負 lh 的數值時
o.style.marginTop = parseInt(o.style.marginTop)-1+"px";
// 這裡將 marginTop 減 1, 向上移動一個 pixel
if(Math.abs(parseInt(o.style.marginTop)) >= o.scrollHeight/2){
o.style.marginTop=0;
}
}else{ // 如果 marginTop 等於負 lh pixel 時, 則停頓 delay 微秒
clearInterval(t); // 當轉動 lh pixel 時, 清除排程
setTimeout(start,delay);
}
}
setTimeout(start,delay);
}


function StringBuffer() {
this._strings = new Array;
}
StringBuffer.prototype.append = function (str) {
this._strings.push(str);
};
StringBuffer.prototype.toString = function () {
return this._strings.join("");
};


window.onload = function(){
var sb = new StringBuffer();
sb.append('<a href="
http://google.com/" target=_blank>Google</a><br/>');
sb.append('<a href="
http://yahoo.com/" target="_blank">Yahoo</a><br/>');
sb.append('<a href="
http://msn.com/" target="_blank">MSN</a><br/>');
document.getElementById("marqueebox").innerHTML = sb.toString();
// 將顯示的 html 加入至 div 裡
startmarquee(25,20,3000);
}
</script>


</head>
<body>
<div style="overflow:hidden;height:25px;line-height:25px">
<div id="marqueebox"></div>
</div>
</body>
</html>
<!----------------- ScollingTest.html ----------------->


按 code panel 左下角按 preview
輸出為 Goodle, Yahoo, MSN 在轉動



[6] 實作 Mouse Over Block:
右鍵點擊 FirstAptanaTest -> New -> HTML File
Container:/FirstAptanaTest
File name:MouseOverBlockTest.html


<!----------------- MouseOverBlockTest.html ----------------->
<html>
<head>
<title>Mouse Over Block Test</title>
<script type="text/javascript">
window.onload = function(){
var oBlock = document.createElement("div"); // 建立新的 div element
oBlock.setAttribute("id","block"); // 在 div element 裡加入 id attribute
oBlock.style.visibility = "hidden";
oBlock.style.position = "absolute";
oBlock.style.backgroundColor = "yellow";
oBlock.innerHTML = '<span>Show Content</span>';
document.body.appendChild(oBlock); // 將 div element 加入至 body element 裡
}

function showBlock(oEvent) { // 顯示 block content, oEvenet 為觸發事件的 object
var oDiv = document.getElementById("block");
oDiv.style.visibility = "visible";
oDiv.style.left = oEvent.clientX + 5;
oDiv.style.top = oEvent.clientY + 5;
}
function hideBlock(oEvent) { // 隱藏 block content
var oDiv = document.getElementById("block");
oDiv.style.visibility = "hidden";
}
</script>
</head>
<body>
<div style="background-color: blue; height: 100px; width: 100px"
onmouseover="showBlock(event)" onmouseout="hideBlock(event)">
<font color="white">MouseOver</font>
</div>
</body>
</html>
<!----------------- MouseOverBlockTest.html ----------------->


按 code panel 左下角按 preview
如下圖所示



[7] 實作 Sorting Table:
右鍵點擊 FirstAptanaTest -> New -> HTML File
Container:/FirstAptanaTest
File name:SortingTableTest.html


<!----------------- SortingTableTest.html ----------------->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
<title>Sorting Table Test</title>


<script>
function generateCompareTRs(iCol) { // iCol 為需要比較的 table column
return function compareTRs(oTR1, oTR2) { // 比較 function 需要給予兩個參數
var sValue1 = oTR1.cells[iCol].firstChild.nodeValue;
var sValue2 = oTR2.cells[iCol].firstChild.nodeValue;
return sValue1.localeCompare(sValue2);
};

}
function sortTable(sTableID, iCol) {
var oTable = document.getElementById(sTableID);
var oTBody = oTable.tBodies[0];
var colDataRows = oTBody.rows;
var aTRs = new Array;
for (var i=0; i < colDataRows.length; i++) {
aTRs[i] = colDataRows[i];
}
if (oTable.sortCol == iCol) { // 當上一次比較的 column 與今次一樣,則逆排序
aTRs.reverse();
} else {
aTRs.sort(generateCompareTRs(iCol));
}
var oFragment = document.createDocumentFragment();
for (var i=0; i < aTRs.length; i++) {
oFragment.appendChild(aTRs[i]); // 將排序後的 tr elements 加入至 fragment 裡
}
oTBody.appendChild(oFragment);
// 將排序後的 fragment 加入 table body
// 由於這裡 fragment 裡的 tr 不是使用 createElement 建立出來, 故不會出現重覆資料
oTable.sortCol = iCol; // 記錄上一次比較的 column
}
</script>


</head>
<body>


<table border="1" id="sortTable">
<thead>
<tr>
<th onclick="sortTable('sortTable', 0)" style="cursor:pointer">Last Name</th>
<th onclick="sortTable('sortTable', 1)" style="cursor:pointer">First Name</th>
</tr>
</thead>
<tbody>
<tr><td>joey</td><td>chan</td></tr>
<tr><td>jane</td><td>law</td></tr>
<tr><td>mary</td><td>Blah</td></tr>
</tbody>
</table>


</body>
</html>
<!----------------- SortingTableTest.html ----------------->


按 code panel 左下角按 preview
如下圖所示



[8] 其他 Javascript 常用實例:
Javascript 的 Array object 裡 沒有 indexOf method, 以下在 Array 裡增加 indexOf method:
Array.prototype.indexOf = function (vItem) {
for (var i=0; i < this.length; i++) {
if (vItem == this[i]) {
return i;
}
}
return -1;
}


Javascript 裡可建立 printTenStar function 來返回十個星號
function printTenStar(){
var str = '';
for(var i=0; i<10; i++){
str += '*';
}
return str;
}

但字串是 immutable, 字串相加是相當耗費資源的.
使用 Array 的 join 可以大效解決這問題, 故建立 StringBuffer 如下所示:
function StringBuffer() {
this._strings = new Array;
}
StringBuffer.prototype.append = function (str) {
this._strings.push(str);
};
StringBuffer.prototype.toString = function () {
return this._strings.join("");
};


function printTenStar(){
var sb = new StringBuffer();
for(var i=0; i<10; i++){
sb.append('*');
}
return sb.toString();
}


Servlet 裡可使用 request.getParameter 取得提交變數,
Javascript 可實作如下所示:
function getParameter(sParameterName, sDefaultValue) {
var sQueryString = window.location.search.substring(1).toLowerCase();
var parameters = new Array();
parameters = sQueryString.split('&');
for(var i = 0; i < parameters.length; i++) {
if (parameters[i].indexOf(sParameterName.toLowerCase())>=0) {
var sParameterValue = new Array();
sParameterValue = parameters[i].split('=');
return sParameterValue[1];
}
}
return sDefaultValue;
}



http://www.nczonline.net/


How to Auto Include a Javascript File
http://www.webreference.com/programming/javascript/mk/


Faster DHTML in 12 Steps
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/perf/dhtmlperf.asp


Brendan Eich: JavaScript 2 and the Future of the Web
http://ajaxian.com/archives/brendan-eich-javascript-2-and-the-future-of-the-web


AJAX: Is your application secure enough?
http://www.darknet.org.uk/2006/04/ajax-is-your-application-secure-enough/


About Native XMLHTTP
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/aboutxmlhttp.asp


XMLHttpRequest Object
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/obj_xmlhttprequest.asp


What You Should Know About AJAX Security: 24 Tutorials
http://www.maxkiesler.com/index.php/weblog/comments/what_you_should_know_about_ajax_security_24_tutorials/


Using Firefox 1.5 caching
http://developer.mozilla.org/en/docs/Using_Firefox_1.5_caching


Making Ajax Work with Screen Readers
http://juicystudio.com/article/making-ajax-work-with-screen-readers.php


Another IE Gotch - Dynamically created Radio Buttons
http://cf-bill.blogspot.com/2006/03/another-ie-gotcha-dynamiclly-created.html


Rethinking JavaScript Objects
http://www.sitepoint.com/article/javascript-objects

網絡工程師精華絕密資料

網絡工程師精華絕密資料
來自: http://www.wonyen.net/myhome/myblog.aspx?id=jxkgd&sortId=16&sort=教育學習
本人把它收藏於 blog 裡作日後回故

==============================

路由器問題:

1、什麼時候使用多路由協議?
當兩種不同的路由協議要交換路由信息時,就要用到多路由協議。當然,路由再分配也可以交換路由信息。下列情況不必使用多路由協議:
從老版本的內部網關協議( Interior Gateway Protocol,I G P)升級到新版本的I G P。
你想使用另一種路由協議但又必須保留原來的協議。
你想終止內部路由,以免受到其他沒有嚴格過濾監管功能的路由器的干擾。
你在一個由多個廠家的路由器构成的環境下。
什麼是距離向量路由協議?
距離向量路由協議是為小型網絡環境設計的。在大型網絡環境下,這類協議在學習路由及保持路由將產生較大的流量,占用過多的帶寬。如果在9 0秒內沒有收到相鄰站點發送的路由選擇表更新,它才認為相鄰站點不可達。每隔30秒,距離向量路由協議就要向相鄰站點發送整個路由選擇表,使相鄰站點的路由選擇表得到更新。這樣,它就能從別的站點(直接相連的或其他方式連接的)收集一個網絡的列表,以便進行路由選擇。距離向量路由協議使用跳數作為度量值,來計算到達目的地要經過的路由器數。
例如,R I P使用B e l l m a n - F o r d算法确定最短路徑,即只要經過最小的跳數就可到達目的地的線路。最大允許的跳數通常定為1 5。那些必須經過1 5個以上的路由器的終端被認為是不可到達的。
距離向量路由協議有如下几種: IP RIP、IPX RIP、A p p l e Talk RT M P和I G R P。
什麼是鏈接狀態路由協議?
鏈接狀態路由協議更適合大型網絡,但由于它的復雜性,使得路由器需要更多的C P U資源。它能夠在更短的時間內發現已經斷了的鏈路或新連接的路由器,使得協議的會聚時間比距離向量路由協議更短。通常,在1 0秒鐘之內沒有收到鄰站的H E L LO報文,它就認為鄰站已不可達。一個鏈接狀態路由器向它的鄰站發送更新報文,通知它所知道的所有鏈路。它确定最優路徑的度量值是一個數值代价,這個代价的值一般由鏈路的帶寬決定。具有最小代价的鏈路被認為是最優的。在最短路徑優先算法中,最大可能代价的值几乎可以是無限的。
如果網絡沒有發生任何變化,路由器只要周期性地將沒有更新的路由選擇表進行刷新就可以了(周期的長短可以從3 0分鐘到2個小時)。
鏈接狀態路由協議有如下几種: IP OSPF、IPX NLSP和I S - I S。
一個路由器可以既使用距離向量路由協議,又使用鏈接狀態路由協議嗎?
可以。每一個接口都可以配置為使用不同的路由協議;但是它們必須能夠通過再分配路由來交換路由信息。(路由的再分配將在本章的后面進行討論。)

2、什麼是訪問表?
訪問表是管理者加入的一系列控制數据包在路由器中輸入、輸出的規則。它不是由路由器自己產生的。訪問表能夠允許或禁止數据包進入或輸出到目的地。訪問表的表項是順序執行的,即數据包到來時,首先看它是否是受第一條表項約束的,若不是,再順序向下執行;如果它與第一條表項匹配,無論是被允許還是被禁止,都不必再執行下面表項的檢查了。
每一個接口的每一種協議只能有一個訪問表。
支持哪些類型的訪問表?
一個訪問表可以由它的編號來确定。具體的協議及其對應的訪問表編號如下:
◎I P標准訪問表編號:1~9 9
◎I P擴展訪問表編號:1 0 0~1 9 9
◎I P X標准訪問表編號:8 0 0~8 9 9
◎I P X擴展訪問表編號:1 0 0 0~1 0 9 9
◎AppleTa l k訪問表編號:6 0 0~6 9 9
提示在Cisco IOS Release11.2或以上版本中,可以用有名訪問表确定編號在1~199的訪問表。
如何創建IP標准訪問表?
一個I P標准訪問表的創建可以由如下命令來完成: Access-list access list number {permit | deny} source [source-mask]
在這條命令中:
◎access list number:确定這個入口屬于哪個訪問表。它是從1到9 9的數字。
◎permit | deny:表明這個入口是允許還是阻塞從特定地址來的信息流量。
◎source:确定源I P地址。
◎s o u r c e - m a s k:确定地址中的哪些比特是用來進行匹配的。如果某個比特是"1",表明地址中該位比特不用管,如果是"0"的話,表明地址中該位比特將被用來進行匹配。可以使用通配符。
以下是一個路由器配置文件中的訪問表例子:
Router# show access-lists
Standard IP access list 1
deny 204.59.144.0, wildcard bits 0.0.0.255
permit any

3、什麼時候使用路由再分配?
路由再分配通常在那些負責從一個自治系統學習路由,然后向另一個自治系統廣播的路由器上進行配置。如果你在使用I G R P或E I G R P,路由再分配通常是自動執行的。

4、什麼是管理距離?
管理距離是指一種路由協議的路由可信度。每一種路由協議按可靠性從高到低,依次分配一個信任等級,這個信任等級就叫管理距離。對于兩種不同的路由協議到一個目的地的路由信息,路由器首先根据管理距離決定相信哪一個協議。

5、如何配置再分配?
在進行路由再分配之前,你必須首先:
1) 決定在哪兒添加新的協議。
2) 确定自治系統邊界路由器(ASBR)。
3) 決定哪個協議在核心,哪個在邊界。
4) 決定進行路由再分配的方向。
可以使用以下命令再分配路由更新(這個例子是針對OSPF的):
router(config-router)#redistribute protocol [process-id] [metric metric - value ] [metric-type type - value ] [subnets]
在這個命令中:
◎protocol:指明路由器要進行路由再分配的源路由協議。
主要的值有: bgp、eqp、igrp、isis、ospf、static [ ip ]、connected和rip。
◎process-id:指明OSPF的進程ID。
◎metric:是一個可選的參數,用來指明再分配的路由的度量值。缺省的度量值是0。

6、為什麼确定毗鄰路由器很重要?
在一個小型網絡中确定毗鄰路由器並不是一個主要問題。因為當一個路由器發生故障時,別的路由器能夠在一個可接受的時間內收斂。但在大型網絡中,發現一個故障路由器的時延可能很大。知道毗鄰路由器可以加速收斂,因為路由器能夠更快地知道故障路由器,因為hello報文的間隔比路由器交換信息的間隔時間短。
使用距離向量路由協議的路由器在毗鄰路由器沒有發送路由更新信息時,才能發現毗鄰路由器已不可達,這個時間一般為10~90秒。而使用鏈接狀態路由協議的路由器沒有收到hello報文就可發現毗鄰路由器不可達,這個間隔時間一般為10秒鐘。
距離向量路由協議和鏈接狀態路由協議如何發現毗鄰路由器?
使用距離向量路由協議的路由器要創建一個路由表(其中包括與它直接相連的網絡),同時它會將這個路由表發送到與它直接相連的路由器。毗鄰路由器將收到的路由表合並入它自己的路由表,同時它也要將自己的路由表發送到它的毗鄰路由器。使用鏈接狀態路由協議的路由器要創建一個鏈接狀態表,包括整個網絡目的站的列表。在更新報文中,每個路由器發送它的整個列表。當毗鄰路由器收到這個更新報文,它就拷貝其中的內容,同時將信息發向它的鄰站。在轉發路由表內容時沒有必要進行重新計算。
注意使用IGRP和EIGRP的路由器廣播hello報文來發現鄰站,同時像OSPF一樣交換路由更新信息。EIGRP為每一種網絡層協議保存一張鄰站表,它包括鄰站的地址、在隊列中等待發送的報文的數量、從鄰站接收或向鄰站發送報文需要的平均時間,以及在确定鏈接斷開之前沒有從鄰站收到任何報文的時間。

7、什麼是自治系統?
一個自治系統就是處于一個管理机构控制之下的路由器和網絡群組。它可以是一個路由器直接連接到一個LAN上,同時也連到Internet上;它可以是一個由企業骨干網互連的多個局域網。在一個自治系統中的所有路由器必須相互連接,運行相同的路由協議,同時分配同一個自治系統編號。自治系統之間的鏈接使用外部路由協議,例如B G P。

8、什麼是BGP?
BGP(Border GatewayProtocol)是一種在自治系統之間動態交換路由信息的路由協議。一個自治系統的經典定義是在一個管理机构控制之下的一組路由器,它使用IGP和普通度量值向其他自治系統轉發報文。
在BGP中使用自治系統這個朮語是為了強調這樣一個事實:一個自治系統的管理對于其他自治系統而言是提供一個統一的內部選路計划,它為那些通過它可以到達的網絡提供了一個一致的描述。

9、BGP支持的會話種類?
BGP相鄰路由器之間的會話是建立在TCP協議之上的。TCP協議提供一種可靠的傳輸机制,支持兩種類型的會話:
o 外部BGP(EBGP):是在屬于兩個不同的自治系統的路由器之間的會話。這些路由器是毗鄰的,共享相同的介質和子網。
o 內部BGP(IBGP):是在一個自治系統內部的路由器之間的會話。它被用來在自治系統內部協調和同步尋找路由的進程。BGP路由器可以在自治系統的任何位置,甚至中間可以相隔數個路由器。
注意"初始的數据流的內容是整個BGP路由表。但以后路由表發生變化時,路由器只傳送變化的部分。BGP不需要周期性地更新整個路由表。因此,在連接已建立的期間,一個BGP發送者必須保存有當前所有同級路由器共有的整個BGP路由表。BGP路由器周期性地發送Keep Alive消息來确認連接是激活的。當發生錯誤或特殊情況時,路由器就發送Notification消息。當一條連接發生錯誤時,會產生一個notification消息並斷開連接。"-來自RFC11654、BGP*作。

10、BGP允許路由再分配嗎?
允許。因為BGP主要用來在自治系統之間進行路由選擇,所以它必須支持RIP、OSPF和 IGRP的路由選擇表的綜合,以便將它們的路由表轉入一個自治系統。BGP是一個外部路由協議,因此它的*作與一個內部路由協議不同。在BGP中,只有當一條路由已經存在于IP路由表中時,才能用NETWORK命令在BGP路由表中創建一條路由。

11、如何顯示在數据庫中的所有BGP路由?
要顯示數据庫中的所有BGP路由,只需在EXEC命令行下輸入:
show ip bgp paths
這個命令的輸出可能是:
Address Hash Refcount MetricPath
0 x 2 9 7 A 9 C 0 2 0 i

12、什麼是水平分割?
水平分割是一種避免路由環的出現和加快路由匯聚的技朮。由于路由器可能收到它自己發送的路由信息,而這種信息是無用的,水平分割技朮不反向通告任何從終端收到的路由更新信息,而只通告那些不會由于計數到無窮而清除的路由。

13、路由環是如何產生的?
由于網絡的路由匯聚時間的存在,路由表中新的路由或更改的路由不能夠很快在全網中穩定,使得有不一致的路由存在,于是會產生路由環。

14、什麼是度量值?
度量值代表距離。它們用來在尋找路由時确定最優路由。每一種路由算法在產生路由表時,會為每一條通過網絡的路徑產生一個數值(度量值),最小的值表示最優路徑。度量值的計算可以只考慮路徑的一個特性,但更復雜的度量值是綜合了路徑的多個特性產生的。一些常用的度量值有:
◎跳步數:報文要通過的路由器輸出端口的個數。
◎Ticks:數据鏈路的延時(大約1/18每秒)。
◎代价:可以是一個任意的值,是根据帶寬,費用或其他網絡管理者定義的計算方法得到的。
◎帶寬:數据鏈路的容量。
◎時延:報文從源端傳到目的地的時間長短。
◎負載:網絡資源或鏈路已被使用的部分的大小。
◎可靠性:網絡鏈路的錯誤比特的比率。
◎最大傳輸單元(MTU):在一條路徑上所有鏈接可接受的最大消息長度(單位為字節)。
IGRP使用什麼類型的路由度量值?這個度量值由什麼組成?
IGRP使用多個路由度量值。它包括如下部分:
◎帶寬:源到目的之間最小的帶寬值。
◎時延:路徑中積累的接口延時。
◎可靠性:源到目的之間最差的可能可靠性,基于鏈路保持的狀態。
◎負載:源到目的之間的鏈路在最坏情況下的負載,用比特每秒表示。
◎MTU:路徑中最小的M T U值。

15、度量值可以修改或調整嗎?
加一個正的偏移量。這個命令的完整結构如下:可以使用OFFSET-LIST ROUTER子命令
為訪問表中的網絡輸入和輸出度量值添加一個正的偏移量。
offset-list {in|out} offset [access-list] no offset-list {in|out} offset [access-list]
如果參數LIST的值是0,那麼OFFSET參數將添加到所有的度量值。如果OFFSET的值是0,那麼就沒有任何作用。對于IGRP來說,偏移量的值只加到時延上。這個子命令也適用于RIP和hello路由協議。
使用帶適當參數的NO OFFSET- LIST命令可以清除這個偏移量。
在以下的例子中,一個使用IGRP的路由器在所有輸出度量值的時延上加上偏移量10: offset-list out 10
下面是一個將相同的偏移量添加到訪問表121上的例子:
offset-list out 10 121

16、每個路由器在尋找路由時需要知道哪五部分信息?
所有的路由器需要如下信息為報文尋找路由:
◎目的地址:報文發送的目的主机。
◎鄰站的确定:指明誰直接連接到路由器的接口上。
◎路由的發現:發現鄰站知道哪些網絡。
◎選擇路由:通過從鄰站學習到的信息,提供最優的(與度量值有關)到達目的地的路徑。
◎保持路由信息:路由器保存一張路由表,它存儲所知道的所有路由信息。

17、Cisco路由器支持的路由協議與其他廠家設備的協議兼容嗎?
除了IGRP和EIGRP,Cisco路由器支持的所有路由協議都與其他廠家實現的相同協議兼容。IGRP和EIGRP是Cisco的專利產品。

18、RIP路由表的表項的信息說明了什麼?
RIP路由表的每一個表項都提供了一定的信息,包括最終目的地址、到目的地的下一跳地址和度量值。這個度量值表示到目的終端的距離(跳步數)。其他的信息也可以包括。

路由器問題補充:

1、Cisco3600系列路由器目前是否支持廣域網接口卡WIC-2T和WIC-2A/S?
Cisco3600系列路由器在12.007XK及以上版本支持WIC-2T和WIC-2A/S這兩種廣域網接口卡。
但是需要注意的是:
只有快速以太網混合網絡模塊能夠支持這兩種廣域網接口卡。
支持這兩種接口卡的網絡模塊如下所示:
NM-1FE2W, NM-2FE2W, NM-1FE1R2W, NM-2W。
而以太網混合網絡模塊不支持,如下所示:
NM-1E2W,NM-2E2W, NM1E1R2W。

2、Cisco3600系列路由器的NM(4A/S,NM(8A/S網絡模塊和WIC(2A/S廣域網接口卡支持的最大异/同步速率各是多少?
這些網絡模塊和廣域網接口卡既能夠支持异步,也能夠支持同步。支持的最大异步速率均為115.2Kbps,最大同步速率均為128Kbps。

3、WIC-2T與WIC-1T的電纜各是哪種?
WIC-1T:DB60轉V35或RS232、 449等電纜。 如:CAB-V35-MT。
WIC-2T:SMART型轉V35或RS232、 449等電纜。 如: CAB-SS-V35-MT。

4、Cisco 7000系列上的MCE1與Cisco 2600/3600上的E1、 CE1有什麼區別?
Cisco 7000上的MCE1可配置為E1、 CE1, 而Cisco 2600/3600上的E1、 CE1僅支持自己的功能。

5、Cisco 2600系列路由器,是否支持VLAN間路由,對IOS軟件有何需求?
Cisco(2600系列路由器中,只有Cisco2620和Cisco2621可以支持VLAN間的 路由(百兆端口才支持VLAN間路由)。並且如果支持VLAN間路由,要求IOS軟件必須包括IP Plus特性集。

6、Cisco3660路由器與3620/3640路由器相比在硬件上有那些不同?
不同點如下:
* Cisco3660路由器基本配置包括1或2個10/100M自適應快速以太網接口;而Cisco3620/3640基本配置中不包括以太網接口。
* Cisco3660路由器支持網絡模塊熱插拔,而 Cisco3620/3640不支持網絡模塊熱插拔。
* Cisco3660的冗余電源為內置, 而Cisco3620/3640的冗余電源為外置的。

7、為什麼3640不能識別NM-1FE2W?
需要將IOS升級到12.0.7T

交換机問題:

1、Catalyst 35500XL/2950XL的堆疊是如何實現的?
a. 需要使用專門的堆疊電纜,1米長或50厘米長(CAB-GS-1M或CAB-GS-50CM)以及專門的千兆堆疊卡GigaStack GBIC (WS-X3550-XL) (該卡已含CAB-GS-50CM 堆疊電纜)。
b. 可以選用2種堆疊方法:菊花鏈法(提供1G的帶寬)或點對點法(提供 2G的帶寬)。
c. 2種方法都可以做備份。
d. 菊花鏈法最多可支持9台交換机的堆疊, 點對點法最多可支持8台。

2、Catalyst 3550 XL系列交換机做堆疊時,是否支持冗余備份?
Catalyst3550XL系列交換机的堆疊有兩種實現方法:菊花鏈方式和點到點方式。
當使用菊花鏈方式時,堆疊的交換机依次連接,交換机之間可以達到1Gbps的傳輸帶寬;
當使用點到點方式時,需要一台單獨的 Catalyst3508G-XL交換机,
其余的交換机通過堆疊GBIC卡和堆疊線纜與3508G相連,這種方法最大可以達到2Gbps的全雙工傳輸帶寬。  
這兩種方法都分別支持堆疊的冗余連接。當使用菊花鏈連接方式時,冗余連接是通過將最上面的交換机與最下面的交換机用堆疊線纜相連接完成的。而當使用點到點連接時,是通過使用第2台3508交換机來完成的。

3、 Catalyst3550 XL的一個千兆口使用堆疊卡做堆疊后, 另外一個千兆口是否可以連接千兆的交換机或千兆的服務器?
可以。需使用1000Base-SX GBIC或1000Base-LX/LH GBIC。

4、 Ethernet Channel Tech. 可以應用在什麼網絡設備之間?如何使用?
可以應用在交換机之間, 交換机和路由器之間,交換机和服務器之間
可以將2個或4個10/100Mbps或1000Mbps端口使用 Ethernet Channel Tech.,達到最多400M(10/100Mbps端口)、4G(1000Mbps端口) 或800M(10/100Mbps端口)、8G(1000Mbps端口) 的帶寬。

5、Ethernet Channel Technology有什麼作用?
增加帶寬,負載均衡,線路備份

6、 當端口設置成 Ethernet Channel時,如何選擇線路?
根据數据幀的以太網源地址和目的地址最后1位或2位做或運算,決定從哪條鏈路輸出。對于路由器來說是根据網絡地址做或運算,以決定鏈路的輸出。

7、Ethernet Channel Technology 與 PAgP (Port Aggregation Protocol ) 的區別?
PAgP是 Ethernet Channel的增強版,它支持在 Ethernet Channel 上的 Spanning Tree Protocol和Uplink Fast,並支持自動配置 Ethernet Channel 的捆綁。
最少需要的電源數 1 2
包轉發速率 18Mpps 18Mpps
背板帶寬 24Gbps 60Gbps

8、Catalyst4000系列是否支持ISL?
從Supervisor Engine Software Release 5.1開始支持。

9、Catalyst4000交換机的冗余電源選項4008/2和4008/3有何區別?
Catalyst4003交換机机箱上有兩個電源插槽,出廠時本身自帶一個電源,4008/2是專為其定制的冗余電源。Catalyst4006的机箱上有三個電源插槽,出廠時帶有2個電源供電,4008/3是為其定制的專用冗余電源。

10、Catalyst 4006的三層交換模塊是否不含以太網端口?
不,Catalyst4006的三層交換模塊含有32個10/100自適應端口和2個千兆端口。 在4003上使用時可替代原有的WS-X4232-GB-RJ模塊, 從而不影響網絡結构。

11、Catalyst 4000系列模塊化交換机使用千兆交換模塊時, 如何選用目前存在的兩種交換模塊(產品編號如下)?
WS-X4306-GB Catalyst 4000 Gigabit Ethernet Module, 6-Ports (GBIC)
WS-X4418-GB Catalyst 4000 GE Module, Server Switching 18-Ports (GBIC)
這兩個模塊的使用環境不同
WS-X4306-GB是一個6口的千兆交換模塊,每個端口獨占千兆的帶寬,適合做網絡的主干,用來連接具有千兆接口的交換机;也可以與具有千兆網卡的服務器相連。
WS-X4418-GB 是一個18口的千兆交換模塊,其中有兩個口是獨占千兆的帶寬,另外16個口共享8G的全雙工的帶寬,但每個端口可以突發到千兆。此模塊適合在服務器比較集中的地方連接千兆的服務器,而不適合連接網絡主干。

12、Catalyst 6000系列的背板帶寬和包轉發速率各為多少?
Catalyst 6500系列的背板帶寬可擴展到256Gbps, 包轉發速率可擴展到150Mpps; Catalyst 6000系列作為一個經濟有效的解決方案可提供到32Gbps的背板帶寬和15Mpps的包轉發速率。

13、Catalyst 6000系列的MSFC 要求多少M DRAM ?
Catalyst 6000系列IOS軟件存放在MSFC里, MSFC要求有128M DRAM。 缺省配置已含128M DRAM。

14、Catalyst 6000系列上的插槽是否有限制?
除第一個插槽專用于引擎, 第二個插槽可用于備份引擎或線卡, 其它插槽都用于線卡。

15、Catalyst 6000系列有几種引擎?
Catalyst 6000系列的引擎分為Supervisor Engine 1和Supervisor Engine 1A兩種, 其中 Supervisor Engine 1A 有兩個特定的備份引擎。其型號分別如下: 型號 描述
WS-X6K-SUP1-2GE Catalyst 6000 Supervisor Engine1引擎 含兩個千兆端口(需購GBIC)
WS-X6K-SUP1A-2GE Catalyst 6000 Supervisor Engine1A引擎 加強的QOS特性, 含兩個千兆端口(需購GBIC)
WS-X6K-SUP1A-PFC Catalyst 6000 Supervisor Engine1A引擎 含兩個千兆端口(需購GBIC)和PFC卡
WS-X6K-S1A-PFC/2 Catalyst 6000 Supervisor Engine1A冗余引擎 含兩個千兆端口(需購GBIC)和PFC卡
WS-X6K-SUP1A-MSFC Catalyst 6000 Supervisor Engine1A引擎 含兩個千兆端口(需購GBIC)和MSFC、 PFC卡
WS-X6K-S1A-MSFC/2 Catalyst 6000 Supervisor Engine1A冗余引擎, 含兩個千兆端口(需購GBIC)和MSFC、 PFC卡

16、Catalyst 6000系列上備份引擎與主引擎必須是一致的嗎?
是的。 Catalyst 6000系列的備份引擎與主引擎必須是一致的,
例如, 不能將不帶MSFC&PFC的引擎給帶MSFC&PFC的引擎作備份。
另外, WS-X6K-SUP1A-PFC 和 WS-X6K-SUP1A-MSFC有專門的備份引擎。
主、備引擎的對應關系如下:
主引擎 備份引擎
WS-X6K-SUP1-2GE WS-X6K-SUP1-2GE
WS-X6K-SUP1A-2GE WS-X6K-SUP1A-2GE
WS-X6K-SUP1A-PFC WS-X6K-S1A-PFC/2
WS-X6K-SUP1A-MSFC WS-X6K-S1A-MSFC/2

17、Catalyst 6000系列支持的路由協議有哪些?
Catalyst 6000系列支持的路由協議有:OSPF, IGRP, EIGRP, BGP4, IS-IS, RIP和RIP II;
對于組播PIM支持sparse和dense兩種模式;
支持的非 IP 路由協議有: NLSP, IPX RIP/SAP, IPX EIGRP, RTMP, Apple Talk EIGRP和DECnet Phase IV和V。

18、Catalyst 6000系列支持的網絡協議有哪些?
MSM上支持 6Mpps 的 IP、 IP 組播和 IPX 。 引擎上的MSFC 支持 15Mpps的 IP、 IP 組播、IPX以及 AppleTalk、 VINEs、 DECnet.

19、Catalyst6000上若引擎為SUP-1A-2GE, 怎麼實現三層交換的功能?
用MSM實現。 6000上只有含有MSFC的引擎才能通過MSFC實現三層交換功能, 在6000上, MSFC是不能單獨訂購的。

20、Catalyst? 6000交換机和Catalyst? 6500交換机有何區別?6000交換机是否可以升級到6500交換机?
Catalyst? 6000系列交換机的背板帶寬為32G,而6500系列交換机的背板帶寬最大可以擴展到256G。由于這兩個系列的交換机使用的背板總線結构不同,所以6000交換机不能升級到6500系列交換机。
但這兩個系列交換机使用相同的交換模塊。

21、Catalyst3508G是否也可以同Catalyst3524一樣采用菊花鏈堆疊模式?
完全可以。

22、在交換机之間配置Uplink-Fast時,是否需要關閉原有Spanning-Tree選項?
不需要,Uplink-Fast實際上使用的是一種簡化的Spanning-Tree算法, 與標准的Spanning-Tree兼容,因此不需關閉該功能。