天天看點

Oracle 面試 筆試題

http://lihui315246.blog.163.com/blog/static/30844202007427913768/

選擇題(20分,每小題2分):

1.資料庫系統的核心是_B___。

A.資料庫           B.資料庫管理系統

C.資料模型         D.軟體工具

2.SQL語言具有__B__的功能。

A.關系規範化、資料操縱、資料控制

B.資料定義、資料操縱、資料控制

C.資料定義、關系規範化、資料控制

D.資料定義、關系規範化、資料操縱

3.SQL語言的資料操縱語句包括 SELECT,INSERT,UPDATE和 DELETE,

最重要的,也是使用最頻繁的語句是__A__。

A.SELECT       B.INSERT       C.UPDATE       D.DELETE

4.在關系資料庫設計中,設計關系模式是__C__的任務。

   A.需求分析階段 B.概念設計階段 C.邏輯設計階段 D.實體設計階段

5.__C__是DBMS的基本機關,它是使用者定義的一組邏輯一緻的程式序列。

   A.程式   B.指令   C.事務   D.檔案

6.在資料庫中,産生資料不一緻的根本原因是__D__。????

A.資料存儲量太大

B.沒有嚴格保護資料

C.未對資料進行完整性控制

D.資料備援

7.下列SQL語句中,建立關系表的是__B__。

A.ALTER             B.CREATE

C.UPDATE            D.INSERT

8.資料庫的__B__是為了保證由授權使用者對資料庫所做的修改不會影響資料一緻性的損失。

A.安全性   B.完整性   C.并發控制   D.恢複 

9.事務是資料庫進行的基本工作機關。如果一個事務執行成功,則全部更新送出;如果一個事務執行失敗,則已做過的更新被恢複原狀,好像整個事務從未有過這些更新,這樣保持了資料庫處于_____B___狀态。

  A.安全性   B.一緻性   C.完整性   D.可靠性 

10.對并發操作若不加以控制,可能會帶來資料的___D_問題。

   A.不安全   B.死鎖   C.當機   D.不一緻

二、填空題(12分,4小題)

1.資料備援可能導緻的問題有____________________和_____________________。

答案:①浪費存儲空間及修改麻煩     ②潛在的資料不一緻性

2.資料庫在運作過程中可能産生的故障有____________、_______________、___________。

答案:①Transaction failure ②System crash ③Disk failure

3.視圖是一個虛表,它是從_________中導出的表。在資料庫中,隻存放視圖的________,不存放視圖的_____________。

答案:一個或幾個基本表、定義、視圖對應的資料

4.關系操作的特點是____________操作。

答案:集合

三、簡答題(共48分,每小題6分):

1、  如何建立表、修改表、删除表?

        Create table 表名

          Alter table 表名

          Drop table 表名

2、  存儲過程的優點是什麼?

存儲過程的優點:

               1.提高性能

               2.減輕網絡擁塞

               3.一緻性較好

               4.改善安全機制

3、  什麼是觸發器?觸發器有哪幾種?觸發器有什麼優點?

一個觸發器是由T-SQL語句集組成的代碼塊,在響應某些動作時激活該語句集

       有insert,delete,update觸發器

       它防止了對資料的不正确、未授權的和不一緻的改變

4、  常見的幾種限制有哪些?分别代表什麼意思?如何使用?

主鍵限制,外鍵限制,檢查限制,唯一限制,預設限制

        限制:在Create table或alter table時加限制

        (1)主鍵:PRIMARY KEY (主鍵字段) 保證了實體完整性,一個表隻有一個主鍵,但一個主鍵可有包     含多個字段,主鍵字段不能為空

           (2)唯一:UNIQUE (限制字段) 保證了實體完整性,一個表隻有多個唯一限制,一個唯一限制可有包含多個字段

           (3)外鍵:FOREIGN KEY (外鍵字段) REFERENCES 主鍵表(主鍵字段) 保證了引用完整性,一個表可以有多個外鍵

       (4)檢查:CHECK(檢查表達式) 保證了域完整性, 一個表中可以有多個檢查性限制

     (5)預設值:DEFAULT (預設值的表達式或NULL) for 字段名 保證了域完整性,一個表可以有多個預設值限制,但是一個字段隻有一個                  預設值

5、什麼是資料庫的安全性?(5分)

資料庫的安全性是指保護資料庫以防止不合法的使用所造成的資料洩露、更改或破壞。

6、簡要說明事務的原子性。(5分)

事務的所有操作必須完成,否則事務将被撤消。也就是說,事務是作為一個整體的機關處理,不可以被分割

7、事務中的送出和復原是什麼意思?(5分)

事務中的送出(COMMIT)是送出事務的所有操作。具體說就是将事務中所有對資料庫的更新寫回到磁盤上的實體資料庫中去,事務正常結束。

事務中的復原(ROLLBACK)是資料庫滾回到事務開始時的狀态。具體地說就是,在事務運作的過程中發生了某種故障,事務不能繼續執行,系統将事務中對資料庫的所有已完成的更新操作全部撤消,使資料庫復原到事務開始時的狀态。 

8、什麼是資料庫的資料獨立性?(5分)

資料獨立性表示應用程式與資料庫中存儲的資料不存在依賴關系,包括邏輯資料獨立性和實體資料獨立性。

邏輯資料獨立性是指局部邏輯資料結構(外視圖即使用者的邏輯檔案)與全局邏輯資料結構(概念視圖)之間的獨立性。當資料庫的全局邏輯資料結構(概念視圖)發生變化(資料定義的修改、資料之間聯系的變更或增加新的資料類型等)時,它不影響某些局部的邏輯結構的性質,應用程式不必修改。

實體資料獨立性是指資料的存儲結構與存取方法(内視圖)改變時,對資料庫的全局邏輯結構(概念視圖)和應用程式不必作修改的一種特性,也就是說,資料庫資料的存儲結構與存取方法獨立。

資料獨立性的好處是,資料的實體儲存設備更新了,實體表示及存取方法改變了,但資料的邏輯模式可以不改變。資料的邏輯模式改變了,但使用者的模式可以不改變,是以應用程式也可以不變。這将使程式維護容易,另外,對同一資料庫的邏輯模式,可以建立不同的使用者模式,進而提高資料共享性,使資料庫系統有較好的可擴充性,給 DBA維護、改變資料庫的實體存儲提供了友善。

四、設計題(本大題共2小題,每小題10分,共20分)

1、假定一個部門的資料庫包括以下的資訊:  (10分)

職工的資訊:職工号、姓名、住址和所在部門。

部門的資訊:部門所有職工、經理和銷售的産品。

産品的資訊:産品名、制造商、價格、型号及産品内部編号。

制造商的資訊:制造商名稱、位址、生産的産品名和價格。

完成如下設計:

設計該計算機管理系統的E-R圖;

2、學生表:Student 學生表 (學号,姓名,性别,年齡,組織部門)

           Course 課程表 (編号,課程名稱)

               Sc 選課表 (學号,課程編号,成績)

表結構如下:

(1).寫一個SQL語句,查詢選修了’計算機原理’的學生學号和姓名

(2).寫一個SQL語句,查詢’周星馳’同學選修了的課程名字

(3).寫一個SQL語句,查詢選修了5門課程的學生學号和姓名

       select sno,sname

              from student

              where sno in (

                            select sno

                            from sc

                            where cno = (

                                          select cno

                                          from course

                                          where cname='計算機原理'

                                           )

                             )

       (2)

              select cname

              from course

              where cno in (

                            select cno

                           from sc

                            where sno =

                                   (

                                       select sno

                                      from student

                                       where sname='周星馳'

                          )

                                   )

(3)

              select sno,sname

             From student

             Where sno in (

                            select sno

                            from sc

                            group by sno having count(sno)=5

                )

1)      which statement shows the maximum salary paid in each job category of each department?_______

a. select dept_id, job_cat,max(salary) from employees where salary > max(salary);

b. select dept_id, job_cat,max(salary) from employees group by dept_id,job_cat;

c. select dept_id, job_cat,max(salary) from employees;

d. select dept_id, job_cat,max(salary) from employees group by dept_id;

e. select dept_id, job_cat,max(salary) from employees group by dept_id,job_cat,salary;

2)description of the students table:

sid_id number

start_date date

end_date date

which two function are valid on the start_date column?_________。

a. sum(start_date)

b. avg(start_date)

c. count(start_date)

d. avg(start_date,end_date)

e. min(start_date)

f. maximum(start_date)

3)for which two constraints does the oracle server implicitly create a unique index?______。

a. not null

b. primary

c. foreign key

d. check

e. unique

4)in a select statement that includes a where clause,where is the group by clause placed in the select statement?______。

a. immediately after the select clause

b. before the where clause

c. before the from clause

d. after the order by clause

e. after the where clause

5)in a select statement that includes a where clause,where is the order by clause placed in the select statement?______.

a.immediately after the select clause

b.before the where clause

c.after all clause

d.after the where clause

e.before the from clause

6)evaluate there two sql statements______.

select last_name,salary from employees order by salary;

select last_name,salary from employees order by 2 asc;

a.the same result b.different result c.the second statement returns a syntax error

7) you would like to display the system date in the format“20051110 14:44:17”。which select statement should you use?______。

a. select to_date(sydate,’yearmmdd hh:mm:ss’)from dual;

b. select to_char(sydate,’yearmonthday hh:mi:ss’)from dual;

c. select to_date(sydate,’yyyymmdd hh24:mi:ss’)from dual;

d. select to_char(sydate,’yyyymmdd hh24:mi:ss’)from dual;

e. select to_char(sydate,’yy-mm-dd hh24:mi:ss’)from dual;

8)which select statement will the result ‘ello world’from the string‘hello world’?______.

a. select substr(‘hello world’,1)from dual;

b. select substr(trim(‘hello world’,1,1))from dual;

c. select lower(substr(‘hello world’,1))from dual;

d. select lower(trim(‘h’from‘hello world’))from dual;

9)which are dml statements(choose all that apply)______.

a.commit b.merge c.update d.delete e.creat f.drop

10)select 語句中用來連接配接字元串的符号是______.

a. “+” b. “&” c.“||” d.“|”

問答題: 什麼是聚集索引,什麼是非聚集索引,什麼又是主鍵?

1 B. select dept_id, job_cat,max(salary) from employees group by dept_id,job_cat;

2 C.count(start_date) ,E.min(start_date)

3 B. primary ,E. unique

4 E. after the where clause

5 C.after all clause

6 A.the same result 

7 D. select to_char(sydate,’yyyymmdd hh24:mi:ss’)from dual;

8 D. select lower(trim(‘H’from‘Hello World’))from dual;

9 不詳,猜測B,( E.creat F.drop 都是DDL)

10 C.“||”

問答題: 什麼是聚集索引,什麼是非聚集索引,什麼又是主鍵?

 表中經常有一個列或列的組合,其值能唯一地辨別表中的每一行。這樣的一列或多列稱為表的主鍵.

 聚集索引确定表中資料的實體順序。聚集索引類似于電話簿,後者按姓氏排列資料。由于聚集索引規定資料在表中的實體存儲順序,

 是以一個表隻能包含一個聚集索引。但該索引可以包含多個列(組合索引),就像電話簿按姓氏和名字進行組織一樣。

 非聚集索引與課本中的索引類似。資料存儲在一個地方,索引存儲在另一個地方,索引帶有指針指向資料的存儲位置。

 索引中的項目按索引鍵值的順序存儲,而表中的資訊按另一種順序存儲(這可以由聚集索引規定)。

 如果在表中未建立聚集索引,則無法保證這些行具有任何特定的順序。

這裡的回答并不是十分全面,這些問題可以通過多個角度來進行解釋,也許你不必在面試過程中給出完全詳盡的答案,隻需要通過你的解答使面試考官了解你對oracle概念的熟悉程度。

1. 解釋冷備份和熱備份的不同點以及各自的優點

解答:熱備份針對歸檔模式的資料庫,在資料庫仍舊處于工作狀态時進行備份。而冷備份指在資料庫關閉後,進行備份,适用于所有模式的資料庫。熱備份的優點在于當備份時,資料庫仍舊可以被使用并且可以将資料庫恢複到任意一個時間點。冷備份的優點在于它的備份和恢複操作相當簡單,并且由于冷備份的資料庫可以工作在非歸檔模式下,資料庫性能會比歸檔模式稍好。(因為不必将archive log寫入硬碟)

2. 你必須利用備份恢複資料庫,但是你沒有控制檔案,該如何解決問題呢?

解答:重建控制檔案,用帶backup control file 子句的recover 指令恢複資料庫。

3. 如何轉換init.ora到spfile?解答:使用create spfile from pfile 指令。

4. 解釋data block , extent 和 segment的差別(這裡建議用英文術語)

解答:data block是資料庫中最小的邏輯存儲單元。當資料庫的對象需要更多的實體存儲空間時,連續的data block就組成了extent . 一個資料庫對象擁有的所有extents被稱為該對象的segment.

5. 給出兩個檢查表結構的方法

解答:1.describe指令

2.dbms_metadata.get_ddl 包

6. 怎樣檢視資料庫引擎的報錯

解答:alert log.

7. 比較truncate和delete 指令

解答:兩者都可以用來删除表中所有的記錄。差別在于:truncate是ddl操作,它移動hwk,不需要 rollback segment .而delete是dml操作, 需要rollback segment 且花費較長時間。

8. 使用索引的理由

解答:快速通路表中的data block

9. 給出在star schema中的兩種表及它們分别含有的資料

解答:fact tables 和dimension tables. fact table 包含大量的主要的資訊而 dimension tables 存放對fact table 某些屬性描述的資訊

10. fact table上需要建立何種索引?

解答:位圖索引(bitmap index)

11. 給出兩種相關限制?

解答:主鍵和外鍵

12. 如何在不影響子表的前提下,重建一個母表

解答:子表的外鍵強制實效,重建母表,激活外鍵

13. 解釋歸檔和非歸檔模式之間的不同和它們各自的優缺點

解答:歸檔模式是指你可以備份所有的資料庫 transactions并恢複到任意一個時間點。非歸檔模式則相反,不能恢複到任意一個時間點。但是非歸檔模式可以帶來資料庫性能上的少許提高。

14. 如何建立一個備份控制檔案?

解答:alter database backup control file to trace.

15. 給出資料庫正常啟動所經曆的幾種狀态 ?

解答:startup nomount 資料庫執行個體啟動 

startup mount 資料庫裝載 

startup open 資料庫打開

16. 哪個column可以用來差別v$視圖和gv$視圖?

解答: inst_id 指明叢集環境中具體的某個instance .

17. 如何生成explain plan?

解答:運作utlxplan.sql. 建立plan 表

針對特定sql語句,使用 explain plan set statement_id = ’tst1’ into plan_table

運作utlxplp.sql 或 utlxpls.sql察看explain plan

18. 如何增加buffer cache的命中率?

解答:在資料庫較繁忙時,适用buffer cache advisory 工具,查詢v$db_cache_advice . 如果有必要更改,可以使用 alter system set db_cache_size 指令

19. ora-01555的應對方法?

解答:具體的出錯資訊是snapshot too old within rollback seg , 通常可以通過增大rollback seg來解決問題。當然也需要察看一下具體造成錯誤的sql文本

20. 解釋$oracle_home和$oracle_base的差別?

解答:oracle_base是oracle的根目錄,oracle_home是oracle産品的目錄。