文章詳情頁
ORACLE問題與解答
瀏覽:2日期:2023-11-14 12:23:06
大家在應用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表的資料(有關聯的字段) UPDATE 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.OWNER'.'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#. 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 . 怎幺可以快速做一個和原表一樣的備份表? 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:ora9iadmineyglepfileinit.ora'文件已創建。 SQL> CREATE SPFILE='E:ora9idatabase PFILEEYGLE.ORA' FROM PFILE='E:ora9iadmineyglepfileinit.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,OWNER,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 < n ORDER BY empno; 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(SYSDATE) 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飌. 兩個結果集互加的函數? 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(SYSDATE,'YYYY') FROM DUAL; 120>.取時間點的月份的寫法: SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL; 121>.取時間點的日的寫法: SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL; 122>.取時間點的時的寫法: SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL; 123>.取時間點的分的寫法: SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL; 124>.取時間點的秒的寫法: SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL; 125>.取時間點的日期的寫法: SELECT TRUNC(SYSDATE) FROM DUAL; 126>.取時間點的時間的寫法: SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL; 127>.日期,時間形態變為字符形態 SELECT TO_CHAR(SYSDATE) FROM DUAL; 128>.將字符串轉換成日期或時間形態: SELECT TO_DATE('2003/08/01') FROM DUAL; 129>.返回參數的星期幾的寫法: SELECT TO_CHAR(SYSDATE,'D') FROM DUAL; 130>.返回參數一年中的第幾天的寫法: SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL; 131>.返回午夜和參數中指定的時間值之間的秒數的寫法: SELECT TO_CHAR(SYSDATE,'SSSSS') FROM DUAL; 132>.返回參數中一年的第幾周的寫法: SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL; 虛擬字段 133. CURRVAL 和 nextval 為表創建序列 CREATE SEQUENCE EMPSEQ ... ; SELECT empseq.currval FROM DUAL ; 自動插入序列的數值 INSERT INTO emp VALUES (empseq.nextval, 'LEWIS', 'CLERK', 7902, SYSDATE, 1200, NULL, 20) ; 134. ROWNUM 按設定排序的行的序號 SELECT * FROM emp WHERE ROWNUM < 10 ; 135. ROWID 返回行的物理地址 SELECT ROWID, ename FROM emp WHERE deptno = 20 ; 136. 將N秒轉換為時分秒格式? set serverout on declare N number := 1000000; ret varchar2(100); begin ret := trunc(n/3600) '小時' to_char(to_date(mod(n,3600),'sssss'),'fmmi'分 'ss'秒'') ; dbms_output.put_line(ret); end; 137. 如何查詢做比較大的排序的進程? SELECT b.tablespace, b.segfile#, b.segblk#, b.blocks, a.sid, a.serial#, a.username, a.osuser, a.status FROM v$session a,v$sort_usage b WHERE a.saddr = b.session_addr ORDER BY b.tablespace, b.segfile#, b.segblk#, b.blocks ; 138. 如何查詢做比較大的排序的進程的SQL語句? select /*+ ORDERED */ sql_text from v$sqltext a where a.hash_value = ( select sql_hash_value from v$session b where b.sid = &sid and b.serial# = &serial) order by piece asc ; 139. 如何查找重復記錄? SELECT * FROM TABLE_NAME WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2); 140. 如何刪除重復記錄? DELETE FROM TABLE_NAME WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2); 141. 如何快速編譯所有視圖? SQL >SPOOL VIEW1.SQL SQL >SELECT ‘ALTER VIEW ‘TNAME’ COMPILE;’ FROM TAB; SQL >SPOOL OFF 然后執行VIEW1.SQL即可。 SQL >@VIEW1.SQL; 142. ORA-01555 SNAPSHOT TOO OLD的解決辦法 增加MINEXTENTS的值,增加區的大小,設置一個高的OPTIMAL值。 143. 事務要求的回滾段空間不夠,表現為表空間用滿(ORA-01560錯誤),回滾段擴展到達參數MAXEXTENTS的值(ORA-01628)的解決辦法. 向回滾段表空間添加文件或使已有的文件變大;增加MAXEXTENTS的值。 144. 如何加密ORACLE的存儲過程? 下列存儲過程內容放在AA.SQL文件中 create or replace procedure testCCB(i in number) as begin dbms_output.put_line('輸入參數是'to_char(i)); end; SQL>wrap iname=a.sql; PL/SQL Wrapper: Release 8.1.7.0.0 - Production on Tue Nov 27 22:26:48 2001 Copyright (c) Oracle Corporation 1993, 2000. All Rights Reserved. Processing AA.sql to AA.plb 運行AA.plb SQL> @AA.plb ; 145. 如何監控事例的等待? select event,sum(decode(wait_Time,0,0,1)) 'Prev', sum(decode(wait_Time,0,1,0)) 'Curr',count(*) 'Tot' from v$session_Wait group by event order by 4; 146. 如何回滾段的爭用情況? select name, waits, gets, waits/gets 'Ratio' from v$rollstat C, v$rollname D where C.usn = D.usn; 147. 如何監控表空間的 I/O 比例? select B.tablespace_name name,B.file_name 'file',A.phyrds pyr, A.phyblkrd pbr,A.phywrts pyw, A.phyblkwrt pbw from v$filestat A, dba_data_files B where A.file# = B.file_id order by B.tablespace_name; 148. 如何監控文件系統的 I/O 比例? select substr(C.file#,1,2) '#', substr(C.name,1,30) 'Name', C.status, C.bytes, D.phyrds, D.phywrts from v$datafile C, v$filestat D where C.file# = D.file#; 149. 如何在某個用戶下找所有的索引? select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name from user_ind_columns, user_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' FROMV$ROWCACHE; SELECT SUM(PINS) 'EXECUTIONS', SUM(RELOADS) 'CACHE MISSES WHILE EXECUTING' FROMV$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 wheretype='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
上一條:工作中遇到的oracle故障分析和處理一例下一條:ORACLE回滾段管理
排行榜