阿里巴巴公司DBA筆試題 http://searchdatabase.techtarget.com.cn/tips/2/2535002.shtml 注:如下題目,可根據本身狀況挑選題目做答,沒必要所有做答.您也能夠就相關問題直接找負責面試人員面述而不筆答 一:SQL tuning 類 1:列舉幾種錶鏈接方式 2:不借助第三方工具,怎樣查看sql的執行計劃 3:如何使用CBO,CBO與RULE的區別 4:如何定位重要(消耗資源多)的SQL 5:如何跟蹤某個session的SQL 6:SQL調整最關注的是什麼 7:說說你對索引的認識(索引的結構、對dml影響、對查詢影響、爲何提升查詢性能) 8:使用索引查詢必定能提升查詢的性能嗎?爲何 9:綁定變量是什麼?綁定變量有什麼優缺點? 10:如何穩定(固定)執行計劃 11:和排序相關的內存在8i和9i分別怎樣調整,臨時表空間的做用是什麼 12:存在表T(a,b,c,d),要根據字段c排序後取第21—30條記錄顯示,請給出sql 二:數據庫基本概念類 1:pctused and pctfree 表示什麼含義有什麼做用 2:簡單描述table / segment / extent / block之間的關係 3:描述tablespace和datafile之間的關係 4:本地管理表空間和字典管理表空間的特色,ASSM有什麼特色 5:回滾段的做用是什麼 6:日誌的做用是什麼 7:SGA主要有那些部分,主要做用是什麼 8:oracle系統進程主要有哪些,做用是什麼 三:備份恢復類 1:備份如何分類 2:歸檔是什麼含義 3:若是一個表在2004-08-04 10:30:00 被drop,在有完善的歸檔和備份的狀況下,如何恢復 4:rman是什麼,有何特色 5:standby的特色 6:對於一個要求恢復時間比較短的系統(數據庫50G,天天歸檔5G),你如何設計備份策略 四:系統管理類 1:對於一個存在系統性能的系統,說出你的診斷處理思路 2:列舉幾種診斷IO、CPU、性能情況的方法 3:對statspack有何認識 4:若是系統如今須要在一個很大的表上建立一個索引,你會考慮那些因素,如何作以儘可能減少對應用的影響 5:對raid10 和raid5有何認識 五:綜合隨意類 1:你最擅長的是oracle哪部分? 2:喜歡oracle嗎?喜歡上論壇嗎?或者偏好oracle的哪一部分? 3:隨意說說你以爲oracle最有意思的部分或者最困難的部分 4:爲什麼要選擇作DBA呢? (1) A 表中有100條記錄. SELECT * FROM A WHERE A.COLUMN1 = A.COLUMN1 這個語句返回幾條記錄? (簡單吧,彷佛1秒鐘就有答案了:) (2) CREATE SEQUENCE PEAK_NO SELECT PEAK_NO.NEXTVAL FROM DUAL --> 假設返回1 10秒中後,再次作 SELECT PEAK_NO.NEXTVAL FROM DUAL --> 返回多少? (3) SQL> connect sys as sysdba Connected. SQL> insert into dual values ( 'Y'); 1 row created. SQL> commit; Commit complete. SQL> select count(*) from dual; COUNT(*) ---------- 2 SQL> delete from dual; commit; -->DUAL裏還剩幾條記錄? =============================== ORACLE 面試問題-技術篇 1. 解釋冷備份和熱備份的不一樣點以及各自的優勢 解答:熱備份針對歸檔模式的數據庫,在數據庫仍舊處於工做狀態時進行備份。而冷備份指在數據庫關閉後,進行備份,適用於全部模式的數據庫。熱備份的優勢在於當備份時,數據庫仍舊能夠被使用而且能夠將數據庫恢復到任意一個時間點。冷備份的優勢在於它的備份和恢復操做至關簡單,而且因爲冷備份的數據庫能夠工做在非歸檔模式下,數據庫性能會比歸檔模式稍好。(由於沒必要將archive log寫入硬盤) 2. 你必須利用備份恢復數據庫,可是你沒有控制文件,該如何解決問題呢? 解答:重建控制文件,用帶backup control file 子句的recover 命令恢復 數據庫。 3. 如何轉換init.ora到spfile? 解答:使用create spfile from pfile 命令 . 4. 解釋data block , extent 和 segment的區別(這裏建議用英文術語) 解答:data block是數據庫中最小的邏輯存儲單元。當數據庫的對象須要更多的物理存儲空間時,連續的data block就組成了extent . 一個數據庫對象 擁有的全部extents被稱爲該對象的segment. 5. 給出兩個檢查表結構的方法 解答:1。DESCRIBE命令 2. DBMS_METADATA.GET_DDL 包 6. 怎樣查看數據庫引擎的報錯 解答:alert log. 7. 比較truncate和delete 命令 解答:二者均可以用來刪除表中全部的記錄。區別在於:truncate是DDL操做,它移動HWK,不須要 rollback segment .而Delete是DML操做, 須要rollback segment 且花費較長時間. 8. 使用索引的理由 解答:快速訪問表中的data block 9. 給出在STAR SCHEMA中的兩種表及它們分別含有的數據 解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放對fact table 某些屬性描述的信息 10. FACT Table上須要創建何種索引? 解答:位圖索引 (bitmap index) 11. 給出兩種相關約束? 解答:主鍵和外鍵 12. 如何在不影響子表的前提下,重建一個母表 解答:子表的外鍵強制實效,重建母表,激活外鍵 13. 解釋歸檔和非歸檔模式之間的不一樣和它們各自的優缺點 解答:歸檔模式是指你能夠備份全部的數據庫 transactions並恢復到任意一個時間點。非歸檔模式則相反,不能恢復到任意一個時間點。可是非歸檔模式能夠帶來數據庫性能上的少量提升 . 14. 如何創建一個備份控制文件? 解答:Alter database backup control file to trace. 15. 給出數據庫正常啓動所經歷的幾種狀態 ? 解答: STARTUP NOMOUNT – 數據庫實例啓動 STARTUP MOUNT - 數據庫裝載 STARTUP OPEN – 數據庫打開 16. 哪一個column能夠用來區別V$視圖和GV$視圖? 解答: INST_ID 指明集羣環境中具體的 某個instance 。 17. 如何生成explain plan? 解答: 運行utlxplan.sql. 創建plan 表 針對特定SQL語句,使用 explain plan set statement_id = 'tst1' into plan_table 運行utlxplp.sql 或 utlxpls.sql察看explain plan 18. 如何增長buffer cache的命中率? 解答:在數據庫較繁忙時,適用buffer cache advisory 工具,查詢v$db_cache_advice . 若是有必要更改,可使用 alter system set db_cache_size 命令 19. ORA-01555的應對方法? 解答:具體的出錯信息是snapshot too old within rollback seg , 一般能夠經過 增大rollback seg來解決問題。固然也須要察看一下具體形成錯誤的SQL文本 20. 解釋$ORACLE_HOME和$ORACLE_BASE的區別? 解答:ORACLE_BASE是oracle的根目錄,ORACLE_HOME是oracle產品 的目錄。 21. 如何判斷數據庫的時區? 解答:SELECT DBTIMEZONE FROM DUAL; 22. 解釋GLOBAL_NAMES設爲TRUE的用途 解答:GLOBAL_NAMES指明聯接數據庫的方式。若是這個參數設置爲TRUE, 在創建數據庫連接時就必須用相同的名字連結遠程數據庫 23。如何加密PL/SQL程序? 解答:WRAP 24. 解釋FUNCTION,PROCEDURE和PACKAGE區別 解答:function 和procedure是PL/SQL代碼的集合,一般爲了完成 一個任務。procedure 不須要返回任何值而function將返回一個值 在另外一方面,Package是爲了完成一個商業功能的一組function和proceudre 的集合 25. 解釋TABLE Function的用途 解答:TABLE Function是經過PL/SQL邏輯返回一組紀錄,用於 普通的表/視圖。他們也用於pipeline和ETL過程。 26. 舉出3種能夠收集three advisory statistics 解答:Buffer Cache Advice, Segment Level Statistics, Timed Statistics 27. Audit trace 存放在哪一個oracle目錄結構中? 解答:unix $ORACLE_HOME/rdbms/audit Windows the event viewer 28. 解釋materialized views的做用 解答:Materialized views 用於減小那些彙總,集合和分組的 信息的集合數量。它們一般適合於數據倉庫和DSS系統。 29. 當用戶進程出錯,哪一個後臺進程負責清理它 解答: PMON 30. 哪一個後臺進程刷新materialized views? 解答:The Job Queue Processes. 31. 如何判斷哪一個session正在連結以及它們等待的資源? 解答:V$SESSION / V$SESSION_WAIT 32. 描述什麼是 redo logs 解答:Redo Logs 是用於存放數據庫數據改動情況的物理和邏輯結構。 能夠用來修復數據庫. 33. 如何進行強制LOG SWITCH? 解答:ALTER SYSTEM SWITCH LOGFILE; 34. 舉出兩個判斷DDL改動的方法? 解答:你可使用 Logminer 或 Streams 35. Coalescing作了什麼? 解答:Coalescing針對於字典管理的tablespace進行碎片整理,將 臨近的小extents合併成單個的大extent. 36. TEMPORARY tablespace和PERMANENT tablespace 的區別是? 解答:A temporary tablespace 用於臨時對象例如排序結構而 permanent tablespaces 用來存儲那些'真實'的對象(例如表,回滾段等) 37. 建立數據庫時自動創建的tablespace名稱? 解答:SYSTEM tablespace. 38. 建立用戶時,須要賦予新用戶什麼權限才能使它聯上數據庫。 解答:CONNECT 39. 如何在tablespace裏增長數據文件? 解答:ALTER TABLESPACE <tablespace_name> ADD DATAFILE <datafile_name> SIZE <size> 40. 如何變更數據文件的大小? 解答:ALTER DATABASE DATAFILE <datafile_name> RESIZE <new_size>; 41. 哪一個VIEW用來檢查數據文件的大小? 解答: DBA_DATA_FILES 42. 哪一個VIEW用來判斷tablespace的剩餘空間 解答:DBA_FREE_SPACE 43. 如何判斷誰往表裏增長了一條紀錄? 解答:auditing 44. 如何重構索引? 解答: ALTER INDEX <index_name> REBUILD; 45. 解釋什麼是Partitioning(分區) 以及它的優勢。 解答:Partition將大表和索引分割成更小,易於管理的分區。 46. 你剛剛編譯了一個PL/SQL Package可是有錯誤報道,如何顯示出錯信息? 解答:SHOW ERRORS 47. 如何蒐集表的各類狀態數據? 解答: ANALYZE The ANALYZE command. 48. 如何啓動SESSION級別的TRACE 解答: DBMS_SESSION.SET_SQL_TRACE ALTER SESSION SET SQL_TRACE = TRUE; 49. IMPORT和SQL*LOADER 這2個工具的不一樣點 解答:這兩個ORACLE工具都是用來將數據導入數據庫的。 區別是:IMPORT工具只能處理由另外一個ORACLE工具EXPORT生成 的數據。而SQL*LOADER能夠導入不一樣的ASCII格式的數據源 50。 用於網絡鏈接的2個文件? 解答: TNSNAMES.ORA and SQLNET.ORA ====================================== 淘寶網的問題 數據庫切換日誌的時候,爲何必定要發生檢查點?這個檢查點有什麼意義? 表空間管理方式有哪幾種,各有什麼優劣。 本地索引與全局索引的差異與適用狀況。 一個表a varchar2(1),b number(1),c char(2),有100000條記錄,建立B-Tree索引在字段a上,那麼表與索引誰大?爲何? 9i的data guard有幾種模式,各有什麼差異。 執行計劃是什麼,查看執行計劃通常有哪幾種方式。 簡單描述一下nest loop與hash join的差異。 db file sequential read與db file scattered read等待的差異,若是以上等待比較多,證實了什麼問題? library cache pin與library cache lock是什麼地方的等待事件,通常說明什麼問題? 在一個24*7的應用上,須要把一個訪問量很大的1000萬以上數據級別的表的普通索引(a,b)修改爲惟一約束(a,b,c),你通常會選擇怎麼作,請說出具體的操做步驟與語句。 若是一個linux上的oracle數據庫系統忽然變慢,你通常從哪裏去查找緣由。 說明一下對raid5與raid01/10的認識。 列舉5個10g的新特性 ====================== 一、表:table1(FId,Fclass,Fscore),用最高效最簡單的SQL列出各班成績最高的列表,顯示班級,成績兩個字段。 二、有一個表table1有兩個字段FID,Fno,字都非空,寫一個SQL語句列出該表中一個FID對應多個不一樣的Fno的紀錄。 類如: 101a1001 101a1001 102a1002 102a1003 103a1004 104a1005 104a1006 105a1007 105a1007 105a1007 結果: 102a1002 102a1003 104a1005 104a1006 三、有員工表empinfo ( Fempno varchar2(10) not null pk, Fempname varchar2(20) not null, Fage number not null, Fsalary number not null ); 假如數據量很大約1000萬條;寫一個你認爲最高效的SQL,用一個SQL計算如下四種人: fsalary>9999 and fage > 35 fsalary>9999 and fage < 35 fsalary <9999 and fage > 35 fsalary <9999 and fage < 35 每種員工的數量; 四、表A字段以下 month person income 月份 人員 收入 要求用一個SQL語句(注意是一個)的處全部人(不區分人員)每月及上月和下月的總收入 要求列表輸出爲 月份 當月收入 上月收入 下月收入 5,表B C1 c2 2005-01-01 1 2005-01-01 3 2005-01-02 5 要求的處數據 2005-01-01 4 2005-01-02 5 合計 9 試用一個Sql語句完成。 6,數據庫1,2,3 範式的概念與理解。 7,簡述oracle行觸發器的變化表限制表的概念和使用限制,行觸發器裏面對這兩個表有什麼限制。 八、oracle臨時表有幾種。 臨時表和普通表的主要區別有哪些,使用臨時表的主要緣由是什麼? 9,怎麼實現:使一個會話裏面執行的多個過程函數或觸發器裏面均可以訪問的全局變量的效果,而且要實現會話間隔離? 10,aa,bb表都有20個字段,且記錄數量都很大,aa,bb表的X字段(非空)上有索引, 請用SQL列出aa表裏面存在的X在bb表不存在的X的值,請寫出認爲最快的語句,並解譯緣由。 11,簡述SGA主要組成結構和用途? 12什麼是分區表?簡述範圍分區和列表分區的區別,分區表的主要優點有哪些? 13,背景:某數據運行在archivelog,且用rman做過全備份和數據庫的冷備份, 且全部的歸檔日誌都有,現控制文件所有損壞,其餘文件所有無缺,請問該怎麼恢復該數據庫,說一兩種方法。 14,用rman寫一個備份語句:備份表空間TSB,level 爲2的增量備份。 15,有個表a(x number(20),y number(20))用最快速高效的SQL向該表插入從1開始的連續的1000萬記錄。 ========================================= 1若是信息採集管理系統(ICM)崩潰了怎麼辦? 2你如何加速打補丁的過程? 3打補丁的過程當中出錯了,你怎麼辦? 4請提供克隆過程和克隆以後採起的手工操做的大概步驟。 5介紹一下AutoConfig。AutoConfig是如何知道文件中的哪一個樹脂須要被放入哪個文件的? 6你能告訴我,你對一個發生故障的自服務登陸問題作哪些測試嗎?你要檢查哪一個配置文件操做選項和文件? 7若是你不能看到併發管理日誌和輸出文件,是哪裏出錯了? 8你是如何更改併發管理日誌和輸出文件的位置的? 9若是用戶正遇到性能方面的問題,你如何找到問題的緣由? 10你如何更改應用程序的密碼? 11請寫出DBC文件的位置,而且解釋它的重要性和應用程序如何知道DBC文件名? 答案 1全部其餘的管理器都會繼續工做。ICM只會處理隊列控制請求,意思是開啓和關閉其餘併發的管理器。 實際的技術對話 少數可以經過電話面試的候選人可以到工做地點去進行面試,Burleson稱之爲候選人的技術化。他建議面試人員提出一些專業的,例如「中的SYS用戶默認密碼是多少?」 這些問題沒有捏造的答案,面試人員能夠輕鬆地判斷候選人的技術能力。「只有那些實踐過的員知道答案是‘change_on_install,’」 Burleson說。「經驗豐富的管理員能夠當即發現謊言。」 而後就是最後一個階段,與公司的IT人員在線會見。這些會見一般會持續半天,這是真正在測試你是否會被僱傭。有時候是一些開放的問題,例如「若是一個終 端用戶抱怨性能差勁,你要作的第一件事情是什麼?」這些問題的答案很是具備啓發性,Burleson說,由於他們也沒有正確答案,他們只是看看候選人是如 何獨立思考的,或者是數據庫管理員有多少創新思惟。 也許更重要的是,這個最後的交流就是判斷一些無形的,例如人際關係技巧的過程。擁有一個可以成爲團隊中一員的數據庫管理員對於大多數公司(即便不是全部的公司)來講都是優先考慮的。在不少狀況下 ,這些無形的東西造成了差異。 「我見過公司拒絕了技術能力最強的候選人。這樣的事情老是發生,」 Burleson指出。「數據庫管理員須要與其餘人打好關係。」 最後,Burleson說,忘掉星期五能夠穿便裝的習慣。 「面試中穿得太隨即是對本身的極度不負責,」他說。 「外表確實重要。」 ———————————————————————————————————— 整理了幾個Oracle面試中的技術問題,各位能夠借鑑一下: 1.解釋冷備份和熱備份的不一樣點以及各自的優勢 解 答:熱備份針對歸檔模式的數據庫,在數據庫仍舊處於工做狀態時進行備份。而冷備份指在數據庫關閉後,進行備份,適用於全部模式的數據庫。熱備份的優勢在於 當備份時,數據庫仍舊能夠被使用而且能夠將數據庫恢復到任意一個時間點。冷備份的優勢在於它的備份和恢復操做至關簡單,而且因爲冷備份的數據庫能夠工做在 非歸檔模式下,數據庫性能會比歸檔模式稍好。(由於沒必要將archive log寫入硬盤) 2.你必須利用備份恢復數據庫,可是你沒有控制文件,該如何解決問題呢? 解答:重建控制文件,用帶backup control file 子句的recover 命令恢復數據庫。 3.如何轉換init.ora到spfile? 解答:使用create spfile from pfile 命令. 4.解釋data block , extent 和 segment的區別(這裏建議用英文術語) 解答:data block是數據庫中最小的邏輯存儲單元。當數據庫的對象須要更多的物理存儲空間時,連續的data block就組成了extent . 一個數據庫對象擁有的全部extents被稱爲該對象的segment. 5.給出兩個檢查表結構的方法 解答:1.DESCRIBE命令 2.DBMS_METADATA.GET_DDL 包 6.怎樣查看數據庫引擎的報錯 解答:alert log. 評價:這裏的回答並非十分全面,這些問題能夠經過多個角度來進行解釋,也許你沒必要在面試過程當中給出徹底詳盡的答案,只須要經過你的解答使面試考官瞭解你對ORACLE概念的熟悉程度。 2 2.1你能夠合併多個補丁。 2.2你能夠爲一個非交互的補丁建立一個響應文件。 2.3你能夠經過選項(nocompiledb, nomaintainmrc, nocompile)來應用補丁,而且在應用了全部的補丁以後,一次運行它們。 3 查看失敗工做的日誌,找到而且糾正錯誤,用adctrl 工具從新開啓工做。 4在源文件上(全部層)運行pre-clone,使用RMAN複製(或者從熱或者冷備份中從新存儲數據庫),拷貝文件系統,而後在目標文件(全部層)上運行post-clone 。 手工步驟(可能會更多): 4.1改變全部的非網站配置選項數值(快速克隆的話,只改變網站級別的配置文件選項)。 4.2 修改工做流和併發管理器表。 4.3更改打印機。 5 AutoConfig 使用了一個上下文文件來維護關鍵的配置文件。一個上下文文件就是一個文件,在$APPL_TOP/admin 目錄下,進行集中式的存儲。 當你運行AutoConfig 的時候,它讀取XML文件,而且建立全部的AutoConfig 管理配置文件。 對於AutoConfig維護的每一個配置文件,都存在一個臨時文件來判斷哪一個數值是從哪一個XML文件中得來的。 6 6.1檢查DBC文件中的guest的用戶名和密碼,配置選項guest的用戶名和密碼、數據庫。 6.2查看apache/jserv是否啓動了。 6.3運行IsItWorking, FND_.PING, aoljtest等。 7頗有多是FNDFS監聽器中止了。看看 FND_CONCURRENT_REQUESTS 表中的OUTFILE_NODE_NAME 和 LOGFILE_NODE_NAME 的數值。看看FND_NODES 表。看看tnsnames.ora 中的FNDFS_ entry 。 8日誌問卷愛女的位置是由$APPLCSF/$APPLLOG 參數來決定的,輸出文件的位置是由$APPLCSF/$APPLOUT 決定的。 9 9.1追蹤這個會話(用等待)而且使用tkprof 來分析追蹤文件。 9.2生成statspack 報告並進行分析。 9.3使用top/iostat/sar/vmstat 監控O/s 。 9.4經過ping這類基本的測試結果來判斷網絡的瓶頸。 10 10.1 使用FNDCPASS 來更改APPS密碼。 10.2 手工修改wdbsvr.app/CMD.dat 文件。 10.3 更改全部從其餘環境指過來的數據庫連接。 11 11.1位置:$FND_TOP/secure directory 11.2 重要性:在其餘事務中指向數據庫。 11.3 應用程序經過使用「Applications Database Id.」來了解DBC文件的名字。 怎樣查看數據庫引擎的報錯 解答:alert log. 7. 比較truncate和delete 命令 解答:二者均可以用來刪除表中全部的記錄。區別在於:truncate是DDL操做,它移動HWK,不須要 rollback segment .而Delete是DML操做, 須要rollback segment 且花費較長時間. (1) A 表中有100條記錄. SELECT * FROM A WHERE A.COLUMN1 = A.COLUMN1 這個語句返回幾條記錄? (2) CREATE SEQUENCE PEAK_NO SELECT PEAK_NO.NEXTVAL FROM DUAL --> 假設返回1 10秒中後,再次作 SELECT PEAK_NO.NEXTVAL FROM DUAL --> 返回多少? (3) SQL> connect sys as sysdba Connected. SQL> insert into dual values ( 'Y'); 1 row created. SQL> commit; Commit complete. SQL> select count(*) from dual; COUNT(*) ---------- 2 SQL> delete from dual; commit; -->DUAL裏還剩幾條記錄? 本身解答: (1) 100 (2) 2 (3) 1 =============================== 解釋冷備份和熱備份的不一樣點以及各自的優勢 解答:熱備份針對歸檔模式的數據庫,在數據庫仍舊處於工做狀態時進行備份。而冷備份指在數據庫關閉後,進行備份,適用於全部模式的數據庫。熱備份的優勢在於當備份時,數據庫仍舊能夠被使用而且能夠將數據庫恢復到任意一個時間點。冷備份的優勢在於它的備份和恢復操做至關簡單,而且因爲冷備份的數據庫能夠工做在非歸檔模式下,數據庫性能會比歸檔模式稍好。(由於沒必要將archive log寫入硬盤) 2. 你必須利用備份恢復數據庫,可是你沒有控制文件,該如何解決問題呢? 解答:重建控制文件,用帶backup control file 子句的recover 命令恢復數據庫。 3. 如何轉換init.ora到spfile? 解答:使用create spfile from pfile 命令。 4. 解釋data block , extent 和 segment的區別(這裏建議用英文術語) 解答:data block是數據庫中最小的邏輯存儲單元。當數據庫的對象須要更多的物理存儲空間時,連續的data block就組成了extent . 一個數據庫對象擁有的全部extents被稱爲該對象的segment. 5. 給出兩個檢查表結構的方法 解答:1.describe命令 2.dbms_metadata.get_ddl 包 6. 怎樣查看數據庫引擎的報錯 解答:alert log. 7. 比較truncate和delete 命令 解答:二者均可以用來刪除表中全部的記錄。區別在於:truncate是ddl操做,它移動hwk,不須要 rollback segment .而delete是dml操做, 須要rollback segment 且花費較長時間。 8. 使用索引的理由 解答:快速訪問表中的data block 9. 給出在star schema中的兩種表及它們分別含有的數據 解答:fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放對fact table 某些屬性描述的信息 10. fact table上須要創建何種索引? 解答:位圖索引(bitmap index) 11. 給出兩種相關約束? 解答:主鍵和外鍵 12. 如何在不影響子表的前提下,重建一個母表 解答:子表的外鍵強制實效,重建母表,激活外鍵 13. 解釋歸檔和非歸檔模式之間的不一樣和它們各自的優缺點 解答:歸檔模式是指你能夠備份全部的數據庫 transactions並恢復到任意一個時間點。非歸檔模式則相反,不能恢復到任意一個時間點。可是非歸檔模式能夠帶來數據庫性能上的少量提升。 14. 如何創建一個備份控制文件? 解答:alter database backup control file to trace. 15. 給出數據庫正常啓動所經歷的幾種狀態 ? 解答:startup nomount 數據庫實例啓動 startup mount 數據庫裝載 startup open 數據庫打開 16. 哪一個column能夠用來區別v$視圖和gv$視圖? 解答: inst_id 指明集羣環境中具體的某個instance . 17. 如何生成explain plan? 解答:運行utlxplan.sql. 創建plan 錶針對特定sql語句,使用 explain plan set statement_id = ’tst1’ into plan_table 運行utlxplp.sql 或 utlxpls.sql察看explain plan 18. 如何增長buffer cache的命中率? 解答:在數據庫較繁忙時,適用buffer cache advisory 工具,查詢v$db_cache_advice . 若是有必要更改,可使用 alter system set db_cache_size 命令 19. ora-01555的應對方法? 解答:具體的出錯信息是snapshot too old within rollback seg , 一般能夠經過增大rollback seg來解決問題。固然也須要察看一下具體形成錯誤的sql文本 20. 解釋$oracle_home和$oracle_base的區別? 解答:oracle_base是oracle的根目錄,oracle_home是oracle產品的目錄。 ================================================ 1.解釋冷備份和熱備份的不一樣點以及各自的優勢 2.你必須利用備份恢復數據庫,可是你沒有控制文件,該如何解決問題呢? 3.如何轉換init.ora到spfile? 4.解釋data block , extent 和 segment的區別(這裏建議用英文術語) 5.給出兩個檢查表結構的方法 6.怎樣查看數據庫引擎的報錯 . 7事務是什麼? 8 oracle中truncate和delete命令有何區別? 9 Oracle中char和varchar2數據類型有什麼區別?有數據」test」分別存放到char(10)和varchar2(10)類型的字段中,其存儲長度及類型有何區別? 10 什麼是彙集索引,什麼是非彙集索引,什麼又是主鍵? ==================================== 一、EXISTS與IN的執行效率問題 在許多基於基礎表的查詢中,爲了知足一個條件,每每須要對另外一個表進行聯接.在這種狀況下,若是另外一個表是小表用in 效率高,是大表用exists 效率高。 二、PL/SQL包含哪些部分 Pl/sql 的塊結構包括:定義部分,執行部分,異常處理部分。 三、BETWEEN AND 邊界問題 Between and 包括邊界值 四、帶條件的查詢語句 Select * from xx where …; 六、索引的建立問題 參考: 要在本身的模式中建立索引,知足的條件: A、被索引的表或者簇在本身的模式中; B、在要被索引的表上具備index 權限或者有create any index 系統權限。 要在其它模式中建立索引,知足的條件: A、具備create any index 系統權限; B、其它模式的擁有者在保存索引或索引分區的表空間中有限額,或者他具備unlimited tablespace 七、DML,DDL有哪些語句 DDL 數據定義語言: CREATE,DROP,ALTER,GRANT,REVOKE,TRUNCATE,ANALYZE DML 數據操縱語言: SELECT,INSERT,UPDATE,DELETE,SET TRANCTION等 九、數據庫的COMMIT與ROLLBACK COMMIT:提交事務 ROLLBACK:回滾事務 十一、DELETE與TRUNCATE的區別 truncate能夠快速清空表,釋放空間,但不能回滾; delete可刪除指定條件記錄並可回滾 ------------------------------------------------------------ 1.存儲過程和函數的區別 存儲過程是用戶定義的一系列sql語句的集合,涉及特定表或其它對象的任務,用戶能夠調用存儲過程,而函數一般是數據庫已定義的方法,它接收參數並返回某種類型的值而且不涉及特定用戶表。 2.事務是什麼? 事務是做爲一個邏輯單元執行的一系列操做,一個邏輯工做單元必須有四個屬性,稱爲ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能成爲一個事務: 原子性 事務必須是原子工做單元;對於其數據修改,要麼全都執行,要麼全都不執行。 一致性 事務在完成時,必須使全部的數據都保持一致狀態。在相關數據庫中,全部規則都必須應用於事務的修改,以保持全部數據的完整性。事務結束時,全部的內部數據結構(如B樹索引或雙向鏈表)都必須是正確的。 隔離性 由併發事務所做的修改必須與任何其它併發事務所做的修改隔離。事務查看數據時數據所處的狀態,要麼是另外一併發事務修改它以前的狀態,要麼是另外一事務修改它以後的狀態,事務不會查看中間狀態的數據。這稱爲可串行性,由於它可以從新裝載起始數據,而且重播一系列事務,以使數據結束時的狀態與原始事務執行的狀態相同。 持久性 事務完成以後,它對於系統的影響是永久性的。該修改即便出現系統故障也將一直保持。 3.遊標的做用?如何知道遊標已經到了最後? 遊標用於定位結果集的行,經過判斷全局變量@@FETCH_STATUS能夠判斷是否到了最後,一般此變量不等於0表示出錯或到了最後。 4.觸發器分爲事前觸發和過後觸發,這兩種觸發有和區別。語句級觸發和行級觸發有何區別。 事前觸發器運行於觸發事件發生以前,而過後觸發器運行於觸發事件發生以後。一般事前觸發器能夠獲取事件以前和新的字段值。 語句級觸發器能夠在語句執行前或後執行,而行級觸發在觸發器所影響的每一行觸發一次。 ---------------------------------------------------------------------------------------------- 看看這個網站的Oracle面試題專欄 無數有用的面試題 * .NET/C#面試題 * ASP面試題 * C/C++面試題 * EJB面試題 * Hibernate面試題 * HR面試 * IQ測試面試題 * Java/J2EE面試題 * LINUX/UNIX面試題 * LoadRunner面試題 * Mobile開發面試題 * MySQL面試題 * Oracle面試題 * PHP面試題 * Spring面試題 * SQL Server面試題 * Struts面試題 * Web開發面試題 * 外企面試 * 嵌入式開發 * 應屆生面試題 * 數據庫面試題 * 綜合技術面試題 * 網友面經 * 網絡技術面試題 * 英語面試題 * 軟件測試題 * 面試指導 ========================================= 解釋冷備份和熱備份的不一樣點以及各自的優勢 解答:熱備份針對歸檔模式的數據庫,在數據庫仍舊處於工做狀態時進行備份。而冷備份指在數據庫關閉後,進行備份,適用於全部模式的數據庫。熱備份的優勢在於當備份時,數據庫仍舊能夠被使用而且能夠將數據庫恢復到任意一個時間點。冷備份的優勢在於它的備份和恢復操做至關簡單,而且因爲冷備份的數據庫能夠工做在非歸檔模式下,數據庫性能會比歸檔模式稍好。(由於沒必要將archive log寫入硬盤) 2. 你必須利用備份恢復數據庫,可是你沒有控制文件,該如何解決問題呢? 解答:重建控制文件,用帶backup control file 子句的recover 命令恢復 數據庫。 3. 如何轉換init.ora到spfile? 解答:使用create spfile from pfile 命令. 4. 解釋data block , extent 和 segment的區別(這裏建議用英文術語) 解答:data block是數據庫中最小的邏輯存儲單元。當數據庫的對象須要更多的物理存儲空間時,連續的data block就組成了extent . 一個數據庫對象 擁有的全部extents被稱爲該對象的segment. 5. 給出兩個檢查表結構的方法 解答:1。DESCRIBE命令 2. DBMS_METADATA.GET_DDL 包 6. 怎樣查看數據庫引擎的報錯 解答:alert log. 7. 比較truncate和delete 命令 解答:二者均可以用來刪除表中全部的記錄。區別在於:truncate是DDL操做,它移動HWK,不須要 rollback segment .而Delete是DML操做, 須要rollback segment 且花費較長時間. 8. 使用索引的理由 解答:快速訪問表中的data block 9. 給出在STAR SCHEMA中的兩種表及它們分別含有的數據 解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放對fact table 某些屬性描述的信息 10. FACT Table上須要創建何種索引? 解答:位圖索引 (bitmap index) 11. 給出兩種相關約束? 解答:主鍵和外鍵 12. 如何在不影響子表的前提下,重建一個母表 解答:子表的外鍵強制實效,重建母表,激活外鍵 13. 解釋歸檔和非歸檔模式之間的不一樣和它們各自的優缺點 解答:歸檔模式是指你能夠備份全部的數據庫 transactions並恢復到任意一個時間點。非歸檔模式則相反,不能恢復到任意一個時間點。可是非歸檔模式能夠帶來數據庫性能上的少量提升 . 14. 如何創建一個備份控制文件? 解答:Alter database backup control file to trace. 15. 給出數據庫正常啓動所經歷的幾種狀態 ? 解答: STARTUP NOMOUNT – 數據庫實例啓動 STARTUP MOUNT - 數據庫裝載 STARTUP OPEN – 數據庫打開 16. 哪一個column能夠用來區別V$視圖和GV$視圖? 解答: INST_ID 指明集羣環境中具體的 某個instance 。 17. 如何生成explain plan? 解答:運行utlxplan.sql. 創建plan 表 針對特定SQL語句,使用 explain plan set statement_id = 'tst1' into plan_table 運行utlxplp.sql 或 utlxpls.sql察看explain plan 18. 如何增長buffer cache的命中率? 解答:在數據庫較繁忙時,適用buffer cache advisory 工具,查詢v$db_cache_advice . 若是有必要更改,可使用 alter system set db_cache_size 命令 19. ORA-01555的應對方法? 解答:具體的出錯信息是snapshot too old within rollback seg , 一般能夠經過 增大rollback seg來解決問題。固然也須要察看一下具體形成錯誤的SQL文本 20. 解釋$ORACLE_HOME和$ORACLE_BASE的區別? 解答:ORACLE_BASE是oracle的根目錄,ORACLE_HOME是oracle產品 的目錄。 21. 如何判斷數據庫的時區? 解答:SELECT DBTIMEZONE FROM DUAL; 22. 解釋GLOBAL_NAMES設爲TRUE的用途 解答:GLOBAL_NAMES指明聯接數據庫的方式。若是這個參數設置爲TRUE,在創建數據庫連接時就必須用相同的名字連結遠程數據庫 23。如何加密PL/SQL程序? 解答:WRAP 24. 解釋FUNCTION,PROCEDURE和PACKAGE區別 解答:function 和procedure是PL/SQL代碼的集合,一般爲了完成一個任務。procedure 不須要返回任何值而function將返回一個值在另外一 方面,Package是爲了完成一個商業功能的一組function和proceudre的集合 25. 解釋TABLE Function的用途 解答:TABLE Function是經過PL/SQL邏輯返回一組紀錄,用於普通的表/視圖。他們也用於pipeline和ETL過程。 26. 舉出3種能夠收集three advisory statistics 解答:Buffer Cache Advice, Segment Level Statistics, Timed Statistics 27. Audit trace 存放在哪一個oracle目錄結構中? 解答:unix $ORACLE_HOME/rdbms/audit Windows the event viewer 28. 解釋materialized views的做用 解答:Materialized views 用於減小那些彙總,集合和分組的信息的集合數量。它們一般適合於數據倉庫和DSS系統。 29. 當用戶進程出錯,哪一個後臺進程負責清理它 解答: PMON 30. 哪一個後臺進程刷新materialized views? 解答:The Job Queue Processes. 31. 如何判斷哪一個session正在連結以及它們等待的資源? 解答:V$SESSION / V$SESSION_WAIT 32. 描述什麼是 redo logs 解答:Redo Logs 是用於存放數據庫數據改動情況的物理和邏輯結構。能夠用來修復數據庫. 33. 如何進行強制LOG SWITCH? 解答:ALTER SYSTEM SWITCH LOGFILE; 34. 舉出兩個判斷DDL改動的方法? 解答:你可使用 Logminer 或 Streams 35. Coalescing作了什麼? 解答:Coalescing針對於字典管理的tablespace進行碎片整理,將臨近的小extents合併成單個的大extent. 36. TEMPORARY tablespace和PERMANENT tablespace 的區別是? 解答:A temporary tablespace 用於臨時對象例如排序結構而 permanent tablespaces用來存儲那些'真實'的對象(例如表,回滾段等) 37. 建立數據庫時自動創建的tablespace名稱? 解答:SYSTEM tablespace. 38. 建立用戶時,須要賦予新用戶什麼權限才能使它聯上數據庫。 解答:CONNECT 39. 如何在tablespace裏增長數據文件? 解答:ALTER TABLESPACE ADD DATAFILE SIZE 40. 如何變更數據文件的大小? 解答:ALTER DATABASE DATAFILE RESIZE ; 41. 哪一個VIEW用來檢查數據文件的大小? 解答: DBA_DATA_FILES 42. 哪一個VIEW用來判斷tablespace的剩餘空間 解答:DBA_FREE_SPACE 43. 如何判斷誰往表裏增長了一條紀錄? 解答:auditing 44. 如何重構索引? 解答: ALTER INDEX REBUILD; 45. 解釋什麼是Partitioning(分區)以及它的優勢。 解答:Partition將大表和索引分割成更小,易於管理的分區。 46. 你剛剛編譯了一個PL/SQL Package可是有錯誤報道,如何顯示出錯信息? 解答:SHOW ERRORS 47. 如何蒐集表的各類狀態數據? 解答: ANALYZE The ANALYZE command. 48. 如何啓動SESSION級別的TRACE 解答: DBMS_SESSION.SET_SQL_TRACE ALTER SESSION SET SQL_TRACE = TRUE; 49. IMPORT和SQL*LOADER 這2個工具的不一樣點 解答:這兩個ORACLE工具都是用來將數據導入數據庫的。 區別是:IMPORT工具只能處理由另外一個ORACLE工具EXPORT生成 的數據。而SQL*LOADER能夠導入不一樣的ASCII格式的數據源 50。用於網絡鏈接的2個文件? 解答: TNSNAMES.ORA and SQLNET.ORA --------------------------------------------------- 1.在數據庫中條件查詢速度很慢的時候,如何優化? 1.建索引 2.減小表之間的關聯 3.優化sql,儘可能讓sql很快定位數據,不要讓sql作全表查詢,應該走索引,把數據量大的表排在前面 4.簡化查詢字段,沒用的字段不要,已經對返回結果的控制,儘可能返回少許數據 1 使用函數時,下列哪個描述是不正確的 A 不要忘記獲取返回值 B 不能用過程來調用函數 C 能夠定義不能返回值的函數 D 能夠定義沒有返回類型的函數 2 下列關於包的說法,不正確的是 A 不可以在尚未編寫包主體的狀況下調用包 B 主體包含了規範的實現、以及私有例程/數據/變量 C 不能直接調用Oracle提供的包 D DBMS_OUTPUT程序包可讓用戶輸出文本信息 3 PL/SQL匿名塊中 A 註釋能夠嵌套 B 執行體能夠嵌套 C 全部組成成分都不能嵌套 D 以上答案均不正確 第一題選B,過程徹底能夠調用函數,只要接收回值就和調用其餘過程同樣。 第二題選C,oracle 提供的包就是一些pl/sql形式的API,固然能夠調用了。 第三題選B,一個使用 begin/end 的塊中能夠包含其餘 begin/end 塊。 1 如何增長buffer cache的命中率? 解答:在數據庫較繁忙時,適用buffer cache advisory 工具,查詢v$db_cache_advice . 若是有必要更改,可使用 alter system set db_cache_size 命令 2 ora-01555的應對方法? 解答:具體的出錯信息是snapshot too old within rollback seg , 一般能夠經過增大rollback seg來解決問題。固然也須要察看一下具體形成錯誤的sql文本 3. 解釋$oracle_home和$oracle_base的區別? 解答:oracle_base是oracle的根目錄,oracle_home是oracle產品的目錄。