一、 數據庫
1、 Oracle數據庫,視圖與表的區別?普通視圖與物化視圖的區別?物化視圖的作用?materialized view
答:a:視圖是虛擬表,提高了表的安全性,視圖沒有實際物理空間,而表有實際存儲的物理空間
b:物化視圖存儲了實實在在的數據,而普通視圖之存儲了定義
c:物化視圖的優點像索引一樣,提高查詢性能。當基表發生變化時,物化視圖也應當刷新。
物化視圖是數據庫中的一種存儲數據的對象,和表一樣,存儲了數據。用於預先計算並保存表連接或者聚集等耗時較多的操作。這樣,在執行查詢的時候,就可以避開連接、聚集等耗時的操作,從而快速的得到結果。它可以查詢表,視圖甚至是其他物化視圖中的數據。和視圖不同的是,它存儲了實實在在的數據,而視圖只是存儲了定義而已,所以,也是可以在物化視圖上創建索引的。物化視圖在很多方面,和索引很相似:使用它的主要目的是為了提高查詢性能;物化視圖對應用是透明的,增加或者刪除物化視圖不會影響應用程序中查詢語句的正確性和有效性;物化視圖會占用存儲空間;當基表發生變化時,物化視圖也應當刷新。通常情況下,物化視圖被稱為主表(在復制期間)或者明細表(在數據倉庫中)。
2、 Oracle數據庫,有哪幾類索引,分別有什么特點?
答:三類索引
a:B樹索引
b:文本索引
c:位圖索引
3、 Union與Union All的區別?
Union 會去掉重復,效率比 union all 低
4、 對游標的理解?游標的分類?使用方法?
顯示游標:自己打開關閉
隱式游標:自動打開關閉
5、 如何查找和刪除表中的重復數據?給出方法或SQL。
查找表中重復數據
select ID1,email from email e1
where rowid < (select max(rowid) from email e2 where e1.email = e2.email AND e1.id1 = e2.id1);
刪除表中重復數據
delete ID1,email from email e1
where rowid < (select max(rowid) from email e2 where e1.email = e2.email AND e1.id1 = e2.id1);
select ID1,email from email e1
where rowid > (select min(rowid) from email e2 where e1.email = e2.email AND e1.id1 = e2.id1);
6、 不借助第三方工具,怎么查看SQL的執行計划?
Set autotrace on EXPLAIN PLAN FOR
7、 創建索引有哪些需要注意的要點?
根據每個索引的特點說出建立時應注意的問題。
8、 Oracle數據庫中,有哪幾種分區?各自特點是什么?作用是什么?分區索引的分類和作用?
范圍分區:根據某個值的范圍
Hash分區:散列分區,是數據均勻分布
復合分區:先范圍分區再Hash分區
增強可用性:如果表的某個分區出現故障,表在其他分區的數據仍然可用;
維護方便:如果表的某個分區出現故障,需要修復數據,只修復該分區即可;
均衡I/O:能把不同的分區映射到磁盤以平衡I/O,改善整個系統性能;
改善查詢性能:對分區對象的查詢能僅搜索自己關心的分區,提高檢索速度。
9、 表T(a,b,c,d),要根據字段c排序后取第21—30條記錄顯示,請給出sql。
select * from email where rownum <=30
minus
select * from email where rownum <=20
order by 2 //代表第二列
10、 備份如何分類?歸檔是什么含義?
1: 邏輯備份:exp/imp
物理備份:
RMAN備份
full backup/incremental backup(累積/差異)
熱備份:alter tablespace begin/end backup;
冷備份:脫機備份(database shutdown)
關於歸檔日志:Oracle要將填滿的在線日志文件組歸檔時,則要建立歸檔日志(archived redo log)。
其對數據庫備份和恢復有下列用處:
數據庫后備以及在線和歸檔日志文件,在操作系統和磁盤故障中可保證全部提交的事物可被恢復。
在數據庫打開和正常系統使用下,如果歸檔日志是永久保存,在線后備可以進行和使用。
數據庫可運行在兩種不同方式下:
NOARCHIVELOG方式或ARCHIVELOG 方式數據庫在NOARCHIVELOG方式下使用時,不能進行在線日志的歸檔,如果數據庫在ARCHIVELOG方式下運行,可實施在線日志的歸檔。
11、 如果系統現在需要在一個很大的表上創建一個索引,需要考慮那些因素,如何做到盡量減小對應用的影響?
12、 是否有海量數據處理經驗?有何方法?