當前位置:首頁 » 數據倉庫 » oracle資料庫考試題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle資料庫考試題

發布時間: 2023-08-12 05:03:19

⑴ 面試題:oracle資料庫優化

oracle資料庫優化的話主要有以下幾個方面(我接觸過的,可能不全面):
1 查詢語句的優化,這個主要是根據語句和資料庫索引的情況,結合查詢計劃的分析結果,對性能較低的查詢語句進行重寫,在執行查詢前執行表分析語句也可以算這里;
2 數據結構優化,這個包括根據實際的應用中業務邏輯,對資料庫的結構進行重新設計,或者創建相關索引里提高查詢效率;
3 資料庫設置優化,這方面主要是調整資料庫和數據結構的相關參數提高應用訪問系統的效率;
4 存儲結構優化,在數據量較大的情況下,可以考慮通過資料庫的存儲結構進行優化,比如對數據進行partition,將數據存儲在磁碟陣列伺服器上等。
我的經驗有限,以上是部分建議

⑵ oracle資料庫考試簡答題,請回答一下吧,三個都回答了才會給分哦

REF CURSOR游標:
動態游標,在運行的時候才能確定游標使用的查詢。分類:
強類型(限制)REF CURSOR,規定返回類型
弱類型(非限制)REF CURSOR,不規定返回類型,可以獲取任何結果集。
TYPE ref_cursor_name IS REF CURSOR [RETURN return_type]

Oracle 的隔離級別

SQL92定義的隔離級別在理論上很完善,但是 Oracle 顯然認為在實際實現的時候並不應該完全照搬SQL92的模型。
- Oracle不支持 SQL92 標准中的「讀取未提交數據(read uncommitted)」隔離級別,想要臟讀都沒可能。
- Oracle 支持 SQL92 標准中的「讀取已提交數據(read committed)」隔離級別,(這也是Oracle默認的隔離級別)。
- Oracle不支持 SQL92 標准中的「可重現的讀取(repeatable read)」隔離級別,要想避免「不可重現的讀取(nonrepeatable read)」可以直接使用「序列化(serializable)」隔離級別。
- Oracle 支持 SQL92 標准中的「序列化(serializable)」隔離級別,但是並不真正阻塞事務的執行(這一點在後文還有詳述)。
- Oracle 還另外增加了一個非SQL92標準的「只讀(read-only)」隔離級別。

oracle startup的時候分為三個步驟:
1. Start an instance.
2. Mount the database.
3. Open the database.
三個步驟中所要做的工作主要如下:
1、start an instance
命令為 startup nomount
在這一步中主要工作有:
Reading the parameter file initsid.ora
Allocating the SGA
Starting the background processes
Opening the ALERT file and the trace files
讀參數文件是為了讀裡面的dbname,各個內存參數的大小,比如sga的大小,以便分配內存,還有控制文件的路徑等。在這一步並不打開控制文件,所以如果你要重建控制文件的時候,需要工作在這個狀態下。
2、Mount the database.
命令為 startup mount,如果在nomount狀態下命令為: alter database mount
在這一步中主要工作有:
Associating a database with a previously started instance
Locating and opening the control files specified in the parameter file
Reading the control files to obtain the names and status of the data files and redo log files
在這一步,主要用到的文件是控制文件.然後讀控制文件,得到各個數據文件和聯機日誌文件的名字和狀態(online or offline) ,但是並不去檢查各個文件是否存在.所以如果你要修改數據文件的名字和重建聯機日誌文件等操作,就需要工作在mount狀態下.因為下一步要打開各個數據文件和聯機日誌文件,所以如果數據文件不存在,你就需要在mount狀態下,恢復文件,才能使下一步不報錯誤.
3、Open the database.
命令為 startup,如果在mount狀態下命令為: alter database open.
在這一步中主要工作有:
Opening the online data files
Opening the online redo log files
在這一步中,資料庫主要的工作是打開第2步中在控制文件中讀到的在線的聯機日誌文件和數據文件.如果數據文件和聯機日誌文件不存在,oracle就會報錯.oracle打開數據文件和日誌文件之後,會對數據文件和日誌文件進行一致性檢查,如果發現不一致,會啟動SMON進程進行實例恢復.

另外,在整個過程中密碼文件都是必須的,因為要驗證操作的用戶是否具有適當的許可權。這個只是從宏觀上來看oracle啟動的整個過程。

⑶ Oracle測試題

Oracle的體系結構是一個需要掌握的比較重要的概念,這個結構體系也比較復雜,我稍為總結了一下概念。

Oracle資料庫主要的物理存儲結構包括構成資料庫的各種物理文件,包括數據文件、控制項文件、重演日誌文件、歸檔重演日誌文件、參數文件、警告、跟蹤日誌文件和備份文件等。

數據文件:
每個Oracle資料庫都有一個或者多個物理數據文件(datafile),數據文件包含了所有的資料庫數據,資料庫的邏輯結構的數據(如表、索引等)都被物理地存儲在分給資料庫的數據文件中。

數據文件包含下列類型的數據:
表數據
索引數據
數據字典定義
回滾事務所需的信息
存儲過程、函數和數據包的代碼
用來排序的臨時數據

數據文件的特點:
一個數據文件只能與一個資料庫相關聯。
可以對數據文件設置一些特性,在資料庫空間用完的情況下可以自動擴展。
一個或多個數據文件構成了一個資料庫存儲的邏輯單元——表空間(table space)。
數據會匯集在內存里,由資料庫的書寫進程(DBWR)決定。(DBWO?)

select status,bytes,name from v$datafile;

控制文件:
資料庫控制文件(control file)是一個很小的二進制文件,它維護著資料庫的全局物理結構,用以支持資料庫成功地啟動和運行。創建資料庫時,同時就提供了與之對應的控制文件。
每一個控制文件只能與一個Oracle資料庫相關聯。
控制文件包含了資料庫實例在啟動和正常操作時,訪問資料庫所需的關於資料庫的信息。

控制文件包含以下的信息:
資料庫名稱
資料庫創建的時間戳
相關的數據文件、重演日誌文件的名稱和位置
表空間信息
數據文件離線范圍
日誌歷史
歸檔日誌信息
備份組和備份塊信息
備份數據文件和重演日誌信息
數據文件拷貝信息
當前日誌序列數
檢查點(checkpoint)信息

保護控制文件,必須注意的幾個方面:
每一個資料庫都要使用多路復制的控制文件
把每一個控制文件的復件保存在不同的物理磁碟上
使用操作系統的冗餘鏡像機制
監控備份

select name from v$controlfile;

重演日誌文件:
每一個Oracle資料庫都有一個由兩個或多個重演日誌文件(redo log file)構成的文件組,這組重演日誌文件合稱為資料庫的重演日誌。
一個重演日誌文件是由重做條目(redo entry,也叫重做記錄)組成的。
重演日誌的主要功能是記錄下所有數據的改變。
重演日誌文件中的信息可以用在資料庫從系統失敗或者介質失敗的恢復之中 。

select * from v$logfile;

歸檔重演日誌文件:
歸檔重演日誌文件(archive log file)就是對寫滿的重演日誌文件復制若保存生成的文件。可以通過設置資料庫在歸檔模式(ARCHIVELOG mode)下來自動地保存日誌文件。歸檔進程(ARCO)在後台負責把寫滿的重演日誌文件復制到歸檔日誌目標中。歸檔日誌文件在資料庫恢復時起決定性作用。

Select * From v$archived_log

參數文件:
參數文件(parameter file)包含了一組關於資料庫和實例的配置參數。Oracle推薦用戶使用一個伺服器參數文件(SPFILE)作為維護初始化參數的動態手段。一個伺服器參數文件允許用戶在一個伺服器端的磁碟文件里持久地保存和管理初始化參數。

警告、跟蹤日誌文件:
每一個伺服器和後台進程都可以寫入一個相關的跟蹤文件(trace file)。當一個進程發現了一個內部錯誤的時候,它把關於錯誤的信息轉儲到它的跟蹤文件里。寫入到跟蹤文件的一部分信息是給資料庫管理員使用的,而其他信息是給Oracle支持服務的。跟蹤文件信息還可以用於調整應用程序和實例。
警告文件(alert file)是一種特殊的跟蹤文件,一個資料庫的警告文件就是包括按時間排序的消息和錯誤的記錄。

備份文件:
用戶管理的備份和恢復實際上就是要求用戶在試圖恢復備份的時候先還原備份文件。伺服器管理的備份和恢復管理了備份過程,例如,調度備份及恢復過程就是在需要恢復的時候施加正確的備份文件。

⑷ oracle資料庫判斷題

oracle系統中SGA所有用戶進程和伺服器進程所共享(錯)。
oracle資料庫系統中數據塊的大小與操作系統有關(對)。
oracle資料庫系統中,啟動資料庫和第一步是啟動一個資料庫實例(對)。 啟動資料庫實例、掛載資料庫
資料庫概念模型主要用於資料庫概念結構設計()。
SGA 是針對某一伺服器進程而保留的內存區域,它是不可以共享的。(對)
用戶進程可以直接操縱資料庫。(*) --oracle有自己的進程的
Order by 子句僅對檢索數據的顯示有影響,並不改變表中行的內部順序。(對)
從一個表中刪除元組時, delete 和 drop table 命令可以起到同樣的效果。(錯) 元組其實就是行,delete可以,drop的可以刪除表對象
隱式指針與顯式指針的不同在於顯式指針僅僅訪問一行,隱式的可以訪問多行。(錯) 游標的話分為顯示和隱式的,你可以看這個鏈接
(http://heisetoufa.javaeye.com/blog/366483)
與主鍵不同,惟一鍵可以是 null 值。(錯) 主鍵是非空的
Delete 可以有選擇地刪除記錄,使用 rollback 語句可以取消這個命令的執行。(對) delete之後沒有commit的時候是可以rollback的
Create table <table name> as select 能夠創建一個復製表對象。(對)
使用 having 子句是為了限制 group by 子句返回的行的個數。() 拿不準 having的作用見鏈接(http://..com/question/130503528.html?fr=ala0)

⑸ oracle資料庫的題目,求答案。。。。

答案如下,正確為T,錯誤為F
1、 oracle資料庫系統中, 啟動資料庫的第一步是啟動一個資料庫實例。 ( T ) 2、Oracle伺服器端的監聽程序是駐留在伺服器上的單獨進程,專門負責響應客 戶機的連接請求。( F) 3、 oracle資料庫中實例和資料庫是一一對應的 (非ORACLE並行服務, 非集群) 。 ( T) 4、系統全局區SGA 是針對某一伺服器進程而保留的內存區域,它是不可以共享 的。( F ) 5、資料庫字典視圖ALL_***視圖只包含當前用戶擁有的資料庫對象信息。 ( F ) 8、數據字典中的內容都被保存在SYSTEM表空間中。( T ) 9、HAVING後面的條件中可以有聚集函數,比如SUM(),AVG()等, WHERE 後面的 條件中也可以有聚集函數。( F ) 10、"上海西北京" 可以通過like 『%上海_』查出來。( F

11、 表空間是oracle 最大的邏輯組成部分。Oracle資料庫由一個或多個表空間 組成。 一個表空間由一個或多個數據文件組成,但一個數據文件只能屬於一個表 空間。( T ) 12、表空間分為永久表空間和臨時表空間兩種類型。( T ) 13、truncate是DDL操作,不能 rollback。( T ) 14、 如果需要向表中插入一批已經存在的數據, 可以在INSERT語句中使用WHERE 語句。( F ) 15、Oracle資料庫中字元串和日期必須使用雙引號標識。( F ) 16、Oracle資料庫中字元串數據是區分大小寫的。( T )
17、Oracle資料庫中可以對約束進行禁用,禁用約束可以在執行一些特殊操作 時候保證操作能正常進行。( F )
18、為了節省存儲空間,定義表時應該將可能包含NULL值的欄位放在欄位列表 的末尾。( T ) 20、在連接操作中,如果左表和右表中不滿足連接條件的數據都出現在結果中, 那麼這種連接是全外連接。( T ) 21、自然連接是根據兩個表中同名的列而進行連接的,當列不同名時,自然連接 將失去意義。( T ) 23、PL/SQL代碼塊聲明區可有可無。( T ) 24、 隱式游標與顯式游標的不同在於顯式游標僅僅訪問一行, 隱式的可以訪問多
行。( F )
25、隱式游標由PL/SQL維護,當執行查詢時自動打開和關閉。( T ) 26、顯式游標在程序中顯式定義、打開、關閉,游標有一個名字。( T )
27、隱式游標的游標屬性前綴是SQL。( T ) 28、顯式游標的游標屬性的前綴是游標名。( T ) 29、隱式游標的屬性%ISOPEN總是為FALSE。(
T ) 30、顯式游標的%ISOPEN根據游標的狀態確定值(
F )
31、隱式游標的SELECT語句帶有INTO子串,只有一行數據被處理。( T ) 32、 顯式游標可以處理多行數據, 在程序中設置循環, 取出每一行數據。 ( T

34、可以在PL/SQL中使用GOTO語句使運行流程進行跳轉。( F )
35、因為存儲過程不返回值,使用時只能單獨調用;而函數卻能出現在能放置表 達式的任何位置。( Y )

查看頁面:http://wenku..com/view/d64574cd8bd63186bcebbc8c.html

⑹ 關於Oracle資料庫編程題的解答。謝謝各位!

1、查詢姓「李」的老師的個數;
SELECT COUNT(Tno) FROM Teacher WHERE Tname LIKE '李%'

2、查詢學過「c001」並且也學過編號「c002」課程的同學的學號、姓名;

SELECT Sno, Sname
FROM Student
WHERE sno IN(SELECT sno
FROM (SELECT Sno FROM SC WHERE Cno = 'c001') t1
(SELECT Sno FROM SC WHERE Cno = 'c002') t2
WHERE t1.sno = t2.sno)

3、查詢學過「葉平」老師所教的所有課的同學的學號、姓名;
SELECT Sno, Sname
FROM student
WHERE Sno IN(SELECT SC
FROM SC
WHERE CNO IN (SELECT CNO FROM Course WHERE Cname = '葉平')
GROUP BY SC HAVING COUNT(CNO) = (SELECT COUNT(CNO) FROM Course WHERE Cname = '葉平'))

4、查詢「c001」課程比「c002」課程成績高的所有學生的學號

SELECT C1.SC
FROM (SELECT SC, Score FROM SC WHERE Cno = 'c001') c1
(SELECT SC, Score FROM SC WHERE Cno = 'c002') c2
WHERE c1.SC = c2.SC
AND c1.Score > c2.Score
如果只有C1,而沒有C2成績,用這個好一點
SELECT SC
FROM (SELECT SC, Score FROM SC WHERE Cno = 'c001') c1
left join (SELECT SC, Score FROM SC WHERE Cno = 'c002') c2
ON c1.SC = c2.SC AND c1.Score > c2.Score

5、查詢平均成績大於60分的同學的學號和平均成績;
SELECT Sno, AVG(score)
FROM SC GROUP BY Sno Having AVG(score) > 60

6、查詢所有同學的學號、姓名、選課數、總成績;
SELECT stu.Sno, stu.Sname, COUNT(Cno), SUM(score)
FROM Student stu, SC
WHERE stu.Sno = Sc.sno
GROUP BY stu.sno, stu.Sname

7、查詢沒有學全所有課的同學的學號、姓名;
SELECT Sno, Sname
FROM SC
WHERE Sno NOT IN (SELECT Sno
FROM SC
GROUP BY SC
HAVING COUNT(CNO) < (SELECT COUNT(DISTINCT CNO) FROM SC))