|
1. 解釋冷備份和熱備份的不同點(diǎn)以及各自的優(yōu)點(diǎn)
解答:熱備份針對(duì)歸檔模式的數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)仍舊處于工作狀態(tài)時(shí)進(jìn)行備份。而冷備份指在數(shù)據(jù)庫(kù)關(guān)閉后,進(jìn)行備份,適用于所有模式的
數(shù)據(jù)庫(kù)。熱備份的優(yōu)點(diǎn)在于當(dāng)備份時(shí),數(shù)據(jù)庫(kù)仍舊可以被使用并且可以將數(shù)據(jù)庫(kù)恢復(fù)到任
意一個(gè)時(shí)間點(diǎn)。冷備份的優(yōu)點(diǎn)在于它的備份和恢復(fù)
操作相當(dāng)簡(jiǎn)單,并且由于冷備份的數(shù)據(jù)庫(kù)可以工作在非歸檔模式下,數(shù)據(jù)庫(kù)性能會(huì)比歸檔 模式稍好。(因?yàn)椴槐貙?span lang="EN-US">archive log寫入硬盤)
2. 你必須利用備份恢復(fù)數(shù)據(jù)庫(kù),但是你沒有控制文件,該如何解決問題呢?
解答:重建控制文件,用帶backup control file 子句的recover 命令恢復(fù)數(shù)據(jù)庫(kù)。
3. 如何轉(zhuǎn)換init.ora到spfile?
解答:使用create spfile from pfile 命令
.
4. 解釋data block ,
extent 和 segment的區(qū)別(這里建議用英文術(shù)語(yǔ))
解答:data block是數(shù)據(jù)庫(kù)中最小的邏輯存儲(chǔ)單元。當(dāng)數(shù)據(jù)庫(kù)的對(duì)象需要更多的物理存儲(chǔ)空間時(shí),連續(xù)的data block就組成了extent . 一
個(gè)數(shù)據(jù)庫(kù)對(duì)象擁有的所有extents被稱為該對(duì)象的segment.
5. 給出兩個(gè)檢查表結(jié)構(gòu)的方法
解答:1、DESCRIBE命令
2、 DBMS_METADATA.GET_DDL 包
6.
怎樣查看數(shù)據(jù)庫(kù)引擎的報(bào)錯(cuò)
解答:alert log.
7.
比較truncate和delete 命令
解答:兩者都可以用來刪除表中所有的記錄。區(qū)別在于:truncate是DDL操作,它移動(dòng)HWK,不需要 rollback segment .而Delete是DML操作
, 需要rollback
segment 且花費(fèi)較長(zhǎng)時(shí)間.
8.
使用索引的理由
解答:快速訪問表中的data block
9.
給出在STAR SCHEMA中的兩種表及它們分別含有的數(shù)據(jù)
解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放對(duì)fact table 某些屬性描述的
信息
10. FACT Table上需要建立何種索引?
解答:位圖索引(bitmap index)
11. 給出兩種相關(guān)約束?
解答:主鍵和外鍵
12. 如何在不影響子表的前提下,重建一個(gè)母表
解答:子表的外鍵強(qiáng)制實(shí)效,重建母表,激活外鍵
13. 解釋歸檔和非歸檔模式之間的不同和它們各自的優(yōu)缺點(diǎn)
解答:歸檔模式是指你可以備份所有的數(shù)據(jù)庫(kù) transactions并恢復(fù)到任意一個(gè)時(shí)間點(diǎn)。非歸檔模式則相反,不能恢復(fù)到任意一個(gè)時(shí)間點(diǎn)。
但是非歸檔模式可以帶來數(shù)據(jù)庫(kù)性能上的少許提高
.
14. 如何建立一個(gè)備份控制文件?
解答:Alter database backup control file to trace.
15. 給出數(shù)據(jù)庫(kù)正常啟動(dòng)所經(jīng)歷的幾種狀態(tài) ?
解答:
STARTUP NOMOUNT – 數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)
STARTUP
MOUNT - 數(shù)據(jù)庫(kù)裝載
STARTUP
OPEN – 數(shù)據(jù)庫(kù)打開
16. 哪個(gè)column可以用來區(qū)別V$視圖和GV$視圖?
解答: INST_ID 指明集群環(huán)境中具體的某個(gè)instance 。
17. 如何生成explain
plan?
解答:
運(yùn)行utlxplan.sql. 建立plan 表針對(duì)特定SQL語(yǔ)句,使用 explain plan set statement_id =
'tst1' into plan_table 運(yùn)行
utlxplp.sql
或 utlxpls.sql察看explain plan
18. 如何增加buffer
cache的命中率?
解答:在數(shù)據(jù)庫(kù)較繁忙時(shí),適用buffer cache advisory 工具,查詢v$db_cache_advice
. 如果有必要更改,可以使用 alter system set
db_cache_size
命令
19. ORA-01555的應(yīng)對(duì)方法?
解答:具體的出錯(cuò)信息是snapshot too old within rollback seg , 通??梢酝ㄟ^增大rollback seg來解決問題。當(dāng)然也需要察看一下具
體造成錯(cuò)誤的SQL文本
20. 解釋$ORACLE_HOME和$ORACLE_BASE的區(qū)別?
解答:ORACLE_BASE是oracle的根目錄,ORACLE_HOME是oracle產(chǎn)品的目錄
21. 如何判斷數(shù)據(jù)庫(kù)的時(shí)區(qū)?
解答:SELECT DBTIMEZONE FROM DUAL;
22. 解釋GLOBAL_NAMES設(shè)為TRUE的用途
解答:GLOBAL_NAMES指明聯(lián)接數(shù)據(jù)庫(kù)的方式。如果這個(gè)參數(shù)設(shè)置為TRUE,在建立數(shù)據(jù)庫(kù)鏈接時(shí)就必須用相同的名字連結(jié)遠(yuǎn)程數(shù)據(jù)庫(kù)
23。如何加密PL/SQL程序?
解答:WRAP
24. 解釋FUNCTION,PROCEDURE和PACKAGE區(qū)別
解答:function 和procedure是PL/SQL代碼的集合,通常為了完成一個(gè)任務(wù)。procedure 不需要返回任何值而function將返回一個(gè)值在另一
方面,Package是為了完成一個(gè)商業(yè)功能的一組function和 proceudre的集合
25. 解釋TABLE
Function的用途
解答:TABLE Function是通過PL/SQL邏輯返回一組紀(jì)錄,用于普通的表/視圖。他們也用于pipeline和ETL過程。
26. 舉出3種可以收集three advisory statistics
解答:Buffer Cache Advice, Segment Level Statistics, Timed Statistics
27.
Audit trace 存放在哪個(gè)oracle目錄結(jié)構(gòu)中?
解答:unix $ORACLE_HOME/rdbms/audit Windows the event viewer
28. 解釋materialized
views的作用
解答:Materialized views 用于減少那些匯總,集合和分組的信息的集合數(shù)量。它們通常適合于數(shù)據(jù)倉(cāng)庫(kù)和DSS系統(tǒng)。
29. 當(dāng)用戶進(jìn)程出錯(cuò),哪個(gè)后臺(tái)進(jìn)程負(fù)責(zé)清理它
解答: PMON
30. 哪個(gè)后臺(tái)進(jìn)程刷新materialized
views?
解答:The Job Queue Processes.
31. 如何判斷哪個(gè)session正在連結(jié)以及它們等待的資源?
解答:V$SESSION / V$SESSION_WAIT
32. 描述什么是 redo logs
解答:Redo Logs 是用于存放數(shù)據(jù)庫(kù)數(shù)據(jù)改動(dòng)狀況的物理和邏輯結(jié)構(gòu)。可以用來修復(fù)數(shù)據(jù)庫(kù).
33. 如何進(jìn)行強(qiáng)制LOG
SWITCH?
解答:ALTER SYSTEM SWITCH LOGFILE;
34. 舉出兩個(gè)判斷DDL改動(dòng)的方法?
解答:你可以使用 Logminer 或 Streams
35. Coalescing做了什么?
解答:Coalescing針對(duì)于字典管理的tablespace進(jìn)行碎片整理,將臨近的小extents合并成單個(gè)的大extent.
36.
TEMPORARY tablespace和PERMANENT tablespace 的區(qū)別是?
解答:A temporary tablespace 用于臨時(shí)對(duì)象例如排序結(jié)構(gòu)而
permanent tablespaces用來存儲(chǔ)那些'真實(shí)'的對(duì)象(例如表,回滾段等)
37. 創(chuàng)建數(shù)據(jù)庫(kù)時(shí)自動(dòng)建立的tablespace名稱?
解答:SYSTEM tablespace.
38. 創(chuàng)建用戶時(shí),需要賦予新用戶什么權(quán)限才能使它聯(lián)上數(shù)據(jù)庫(kù)。
解答:CONNECT
39. 如何在tablespace里增加數(shù)據(jù)文件?
解答:ALTER TABLESPACE <tablespace_name> ADD DATAFILE
<datafile_name> SIZE <size>
40. 如何變動(dòng)數(shù)據(jù)文件的大?。?/span>
解答:ALTER DATABASE DATAFILE <datafile_name> RESIZE
<new_size>;
41. 哪個(gè)VIEW用來檢查數(shù)據(jù)文件的大?。?/span>
解答: DBA_DATA_FILES
42. 哪個(gè)VIEW用來判斷tablespace的剩余空間
解答:DBA_FREE_SPACE
43. 如何判斷誰往表里增加了一條紀(jì)錄?
解答:auditing
44. 如何重構(gòu)索引?
解答: ALTER INDEX <index_name> REBUILD;
45. 解釋什么是Partitioning(分區(qū))以及它的優(yōu)點(diǎn)。
解答:Partition將大表和索引分割成更小,易于管理的分區(qū)。
46. 你剛剛編譯了一個(gè)PL/SQL
Package但是有錯(cuò)誤報(bào)道,如何顯示出錯(cuò)信息?
解答:SHOW ERRORS
47. 如何搜集表的各種狀態(tài)數(shù)據(jù)?
解答: ANALYZE
The ANALYZE
command.
48. 如何啟動(dòng)SESSION級(jí)別的TRACE
解答: DBMS_SESSION.SET_SQL_TRACE
ALTER SESSION SET SQL_TRACE = TRUE;
49.
IMPORT和SQL*LOADER 這2個(gè)工具的不同點(diǎn)
解答:這兩個(gè)ORACLE工具都是用來將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)的。
區(qū)別是:IMPORT工具只能處理由另一個(gè)ORACLE工具EXPORT生成
的數(shù)據(jù)。而SQL*LOADER可以導(dǎo)入不同的ASCII格式的數(shù)據(jù)源
50。用于網(wǎng)絡(luò)連接的2個(gè)文件?
解答: TNSNAMES.ORA and SQLNET.ORA
1.Hashtable和HashMap有什么區(qū)別?
2.你怎么理解 MVC模式?
3.SQLServer中左聯(lián)接查詢用left
join,Oracle中用什么?
4.SQLServer 中的數(shù)據(jù)庫(kù),在Oracle中對(duì)應(yīng)的是什么?
5.如果SQLServer中有兩個(gè)數(shù)據(jù)庫(kù),那么讓你把這兩個(gè) 數(shù)據(jù)庫(kù)對(duì)應(yīng)到Oracle中,你應(yīng)該怎么做?
6.有兩個(gè)頁(yè)面a.jsp和b.jsp,要從a.jsp傳值到 b.jsp有幾種方法?分別是什么?
7.有三個(gè)頁(yè)面,a.jsp,b.jsp和c.jsp,流程 是:a.jsp->b.jsp->c.jsp,其中a.jsp中提交的數(shù)據(jù)要在c.jsp中訪問,用最簡(jiǎn)單的方法怎么做?注意不能放在 session里
8.映射是什么?你怎么理解映射?
9.Hibernate 中:不看數(shù)據(jù)庫(kù),不看XML文件,不看查詢語(yǔ)句,怎么樣能知道表結(jié)構(gòu)?
10.SQLServer支持集群 嗎?
11.為什么要用MVC?我從JSP頁(yè)面直接訪問數(shù)據(jù)庫(kù)不是更簡(jiǎn)單嗎,為什么非要先提交到控制器再做處
理?
12.在struts中,假設(shè)有一個(gè)對(duì)數(shù)據(jù)庫(kù)中一張表的增刪改查的操作,你是寫一個(gè)action還是寫
多個(gè)action?為什么?
13.struts中的actionform有什么好處?
14.用 過Hibernate嗎,用它有什么好處?
15.通常所說的web應(yīng)用程序分3層,即MVC,如果我想分4 層,應(yīng)該怎么分?
1.Hashtable和HashMap有什么區(qū)別?
a.Hashtable 是繼承自陳舊的Dictionary類的,HashMap繼承自AbstractMap類同時(shí)是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)。
b. 也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味著,
雖然你可以不用采取任何特殊的行為就可以在一個(gè)
多線程的應(yīng)用程序中用一個(gè)Hashtable,
但你必須同樣地為一個(gè)HashMap提供外同步。一個(gè)方便的方法就是利用Collections類的靜態(tài)的synchronizedMap()方法,
它創(chuàng)建一個(gè)線程安全的Map對(duì)象,并把它作為一個(gè)封裝的對(duì)象來返回。這個(gè)對(duì)象的方法可以讓你同步訪問潛在的HashMap。
這么做的結(jié)果就是當(dāng)你不需要同步時(shí),你不能切斷Hashtable中的同步(比如在一個(gè)單線程的應(yīng)用程序中),
而且同步增加了很多處理費(fèi)用。
c.第三點(diǎn)不同是,只有HashMap可以讓你將空值作為一個(gè)表的條目的key或value。
HashMap中只有一條記錄可以是一個(gè)空的key,但任意數(shù)量的條目可以是空的value。
這就是說,如果在表中沒有發(fā)現(xiàn)搜索鍵,或者如果發(fā)現(xiàn)了搜索鍵,但它是一個(gè)空的值,那么get()將返回null。
如果有必要,用containKey()方法來區(qū)別這兩種情況。
d.HashMap去掉了Hashtable的contains方法,保留了 containsValue和containsKey方法
e.Hashtable中hash數(shù)組默認(rèn)大小是11,增加的方式是 old*2+1。HashMap中hash數(shù)組的默認(rèn)大小是16,而且一定是2的指數(shù)
2.你怎么理解MVC 模式?
MVC是SUN早期提出的model2開發(fā)模式,強(qiáng)制的把視圖控制和模型層分開
不僅實(shí)現(xiàn)了功能模塊和顯示模塊的分離,同時(shí)它
還提高了應(yīng)用系統(tǒng)的可維護(hù)性、可擴(kuò)展性、可移植性和組件的可復(fù)用性
3.SQLServer中左聯(lián)接查詢用 left
join,Oracle中用什么?
左連接:select(nvl(a.c,0)-nvl(b.c,0)) from a,b where a.id(+)=b.id
右連接:select(nvl(a.c,0)-nvl(b.c,0)) from a,b where a.id=b.id(+)
自連接:select(nvl(a.c,0)-nvl(b.c,0)) from a,b where a.id(+)=b.id(+)
說明:加號(hào)寫在左就是左連接,寫在右就是右連接,看加號(hào)的方法來定
4.SQLServer 中的數(shù)據(jù)庫(kù),在Oracle中對(duì)應(yīng)的是什么?
表空間
5.如果SQLServer中有兩個(gè)數(shù)據(jù)庫(kù), 那么讓你把這兩個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)到Oracle中,你應(yīng)該怎么做?
在Oracle中建一個(gè)用戶,對(duì)應(yīng)兩個(gè)表空間
6.有 兩個(gè)頁(yè)面a.jsp和b.jsp,要從a.jsp傳值到b.jsp有幾種方法?分別是什么?
a:最常用的方法是用form中的 text,<input type=text name=username value=admin>,然后在b.jsp頁(yè)面中這樣獲取
String username=request.getParameter("username");
b:直接在Url地址欄里面輸入第一
個(gè)頁(yè)面的地址,在后加問號(hào),然后把要傳的參數(shù)及值寫在后面,如有多個(gè)用&隔開,然后在下一頁(yè)面用
request.getParameter("參數(shù)名")來獲取,例如:
在b.jsp中可用這樣獲取:String username=request.getParameter("username");String
username=request.getParameter("password");
c:在form中放hidden,
如:<input type=hidden name=username value=admin>,獲取方法同上
說明:傳值的方 法有很多種,以上是最常用最簡(jiǎn)單的幾種方式,當(dāng)然,如果傳的值有中文的話,需另做處理
6.有三個(gè)頁(yè)面,a.jsp,b.jsp和c.jsp,流
程是:a.jsp->b.jsp->c.jsp,其中a.jsp中提交的數(shù)據(jù)要在c.jsp中訪問,用最簡(jiǎn)單的方法 怎么做?注意不能放在session里
用隱藏表單域,即在b.jsp頁(yè)面中用N個(gè)hidden把上一頁(yè)面提交過來的信息保存下來,然后和當(dāng)前一
起提交,再到c.jsp里面獲取
說明:盡量不要用session和少用session
7.jsp 和servlet有什么區(qū)別?
a:servlet是在java代碼里面放html,jsp是在html里面放java代碼(最后運(yùn)行的時(shí)候服務(wù)
器會(huì)把JSP解析成servlet)
b:servlet是一個(gè)java類,有自己的映射,而jsp不是
說明:區(qū)別太多
8.映 射是什么?你怎么理解映射?
映射即別名,通過別名可以訪問
9.Hibernate中:不看數(shù)據(jù) 庫(kù),不看XML文件,不看查詢語(yǔ)句,怎么樣能知道表結(jié)構(gòu)?
看表結(jié)構(gòu)對(duì)應(yīng)的類文件,比如UserInfo表對(duì)應(yīng)的UserInfo.java文件
10.SQLServer支持集群?jiǎn)幔?/span>
支持,但是是屬于熱備份類型,不能做負(fù)載平衡。不過符合你
的條件。
首先系統(tǒng)做集群,數(shù)據(jù)庫(kù)文件放到磁盤陣列里,雙機(jī)或多機(jī)共同訪問磁盤陣列,就可以了
IIS可以做集群后負(fù)載平衡。
11.為 什么要用MVC?我從JSP頁(yè)面直接訪問數(shù)據(jù)庫(kù)不是更簡(jiǎn)單嗎,為什么非要先提交到控制再做處理?
MVC各施其職,互不干涉
在MVC模式中,三個(gè)層各施其職,所以如果一旦哪一層的需求發(fā)生了變化,
就只需要更改相應(yīng)的層中的代碼而不會(huì)影響到其它層中的代碼。
有利于開發(fā)中的分工
在MVC模式中,由于按層把系統(tǒng)開,那么就能更好的實(shí)現(xiàn)開發(fā)中的分工。網(wǎng)頁(yè)設(shè)計(jì)人員可以進(jìn)行開發(fā)視圖層中的JSP,
對(duì)業(yè)務(wù)熟悉的開發(fā)人員可開發(fā)業(yè)務(wù)層,而其它開發(fā)人員可開發(fā)控制層。
有利于組件的重用
分層后更有利于組件的重用。如控制層可獨(dú)立成一個(gè)能用的組件,視圖層也可做成通用的操作界面
說明:這個(gè)好處就太多了!!!
12.在 struts中,假設(shè)有一個(gè)對(duì)數(shù)據(jù)庫(kù)中一張表的增刪改查的操作,你是寫一個(gè)action還是寫多個(gè)action?為什么?
寫一個(gè)action,讓這個(gè)action繼承自DispatchAction,然后在struts-config.xml中給這個(gè)action映射加一參
數(shù),parameter="method"
這個(gè)在提交到這個(gè)action中時(shí),會(huì)根據(jù)傳來的參數(shù)中method的值來執(zhí)行相應(yīng)的action的方法,比
如,http://localhost:8080/login.do?method=doLogin
這個(gè)提交到action的時(shí)會(huì)自動(dòng)找方法名叫doLogin的方法,參數(shù)返回值原來一樣ActionForward
13.struts 中的actionform有什么好處?
struts的actionform其實(shí)不好,里面有一堆屬性,雖然可以自動(dòng)填充,但是你會(huì)發(fā)現(xiàn),在很多情況下(比如你用到Hibernate)
你還要需要自動(dòng)寫一個(gè)數(shù)據(jù)庫(kù)表的映射類,通常是domain.UserInfo.java,這樣就和strutsform中的屬性重復(fù),所以他很多余,
struts1.1版本,保留了actionform,struts1.2中已經(jīng)有了新的LazyValidatorForm,但仍然保留了原有的 actionform,
而在struts 2.0中已經(jīng)把actionform去掉了
下面是解決方法
a: 把actionform換成DynaActionForm ,和原來不同的是在dynaActionForm可以domain.UserInfo.java的一個(gè)實(shí)例做為他的一個(gè)屬性
這樣你就不需要在里面寫一堆的get,set方法,只是在頁(yè)面上綁定稍有不同
b: 把actionform換成org.apache.struts.validator.LazyValidatorForm,這樣你完全不用寫你的
actionform這個(gè)類,直接在xml里面做
相應(yīng)配置,當(dāng)然也可以加上驗(yàn)證框架
警告:這個(gè)問題是陷阱,實(shí)際上struts的actionform很不好,非常麻煩,用久了你會(huì)發(fā)現(xiàn)他其實(shí)是多余的,所以這個(gè)問題你應(yīng)該說他的壞處,
和怎么把actonform去掉
14.用過Hibernate嗎,用它有什么好處?
Hibernate的最大的好處就是簡(jiǎn)化數(shù)據(jù)庫(kù)的操作,允許你的代碼以對(duì)象模式來訪問數(shù)據(jù)庫(kù)內(nèi)容,
比如通常我們找一個(gè)User的資料需要select出所需要的資料,而通過hibnate我們可以把這個(gè)User的資料作為一個(gè)對(duì)象來看待
,通過User.getName()或者User.getId()等操作來獲得,這樣就完全統(tǒng)一了上層JAVA或者C#等OO語(yǔ)言中對(duì)于數(shù)據(jù)庫(kù)的非OO操
作的不和諧了.
另外對(duì)于復(fù)雜的表和表之間的關(guān)聯(lián)我們也不用去使用復(fù)雜的Select等SQL來操作,而使用對(duì)象可以方便獲得,
比如多對(duì)多關(guān)系某用戶屬于的部門的名稱,雖然底層數(shù)據(jù)庫(kù)使用了3個(gè)表的主鍵關(guān)聯(lián)操作,
但是我們可以通過User.getDep().getName()來簡(jiǎn)單的獲得,這個(gè)就是持久化對(duì)象的好處了
說明:好處太多,只能在用的過程中慢慢體會(huì) 只能說一個(gè)字:爽
15.通常所說的web應(yīng)用程序分3層, 即MVC,如果我想分四層,應(yīng)該怎么分?
加一個(gè)Hibernate數(shù)據(jù)持久層
|