![數(shù)據(jù)庫(kù)程序員面試分類真題9_第1頁(yè)](http://file4.renrendoc.com/view4/M00/2F/32/wKhkGGZX1_WAQNvsAAL33dYHX5I253.jpg)
![數(shù)據(jù)庫(kù)程序員面試分類真題9_第2頁(yè)](http://file4.renrendoc.com/view4/M00/2F/32/wKhkGGZX1_WAQNvsAAL33dYHX5I2532.jpg)
![數(shù)據(jù)庫(kù)程序員面試分類真題9_第3頁(yè)](http://file4.renrendoc.com/view4/M00/2F/32/wKhkGGZX1_WAQNvsAAL33dYHX5I2533.jpg)
![數(shù)據(jù)庫(kù)程序員面試分類真題9_第4頁(yè)](http://file4.renrendoc.com/view4/M00/2F/32/wKhkGGZX1_WAQNvsAAL33dYHX5I2534.jpg)
![數(shù)據(jù)庫(kù)程序員面試分類真題9_第5頁(yè)](http://file4.renrendoc.com/view4/M00/2F/32/wKhkGGZX1_WAQNvsAAL33dYHX5I2535.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫(kù)程序員面試分類真題9簡(jiǎn)答題1.
RAC中如何指定JOB的運(yùn)行實(shí)例?正確答案:在RAC中,可以讓JOB在某個(gè)指定的實(shí)例上運(yùn)行。對(duì)于DBMS_JOB和DBMS_SCHEDuLER來(lái)說(shuō),它們的指定(江南博哥)方法不同:
1)在DBMS_JOB下,執(zhí)行SYS.DBMS_JOB.SUBMIT包創(chuàng)建JOB的時(shí)候,可以指定INSTANCE參數(shù),該參數(shù)指定了JOB運(yùn)行的實(shí)例。
2)DBMS_SCHEDULER下指定實(shí)例運(yùn)行JOB稍微有點(diǎn)復(fù)雜,首先創(chuàng)建SERVICE,再創(chuàng)建JOB_CLASS,最后創(chuàng)建JOB才可以。[考點(diǎn)]JOB
2.
如何判斷SCHEDULERJOB是否正在運(yùn)行?正確答案:可以查詢DBA_SCHEDULER_JOBS視圖的STATE列,若STATE列的值為RUNNING,則代表當(dāng)前的JOB正在運(yùn)行?;蛘咄ㄟ^(guò)查詢視圖DBA_SCHEDULER_RUNNING_JOBS,該視圖中的JOB即正在運(yùn)行的JOB。[考點(diǎn)]JOB
3.
如何查詢SCHEDULERJOB的運(yùn)行日志?正確答案:可以通過(guò)查詢視圖DBA_SCHEDULER_JOB_RUN_DETAILS來(lái)獲取SCHEDULERJOB的運(yùn)行日志、產(chǎn)生的錯(cuò)誤等信息。代碼如下:
SELECTJRD.LOG_ID,JRD.JOB_NAME,N.JOB_CLASS,
TO_CHAR(JRD.LOG_DATE,'YYYY-MM-DDHH24:MI:SS')LOG_DATE,
JRD.STATUS,JRD.ERROR#,JRD.RUN_DURATION運(yùn)行時(shí)長(zhǎng),JRD.ADDITIONAL_INF.O
FROMDBA_SCHEDULER_JOB_LOGN,DBA_SCHEDULER_JOB_RUN_DETAILSJRD
WHEREN.LOG_ID=JRD.LOG_ID
ANDN.JOB_NAME='JOB_INSERT_SQL_LHR'
--JOB的名稱
ORDERBYJRD.LOG_IDDESC;
從查詢結(jié)果中可以看到,JOB_INSERT_SQL_LHR從2016-11-2913:03:36開(kāi)始執(zhí)行的時(shí)候就報(bào)錯(cuò)了,報(bào)錯(cuò)信息可以從ADDITIONAL_INFO列里找到,其報(bào)錯(cuò)的具體信息如下:
ORA-01658:unabletocreateINITIALextentforsegmentintablespaceTS_LHR
ORA-06512:at"DB_MONITOR.PKG_SQL_HISTORY_LHR",line180
可見(jiàn),涉及的程序是DB_MONITOR用戶下的PKG_SQL_HISTORY_LHR包,而ORA-01658的錯(cuò)誤是由于表空間不足引起的。[考點(diǎn)]JOB
4.
如何批量刪除JOB?正確答案:可以采用SQL來(lái)生成刪除JOB的語(yǔ)句,首先執(zhí)行以下語(yǔ)句,可以根據(jù)情況對(duì)結(jié)果進(jìn)行過(guò)濾:
SELECT'EXECDBMS_SCHEDULER.DROP_JOB('''||JOB_NAME||''',TRUB);FROM
USER_SCHEDULER_JOBST1;
將以上SQL生成的結(jié)果復(fù)制到命令窗口就可以批量執(zhí)行了。[考點(diǎn)]JOB
5.
SQL*Plus中@和@@的區(qū)別是什么?正確答案:@和@@都可以調(diào)用腳本,它們的不同之處如下:
@等于start命令,用來(lái)運(yùn)行一個(gè)SQL腳本文件。@命令調(diào)用當(dāng)前目錄下的,或指定全路徑,或可以通過(guò)SQLPATH環(huán)境變量搜尋到的腳本文件。
@@用在腳本文件中,用來(lái)指定“@執(zhí)行的腳本文件”與“@@執(zhí)行的腳本文件”在同一目錄,而不用指定全路徑,也不從SQLPATH環(huán)境變量指定的路徑中尋找文件,該命令一般用在嵌套腳本文件中。[考點(diǎn)]SQL*Plus
6.
SQL*Plus中&與&&的區(qū)別是什么?正確答案:&用來(lái)創(chuàng)建一個(gè)臨時(shí)變量,每當(dāng)遇到這個(gè)臨時(shí)變量時(shí),都會(huì)提示輸入一個(gè)值。
&&用來(lái)創(chuàng)建一個(gè)持久變量,就像用DEFINE命令或帶NEW_VLAUE子句的COLUMN命令創(chuàng)建的持久變量一樣。當(dāng)使用&&命令引用這個(gè)變量時(shí),不會(huì)每次遇到該變量就提示用戶鍵入值,而只有在第一次遇到時(shí)提示一次。[考點(diǎn)]SQL*Plus
7.
glogin.sql腳本的作用是什么?正確答案:SQL*Plus在啟動(dòng)的時(shí)候會(huì)自動(dòng)查找運(yùn)行兩個(gè)腳本文件:login.sql和glogin.sql。
login.sql文件可以存放SQL*Plus中能使用的任何命令。SQL*Plus在啟動(dòng)時(shí)會(huì)首先查找當(dāng)前目錄下的login.sql文件,其次會(huì)在SQLPATH目錄下查找。如果找到login.sql文件,那么在SQL*Plus顯示“SQL>”前執(zhí)行l(wèi)ogin.sql里的所有內(nèi)容。
glogin.sql是SQL*Plus全局登錄的配置文件,是Oracle自帶的登錄腳本文件,它的路徑是固定的,即$ORACLE_HOME/sqlplus/admin。當(dāng)用戶啟動(dòng)SQL*Plus的時(shí)候,會(huì)從這個(gè)固定的路徑加載glogin.sql。
可以在glogin.sql文件中添加如下的內(nèi)容:
SETSQLPROMPT"_USER'@'_CONNECT_IDENTIFIER>"
這樣,每次登錄SQL*Plus的時(shí)候,SQL提示符就會(huì)變?yōu)樵O(shè)置的內(nèi)容,假設(shè)用戶為SYS,數(shù)據(jù)庫(kù)為lhrdb,則提示符如下:
SQL>SHOWSQLPROMPT
sqlprompt"SQL>"
SQL>SETSQLPROMPT"_USER'@'_CONNECT_IDENTIFIER>"
SYS@lhrdb>
SYS@lhrdb>SHOWSQLPROMPT
sqlprompt"_usee'@'_connect_identifier>"
注意,以上提示符的“>”后有一個(gè)空格。[考點(diǎn)]SQL*Plus
8.
SQL*Plus的ERRORLOGGING的作用是什么?正確答案:在Oracle1lg中,可以把SQL或PL/SQL錯(cuò)誤信息自動(dòng)記錄到當(dāng)前用戶下的一個(gè)表中,而且不會(huì)自動(dòng)刪除,默認(rèn)的表名為SPERRORLOG,也可以指定自己的表名替換默認(rèn)表名。[考點(diǎn)]SQL*Plus
9.
如何判斷一個(gè)存儲(chǔ)過(guò)程是否正在運(yùn)行?正確答案:有兩種方式可以判斷一個(gè)存儲(chǔ)過(guò)程是否正在運(yùn)行,其查詢SQL語(yǔ)句分別如下,若有結(jié)果返回,則說(shuō)明存儲(chǔ)過(guò)程正在運(yùn)行。
方法1:
SELECTA.SID,B.SERIAL#,A.OWNER,A.OBJECT,A.TYPE,B.SERVER,B.MODULE,B.ACTION,B.LOGON_TIME
FROM
V$ACCESS
A,V$SESSIONB
WHEREA.SD=B.SID(+)AND
A.TYPE='PROCEDURE'
AND
B.STATUS='ACTIVE'
AND
A.OBJECT='P_TEST_LHR';
--注意這里修改成存儲(chǔ)過(guò)程的名稱
方法2:
SELECT*FROM
V$DB_OBJECT_CACHEWHERETYPE='PROCEDURE'ANDNAME='P_TEST_LHR'ANDLOCKS>0ANDPINS>0;[考點(diǎn)]SQL*Plus
10.
當(dāng)Oracle用戶密碼含特殊字符時(shí),如何登錄?正確答案:當(dāng)Oracle用戶密碼含有特殊字符(例如,&、@、$等)時(shí),SQL*Plus和exp或expdp等工具進(jìn)行登錄的時(shí)候在寫(xiě)法上有很大的差異。
若密碼不含“&”符號(hào),則可以使用雙引號(hào)將密碼括起來(lái)進(jìn)行密碼修改:
alteruserlhridentifiedby"l@hkr/0";
若密碼包含有“&”符號(hào),則需要首先設(shè)置define為off才可以修改密碼:
setdefineoff
alteruserscottidentifiedby"$tiger&1231@h\r/0%s,d$";
alteruserscottidentifiedby"$?'$%*H\@f'\<a-q/$-@#<>'}:H$";
若密碼包含有“"”雙引號(hào),則需要使用password來(lái)修改密碼:
passwordscott
在Linux平臺(tái)下,使用不同客戶端連接Oracle數(shù)據(jù)庫(kù)的寫(xiě)法見(jiàn)下表。Linux平臺(tái)SQL*Plus工具exp、imp、expdp、impdp普通用戶無(wú)tnssqlplus'lhr/"l@h\r/0'''expdp'lhr/"l@h\r/0'''有tnssqlplus'lhr/"l@h\r/0'''@LHRDBexpdp'lhr/"l@h\r/0'''@LHRDBsys用戶無(wú)tnssqlplus/assysdbaexpdp\'/ASSYSDBA\'有tnssqlplus'sys/"l@h\r/0'''@LHRDBassysdbaexpdp\"sys/"l@h\r/0'''@LHRDBassysdba\'正常密碼sqlplussys/lhr@lhrdbassysdbaexpdp\'sys/lhr@LHRDBassysdba\'在上表中,含特殊字符密碼為l@h\r/0,正常密碼為lhr,tns為L(zhǎng)HRDB,總的寫(xiě)法原則:密碼用雙引號(hào)括起來(lái),用戶名和密碼用單引號(hào)括起來(lái),然后【用戶名】+【密碼】+【tns】+【assysdba】用單引號(hào)括起來(lái),最后的這個(gè)單引號(hào)用“\”進(jìn)行轉(zhuǎn)義。在Windows平臺(tái)下,使用不同客戶端連接Oracle數(shù)據(jù)庫(kù)的寫(xiě)法見(jiàn)下表。Windows平臺(tái)SQL*Plus工具exp、imp、expdp、impdp普通用戶無(wú)tnssqlpluslhr/"""l@h\r/0"""sqlpluslhr∧"l@h\r/0\"expdplhr/'""'l@h\r/0"""expdplhr∧A"l@h\r/0\"有tnssqlpluslhr/"""l@h\r/0"""@LHRDBsqlpluslhr∧"l@h\r/0\"@LHRDBexpdplhr/'""'l@h\r/0"""@LHRDBexpdplhr∧"l@h\r/0\"@LHRDBsys用戶無(wú)tnssqlplus/assysdbaexpdp\"/assysdba\"有tnssqlplussys/"""l@h\r/0"""@LHRDBassysdbasqlplussys∧"l@h\r/0\"@LHRDBassysdba
正常密碼sqlplussys/lhr@lhrdbassysdbaexpdp\"sys/lhr@LHRDBassysdba\"
在上表中,含特殊字符密碼為l@h\r/0,正常密碼為lhr,tns為L(zhǎng)HRDB,總的原則:密碼用3個(gè)雙引號(hào)括起來(lái),或者用一個(gè)雙引號(hào)括起來(lái),然后用“\”將雙引號(hào)進(jìn)行轉(zhuǎn)義。
11.
什么是Quote(q)語(yǔ)法?正確答案:在SQL查詢中,會(huì)經(jīng)常需要原樣輸出字符串,如果字符串中含有大量的單引號(hào)、雙引號(hào)或者特殊字符,那么需要用單引號(hào)轉(zhuǎn)義拼接字符串,這樣會(huì)非常麻煩。所以,Oracle提供了一個(gè)Q-quote的表達(dá)式來(lái)原樣輸出字符串。
SYS@orclasm>SELECTQ'[I'maboy,mynameis'lhrhaha']'FROMDUAL;
O'[I'MABOY,MYNAMEIS'LHRHAHA']'
------------------------------
I'maboy,mynameis'lhrhaha'
需要注意以下幾點(diǎn):
1)Q-quote定界符可以是除了TAB、空格、回車外的任何單字節(jié)或多字節(jié)字符,包括數(shù)字、字母、特殊字符。但'&'不能作為分隔符,因?yàn)?&'意思是傳入?yún)?shù)。
2)Q'后跟起始分隔符,起始分隔符后的字符串原樣輸出,起始分隔符必須有配對(duì)的結(jié)束分隔符。'['、'('、'{'作為分隔符,必須以']'、')'、'}'結(jié)束。
12.
怎么捕獲用戶登錄信息,如SID、IP地址等?正確答案:可以利用登錄觸發(fā)器。
13.
怎么捕獲整個(gè)數(shù)據(jù)庫(kù)的DDL語(yǔ)句或者說(shuō)捕獲對(duì)象結(jié)構(gòu)變化與修改?正確答案:可以采用DDL觸發(fā)器。
14.
怎么捕獲表上的DML語(yǔ)句?正確答案:可以采用DML觸發(fā)器。
15.
如何從Oracle數(shù)據(jù)庫(kù)中獲得毫秒?正確答案:在Oracle9i以上版本,有一個(gè)TIMESTAMP類型可以用來(lái)獲得毫秒,如:
SQL>SELECTTO_CHAR(SYSTIMESTAMP,'YYYY-MM-DDHH24:MI:SSXFP)TIME1,TO_CHAR(CURRENT_TIMESTAMP)TIME2FROMDUAL;
TIME1
TIME2
-----------------------------------------
2003-10-2410:48:45.656000
24-OCT-0310.48.45.656000AM+08:00
可以看到,毫秒在TO_CHAR中對(duì)應(yīng)的是FF。
16.
用一個(gè)語(yǔ)句實(shí)現(xiàn)該需求:如果某條記錄存在那么就執(zhí)行更新操作,如果不存在那么就執(zhí)行插入操作。正確答案:可以采用MERGE語(yǔ)句,但是只支持SELECT子查詢。語(yǔ)法為
MERGEINTOTABLEUSINGDATA_SOURCEON(CONDITION)
WHENMATCHEDTHENUPDATE_CLAUSE
WHENNOTMATCHEDTHENINSERT_CLAUSE;
17.
如何實(shí)現(xiàn)分組取前3條記錄?正確答案:可以利用分析函數(shù),如獲取每個(gè)部門(mén)薪水前三名的員工或每個(gè)班成績(jī)前三名的學(xué)生,代碼如下:
SELECT*FROM(SELECTDEPNO,ENAME,SAL,ROW_NUMBER()OVER(PARTITIONBYDEPNOORDERBYSALDESC)RNFROMEMP)WHERERN<=3;
18.
如何在SQL*Plus環(huán)境中執(zhí)行OS命令?正確答案:可以使用host或!,如下:
SQL>hostlsntctlstart
在Unix/Linux平臺(tái)下:
SQL>!<OScommand>
在Windows平臺(tái)下還可以使用$,如下:
SQL>$<OScommand>
19.
Oracle中有哪些常用的字符函數(shù)?正確答案:常用的有如下幾個(gè)函數(shù):
1)lower(char):將字符串全部轉(zhuǎn)化為小寫(xiě)的格式。
2)upper(char):將字符串全部轉(zhuǎn)化為大寫(xiě)的格式。
3)initcap('SQLcourse'):每個(gè)單詞的首字母大寫(xiě),其余變?yōu)樾?xiě),結(jié)果為SqlCourse。
4)concat('Hello','World'):字符串連接,結(jié)果為HelloWorld。
5)length(char):返回字符串的長(zhǎng)度。
6)substr(char,m,n):取字符串的子串,m表示起點(diǎn),n代表取n個(gè)字符的意思。
7)replace(char1,search_string,replace_string):替換函數(shù)。
8)instr(char1,char2,[,n[,m]]):取子串在字符串的位置,特別取某一個(gè)特殊字符在原字符串中的位置。
9)trim('
Hello
World
'):前后去掉空格,結(jié)果為“Hello
World”。
10)ltrim('
Hello
World
'):左邊去掉空格,結(jié)果為“Hello
World
”。
11)rtrim('
Hello
World
'):右邊去掉空格,結(jié)果為“Hello
World”。
12)lpad(salary,10,'*'):左補(bǔ)齊,結(jié)果為料*****24000。
13)rpad(salary,10,'*'):右補(bǔ)齊,結(jié)果為24000*****。
14)chr():將ASCII碼轉(zhuǎn)換為字符。
15)ascii():將字符轉(zhuǎn)換為ASCII碼。
20.
如何查看存儲(chǔ)過(guò)程的編譯錯(cuò)誤?正確答案:在存儲(chǔ)過(guò)程編譯完成后使用SHOWERROR命令即可查看。
21.
如果查詢的列中含有特殊字符,如通配符“%”與“_”,那么該如何查詢這些特殊字符?正確答案:利用ESCAPE來(lái)查詢,如下:
SELECT*FROMSCOTT.EMPWHERENAMELIKE'A\%'ESCAPE'\';
22.
如何插入單引號(hào)到數(shù)據(jù)庫(kù)表中?正確答案:可以用ASCII碼處理,其他特殊字符如&也一樣,如下:
INSERTINTOTVALUES('I'||CHR(39)||'m');
--CHR(39)代表字符'
或者用兩個(gè)單引號(hào)表示一個(gè):
INSERTINTOTVALUES('I"m');
--兩個(gè)"可以表示一個(gè)'
23.
十進(jìn)制與十六進(jìn)制如何轉(zhuǎn)換?正確答案:十進(jìn)制轉(zhuǎn)換為十六進(jìn)制用TO_CHAR:
SQL>SELECTTO_CHAR(100,'XX')COLAFROMDUAL;
COLA
-----
64
十六進(jìn)制轉(zhuǎn)換為十進(jìn)制用TO_NUMBER:
SQL>SELECTTO_NUMBER('7D',
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑材料進(jìn)口物流合同樣本
- 礦產(chǎn)開(kāi)采用地中介服務(wù)合同
- 二零二五年度包裝機(jī)械遠(yuǎn)程監(jiān)控與維修服務(wù)合同
- 家禽養(yǎng)殖合同禽類采購(gòu)合同
- 房屋買(mǎi)賣合同詳情
- 農(nóng)業(yè)工程綜合實(shí)施方案
- 軟件技術(shù)服務(wù)合同書(shū)
- 國(guó)際酒店服務(wù)管理手冊(cè)
- 工程監(jiān)理規(guī)范實(shí)務(wù)手冊(cè)
- 牛羊肉供貨協(xié)議書(shū)
- DB35T 1345-2013蘭壽系列金魚(yú)養(yǎng)殖技術(shù)規(guī)范
- 祛痘產(chǎn)品原料配方與消費(fèi)者祛痘方案選擇建議
- 年產(chǎn)一萬(wàn)噸蓖麻項(xiàng)目可行性論證報(bào)告
- 儒林外史每回概括
- GB/T 889.1-2000I型非金屬嵌件六角鎖緊螺母
- GB/T 1995-1998石油產(chǎn)品粘度指數(shù)計(jì)算法
- 四川省成都市2022-2023學(xué)年四年級(jí)下冊(cè)數(shù)學(xué)期末調(diào)研試卷AB卷(含解析)
- (完整word版)家譜WORD樣本
- 小升初廣東省深圳市2021-2022學(xué)年六年級(jí)下學(xué)期期末數(shù)學(xué)真題測(cè)試模擬卷(解答題)有解析
- 溶栓治療標(biāo)準(zhǔn)操作規(guī)程
- 血液透析應(yīng)急流程圖+
評(píng)論
0/150
提交評(píng)論