一、基本概念類
1、數據庫正常啟動所經歷狀態
startup nomount :數據庫實例啟動
startup mount :數據庫裝載
startup open :數據庫打開
shutdown immediate;關閉數據庫
2、簡述table segment extent block之間的關系
大小關系:table>segment>extent>block
3、描述tablespace和datafile之間的關系
tablespace和datafile是一對多的關系,
tablespace是邏輯上的概念,datafile則在物理上儲存了數據庫的種種對象。
4、AMM和ASMM有什么特點
自動內存管理(AMM): memory_target=非0,是自動內存管理 ,如果初始化參數 LOCK_SGA = true ,則 AMM 是不可用的。
自動共享內存管理(ASMM): 在memory_target=0 and sga_target=非0 是自動內存管理
5、回滾段的作用是什么
事務回滾:當事務修改表中數據的時候,該數據修改前的值會存放在回滾段中,當用戶回滾事務時,Oracle將會利用回滾段中的數據來將修改的數據恢復到原來的值。
事務恢復:當事務正在處理的時候,例程失敗,回滾段的信息保存在undo表空間中,Oracle將在下次打開數據庫時利用回滾來恢復未提交的數據。
讀一致性:當一個會話正在修改數據時,其他的會話將看不到該會話未提交的修改。當一個語句正在執行時,該語句將看不到從該語句開始執行后的未提交的修改(語句級讀一致性)。
6、日志的作用是什么
記錄數據庫事務,最大限度地保證數據的一致性與安全性
redo log:含對數據庫所做的更改記錄,這樣萬一出現故障可以啟用數據恢復,一個數據庫至少需要兩個重做日志文件
archive log:是重做日志文件的脫機副本,這些副本可能對於從介質失敗中進行恢復很必要。
7、SGA主要有那些部分,主要作用是什么
SGA:
db_cache
shared_pool
large_pool
java_pool
db_cache: 對於Oracle數據庫的運轉和性能起着非常關鍵的作用,它占據Oracle數據庫SGA(系統共享內存區)的主要部分。Oracle數據庫通過使用LRU算法,將最近訪問的數據塊存放到緩存中,從而優化對磁盤數據的訪問.
shared_pool:共享池的大小對於Oracle性能來說也是很重要的。共享池中保存數據字典高速緩沖和完全解析或編譯的的PL/SQL 塊和SQL 語句及控制結構
large_pool:使用MTS配置時,因為要在SGA中分配UGA來保持用戶的會話,就是用Large_pool來保持這個會話內存使用rman做備份的時候,要使用Large_pool這個內存結構來做磁盤I/O緩存器
java_pool: 為java procedure預備的內存區域,如果沒有使用java proc,java_pool不是必須的
8、Oracle系統進程主要有哪些,作用是什么?
數據寫進程(dbwr):負責將更改的數據從數據庫緩沖區高速緩存寫入數據文件
日志寫進程(lgwr):將重做日志緩沖區中的更改寫入在線重做日志文件
系統監控(smon) :檢查數據庫的一致性如有必要還會在數據庫打開時啟動數據庫的恢復
進程監控(pmon) :負責在一個Oracle 進程失敗時清理資源
檢查點進程(ckpt):負責在每當緩沖區高速緩存中的更改永久地記錄在數據庫中時,更新控制文件和數據文件中的數據庫狀態信息。
歸檔進程(arcn) :在每次日志切換時把已滿的日志組進行備份或歸檔
作業調度器(cjq) : 負責將調度與執行系統中已定義好的job,完成一些預定義的工作.
恢復進程(reco) : 保證分布式事務的一致性,在分布式事務中,要么同時commit,要么同時rollback;
二、SQL優化類
1、表連接方式
hash join:哈希連接
merge join:合並連接
nest loop:嵌套循環
2、通過sql語句查看sql的執行計划
select * from table(dbms_xplan.display_awr('sql_id'));
或者:
select * from table(dbms_xplan.display_cursor('sql_id',null,'advanced'));
3、CBO與RULE的區別
Rule Based Optimizer(RBO):基於規則
Cost Based Optimizer (CBO):基於成本
目前oracle默認是CBO模式
RBO遵循簡單的優先級別,使用15種級別要點,當接收到查詢,優化器將評估使用到的要點數目, 然后選擇最佳級別(最少的數量)的執行路徑來運行查詢。
CBO嘗試找到最低成本的訪問數據的方法,計算使用不同的執行計划的成本,並選擇成本最低的一個,關於表的數據內容的統計被用於確定執行計划。
4、SQL調整最關注的是什么
查看該 SQL 的 response time(db block gets/consistent gets/physical reads/sorts (disk))
5、對索引的認識(索引的結構、對dml影響、為什么提高查詢性能)
b-tree index:B樹索引,最常見的類型
bitmap index:位圖索引
function index:函數索引
patitional index(local/global):分區索引/全局索引
索引通常能提高select/update/delete的性能,會降低insert的速度
6、使用索引查詢一定能提高查詢的性能嗎?為什么
索引就是為了提高查詢性能而存在的, 但不是任何情況下都適用索引,比如索引會降低insert的速度
7、綁定變量是什么?綁定變量有什么優缺點?
綁定變量是相對文本變量來講的,所謂文本變量是指在SQL直接書寫查詢條件,這樣的SQL在不同條件下需要反復解析,綁定變量是指使用變量來代替直接書寫條件,查詢bind value在運行時傳遞,然后綁定執行。
優點是減少硬解析,降低CPU的爭用,節省shared_pool ;
缺點是不能使用sql優化起來比較困難
8、臨時表空間的作用是什么
臨時表空間主要作用就是完成系統中的排序
三、備份恢復類
1、冷備份和熱備份的不同點以及各自的優點
熱備份針對歸檔模式的數據庫,在數據庫仍舊處於工作狀態時進行備份。而冷備份指在數據庫關閉后,進行備份,適用於所有模式的數據庫。熱備份的優點在於當備份時,數據庫仍舊可以被使用並且可以將數據庫恢復到任意一個時間點。冷備份的優點在於它的備份和恢復操作相當簡單,並且由於冷備份的數據庫可以工作在非歸檔模式下,數據庫性能會比歸檔模式稍好。(因為不必將archive log寫入硬盤)
2、你必須利用備份恢復數據庫,但是沒有控制文件,如何解決?
重建控制文件,用帶backup control file 子句的recover 命令恢復數據庫。
3、備份有哪些方式
邏輯備份:exp/imp expdp/impdp
物理備份:
RMAN備份: full backup/incremental backup(累積/差異)
熱備份: alter tablespace begin/end backup;
冷備份: 脫機備份(database shutdown)
4、歸檔是什么含義
關於歸檔日志:Oracle要將填滿的在線日志文件組歸檔時,則要建立歸檔日志(archived redo log)。
其對數據庫備份和恢復有下列用處:數據庫后備以及在線和歸檔日志文件,在操作系統和磁盤故障中可保證全部提交的事物可被恢復。在數據庫打開和正常系統使用下,如果歸檔日志是永久保存,在線后備可以進行和使用。
數據庫可運行在兩種不同方式下:noarchivelog方式或archivelog方式. 數據庫在noarchivelog方式下使用時,不能進行在線日志的歸檔,如果數據庫在archivelog方式下運行,可實施在線日志的歸檔。
5、如果一個表在2020-01-26 10:30:00 被drop,在有完善的歸檔和備份的情況下,如何恢復?
測試環境使用
手工拷貝回所有備份的數據文件
startup mount;
sql alter database recover automatic until time '2020-01-26:10:30:00';
alter database open resetlogs;
6、rman有何特點?
RMAN(Recovery Manager)是DBA的一個重要工具,用於備份、還原和恢復oracle數據庫, RMAN 可以用來備份和恢復數據庫文件、歸檔日志、控制文件、系統參數文件,也可以用來執行完全或不完全的數據庫恢復。
具有如下特點:
功能類似物理備份,但比物理備份強大N倍;
可以壓縮空塊;
可以在塊水平上實現增量;
可以把備份的輸出打包成備份集,也可以按固定大小分割備份集;
備份與恢復的過程可以自動管理;
可以使用腳本(存在Recovery catalog 中)
可以做壞塊監測
7、standby的特點
備用數據庫(standby database):
oracle推出的一種高可用數據庫方案,在主節點與備用節點間通過日志同步來保證數據的同步,備用節點作為主節點的備份.可以實現快速切換與災難性恢復
三種數據保護模式分別是:
MAXIMIZE PROTECTION :最大數據保護與無數據分歧,LGWR將同時傳送到備用節點,在主節點事務確認之前,備用節點也必須完全收到日志數據。如果網絡不好,引起LGWR不能傳送數據,將引起嚴重的性能問題,導致主節點DOWN機。
MAXIMIZE AVAILABILITY :無數據丟失模式,允許數據分歧,允許異步傳送。正常情況下運行在最大保護模式,在主節點與備用節點的網絡斷開或連接不正常時,自動切換到最大性能模式,主節點的操作還是可以繼續的。在網絡不好的情況下有較大的性能影響。
MAXIMIZE PERFORMANCE:這種模式應當可以說是從8i繼承過來的備用服務器模式,異步傳送,無數據同步檢查,可能丟失數據,但是能獲得主節點的最大性能。在配置DATA GUARD的時候默認就是MAXIMIZE PERFORMANCE
8、對於一個要求恢復時間比較短的系統(數據庫50G,每天歸檔5G),你如何設計備份策略
rman/
每月一號 level 0
每周末/周三 level 1
其它每天level 2
四、系統管理類
1、對於一個存在系統性能的系統,說出你的診斷處理思路
收集系統相關信息
查看AWR報告了解系統大致情況/確定是否存在參數設置不合適的地方
查看top 10 event/查看top sql等
查v$system_event/v$session_event/v$session_wait
從v$system_event開始,確定需要什么資源(db file sequential read)等
深入研究v$session_event,確定等待事件涉及的會話
從v$session_wait確定詳細的資源爭用情況(p1-p3的值:file_id/block_id/blocks等)
通過v$sql/v$sqltext/v$sqlarea表確定disk_reads、(buffer_gets/executions)值較大的SQL
2、列舉幾種診斷IO、CPU、性能狀況的方法
top/vmstat
AWR/ADDM
查v$system_event/v$session_event/v$session_wait
查v$sqlarea(disk_reads或buffer_gets/executions較大的SQL)
3、對awr有何認識
使用幾個表來存儲采集的統計數據,所有的表都存儲在新的名稱為 SYSAUX 的特定表空間中的 SYS 模式下,並且以 WRM$_* 和 WRH$_* 的格式命名。前一種類型存儲元數據信息(如檢查的數據庫和采集的快照),后一種類型保存實際采集的統計數據。H 代表“歷史數據 (historical)”而 M 代表“元數據 (metadata)”。
在這些表上構建了幾種帶前綴 DBA_HIST_ 的視圖,這些視圖可以用來編寫您自己的性能診斷工具。視圖的名稱直接與表相關;例如,視圖DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上構建的。
4、如果系統現在需要在一個很大的表上創建一個索引,你會考慮那些因素,如何做以盡量減小對應用的影響
在系統比較空閑時;
大的sort_ared_size或pga_aggregate_target較大
5、對raid1+0 和raid5有何認識
RAID 10(或稱RAID 1+0)與RAID 0+1不同,它是用硬盤驅動器先組成RAID 1陣列,然后在RAID 1陣列之間再組成RAID 0陣列。RAID 10模式同RAID 0+1模式一樣具有良好的數據傳輸性能,但卻比RAID 0+1具有更高的可靠性。RAID 10陣列的實際容量為M×n/2,磁盤利用率為50%。RAID 10也需要至少4個硬盤驅動器構成,因而價格昂貴。
RAID 10的可靠性同RAID 1一樣,但由於RAID 10硬盤驅動器之間有數據分割,因而數據傳輸性能優良。RAID 5與RAID 3很相似,不同之處在於RAID 5的奇偶校驗信息也同數據一樣被分割保存到所有的硬盤驅動器,而不是寫入一個指定的硬盤驅動器,從而消除了單個奇偶校驗硬盤驅動器的瓶頸問題。RAID 5磁盤陣列的性能比RAID 3有所提高,但仍然需要至少3塊硬盤驅動器。其實際容量為M×(n-1),磁盤利用率為(n-1)/n 。
五、開放類
1、你最擅長的是oracle哪部分?
2、隨意說說你覺得oracle最有意思的部分或者最困難的部分
3、你的夢想是什么?
---原文:https://www.modb.pro/db/42335?xzs=