Oracle程序員面試分類模擬8_第1頁
Oracle程序員面試分類模擬8_第2頁
Oracle程序員面試分類模擬8_第3頁
Oracle程序員面試分類模擬8_第4頁
Oracle程序員面試分類模擬8_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Oracle程序員面試分類模擬8簡(jiǎn)答題1.

OracleJOB的分類是什么?正確答案:Oracle的JOB分為兩類,DBMS_JOB和DBMS_SCHEDULER,二者都可以完成定時(shí)任務(wù)。(1)(江南博哥)DBMS_JOBDBMS_JOB的SUBMIT過程參數(shù)如下:

其中,各個(gè)參數(shù)的說明如下:

1)參數(shù)JOB是由SUBMIT()過程返回的BINARY_INEGER。這個(gè)值用來唯一標(biāo)識(shí)一個(gè)工作,此參數(shù)是個(gè)變量,在使用前需要被聲明,JOB號(hào)在DBA_JOBS視圖里可以查到。

2)WHAT參數(shù)的值是將被JOB執(zhí)行的PL/SQL代碼塊,一般是存儲(chǔ)過程的名字,記得存儲(chǔ)過程后面一定要加上分號(hào)。

3)NEXT_DATE參數(shù)指示何時(shí)運(yùn)行這個(gè)JOB,NEXT_DATE需要修改為數(shù)據(jù)庫第一次執(zhí)行該JOB的時(shí)間,SYSDATE表示立即執(zhí)行。

4)INTERVAL參數(shù)表示這個(gè)JOB什么時(shí)候?qū)⒈辉俅螆?zhí)行,指定JOB的運(yùn)行周期,INTERVAL為空表示只執(zhí)行一次。

5)NO_PARSE參數(shù)表示此JOB在提交或執(zhí)行時(shí)是否應(yīng)進(jìn)行語法分析,TRUE代表此PL/SQL代碼在它第一次執(zhí)行時(shí)應(yīng)進(jìn)行語法分析,而FALSE代表本PL/SQL代碼應(yīng)立即進(jìn)行語法分析,在創(chuàng)建JOB時(shí)進(jìn)行檢查。默認(rèn)值為FALSE。

需要注意的是,NEXT_DATE是時(shí)間類型,INTERVAL是字符類型,在調(diào)用SUBMIT時(shí)要指定正確的參數(shù)類型。

(2)DBMS_SCHEDULER

DBMS_SCHEDULER是Oracle10g中新增的一個(gè)包,與老版本的DBMS_JOB包相比,DBMS_SCHEDULER有很多新特性。例如,DBMS_SCHEDULER可以執(zhí)行存儲(chǔ)過程、匿名塊以及OS可執(zhí)行文件和腳本(包括Linux系統(tǒng)的SHELL腳本),還可以使用DBMS_SCHEDULER更詳細(xì)地定義JOB的各類屬性。DBMS_SCHEDULER具有更詳細(xì)的作業(yè)運(yùn)行狀態(tài)以及故障處理和報(bào)告功能。

從Oracle10g開始,Oracle建議使用SCHEDULER替換普通的JOB來管理任務(wù)的執(zhí)行。

下面的例子展示了如何創(chuàng)建一個(gè)DBMS_SCHEDULER類型的JOB:

2.

RAC中如何指定JOB的運(yùn)行實(shí)例?正確答案:在RAC中,可以讓JOB在某個(gè)指定的實(shí)例上運(yùn)行。對(duì)于DBMS_JOB和DBMS_SCHEDULER來說,它們的指定方法不同:

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才可以。

3.

如何判斷SCHEDULERJOB是否正在運(yùn)行?正確答案:可以查詢DBA_SCHEDULER_JOBS視圖的STATE列,若STATE列的值為RUNNING,則代表當(dāng)前的JOB正在運(yùn)行。或者通過查詢視圖DBA_SCHEDULER_RUNNING_JOBS,該視圖中的JOB即正在運(yùn)行的JOB。

4.

如何查詢SCHEDULERJOB的運(yùn)行日志?正確答案:可以通過查詢視圖DBA_SCHEDULER_JOB_RUN_DETAILS來獲取SCHEDULERJOB的運(yùn)行日志、產(chǎn)生的錯(cuò)誤等信息。如下:

從查詢結(jié)果中可以看到,JOB_INSERT_SQL_LHR從2016-11-2913:03:36開始執(zhí)行的時(shí)候就報(bào)錯(cuò)了,報(bào)錯(cuò)信息可以從ADDITIONAL_INFO列里找到,其報(bào)錯(cuò)的具體信息如下:

可見,涉及的程序是DB_MONITOR用戶下的PKG_SQL_HISTORY_LHR包,而ORA-01658的錯(cuò)誤是由于表空間不足引起的。

5.

通過DBMS_SCHEDULER如何調(diào)用SHELL腳本?正確答案:可以直接創(chuàng)建JOB來調(diào)用SHELL腳本,如下:

若是以普通用戶執(zhí)行上述代碼的話,在執(zhí)行過程中會(huì)遇到ORA-27486:insufficientprivileges和ORA-27399:jobtypeEXECUTABLErequirestheCREATEEXTERNALJOBprivilege的錯(cuò)誤,這是由于權(quán)限不足的緣故導(dǎo)致的。

解決方法:以SYSDBA連接,然后執(zhí)行上述代碼,或者用SYS用戶進(jìn)行賦權(quán)操作,這里假設(shè)普通用戶的用戶名為L(zhǎng)HR:

賦權(quán)之后接著執(zhí)行就好了:

6.

如何批量刪除JOB?正確答案:可以采用SQL來生成刪除JOB的語句,首先執(zhí)行以下語句,可以根據(jù)情況對(duì)結(jié)果進(jìn)行過濾:

將以上SQL生成的結(jié)果復(fù)制到命令窗口就可以批量執(zhí)行了。

7.

SQL*Plus中@和@@的區(qū)別是什么?正確答案:@和@@都可以調(diào)用腳本,它們的不同之處如下:

@等于start命令,用來運(yùn)行一個(gè)SQL腳本文件。@命令調(diào)用當(dāng)前目錄下的,或指定全路徑,或可以通過SQLPATH環(huán)境變量搜尋到的腳本文件。

@@用在腳本文件中,用來指定“@執(zhí)行的腳本文件”與“@@執(zhí)行的腳本文件”在同一目錄,而不用指定全路徑,也不從SOLPATH環(huán)境變量指定的路徑中尋找文件,該命令一般用在嵌套腳本文件中。

8.

SQL*Plus中&與&&的區(qū)別是什么?正確答案:&用來創(chuàng)建一個(gè)臨時(shí)變量,每當(dāng)遇到這個(gè)臨時(shí)變量時(shí),都會(huì)提示輸入一個(gè)值。

&&用來創(chuàng)建一個(gè)持久變量,就像用DEFINE命令或帶NEW_VLAuE子句的COLUMN命令創(chuàng)建的持久變量一樣。當(dāng)使用&&命令引用這個(gè)變量時(shí),不會(huì)每次遇到該變量就提示用戶鍵入值,而只有在第一次遇到時(shí)提示一次。

例如,將下面三行語句存為一個(gè)腳本文件,運(yùn)行該腳本文件,會(huì)提示三次,讓輸入DEPTNOVAL的值:

將下面三行語句存為一個(gè)腳本文件,運(yùn)行該腳本文件,則只會(huì)提示一次,讓輸入DEPTNOVAL的值:

9.

glogin.sql腳本的作用是什么?正確答案:SQL*Plus在啟動(dòng)的時(shí)候會(huì)自動(dòng)查找運(yùn)行兩個(gè)腳本文件:glogin.sql和login.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)容。所以,可以將個(gè)人喜歡的常用設(shè)置放在login.sql文件中,每次SQL*Plus啟動(dòng)時(shí)會(huì)自動(dòng)加載。

glogin.sql是SQL*Plus全局登錄的配置文件,是Oracle自帶的登錄腳本文件,它的路徑是固定的,即$ORACLE_HOME/sqlplus/admin。當(dāng)用戶啟動(dòng)SQL*Plus的時(shí)候,會(huì)從這個(gè)固定的路徑加載glogin.sql。

可以在glogin.sql文件中添加如下的內(nèi)容:

這樣,每次登錄SQL*Plus的時(shí)候,SQL提示符就會(huì)變?yōu)樵O(shè)置的內(nèi)容,假設(shè)用戶為SYS,數(shù)據(jù)庫為lhrdb,則提示符如下:

注意,以上提示符的“>”后有一個(gè)空格。

10.

SQL*Plus的ERRORLOGGING的作用是什么?正確答案:在Oracle11g中,可以把SQL或PL/SQL錯(cuò)誤信息自動(dòng)記錄到當(dāng)前用戶下的一個(gè)表中,而且不會(huì)自動(dòng)刪除,默認(rèn)的表名為SPERRORLOG,也可以指定自己的表名替換默認(rèn)表名。

11.

如何給SQL*Plus安裝幫助?正確答案:SQL*Plus的幫助必須手工安裝,shell腳本為$ORACLE_HOME/bin/helpins。在安裝之前,必須先設(shè)置SYSTEM_PASS環(huán)境變量,如:

如果不設(shè)置該環(huán)境變量,那么將在運(yùn)行腳本的時(shí)候提示輸入環(huán)境變量。當(dāng)然,除

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論