




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Oracle程序員面試分類模擬43簡答題1.
OracleJOB的分類是什么?正確答案:Oracle的JOB分為兩類,DBMS_JOB和DBMS_SCHEDULER,二者都可以完成定時任務。(1(江南博哥))DBMS_JOBDBMS_JOB的SUBMIT過程參數如下:
其中,各個參數的說明如下:
1)參數JOB是由SUBMIT()過程返回的BINARY_INEGER。這個值用來唯一標識一個工作,此參數是個變量,在使用前需要被聲明,JOB號在DBA_JOBS視圖里可以查到。
2)WHAT參數的值是將被JOB執行的PL/SQL代碼塊,一般是存儲過程的名字,記得存儲過程后面一定要加上分號。
3)NEXT_DATE參數指示何時運行這個JOB,NEXT_DATE需要修改為數據庫第一次執行該JOB的時間,SYSDATE表示立即執行。
4)INTERVAL參數表示這個JOB什么時候將被再次執行,指定JOB的運行周期,INTERVAL為空表示只執行一次。
5)NO_PARSE參數表示此JOB在提交或執行時是否應進行語法分析,TRUE代表此PL/SQL代碼在它第一次執行時應進行語法分析,而FALSE代表本PL/SQL代碼應立即進行語法分析,在創建JOB時進行檢查。默認值為FALSE。
需要注意的是,NEXT_DATE是時間類型,INTERVAL是字符類型,在調用SUBMIT時要指定正確的參數類型。
(2)DBMS_SCHEDULER
DBMS_SCHEDULER是Oracle10g中新增的一個包,與老版本的DBMS_JOB包相比,DBMS_SCHEDULER有很多新特性。例如,DBMS_SCHEDULER可以執行存儲過程、匿名塊以及OS可執行文件和腳本(包括Linux系統的SHELL腳本),還可以使用DBMS_SCHEDULER更詳細地定義JOB的各類屬性。DBMS_SCHEDULER具有更詳細的作業運行狀態以及故障處理和報告功能。
從Oracle10g開始,Oracle建議使用SCHEDULER替換普通的JOB來管理任務的執行。
下面的例子展示了如何創建一個DBMS_SCHEDULER類型的JOB:
2.
Oracle之INTERVAL分區的STOREIN屬性存儲在哪張表中?正確答案:存儲在SYS.INSERT_TSN_LIST$中。可以通過10046事件對SQL語句“altertableTB_NAMEsetstorein(TS1,TS2,TS3);”進行跟蹤即可找到該表。所以,其查詢SQL如下:
3.
什么是套接字文件?正確答案:套接字文件(SocketFile)在RAC環境中承擔著許多集群進程之間的通信任務,這些進程可以來自于集群的不同節點。這些套接字文件一般保存在tmp路徑下,不同的操作系統其路徑也會不同。Linux環境的套接字文件在/var/tmp/.oracle文件夾下,在其他平臺,可能的目錄有:/tmp/.oracle/*,/tmp/.oracle或者/usr/tmp/.oracle。若刪除這些套接字文件或修改這些套接字文件的權限,則可能引起各種各樣的問題,而且這些套接字文件不能手動修復,只能通過重啟集群的方式來生成全新的套接字文件,即集群每次在啟動的時候都會重新生成新的套接字文件。以下是套接字文件的列表:
4.
oraInventory目錄的作用是什么?正確答案:由于Oracle支持將多個Oracle軟件(或者多版本的數據庫軟件)安裝到同一臺服務器上,這就需要一個位置統一記錄安裝的軟件信息。中央目錄(CentralInventory)實際上就是一臺主機上安裝的Oracle產品清單。在這個清單里記錄了每一個Oracle軟件主目錄的名稱和位置、安裝的組件,以及一些其他的信息。OUI在安裝產品時會讀取中央目錄來確認已經安裝過的產品信息,確保新安裝的產品不會和已存在的產品沖突,而且不會覆蓋掉原有的產品。另外,Oracle的集群和數據庫軟件在進行升級時,OUI也是通過讀取中央目錄中的信息來確認哪些軟件應被安裝的。中央目錄(CentralInventory)所有的Oracle軟件安裝都依賴于該目錄,所以,要確保該目錄已經備份,刪除或丟失oraInventory目錄的內容,都有可能導致安裝或升級報錯。另外,Oracle的軟件產品通常比較復雜,包含很多組件,所以還需要一個更加細致的清單來記錄每一個oracle_home下所安裝的產品組件。而本地目錄(LocalInventory)就是這樣一個清單,它記錄了每個產品所安裝的組件,以及每個組件上應用過的補工程序信息。
oraInventory目錄的位置是由oraInst.loc文件決定的:
1)AIX和Linux平臺:/etc/oraInst.loc。
2)Solaris和HP-UX平臺:/var/opt/oracle/Oralnst.loc。
3)Windows平臺:HKEY_LOCAL_MACHINE/Software/Oracle/inst.loc。
默認情況下它保存在$ORACLE_BASE上一層路徑的oraInventory路徑下,例如:
一旦中央目錄文件出現了損壞,請嘗試使用以下的兩種方式恢復該文件:
方式1:如果其他節點的inventory.xml沒有損壞,可以將其復制到本地節點以覆蓋原有文件。
方式2:使用$GRID_HOME/oui/bin/runInstaller工具重建inventory.xml文件。例如:
步驟1:添加GI_HOME:
步驟2:添加RDBMS_HOME:
作者就曾遇到過一次與該目錄有關的異常:在RAC環境中,無論使用DBCA圖形界面還是采用靜默方式來創建數據庫,最終創建的數據庫都是單實例數據庫,不能成功創建所需要的RAC庫,最后查到的原因竟然是/u01/app/oraInventory/ContentsXML/inventory.xml文件中缺少了DB的部分。
這里順便介紹一下LocalInventory的作用。LocalInventory用于保存某一個ORACLE_HOME下所安裝的組件清單,它位于$ORACLE_HOME/inventory下。由于LocalInventory針對特定的軟件主目錄,所以并不存在inventory.xml文件。文件$ORACLE_HOME/inventory/ContentsXML/comps.xml記錄了對應主目錄下安裝的所有組件。通常情況下,由于每一個Oracle產品都包含了很多組件,所以comps.xml文件的結構也很復雜。
5.
什么是待定的統計信息(PendingStatistic)?正確答案:在數據庫系統運維中,DBA常常希望維持SQL執行計劃的穩定。很多DBA和開發人員對于Hint的依賴,很大程度上也是源于在CBO情況下,執行計劃對于統計量過于依賴,容易形成不穩定執行計劃。所以,SQL語句執行計劃的穩定性,就變成統計信息的穩定性問題。更進一步,就是新的統計信息更新,無論是手動收集還是自動收集,能否促進SQL語句生成更高效的執行計劃。所以,一種思路是:在新的統計信息收集生成時,暫時不要生效投入執行計劃生成。等待最后確認統計信息正確之后,再投入生產環境。
在Oracle11g中,推出了統計信息管理的一種新技術——待定的統計信息(PendingStatistic)技術。簡單地說,DBA可以對一系列的數據表設置PENDING屬性。設置PENDING屬性之后,數據的統計信息在數據字典中相當于已經鎖定。當新的統計信息生成之后,不是直接替換原有的數據,而是存放在PENDING數據字典中。在PENDrNG字典中的統計信息在默認情況下是不會參與SQL執行計劃的生成的。只有在進行SQL測試通過的時候,經過用戶手工的確定,才會將其PUBLISH出來,替換原有的統計信息。這樣,就給運維DBA提供了一種維持執行計劃穩定的思路。通過固定統計信息,將新統計信息以PENDING的方式將原有的統計信息固定,從而穩定執行計劃。
可以使用如下的SQL語句查詢統計信息在全局、SCHEMA和表級別是否自動發布(默認情況下都是自動發布):
以上SQL語句的查詢結果返回TRUE或FALSE。TRUE表明收集統計信息完成后自動發布,而FALSE表明收集統計信息完成后將待定。可以使用下面的包來改變各個級別的默認PUBLISH選項:
1)全局:EXECDBMS_STATS.SET_GLOBAL_PREFS(PNAME=>'PUBLISH',PVALUE=>'FALSE');。
2)SCHEMA:EXECDBMS_STATS.SET_SCHEMA_PREFS(OWNNAME->USER,PNAME=>'PUBLISH',PVALUE=>'TRUE');。
3)表:EXECDBMS_STATS.SET_TABLE_PREFS(USER,'T_LHR','PUBLISH','FALSE');。
缺省情況下,優化器使用數據字典視圖中已發布的統計信息。如果希望優化器使用新收集的待定統計信息,那么可以設置初始化參數OPTIMIZER_USE_PENDING_STATISTICS的值為TRUE(缺省值為FALSE)。可以使用下面的SQL語句為一個特定的數據對象發布待定統計信息:
如果不想發布待定的統計信息,那么可以執行下面的語句刪除這些待定的統計信息:
可以通過視圖DBA_TAB_STATISTICS和DBA_IND_STATISTICS查詢發布的統計信息,通過視圖DBA_TAB_PENDlNG_STATS和DBA_IND_PENDING_STATS查詢待定的統計信息。可以使用存儲過程DBMS_STATS.EXPORT_PENDING_STATS導出待定的統計信息。如果已經發布了統計信息,想要恢復以前的統計信息,那么可以根據DBA_TAB_STATS_HISTORY中的STATS_UPDATE_TIME來確定TIMESTAMP,執行下面的操作,最后一個參數AS_OF_TIMESTAMP指的是恢復在這個時間點生效的統計信息,所以可以多1s:
6.
說說COUNT(*)計算行數有哪些優化手段?正確答案:可以通過創建索引、主鍵索引、常數索引、常數壓縮索引、位圖索引、位圖索引+并行、物化視圖、結果集緩存等技術來優化,也可以根據業務規則來分析需求,是否只統計一條數據即可,或者根本用不到統計數據。其中,位圖索引可以按很高密度存儲數據,因此往往比B樹索引小很多,前提是在基數比較小(列重復度比較高)的情況下。位圖索引是保存空值的,因此可以在COUNT中利用。位圖索引不太適合OLTP類型數據庫。物化視圖是應用在數據要求不怎么及時的場景下。若表頻繁更新,則不適合緩存結果集。優化沒有止境,對數據庫了解越多,能想到的方法就越多。
7.
如何正確地刪除表空間數據文件?正確答案:(1)DROPDATAFILE可以使用如下的命令刪除一個表空間里的數據文件:
關于該命令需要注意以下幾點:
1)該語句會刪除磁盤上的文件并更新控制文件和數據字典中的信息,刪除之后的原數據文件序列號可以重用。
2)該語句只能是在相關數據文件ONLINE的時候才可以使用。如果說對應的數據文件已經是OFFLNE,那么僅針對字典管理表空間(Dictionary-ManagedTablespace,DMT)可用,而對于本地管理表空間(LocallyManagedTablespace,LMT)不能使用,否則會報錯“ORA-03264:cannotdropofflinedatafileoflocallymanagedtablespace”。如果數據文件是RECOVER狀態,那么該命令依然不能使用。
3)不能刪除一個表空間中第一個添加的數據文件,否則會報錯,形如“ORA-03263:cannotdropthefirstfileoftablespaceTS_DD_LHR”。
4)若一個表空間只包含1個數據文件,則不能刪除該數據文件,否則會報錯,形如“ORA-03261:thetablespaceTS_DD_LHRhasonlyonefile”。
5)必須為空,否則會報:ORA-03262:thefileisnon-empty。值得注意的是,non-empty的含義是有EXTENT被分配給了TABLE,而不是該TABLE中有無ROWS,此時若是使用“DROPTABLEXXX;”是不行的,必須使用“DROPTABLEXXXPURGE;”或者在已經使用了“DROPTABLEXXX;”的情況下,再使用“PURGETABLE”XXX表在回收站中的名稱";”來刪除回收站中的該表,否則空間還是不釋放,數據文件仍然不能DROP。
6)不能刪除SYSTEM表空間的數據文件,否則報錯“ORA-01541:systemtablespacecannotbebroughtoffline;shutdownifnecessary”。
需要注意的是,據官方文檔介紹說,處于READONLY狀態的表空間數據文件也不能刪除,但經過實驗證明,其實是可以刪除的。
(2)OFFLINE和OFFLINEDROP的區別
與刪除數據文件相似的還有如下的命令(其中的“'FILE_NAMEf'”也可以用文件號替代):
需要注意的是,該命令不會刪除數據文件,只是將數據文件的狀態更改為RECOVER。OFFLINEFORDROP命令相當于把一個數據文件置于離線狀態,并且需要恢復,并非刪除數據文件。數據文件的相關信息還會存在數據字典和控制文件中。
對于歸檔模式而言,“OFFLINEFORDROP”和“OFFLINE”沒有什么區別,因為Oracle會忽略FORDROP選項。因為OFFLINE之后還需要進行RECOVER才可以ONLINE。
對于非歸檔模式而言,只能執行“OFFLINEFORDROP”。若不加FORDROP選項,則會報錯“ORA-01145:offlineimmediatedisallowedunlessmediarecoveryenabled”。因為非歸檔模式沒有歸檔文件來進行RECOVER操作。如果OFFLINE之后,速度足夠快,聯機Redo日志文件里的數據還沒有被覆蓋掉,那么在這種情況下,還是可以進行RECOVER操作的。
(3)OS級別刪除了數據文件后的恢復
若使用了“ALTERDATABASEDATAFILENOFFLINEDROP;”命令,則并不會刪除數據文件,這個時候可以先ONLINE后再用“ALTERTABLESPACEXXXDROPDATAFILEN;”刪除。如果執行“ALTERDATABASEDATAFILENOFFLINEDROP;”后并在OS級別刪除了數據文件,那么首先需要使用“ALTERDATABASECREATEDATAFILENAS'/tmp/ts_dd_thr02.dbf';”來添加一個數據文件,然后再執行RECOVER并ONLINE后再用“ALTERTABLESPACEXXXDROPDATAFILEN;”命令刪除。如果產生的日志文件丟失,那么目標文件就不能再恢復了,這個時候只能刪除表空間了,命令為:“DROPTABLESPACEXXXIFNCLUDINGCONTENTSANDDATAFILES;”。
8.
當收集表的統計信息時應該注意哪些問題?正確答案:關于收集統計信息需要注意以下幾點:
1)對于數據量不大的OLTP類型的系統,建議使用自動收集統計信息,并對一些特殊的大表寫JOB定時收集統計信息。如果是數據量很大的OLAP或者DSS系統,那么建議DBA自己寫JOB腳本來收集統計信息。
2)在導入大量數據后應及時收集統計信息后才能進行相關的后續業務處理(包括查詢和修改),否則可能會由于實際數據量和統計信息里記錄的數據量存在巨大差異而導致CBO選擇錯誤的執行計劃。
3)全局臨時表默認不能收集統計信息,在生成執行計劃時采用動態采樣比較好。
4)對于某些新上線或新遷移的系統,建議進行全庫收集一次統計信息。
5)建議及時對包含日期型字段的表收集統計信息,避免出現謂詞越界現象。
6)統計信息收集作業采樣比例:對于Oracle11g及其以上的版本收集統計信息的采樣比例建議采用。DBMS_STATS.AUTO_SAMPLESIZE。如果是Oracle10g,那么建議將采樣比例的初始值設為30%,然后根據目標SQL的實際執行情況再做調整。
7)系統統計信息:如果系統的硬件環境發生了變化,那么建議要額外收集一次系統統計信息。
8)內部對象統計信息:在明確診斷出系統已有的性能問題是因為X$表的內部對象統計信息不準引起的,這個時候就應該收集X$表的內部對象統計信息,其他情形就不要收集了。
9)表的大小、是否并行:若表很大,而系統空閑,則可以使用并行來收集統計信息。
10)表是否分區:若是分區表則建議收集全局的統計信息并且收集數據量有變更的單個分區(加GRANULARITY和參數并設置屬性INCREMENTAL)的統計信息。
11)是否收集索引的統計信息:一般情況下都應該收集索引的統計信息。
12)是否收集直方圖。對直方圖統計信息的收集策略是對已經存在直方圖統計信息的列才收集直方圖統計信息,而目標列的初次直方圖統計信息則是由了解系統的DBA手工來收集直方圖。設置METHOD_OPT的值為“FORALLCOLUMNSSIZEREPEAT”。
13)是否可以并發收集統計信息:若系統有很多小表,則可以考慮并發收集統計信息。
14)系統的負載情況:在手動收集統計信息的時候需要注意系統的負載情況。
15)預估多久可以收集完成:對OLAP系統的大表而言,根據平時收集統計信息的經驗要預估出收集統計信息要花費多長的時間。
16)基于數據庫、SCHEMA或是表級別:根據情況判斷是否有必要在數據庫或SCHEMA級別來收集統計信息。
17)是否需要收集擴展列的統計信息。如果表中的數據傾斜度較大,那么收集直方圖能最大程度地幫助優化器計算出準確的Cardinality,從而避免產生差的執行計劃;再進一步,如果存在傾斜的多個列共同構成了Predicate里的等值連接且這些列間存在較強的列相關性的話,那么生成帶有直方圖的多列統計信息是一個上佳的選擇,能夠最大程度地幫助優化器準確預測出Cardinality。
18)是否設置NO_INVALIDATE為FALSE。該選項有TRUE、FALSE和DBMS_STATS.AUTO_INVALIDATE這3個值。如果取值為TRUE,那么表示收集統計信息后不進行游標失效動作,原有的SharedCursor保持原有狀態。如果取值為FALSE,那么表示將統計信息對象相關的所有Cursor全部失效。如果設置為AUTO_NVALIDATE,那么Oracle自己決定SharedCursor失效動作,當SQL再次執行時間距離上次收集統計信息的時間超過5h(隱含參數“_OPTIMIZER_INVALlDATION_PERIOD”決定)則對SQL重新做硬解析。AUTO_INVALIDATE為默認選項。有些DBA在收集統計信息時,沒有使用NO_INVALIDATE=>FALSE選項,所以,即使收集了統計信息,執行計劃也不會立即改變。
19)對于OLTP類型的數據庫,需要特別關注DML比較頻繁的以及數據加載比較大的表及分區表。
20)檢查是否有臨近統計信息收集窗口的數據加載工作,如果有,是否能在數據庫統計信息的窗口時間完成,如果不能在窗口時間完成,那么應該針對這段時間加載的數據,特別是大量的數據,在相關加載腳本完成之后,加入統計信息的收集。
21)如果加載數據量比較大,并且是分區表,每個分區的業務數據呈現的是均勻的,在Oracle11g可以考慮采用DBMS_STATS.COPY_TABLE_STATS先把統計信息做個快速的設置,然后,再收集該分區的統計信息。
其實,上述幾點是沒有一個普適性的標準答案的,因為不同的系統其數據量、數據分布情況都不盡相同,甚至可能會有很大的區別,所以適合于某套系統的統計信息收集策略并不一定能適用于另外一套系統。收集統計信息總的原則就是量體裁衣,即要找到適合自己系統的統計信息收集策略,用盡量小的代價收集到能穩定跑出正確執行計劃的統計信息即可,也就是說收集到的統計信息不一定要特別準,只要具備代表性,能穩定跑出正確的執行計劃就可以了。
9.
Oracle的SCN是什么?正確答案:SCN(SystemChangeNumber,系統改變號)是一個由系統內部維護的序列號,SCN在數據庫全局是唯一的。當系統需要更新的時候自動增加,它是系統中維持數據的一致性和順序恢復的重要標志,是數據庫中非常重要的一種數據結構。在數據庫中,SCN作為一種時鐘機制來標記數據庫動作,比如,當事務發生時,數據庫會用一個SCN來標記它。
在數據庫中,SCN可以說是無處不在,例如數據文件頭、控制文件、數據塊頭、日志文件等都標記著SCN。也正因為如此,數據庫的一致性維護和SCN密切相關。不管是數據的備份還是恢復都離不開SCN。由于SCN描述的是數據一致性的狀態,所以,它會在各種涉及數據一致性的場合中起到重要作用。
(1)SCN的分類不管什么時候,SCN所指代的都是數據庫的某個一致性的狀態。SCN按照其代表的意義不同可以分為4類,系統檢查點SCN(SystemCheckpointSCN)、文件檢查點SCN(DatafileCheckpointSCN)、開始SCN(StartSCN)和結束SCN(StopSCN),參考下表。
SCN的分類
(2)如何查看系統當前SCNOracle數據庫提供了兩種直接查看系統當前SCN的方法,一個是通過查詢V$DATABASE中的CURRENT_SCN列,另外一個就是通過DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER得到,如下:
一般情況下,SCN1列和SCN2列的結果一致,但在系統比較繁忙的時候,可能SCN2比SCN1稍微大一點。
(3)SCN與時間的相互轉換一個SCN值總是發生在某一個特定的時刻,只不過由于粒度的不一樣,通常會存在多個SCN對應同一個時間戳的情況。Oracle10g提供了兩個新函數用于SCN和時間戳進行相互轉換,這兩個函數分別是SCN_TO_TIMESTAMP和TIMESTAMP_TO_SCN,通過對SCN和時間戳進行轉換,極大地方便了Oracle的很多備份和恢復過程:
1)SCN_TO_TIMESTAMP(scnnumber):將SCN轉換成時間戳。
2)TIMESTAMP_TO_SCN(timestamp):將時間戳轉換成SCN。
通過以上這兩個函數,最終Oracle將SCN和時間的關系建立起來,在Oracle10g之前,是沒有辦法通過函數轉換得到SCN和時間的對應關系的,一般可以通過LogMiner分析日志獲得。但是這兩種函數轉換要依賴于數據庫內部表SMON_SCN_TIME,對于久遠的SCN則不能轉換。
10.
試述數據、數據庫、數據庫系統、數據庫管理系統的概念。正確答案:(1)數據(Data):描述事物的符號記錄稱為數據。數據的種類有數字、文字、圖形、圖像、聲音等。數據與其語義是不可分的。在現代計算機系統中數據的概念是廣義的。早期的計算機系統主要用于科學計算,處理的數據是整數、實數、浮點數等傳統數學中的數據。現代計算機能存儲和處理的對象十分廣泛,表示這些對象的數據也越來越復雜。數據與其語義是不可分的。例如,100這個數字可以表示一件物品的價格是100元,也可以表示一段路程是100公里,還可以表示一個人的體重為100斤。
(2)數據庫(DataBase,簡稱DB):數據庫是長期儲存在計算機內的、有組織的、可共享的數據集合。數據庫中的數據按一定的數據模型組織、描述和儲存,具有較小的冗余度、較高的數據獨立性和易擴展性,并可為各種用戶共享。
(3)數據庫系統(DataBaseSystem,簡稱DBS):數據庫系統是指在計算機系統中引入數據庫后的系統構成。數據庫系統和數據庫是兩個概念。數據庫系統是一個系統,數據庫是數據庫系統的一個組成部分。但是在日常工作中人們常常把數據庫系統簡稱為數據庫。
(4)數據庫管理系統(DataBaseManagementSystem,簡稱DBMS):數據庫管理系統是位于用戶與操作系統之間的一層數據管理軟件,用于科學地組織和存儲數據、高效地獲取和維護數據。DBMS是一個大型的復雜的軟件系統,是計算機中的基礎軟件。DBMS的主要功能包括數據定義功能、數據操縱功能、數據庫的運行管理功能、數據庫的建立和維護功能。目前,專門研制DBMS的廠商及其研制的DBMS產品很多。著名的有美國IBM公司的DB2關系數據庫管理系統和IMS層次數據庫管理系統、美國Oracle公司的Oracle關系數據庫管理系統、美國微軟公司的SQLServer等。
11.
如何批量刪除JOB?正確答案:可以采用SQL來生成刪除JOB的語句,首先執行以下語句,可以根據情況對結果進行過濾:
將以上SQL生成的結果復制到命令窗口就可以批量執行了。
12.
Oracle常用日期處理函數有哪些?這些函數可以實現哪些功能?正確答案:有關日期函數需要了解以下幾點:
1)日期函數用于處理DATE類型的數據。
2)在日期上加上或減去一個數字結果仍為日期。
3)兩個日期相減返回日期之間相差的天數。
4)默認情況下,日期格式為DD-MON-RR。
5)查詢當前數據庫日期格式的命令:SELECTSYSCONTEXT('USEKENV','NLS_DATE_FORMAT')FROMDUAL;。
6)SYSDATE:該函數返回系統時間。
7)LAST_DAY(D):返回指定日期所在月份的最后一天。
8)MONTHS_BETWEEN:表示兩個日期的月份之差,即在給定的兩個日期之間有多少個月。
9)ADD_MONTHS(D,N):該函數將給定的日期增加N個月。當N為正數時,該函數將給定的日期增加N個月,為負數時減去N個月,該函數很常用,可以用來表示上個月、下個月,去年和下一年等。
10)NEXT_DAY(D,N):返回以時間點D為基準(開始),下一個“目標日N”的日期。
由于數據庫以數字方式存儲日期,因此,日期類型可以進行算術運算(加法或減法)。例如:可以給日期增加或減去一個數字,得到的結果還是一個日期值,兩個日期相減,得到兩個日期之間的天數,用小時除以24就可以得到天數。
另外,日期中常用到的一個修改日期語言的SQL:
修改為英文:
修改為中文:
在英語的環境中,查詢星期時要用英文,示例代碼如下:
13.
執行計劃里的access和filter有什么區別?正確答案:如下:
一般而言,access表示這個謂詞條件的值將會影響數據的訪問路徑(表還是索引);filter表示謂詞條件的值不會影響數據的訪問路勁,只起到過濾的作用。NOTIN或MIN函數等容易產生filter操作。
對于filter而言如果只有一個子節點,那么就是簡單過濾操作(獨立操作)。如果有兩個或更多子節點,那么就是類似NestedLoops操作,只不過與NestedLoops差別在于,filter內部會構建HASH表,對于重復匹配的,不會再次進行循環查找,而是利用已有結果,提高效率。但是一旦重復匹配的較少,循環次數多,那么,filter操作將是嚴重影響性能的操作,可能會導致目標SQL幾天都執行不完。
14.
如何鎖住統計信息?正確答案:Oracle會自動收集表的統計信息,大部分情況下,這種行為是有利的。當不需要對某個表做收集的時候,可以采用鎖定統計信息的方法,把不需要收集的表排除在外,這樣可以使得此表上的統計信息不變,如下:
如果在鎖定條件下收集統計信息,那么會報錯:“ORA-20005:objectstatisticsarelocked(stattype=ALL)”。可以使用如下的SQL查詢到統計信息被鎖的表以及索引:
15.
如何預估即將創建索引的大小?正確答案:如果當前表大小是1TB,那么在某一列上創建索引的話索引大概占用多大的空間?對于這個問題,Oracle提供了兩種可以預估將要創建的索引大小的辦法:
1)利用系統包DBMS_SPACE.CREATE_INDEX_COST直接得到。利用DBMS_SPACE.CREATE_TABLE_COST可以獲得將要創建的表的大小。
2)利用Oracle11g新特性NOTERAISEDWHENEXPLAINPLANFORCREATEINDEX。
16.
如何獲取trace文件的路徑?正確答案:跟蹤文件(TraceFile)一般位于“user_dump_dest”參數所指定的目錄中,具體路徑可以通過以下幾種方式查詢獲得。
(1)通過user_dump_dest查詢運行如下SQL語句來創建視圖:
創建公共同義詞的命令如下:
查詢同義詞或視圖都可以得到當前會話的trace文件名。
(2)Oracle11g可以通過查詢V$DIAG_INFO獲取
(3)oradebugtracefile_name獲取
(4)通過參數直接查詢
17.
什么是虛擬內存?正確答案:虛擬內存簡稱虛存,是計算機系統內存管理的一種技術。它是相對于物理內存而言的,可以理解為“假的”內存。它使得應用程序認為它擁有連續可用的內存(一個連續完整的地址空間),允許程序員編寫并運行比實際系統擁有的內存大得多的程序,這使得許多大型軟件項目能夠在具有有限內存資源的系統上實現。而實際上,它通常被分割成多個物理內存碎片,還有部分暫時存儲在外部磁盤存儲器上,在需要時進行數據交換。虛存比實存有以下好處:
1)擴大了地址空間。無論段式虛存,還是頁式虛存,或是段頁式虛存,尋址空間都比實存大。
2)內存保護。每個進程運行在各自的虛
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫藥流通行業供應鏈可視化與成本控制策略研究報告
- 中國儲能電池市場2025年能源資源應用分析報告
- 河北省廊坊市2025屆英語八年級第二學期期末復習檢測模擬試題含答案
- 保安崗位科目題庫及答案
- 2025年家具制造業個性化定制生產模式下的個性化定制生產模式下的產業競爭力分析報告
- 安全注射管理試題及答案
- 安全試題分類及答案大全
- 安全環保試題題庫及答案
- 溝通培訓課件模板
- 學校禮儀接待培訓課件
- 2024年司法考試完整真題及答案
- 2025年職業教育專業崗位技能資格知識考試題庫與答案
- 工程項目生命周期概述
- 《女性經期營養》課件
- 防洪防汛桌面演練
- 炎癥性腸病營養指南
- 2024年執業藥師繼續教育專業答案
- 神經系統體格檢查課件(共81張課件)
- 小學三年級下冊英語(牛津上海一起點)全冊語法知識點總結
- 學校食堂食品原材料采購投標書
- 班主任家校共育勝任力:內涵、現狀及培養路徑
評論
0/150
提交評論