數(shù)據(jù)庫程序員面試分類真題20_第1頁
數(shù)據(jù)庫程序員面試分類真題20_第2頁
數(shù)據(jù)庫程序員面試分類真題20_第3頁
數(shù)據(jù)庫程序員面試分類真題20_第4頁
數(shù)據(jù)庫程序員面試分類真題20_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫程序員面試分類真題20簡答題1.

如果聯(lián)機Redo日志文件損壞,那么如何恢復(fù)?正確答案:聯(lián)機Redo日志是Oracle數(shù)據(jù)庫中比較核心的文件,當Redo日志文件異常之后,數(shù)據(jù)庫就無法正常啟動(江南博哥),而且有丟失據(jù)的風險,強烈建議在條件允許的情況下,對Redo日志進行多路鏡像。需要注意的是,RMAN不能備份聯(lián)機Redo日志文件。所以,聯(lián)機Redo日志一旦出現(xiàn)故障,則只能進行清除日志了。清除日志文件即表明可以重用該文件。如果日志文件已經(jīng)歸檔,那么可以使用:

ALTERDATABASECLEARLOGFILEGROUPN;

如果該日志還沒有歸檔,那么需要用:

ALTERDATABASECLEARUNARCHIVEDLOGFILEGROUPN;--不需要數(shù)據(jù)文件

ALTERDATABASECLEARUNARCHIVEDLOGFILE...UNRECOVERABLEDATAFILE;--需要數(shù)據(jù)文件[考點]RMAN

2.

如何在執(zhí)行恢復(fù)的時候?qū)?shù)據(jù)文件恢復(fù)到別的路徑?正確答案:主要采用命令“setnewnamefordatafile”和“switchdatafileall;”。[考點]RMAN

3.

如何清除V$ARCHIVED_LOG視圖中的過期信息?正確答案:在使用RMAN命令(DELETEARCHIVELOGALL;)刪除歸檔信息后,V$ARCHIVED_LOG視圖中的NAME列為空,但是依然可以查詢到這些刪除了的歸檔信息。出現(xiàn)這樣的現(xiàn)象是因為使用RMAN命令在刪除歸檔日志的時候不會清除控制文件中的內(nèi)容,導(dǎo)致V$ARCHIVED_LOG留下的過期的不完整信息。

使用如下的命令可以清除控制文件中關(guān)于V$ARCHIVED_LOG的信息:

EXECUTESYS.DBMS_BACKUP_RESTORE.RESETCFILESECTION(11);[考點]RMAN

4.

Oracle如何刪除歸檔日志文件?正確答案:在RMAN工具里刪除歸檔日志文件:

1.rmantarget/

2.CROSSCHECKARCHIVELOGALL;

3.LISTEXPIREDARCHIVELOGALL;

4.DELETEEXPIREDARCHIVELOGALL;[考點]RMAN

5.

RMAN中有哪幾種保留策略?正確答案:保留策略說明了要保留的備份冗余數(shù)量及保留的時間長度。有兩類保留策略:恢復(fù)窗口保留策略和冗余保留策略,這兩類保留策略互相排斥??梢酝ㄟ^使用RMAN的CONFIGURE命令或OEM(OracleEnterpriseManager)來設(shè)置保留策略的值。[考點]RMAN

6.

什么是閃回?閃回有哪些分類?正確答案:Oracle閃回技術(shù)從根本上改變了數(shù)據(jù)恢復(fù)策略,利用閃回技術(shù),可以使更正錯誤的時間大大縮短,而且它簡單易用,使用極少的命令便可恢復(fù)所需要的數(shù)據(jù),而不必執(zhí)行復(fù)雜的程序。閃回技術(shù)是Oracle數(shù)據(jù)庫獨有的特性,支持各級恢復(fù),包括行、事務(wù)、表和數(shù)據(jù)庫范圍。采用閃回技術(shù),可以針對行級和事務(wù)級發(fā)生過變化的數(shù)據(jù)進行恢復(fù),減少了數(shù)據(jù)恢復(fù)的時間,而且操作簡單,通過SQL語句就可以實現(xiàn)數(shù)據(jù)的恢復(fù),大大提高了數(shù)據(jù)庫恢復(fù)的效率。

Oracle中閃回技術(shù)分類圖如下圖所示。

[考點]閃回

7.

動態(tài)注冊和靜態(tài)注冊有什么區(qū)別?正確答案:Oracle的注冊就是將數(shù)據(jù)庫作為一個服務(wù)注冊到監(jiān)聽程序,而客戶端不需要知道數(shù)據(jù)庫名和實例名,只需要知道該數(shù)據(jù)庫對外提供的服務(wù)名就可以申請連接到數(shù)據(jù)庫。這個服務(wù)名可能與實例名一樣,也有可能不一樣。在數(shù)據(jù)庫服務(wù)器啟動過程中,數(shù)據(jù)庫服務(wù)器會向監(jiān)聽程序注冊相應(yīng)的服務(wù),根據(jù)注冊方式的不同,目前Oracle支持動態(tài)注冊和靜態(tài)注冊這兩種注冊方式。

動態(tài)注冊是實例啟動的時候,PMON進程根據(jù)參數(shù)文件中的INSTANCE_NAME、SERVICE_NAMES兩個參數(shù)將實例和服務(wù)動態(tài)注冊到LISTENER中。動態(tài)注冊默認只注冊到默認的監(jiān)聽器上(名稱為LISTENER、端口為1521),如果要向非默認監(jiān)聽注冊,那么需要配置LOCAL_LISTENER參數(shù)。需要注意的是,動態(tài)注冊默認端口在數(shù)據(jù)庫啟動大約1分鐘之后才可以查詢(lsnrctlstatus),但可以在數(shù)據(jù)庫中使用SQL語句“ALTERSYSTEMREGISTER;”立即注冊數(shù)據(jù)庫。[考點]網(wǎng)絡(luò)

8.

如何查詢某服務(wù)是靜態(tài)注冊還是動態(tài)注冊?正確答案:可以使用命令lsnrctlstatus來查看某服務(wù)是靜態(tài)注冊還是動態(tài)注冊。實例狀態(tài)為UNKNOWN時表明此服務(wù)是靜態(tài)注冊。這時監(jiān)聽器用來表明它不知道關(guān)于該實例的任何信息,只有當客戶發(fā)出連接請求時,它才檢查該實例是否存在。動態(tài)注冊的數(shù)據(jù)庫通過狀態(tài)信息中的狀態(tài)READY或狀態(tài)BLOCKED(動態(tài)監(jiān)聽在NOMOUNT狀態(tài)下為BLOCKED)來指明。不管何時關(guān)閉數(shù)據(jù)庫,動態(tài)注冊的數(shù)據(jù)庫都會動態(tài)地從監(jiān)聽器注銷,而與之相關(guān)的信息將從狀態(tài)列表中消失。所以,不管數(shù)據(jù)庫是在運行還是已經(jīng)關(guān)閉,監(jiān)聽器總是知道它的狀態(tài)。該信息將被用于連接請求的回退和負載平衡。[考點]網(wǎng)絡(luò)

9.

什么是EZCONNECT方式連接數(shù)據(jù)庫?正確答案:如果對tnsnames.ora文件沒有做相應(yīng)的配置,那么也可以使用Oracle的EZCONNECT(EasyConnectNamingMethod)方式來連接到數(shù)據(jù)庫,其語法形式如下:

sqlplususername/password@host[:port][/service_name][/instance_name]

需要注意的是,如果想要使用EZCONNECT方式連接到數(shù)據(jù)庫,那么需要在客戶端的sqlnet.ora文件中增加“NAMES.DIRECTORY_PATH=(EZCONNECT)”信息,否則該功能將無法使用,默認是有該配置的。一般配置如下:

NAMES.DIRECTORY_PATH=(TNSNAMES,EZCONNECT)[考點]網(wǎng)絡(luò)

10.

如何跟蹤tnsping過程?正確答案:sqlnet是Oracle提供的與網(wǎng)絡(luò)層面交互的一個工具,比如如何解析客戶端發(fā)起的連接,如何對客戶端發(fā)起的連接進行辨別,如何對客戶端連接進行阻隔限制,或者啟用日志及跟蹤(LogandTrace)功能等一系列的功能。所以,可以通過sqlnet工具對rasping進行跟蹤分析,查找為何外部網(wǎng)絡(luò)無法連接數(shù)據(jù)庫的原因。

可以在客戶端的sqlnet.ora中配置:

tnsping.trace_directory=D:\app\oracle\product\11.2.0.1\dbhome_1\NETWORK\ADMIN

tnsping.trace_level=support

其中,tnsping.trace_level指的是跟蹤的級別,support為最高級別,該參數(shù)可選的級別包括off、user、admin和support。一般來說,既然是跟蹤錯誤原因,作者建議還是設(shè)置為support較好。rasping.trace_directory指的是跟蹤產(chǎn)生的trace文件存放的位置。

在執(zhí)行“tnspingorcl”后,在目錄“D:\app\oracle\product\11.2.0.1\dbhome_1\NETWORK\ADMIN”下會生成一個跟蹤文件tnsping.trc,然后分析該文件即可。[考點]網(wǎng)絡(luò)

11.

如何啟動Oracle數(shù)據(jù)庫的監(jiān)聽日志?正確答案:Oracle監(jiān)聽器是一個服務(wù)器端程序,用于監(jiān)聽所有來自客戶端的請求,并為其提供數(shù)據(jù)庫服務(wù)。

以下是一些常用的設(shè)置。

1)設(shè)置監(jiān)聽器日志文件目錄:lsnrctlSETLOG_DIRECTORYdirectory。

2)設(shè)置監(jiān)聽器日志文件名:lsnrctlSETLOG_FILEfile_name。

3)設(shè)置監(jiān)聽器日志的狀態(tài):lsnrctlSETLOG_STATUS{on|off}。[考點]網(wǎng)絡(luò)

12.

解釋GLOBAL_NAMES設(shè)為TRUE的用途。正確答案:GLOBAL_NAMES指明連接數(shù)據(jù)庫的方式。如果這個參數(shù)設(shè)置為TRUE,那么在建立數(shù)據(jù)庫連接時就必須用相同的名字連接遠程數(shù)據(jù)庫。[考點]網(wǎng)絡(luò)

13.

tnsnames.ora文件的作用是什么?正確答案:這個文件類似于Linux系統(tǒng)的hosts文件,提供tnsname到主機名或者IP的對應(yīng)關(guān)系。只有當sqlnet.ora中有類似“NAMES.DIRECTORY_PATH=(TNSNAMES)”的配置,客戶端解析連接字符串時,數(shù)據(jù)庫才會嘗試使用這個文件。

下面給出一個配置的例子:

ORCL=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=lhr)(PORT=1521))

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=orcl)

)

)

其中,每個部分的解釋如下:

1)PROTOCOL:客戶端與服務(wù)器端通信的協(xié)議,一般為TCP,該內(nèi)容一般不用改。

2)HOST:數(shù)據(jù)庫所在的機器的主機名或IP地址。不管用主機名還是IP地址,在客戶端一定要用ping命令ping通數(shù)據(jù)庫所在的機器,否則需要在hosts文件中加入數(shù)據(jù)庫所在的機器的主機名和IP地址的對應(yīng)關(guān)系。

3)PORT:數(shù)據(jù)庫監(jiān)聽器的端口,可以查看服務(wù)器端的listener.ora文件或在數(shù)據(jù)庫服務(wù)器中通過lsnrctlstatus[listenername]命令來查看。一般為1521端口。

4)SERVICE_NAME:在數(shù)據(jù)庫中使用“SHOWPARAMETERSERVICE_NAME”命令查看,一般情況下和DBNAME相同。[考點]網(wǎng)絡(luò)

14.

sqlnet.ora文件的作用是什么?正確答案:sqlnet.ora文件的作用類似于Linux系統(tǒng)的nsswitch.conf文件,通過該文件來決定如何查找一個連接中出現(xiàn)的連接字符串。例如,在客戶端輸入命令:sqlplussys/oracle@orcl,而sqlnet.ora的配置如下:

SQLNET.AUTHENTICATION_SERVICES=(NTS)

NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)

那么,客戶端就會首先在tnsnames.ora文件中查找orcl的記錄。若沒有相應(yīng)的記錄,則嘗試把orcl當作一個主機名,通過網(wǎng)絡(luò)的途徑去解析它的IP地址,然后去連接這個IP上GLOBAL_DBNAME為orcl的實例。

如果sqlnet.ora文件的配置如下:

NAMES.DIRECTORY_PATH=(TNSNAMES)

那么客戶端就只會從tnsnames.ora查找orcl的記錄。[考點]網(wǎng)絡(luò)

15.

TWO_TASK環(huán)境變量的作用是什么?正確答案:在Linux環(huán)境下,可以設(shè)置TWO_TASK環(huán)境變量,當用戶連接數(shù)據(jù)庫且沒有指定服務(wù)名時,會自動利用TWO_TASK的設(shè)置作為環(huán)境變量連接數(shù)據(jù)庫。其中,TWO_TASK的值為tnsnames.ora文件中配置的值。

需要注意的是,當配置了TWO_TASK環(huán)境變量后,就無法使用操作系統(tǒng)驗證來登錄數(shù)據(jù)庫了,會報ORA-01031:insufficientprivileges的錯誤。

類似地,在Windows環(huán)境下的變量是LOCAL,其設(shè)置方法和Linux下的TWO_TASK一致。[考點]網(wǎng)絡(luò)

16.

在Windows環(huán)境下,錯誤“ORA-12560:TNS:協(xié)議適配器錯誤”的常見原因有哪些?正確答案:常見原因有如下幾個:

1)監(jiān)聽服務(wù)沒有啟動起來。Windows環(huán)境操作步驟:開始→程序→管理工具→服務(wù),打開服務(wù)面板,啟動oracleXXXlistener服務(wù)。

2)數(shù)據(jù)庫實例沒有啟動。啟動命令為netstartOracleServiceORCL。

3)環(huán)境變量問題。請仔細檢查ORACLE_HOME和PATH的路徑。若是在同一臺機器上同時安裝了Oracle的服務(wù)器端和客戶端,則要確保執(zhí)行“sqlplus/assysdba”命令的sqlplus在服務(wù)器路徑下。另外,需要設(shè)置ORACLE_SID,設(shè)置方法為setORACLE_SID=XXX。[考點]網(wǎng)絡(luò)

17.

Oracle的SYS用戶登錄報權(quán)限不足(InsufficientPrivileges)的常見原因有哪些?正確答案:常見原因有如下幾個:

1)檢查服務(wù)器端sqlnet.ora文件。在Windows環(huán)境下,需要加上一句:“SQLNET.AUTHENTICATION_SERVICES=(NTS)”;在Linux環(huán)境下,可以沒有這個文件或者加上:“SQLNET.AUTHENTICATION_SERVICES=(ALL)”,或者刪除該句。

2)檢查登錄Windows的用戶。當前登錄用戶必須包含在ORA_DBA組中,域用戶若沒有連上域服務(wù)器時則可能出現(xiàn)這種現(xiàn)象。

3)要保證參數(shù)REMOTE_LOGIN_PASSWORDFILE的值為EXCLUSIVE。

4)檢查服務(wù)器端密碼文件。在服務(wù)器端密碼文件必須存在,可以查詢視圖V$PWFILE_USERS,該視圖必須包含SYS用戶。此外,執(zhí)行命令“GRANTSYSDBATOSYS;”也不能報錯。創(chuàng)建密碼文件的命令為

Windows:orapwdfile="E:\oracle\lhrdb\DATABASE\PWDortest.ORA"password=lhr

Linux:orapwdfile=$ORACLE_HOME/dbs/orapworclpassword=lhrforce=y[考點]網(wǎng)絡(luò)

18.

Oracle刪除數(shù)據(jù)庫的方式有哪幾種?正確答案:有如下幾種方式可以用來刪除Oracle數(shù)據(jù)庫:

1)直接在OS級別調(diào)用dbca命令以靜默的方式刪除數(shù)據(jù)庫,如下所示,其中,mydb為數(shù)據(jù)庫名:

dbca-silent-deleteDatabase-sourceDBmydb

2)SQL窗口:

ALTERDATABASECLOSE;

ALTERSYSTEMENABLERESTRICTEDSESSION;

DROPDATABASE;

STARTUPFORCEMOUNTRESTRICT;

DROPDATABASE;

注意:強烈推薦第1種方式,對于第2種方式,若是在RAC環(huán)境中,數(shù)據(jù)庫需要設(shè)置參數(shù)CLUSTER_DATABASE為FALSE后才可以執(zhí)行DROPDATABASE,設(shè)置的命令為ALTERSYSTEMSETCLUSTER_DATABASE=FALSESID='*'SCOPE=SPFILE;。[考點]建庫與刪庫

19.

Oracle如何判定實例是否運行?正確答案:在啟動Oracle實例之前,必須定義ORACLE_SID,Oracle根據(jù)SID的HASH值來唯一確定一個實例的地址。當打開SQL*Plus工具,輸入“sqlplus/assysdba”以后,系統(tǒng)根據(jù)SID進行HASH,查找在共享內(nèi)存中是否有相應(yīng)的共享內(nèi)存段(SHMID)存在,如果有,那么返回connected,否則返回connecttoanidleinstance,這個實例名是存放在SGA的variablesize中。

通過ORADEBUGIPC來得到variable所存放的SHM的SHMID號,在OS下使用ipcrm-mSHMID可以刪掉這一段共享內(nèi)存。另外,在OS級別也可以使用sysresv命令來獲取SHMID號。

ORADEBUGIPC命令如下:

SQL>ORADEBUGSETMYPID

SQL>ORADEBUGIPC

SQL>ORADEBUGTRACFILE_NAME

sysresv命令如下:

[ZFLHRDB2:oracle]:/oracle>ORACLESID=raclhr2

[ZFLHRDB2:oracle]:/oracle>sysresv

IPCResourcesforORACLESID"raclhr2";

SharedMemory:

ID

KEY

5242886

0xffffffff

5242883

0xffffffff

1048583

0xd92489e0

OracleInstancealiveforsid"raclhr2"[考點]建庫與刪庫

20.

如何判斷Oracle是32位還是64位?正確答案:由于Oracle分為客戶端和服務(wù)器端,所以,查看Oracle是32位還是64位也分為服務(wù)器端和客戶端2個部分。

1.數(shù)據(jù)庫服務(wù)器端

2.數(shù)據(jù)庫Client端

客戶端可以從Linux和Windows平臺分別去分析。

[考點]建庫與刪庫

21.

$ORACLE_HOME和$ORACLE_BASE的區(qū)別是什么?正確答案:ORACLE_BASE是Oracle軟件的根目錄,下面一般包括admin、cfgtoollogs、diag、fast_recovery_area和product等目錄。ORACLE_HOME下則是Oracle的命令、連接庫、安裝助手、LISTENER等一系列的內(nèi)容。ORACLE_HOME是Oracle產(chǎn)品的目錄。

ORACLE_HOME比ORACLE_BASE目錄要更深一些。也就是說,ORACLE_HOME=$ORACLE_BASE/product/version。如果裝了2個版本的Oracle,那么ORACLE_BASE可以是一個,但ORACLE_HOME是2個。需要注意的是,ORACLE_HOME變量的最后是沒有反斜杠“/”的。[考點]建庫與刪庫

22.

Oracle11g安裝完后需要禁用哪些參數(shù)?正確答案:這個問題得根據(jù)業(yè)務(wù)的需求來確定哪些參數(shù)需要被禁用,例如,是否需要關(guān)閉審計、密碼大小寫驗證是否關(guān)閉、并行數(shù)、進程數(shù)、SGA等的參數(shù),沒有統(tǒng)一的答案,下面給出一些可能需要修改的參數(shù):

ALTERSYSTEMSETAUDIT_TRAIL=NONESCOPE=SPFILE;--關(guān)閉審計

ALTERSYSTEMSETSEC_CASE_SENSITIVE_LOGON=FALSESCOPE=SPEILE;--關(guān)閉密碼大小寫驗證

ALTERPROFILEDEFAULTLIMITFAILED_LOGIN_ATIEMPTSUNLIMITED;--設(shè)置登錄次數(shù)為無限

ALTERSYSTEMSETCONTROL_FILE_RECORD_KEEP_TIME=31;--控制文件內(nèi)容保存時間

ALTERSYSTEMSETMAX_DUMP_FILE_SIZE='2018M';--DU

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論