Oracle 面試題(一)

2021-07-31 10:55:24 字數 3216 閱讀 6946

原文:

相等連線(內連線)、非等連線、自連線、外連線(左、右、全)

or hash join/merge join/nest loop(cluster join)/index join

相等連線: select * from a, b where a.id = b.id; 這個就屬於內連線。

對於外連線:

oracle

中可以使用「(+) 」來表示,9i可以使用left/right/full outer join

left outer join

:左外關聯

select e.last_name, e.department_id, d.department_name

from employees e

left outer join departments d

on (e.department_id = d.department_id);

等價於select e.last_name, e.department_id, d.department_name

from employees e, departments d

where e.department_id=d.department_id(+)

結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄。

right outer join

:右外關聯

select e.last_name, e.department_id, d.department_name

from employees e

right outer join departments d

on (e.department_id = d.department_id);

等價於select e.last_name, e.department_id, d.department_name

from employees e, departments d

where e.department_id(+)=d.department_id

結果為:所有員工及對應部門的記錄,包括沒有任何員工的部門記錄。

full outer join

:全外關聯

select e.last_name, e.department_id, d.department_name

from employees e

full outer join departments d

on (e.department_id = d.department_id);

結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄和沒有任何員工的部門記錄。

如果plan_table表不存在,執行$oracle_home/rdbms/admin/utlxplan.sql建立plan_table表。

如果plustrace角色不存在,執行$oracle_home/sqlplus/admin/plustrce.sql

1.sqlplus / as sysdba

set autotrace on;

執行sql 

3. 如何使用cbo,cbo與rule的區別

if初始化引數 optimizer_mode = choose then

--(8i default)

if做過錶分析

then

優化器 optimizer=cbo(cost);

else

優化器 optimizer=rbo(rule);

end if;

end if;

區別: rbo

根據規則選擇最佳執行路徑來執行查詢。

cbo根據表統計找到最低成本的訪問資料的方法確定執行計畫。

使用cbo需要注意:

i)需要經常對錶進行analyze命令進行分析統計;

ii)需要穩定執行計畫;

iii)

需要使用提示(hint);

使用rule需要注意:

i)選擇最有效率的表名順序

ii)優化sql的寫法;

在optimizer_mode=choose時,如果表有統計資訊(分割槽表外),優化器將選擇cbo,否則選rbo。

rbo遵循簡單的分級方法學,使用15種級別要點,當接收到查詢,優化器將評估使用到的要點數目,然後選擇最佳級別(最少的數量)的執行路徑來執行查詢。

cbo嘗試找到最低成本的訪問資料的方法,為了最大的吞吐量或最快的初始響應時間,計算使用不同的執行計畫的成本,並選擇成本最低的乙個,關於表的資料內容的統計被用於確定執行計畫。

使用cpu多的使用者session

select a.sid, spid, status, substr (a.program, 1, 40) prog, a.terminal,a.sql_id, osuser, value / 60 / 100 value

from v$session a, v$process b, v$sesstat c

where c.statistic# = 12 and c.sid = a.sid and a.paddr = b.addr

order by value desc;

select sql_text from v$sql 

where disk_reads > 1000 or (executions > 0 and buffer_gets/executions > 30000);

利用trace 跟蹤

alter session set sqltrace on;

column sql format a200;

select

machine, sql_text sql

from v$sqltext a, v$session b

where address = sql_address

and machine = '&a'

order by hash_value, piece;

exec dbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace); 

select sid,serial# from v$session where sid = (select sid from v$mystat where rownum = 1); 

exec dbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,'');

面試題(十)Oracle

oracle面試問題 技術篇 1.解釋冷備份和熱備份的不同點以及各自的優點 解答 熱備份針對歸檔模式的資料庫,在資料庫仍舊處於工作狀態時進行備份。而冷備份指在資料庫關閉後,進行備份,適用於所有模式的資料庫。熱備份的優點在於當備份時,資料庫仍舊可以被使用並且可以將資料庫恢復到任意乙個時間點。冷備份的優...

Oracle 常用面試題

1.解釋冷備份和熱備份的不同點以及各自的優點 解答 熱備份針對歸檔模式的資料庫,在資料庫仍舊處於工作狀態時進行備份。而冷備份指在資料庫關閉後,進行備份,適用於所有模式的 資料庫。熱備份的優點在於當備份時,資料庫仍舊可以被使用並且可以將資料庫恢復到任意乙個時間點。冷備份的優點在於它的備份和恢復 操作相...

oracle面試題集

oracle 面試問題 技術篇 1.解釋冷備份和熱備份的不同點以及各自的優點 解答 熱備份針對歸檔模式的資料庫,在資料庫仍舊處於工作狀態時進行備份。而冷備份指在資料庫關閉後,進行備份,適用於所有模式的資料庫。熱備份的優點在於當備份時,資料庫仍舊可以被使用並且可以將資料庫恢復到任意乙個時間點。冷備份的...