版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
銀行數(shù)據(jù)庫(kù)面試題資料僅供參考Oracle常見(jiàn)面試題1、對(duì)數(shù)據(jù)庫(kù)SQL、ORACLE熟悉嗎?
SQL是微軟公司的數(shù)據(jù)庫(kù)產(chǎn)品。是一個(gè)RDBMS數(shù)據(jù)庫(kù),一般應(yīng)用在一些中型數(shù)據(jù)庫(kù)的應(yīng)用,不能跨平臺(tái)。
ORACLE是ORACLE公司的數(shù)據(jù)產(chǎn)品,支持海量數(shù)據(jù)存儲(chǔ),支持分布式布暑,支持多用戶(hù),跨平臺(tái),數(shù)據(jù)安全完整性控制性能優(yōu)越,是一個(gè)ORDBMS,一般用在大型公司。
2、能不能設(shè)計(jì)數(shù)據(jù)庫(kù)?如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)導(dǎo)入與導(dǎo)出的更新
使用POWERDISINE工具的使用,一般滿(mǎn)足第三范式就能夠了。EXP與IMP數(shù)據(jù)庫(kù)的邏輯導(dǎo)入與導(dǎo)出
3、如何只顯示重復(fù)數(shù)據(jù),或不顯示重復(fù)數(shù)據(jù)
顯示重復(fù):select*fromtablenamegroupbyidhavingcount(*)>1
不顯示重復(fù):select*fromtablenamegroupbyidhavingcount(*)=1
4、什么是數(shù)據(jù)庫(kù)的映射
就是將數(shù)據(jù)庫(kù)的表與字段對(duì)應(yīng)到模型層類(lèi)名與屬性的過(guò)程.
5、寫(xiě)分頁(yè)有哪些方法,你一般用什么方法?用SQL語(yǔ)句寫(xiě)一個(gè)分頁(yè)?如何用存儲(chǔ)過(guò)程寫(xiě)分頁(yè)?
在SQLSERVER中使用TOP分頁(yè),在ORACLE中用ROWNUM,或分析函數(shù)ROW_NUMBER
使用TOP:
selecttop20,n.*fromtablenamenminusselecttop10,m.*fromtablenamem
使用分析函數(shù):
select*from
(selectn.*,row_number()over(orderbycolumnname)num
fromtablenamen)
wherenum>=10andnum<=20;
使用過(guò)程時(shí),只要將分頁(yè)的范圍用兩個(gè)參數(shù)就能夠?qū)崿F(xiàn)。在ORACLE中,要將過(guò)程封裝在包里,還要用動(dòng)態(tài)游標(biāo)變量才能實(shí)現(xiàn)數(shù)據(jù)集的返回。
6、ORACLE中左連接與右連接
左連接:LEFTJOIN
右連接:RIGHTJOIN
selectn.column,m.columnfromtablename1nleftjointablename2m
onn.columnname=m.columnname
用WHERE實(shí)現(xiàn):
selectn.column,m.columnfromtablename1n,tablename2m
wheren.columnname(+)=m.columnname7、什么是反射、序列化、反序列化?事務(wù)有幾種級(jí)別?
反射是在程序運(yùn)行時(shí)動(dòng)態(tài)訪問(wèn)DDL的一種方式。序列化是將對(duì)象對(duì)二進(jìn)制、XML等方式直接向文件的存儲(chǔ)。反序列化是將存儲(chǔ)到文件的對(duì)象取出的過(guò)程。事務(wù)的級(jí)別的三種:頁(yè)面級(jí)、應(yīng)用程序級(jí)、數(shù)據(jù)庫(kù)級(jí)。
8、數(shù)據(jù)測(cè)試如何測(cè)試?
在PLSQL里對(duì)過(guò)程或函數(shù)可能經(jīng)過(guò)專(zhuān)用的測(cè)試工具,經(jīng)過(guò)對(duì)
9、用事務(wù)的時(shí)候,如果在業(yè)務(wù)邏輯層中,調(diào)用數(shù)據(jù)庫(kù)訪問(wèn)層中的方法,訪問(wèn)層中有很多類(lèi),類(lèi)又有很多方法,每個(gè)方法都要實(shí)現(xiàn),那么如何處理?
通用數(shù)據(jù)訪問(wèn)層的實(shí)現(xiàn)
10、什么時(shí)候會(huì)用到觸發(fā)器
A安全管理、B日志管理、C復(fù)雜業(yè)務(wù)邏輯實(shí)現(xiàn)
11、如何在數(shù)據(jù)庫(kù)中顯示樹(shù)控制?
用父ID與子ID來(lái)實(shí)現(xiàn)
12、如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)的優(yōu)化?
A、調(diào)整數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)。這一部分在開(kāi)發(fā)信息系統(tǒng)之前完成,程序員需要考慮是否使用ORACLE數(shù)據(jù)庫(kù)的分區(qū)功能,對(duì)于經(jīng)常訪問(wèn)的數(shù)據(jù)庫(kù)表是否需要建立索引等。
B、調(diào)整應(yīng)用程序結(jié)構(gòu)設(shè)計(jì)。這一部分也是在開(kāi)發(fā)信息系統(tǒng)之前完成,程序員在這一步需要考慮應(yīng)用程序使用什么樣的體系結(jié)構(gòu),是使用傳統(tǒng)的Client/Server兩層體系結(jié)構(gòu),還是使用Browser/Web/Database的三層體系結(jié)構(gòu)。不同的應(yīng)用程序體系結(jié)構(gòu)要求的數(shù)據(jù)庫(kù)資源是不同的。
C、調(diào)整數(shù)據(jù)庫(kù)SQL語(yǔ)句。應(yīng)用程序的執(zhí)行最終將歸結(jié)為數(shù)據(jù)庫(kù)中的SQL語(yǔ)句執(zhí)行,因此SQL語(yǔ)句的執(zhí)行效率最終決定了ORACLE數(shù)據(jù)庫(kù)的性能。ORACLE公司推薦使用ORACLE語(yǔ)句優(yōu)化器(OracleOptimizer)和行鎖管理器(row-levelmanager)來(lái)調(diào)整優(yōu)化SQL語(yǔ)句。
D、調(diào)整服務(wù)器內(nèi)存分配。內(nèi)存分配是在信息系統(tǒng)運(yùn)行過(guò)程中優(yōu)化配置的,數(shù)據(jù)庫(kù)管理員能夠根據(jù)數(shù)據(jù)庫(kù)運(yùn)行狀況調(diào)整數(shù)據(jù)庫(kù)系統(tǒng)全局區(qū)(SGA區(qū))的數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)和共享池的大??;還能夠調(diào)整程序全局區(qū)(PGA區(qū))的大小。需要注意的是,SGA區(qū)不是越大越好,SGA區(qū)過(guò)大會(huì)占用操作系統(tǒng)使用的內(nèi)存而引起虛擬內(nèi)存的頁(yè)面交換,這樣反而會(huì)降低系統(tǒng)。
E、調(diào)整硬盤(pán)I/O,這一步是在信息系統(tǒng)開(kāi)發(fā)之前完成的。數(shù)據(jù)庫(kù)管理員能夠?qū)⒔M成同一個(gè)表空間的數(shù)據(jù)文件放在不同的硬盤(pán)上,做到硬盤(pán)之間I/O負(fù)載均衡。
F、調(diào)整操作系統(tǒng)參數(shù),例如:運(yùn)行在UNIX操作系統(tǒng)上的ORACLE數(shù)據(jù)庫(kù),能夠調(diào)整UNIX數(shù)據(jù)緩沖池的大小,每個(gè)進(jìn)程所能使用的內(nèi)存大小等參數(shù)。13.如何使用Oracle的游標(biāo)?
1).
oracle中的游標(biāo)分為顯示游標(biāo)和隱式游標(biāo)
2).
顯示游標(biāo)是用cursor...is命令定義的游標(biāo),它能夠?qū)Σ樵?xún)語(yǔ)句(select)返回的多條記錄進(jìn)行處理;隱式游標(biāo)是在執(zhí)行插入(insert)、刪除(delete)、修改(update)和返回單條記錄的查詢(xún)(select)語(yǔ)句時(shí)由PL/SQL自動(dòng)定義的。
3).顯式游標(biāo)的操作:打開(kāi)游標(biāo)、操作游標(biāo)、關(guān)閉游標(biāo);PL/SQL隱式地打開(kāi)SQL游標(biāo),并在它內(nèi)部處理SQL語(yǔ)句,然后關(guān)閉它14.Oracle的導(dǎo)入導(dǎo)出有幾種方式,有何區(qū)別?
1).使用oracle工具exp/imp
2).使用plsql相關(guān)工具
方法1.導(dǎo)入/導(dǎo)出的是二進(jìn)制的數(shù)據(jù),2.plsql導(dǎo)入/導(dǎo)出的是sql語(yǔ)句的文本文件
15.Oracle是怎樣分頁(yè)的?
Oracle中使用rownum來(lái)進(jìn)行分頁(yè),這個(gè)是效率最好的分頁(yè)方法,hibernate也是使用rownum來(lái)進(jìn)行oralce分頁(yè)的
select*from
(selectrownumr,afromtabNamewhererownum<=20)
wherer>10
16.Oracle中使用了索引的列,對(duì)該列進(jìn)行where條件查詢(xún)、分組、排序、使用聚集函數(shù),哪些用到了索引?
均會(huì)使用索引,值得注意的是復(fù)合索引(如在列A和列B上建立的索引)可能會(huì)有不同情況
v17.Oracle中where條件查詢(xún)和排序的性能比較?
Orderby使用索引的條件極為嚴(yán)格,只有滿(mǎn)足如下情況才能夠使用索引,
1).orderby中的列必須包含相同的索引而且索引順序和排序順序一致
2).不能有null值的列
因此排序的性能往往并不高,因此建議盡量避免orderby18.解釋冷備份和熱備份的不同點(diǎn)以及各自的優(yōu)點(diǎn)?
冷備份發(fā)生在數(shù)據(jù)庫(kù)已經(jīng)正常關(guān)閉的情況下,將關(guān)鍵性文件拷貝到另外位置的一種說(shuō)法
熱備份是在數(shù)據(jù)庫(kù)運(yùn)行的情況下,采用歸檔方式備份數(shù)據(jù)的方法
冷備的優(yōu)缺點(diǎn):
1).是非常快速的備份方法(只需拷貝文件)
2).容易歸檔(簡(jiǎn)單拷貝即可)
3).容易恢復(fù)到某個(gè)時(shí)間點(diǎn)上(只需將文件再拷貝回去)
4).能與歸檔方法相結(jié)合,作數(shù)據(jù)庫(kù)“最新?tīng)顟B(tài)”的恢復(fù)。
5).低度維護(hù),高度安全。
冷備份不足:
1).單獨(dú)使用時(shí),只能提供到“某一時(shí)間點(diǎn)上”的恢復(fù)。
2).在實(shí)施備份的全過(guò)程中,數(shù)據(jù)庫(kù)必須要作備份而不能作其它工作。也就是說(shuō),在冷備份過(guò)程中,數(shù)據(jù)庫(kù)必須是關(guān)閉狀態(tài)。
3).若磁盤(pán)空間有限,只能拷貝到磁帶等其它外部存儲(chǔ)設(shè)備上,速度會(huì)很慢。
4).不能按表或按用戶(hù)恢復(fù)。
熱備的優(yōu)缺點(diǎn)
1).可在表空間或數(shù)據(jù)文件級(jí)備份,備份時(shí)間短。
2).備份時(shí)數(shù)據(jù)庫(kù)仍可使用。
3).可達(dá)到秒級(jí)恢復(fù)(恢復(fù)到某一時(shí)間點(diǎn)上)。
4).可對(duì)幾乎所有數(shù)據(jù)庫(kù)實(shí)體作恢復(fù)。
5).恢復(fù)是快速的,在大多數(shù)情況下在數(shù)據(jù)庫(kù)仍工作時(shí)恢復(fù)。
熱備份的不足是:
1).不能出錯(cuò),否則后果嚴(yán)重。
2).若熱備份不成功,所得結(jié)果不可用于時(shí)間點(diǎn)的恢復(fù)。
3).因難于維護(hù),因此要特別仔細(xì)小心,不允許“以失敗而告終”。
19.解釋什么是死鎖,如何解決Oracle中的死鎖?
簡(jiǎn)言之就是存在加了鎖而沒(méi)有解鎖,可能是使用鎖沒(méi)有提交或者回滾事務(wù),如果是表級(jí)鎖則不能操作表,客戶(hù)端處于等在狀態(tài),如果是行級(jí)鎖則不能操作鎖定行
解決辦法:
1).查找出被鎖的表
selectb.owner,b.object_name,a.session_id,a.locked_mode
fromv$locked_objecta,dba_objectsb
whereb.object_id=a.object_id;
selectb.username,b.sid,b.serial#,logon_time
fromv$locked_objecta,v$sessionb
wherea.session_id=b.sidorderbyb.logon_time;
2).殺進(jìn)程中的會(huì)話(huà)
altersystemkillsession"sid,serial#";
20.簡(jiǎn)述oracle中dml、ddl、dcl的使用
Dml數(shù)據(jù)操縱語(yǔ)言,如select、update、delete,insert
Ddl數(shù)據(jù)定義語(yǔ)言,如createtable、droptable等等
Dcl數(shù)據(jù)控制語(yǔ)言,如commit、rollback、grant、invoke等
21.說(shuō)說(shuō)oracle中的經(jīng)常使用到得函數(shù)
Length長(zhǎng)度、lower小寫(xiě)、upper大寫(xiě),to_date轉(zhuǎn)化日期,to_char轉(zhuǎn)化字符
Ltrim去左邊空格、rtrim去右邊空格,substr取字串,add_month增加或者減掉月份、to_number轉(zhuǎn)變?yōu)閿?shù)字
22.怎樣創(chuàng)立一個(gè)一個(gè)索引,索引使用的原則,有什么優(yōu)點(diǎn)和缺點(diǎn)
創(chuàng)立標(biāo)準(zhǔn)索引:
CREATE
INDEX索引名ON表名(列名)
TABLESPACE表空間名;
創(chuàng)立唯一索引:
CREATEuniqueINDEX索引名ON表名(列名)
TABLESPACE表空間名;
創(chuàng)立組合索引:
CREATEINDEX索引名ON表名(列名1,列名2)
TABLESPACE表空間名;
創(chuàng)立反向鍵索引:
CREATEINDEX索引名ON表名(列名)reverseTABLESPACE表空間名;
索引使用原則:
索引字段建議建立NOTNULL約束
經(jīng)常與其它表進(jìn)行連接的表,在連接字段上應(yīng)該建立索引;
經(jīng)常出現(xiàn)在Where子句中的字段且過(guò)濾性很強(qiáng)的,特別是大表的字段,應(yīng)該建立索引;
可選擇性高的關(guān)鍵字,應(yīng)該建立索引;
可選擇性低的關(guān)鍵字,但數(shù)據(jù)的值分布差異很大時(shí),選擇性數(shù)據(jù)比較少時(shí)依然能夠利用索引提高效率
復(fù)合索引的建立需要進(jìn)行仔細(xì)分析;盡量考慮用單字段索引代替:
A、正確選擇復(fù)合索引中的第一個(gè)字段,一般是選擇性較好的且在where子句中常見(jiàn)的字段上;
B、復(fù)合索引的幾個(gè)字段經(jīng)常同時(shí)以AND方式出現(xiàn)在Where子句中能夠建立復(fù)合索引;否則單字段索引;
C、如果復(fù)合索引中包含的字段經(jīng)常單獨(dú)出現(xiàn)在Where子句中,則分解為多個(gè)單字段索引;
D、如果復(fù)合索引所包含的字段超過(guò)3個(gè),那么仔細(xì)考慮其必要性,考慮減少?gòu)?fù)合的字段;
E、如果既有單字段索引,又有這幾個(gè)字段上的復(fù)合索引,一般能夠刪除復(fù)合索引;
頻繁DML的表,不要建立太多的索引;
不要將那些頻繁修改的列作為索引列;
索引的優(yōu)缺點(diǎn):
有點(diǎn):
1.創(chuàng)立唯一性索引,保證數(shù)據(jù)庫(kù)表中每一行數(shù)據(jù)的唯一性
2.大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)立索引的最主要的原因
3.加速表和表之間的連接,特別是在實(shí)現(xiàn)數(shù)據(jù)的參考完整性方面特別有意義。
4.在使用分組和排序子句進(jìn)行數(shù)據(jù)檢索時(shí),同樣能夠顯著減少查詢(xún)中分組和排序的時(shí)間。
缺點(diǎn):
1.索引創(chuàng)立在表上,不能創(chuàng)立在視圖上
2.創(chuàng)立索引和維護(hù)索引要耗費(fèi)時(shí)間,這種時(shí)間隨著數(shù)據(jù)量的增加而增加
3.索引需要占物理空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個(gè)索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會(huì)更大
4.當(dāng)對(duì)表中的數(shù)據(jù)進(jìn)行增加、刪除和修改的時(shí)候,索引也要?jiǎng)討B(tài)的維護(hù),降低了數(shù)據(jù)的維護(hù)速度
23.在java種怎樣調(diào)用oracle存儲(chǔ)過(guò)程;
在java中使用CallableStatement調(diào)用存儲(chǔ)過(guò)程
創(chuàng)立需要的測(cè)試表:createtableTest(tidvarchar2(10),tnamevarchar2(10));
第一種情況:無(wú)返回值.
createorreplaceproceduretest_a(param1invarchar2,param2invarchar2)as
begin
insertintotestvalue(param1,param2);
end;
Java調(diào)用代碼:
packagecom.test;
importjava.sql.*;
importjava.io.*;
importjava.sql.*;
publicclassTestProcA
{
publicTestProcA(){
}
publicstaticvoidmain(String[]args)
{
ResultSetrs=null;
Connectionconn=null;
CallableStatementproc=null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=
DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:test","test","test");
proc=conn.prepareCall("{calltest_a(?,?)}");
proc.setString(1,"1001");
proc.setString(2,"TestA");
proc.execute();
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
if(null!=rs){
rs.close();
if(null!=proc){
proc.close();
}
if(null!=conn){
conn.close();
}
}
}catch(Exceptionex){
}
}
}
}
第二種情況:有返回值的存儲(chǔ)過(guò)程(返回值非列表).
存儲(chǔ)過(guò)程為:
createorreplaceproceduretest_b(param1invarchar2,param2outvarchar2)
as
begin
selecttnameintoparam2fromtestwheretid=param1;
end;
Java調(diào)用代碼:
packagecom.test;
importjava.sql.*;
importjava.io.*;
importjava.sql.*;
publicclassTestProcB
{
publicTestProcB(){
}
publicstaticvoidmain(String[]args)
{
Connectionconn=null;
CallableStatementproc=null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=
DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:test","test","test");
proc=conn.prepareCall("{calltest_b(?,?)}");
proc.setString(1,"1001");
proc.registerOutParameter(2,Types.VARCHAR);
proc.execute();
System.out.println("Outputis:"+proc.getString(2));
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
if(null!=proc){
proc.close();
}
if(null!=conn){
conn.close();
}
}catch(Exceptionex){
}
}
}
}
第三種情況:返回列表.
由于oracle存儲(chǔ)過(guò)程沒(méi)有返回值,它的所有返回值都是經(jīng)過(guò)out參數(shù)來(lái)替代的,列表同樣也不例外,但由于是集合,因此不能用一般的參數(shù),必須要用pagkage了.要分兩部分來(lái)寫(xiě):
createorreplacepackagetpackageas
typet_cursorisrefcursor;
proceduretest_c(c_refoutt_cursor);
end;
createorreplacepackagebodytpackageas
proceduretest_c(c_refoutt_cursor)is
begin
openc_refforselect*fromtest;
endtest_c;
endtpackage;
Java調(diào)用代碼:
packagecom.test;
importjava.sql.*;
importjava.io.*;
importjava.sql.*;
publicclassTestProcB
{
publicTestProcB(){
}
publicstaticvoidmain(String[]args)
{
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年深圳萬(wàn)科商用物業(yè)買(mǎi)賣(mài)合同3篇
- 2025年度水電環(huán)保項(xiàng)目環(huán)境影響評(píng)價(jià)合同范本2篇
- 2025年度消防安全責(zé)任書(shū)范本合同
- 2024年度代理合同終止與風(fēng)險(xiǎn)控制協(xié)議3篇
- 2024年?duì)I銷(xiāo)中心商業(yè)空間裝修合作合同版
- 2025版音樂(lè)專(zhuān)輯眾籌出版分成協(xié)議書(shū)3篇
- 2024版合作經(jīng)銷(xiāo)產(chǎn)品合同
- 2024版:創(chuàng)業(yè)公司股權(quán)分配協(xié)議3篇
- 2025年度水泥制品加工與銷(xiāo)售框架協(xié)議
- 2024旅游開(kāi)發(fā)公司景區(qū)電動(dòng)車(chē)租賃合同
- 登金陵鳳凰臺(tái)
- 小學(xué)四年級(jí)數(shù)學(xué)上冊(cè)促銷(xiāo)問(wèn)題
- 初中體育-50米跑教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 國(guó)內(nèi)外中學(xué)數(shù)學(xué)教學(xué)改革與發(fā)展
- 醫(yī)院藥品評(píng)價(jià)與遴選量化評(píng)分表
- 商品拍攝與素材編輯-課程標(biāo)準(zhǔn)
- 專(zhuān)業(yè)英語(yǔ)四級(jí)模擬試卷450(題后含答案及解析)
- 中等職業(yè)學(xué)校班主任能力比賽幼兒保育專(zhuān)業(yè)班級(jí)建設(shè)方案
- 50道《鄉(xiāng)土中國(guó)》期末專(zhuān)題訓(xùn)練習(xí)題(多題型含解析)
- 滕王閣序帶拼音全文譯文
- 帶式輸送機(jī)檢修維護(hù)通用安全技術(shù)措施實(shí)用版
評(píng)論
0/150
提交評(píng)論