1)Truncate 是DDL 語句,DELETE 是DML語句。
2) Truncate 的速度遠快於DELETE;
原因是: 當執行DELETE操作時所有表格資料先被COPY到回滾表空間,資料量不同花費時間長短不一。而TRUNCATE 是直接刪除資料不進回滾表空間。
3) delete 資料可以運行Rollback 進行資料回滾。而Truncate 則是永久刪除不能回滾。
4) Truncate 操作不會觸發表上的delete觸發器,而delete 會正常觸發。
5) Truncate 語句不能帶where 條件表示只能全部資料刪除,而DELETE可帶where 條件刪除資料。
6) Truncate 操作會重置表的高水位線(High Water Mark),而delete 不會。
【專題推薦】:2020年oracle面試題彙整(最新)
Union : 不包含重複值,預設依第一個查詢的第一列升序排列。
Union All : 完全並集包含重複值。不排序。
Minus 不包含重複值,不排序。
1) 第一範式:原子件,要求每一列的值不能再拆分了。
2) 第二範式: 一張表只描述一個實體(若列中有冗餘數據,則不滿足)
3)第三範式: 所有列與主鍵值直接相關。
1)原子性(Atomic): 事務中的各項操作,要麼全做要麼全不做,任何一項操作的失敗都會導致整個事務的失敗。
2) 一致性(Consistent): 交易結束後系統狀態是一樣的。
3)隔離性(Isolated): 並發執行的交易彼此無法看到對方的中間狀態。
4) 持久性(Durable):交易完成後,即使發生災難性故障,透過日誌和同步備份可以在故障發生後重建資料。
1,應用程式方面,Mysql 是中小型應用的資料庫。一般用於個人和中小型企業。 Oracle 屬於大型資料庫,一般用於具有相當規模的企業應用。
2, 自動成長的資料類型面向: MySQL有自動成長的資料型態。 Oracle 沒有自動成長的資料型態。需要建立一個自增序列。
3,group by 用法: Mysql 中group by 在SELECT 語句中可以隨意使用,但在ORACLE 中如果查詢語句中有群組函數,那麼其他欄位必須是群組函數處理過的或是group by子句中的列,否則會報錯。
4,引導方面: MySQL中可以用單引號、雙引號包起字串,Oracle 中只可以用單引號包起字串
宏觀:
1). 最大的區別在於平台,oracle可以運行在不同的平台上,sql server只能運行在windows平台上,由於windows平台的穩定性和安全性影響了sql server的穩定性和安全性
2). oracle使用的腳本語言為PL-SQL,而sql server使用的腳本為T-SQL
微觀上: 從資料類型,資料庫的結構等等回答
1). oracle中的遊標分為顯示遊標和隱式遊標
2). 顯示遊標是用cursor...is指令定義的遊標,它可以對查詢語句(select)傳回的多筆記錄進行處理;隱含遊標是在執行插入(insert)、刪除(delete)、修改(update)和傳回單一記錄的查詢(select)語句時由PL/SQL自動定義的。
3). 明確遊標的操作:開啟遊標、操作遊標、關閉遊標;PL/SQL隱含地開啟SQL遊標,並在它內部處理SQL語句,然後關閉它
1). 可以理解函數是預存程序的一種
2). 函數可以沒有參數,但是一定需要一個回傳值,預存程序可以沒有參數,不需要回傳值
3). 函數return回傳值沒有回傳參數模式,預存程序透過out參數傳回值, 如果需要傳回多個參數則建議使用預存程序
4). 在sql資料操縱語句中只能呼叫函數而不能呼叫預存程序
1). 使用oracle工具exp/imp
2). 使用plsql相關工具
方法1. 導入/導出的是二進位的數據, 2.plsql導入/導出的是sql語句的文字檔
3) sqlloader
4) dblink
冷備的優點和缺點:
#1).是非常快速的備份方法(只需拷貝文件)
2).容易歸檔(簡單拷貝即可)
3).容易恢復到某個時間點上(只要將文件再拷貝回去)
#4).能與歸檔方法結合,作資料庫「最新狀態」的恢復。
5).低度維護,高度安全。
冷備份不足:
1).單獨使用時,只能提供到「某一時間點上」的恢復。
2).在實作備份的整個過程中,資料庫必須要作備份而不能作其它工作。也就是說,在冷備份過程中,資料庫必須是關閉狀態。
3).若磁碟空間有限,只能拷貝到磁帶等其它外部儲存裝置上,速度會很慢。
4).不能按表或依使用者恢復。
熱備的優缺點
1).可在表空間或資料檔案層級備份,備份時間短。
2).備份時資料庫仍可使用。
3).可達到秒級恢復(恢復到某一時間點)。
4).可對幾乎所有資料庫實體作復原。
5).恢復是快速的,在大多數情況下在資料庫仍工作時恢復。
熱備份的缺點是:
1).不能出錯,否則後果嚴重。
2).若熱備份不成功,所得結果不可用於時間點的復原。
3).因難於維護,所以要特別仔細小心,不允許「以失敗而告終」。
data block 資料塊,是oracle最小的邏輯單位,通常oracle從磁碟讀寫的就是塊
extent 區,是由若干個相鄰的block組成
segment段,是有一組區組成
tablespace表空間,資料庫中資料邏輯儲存的地方,一個tablespace可以包含多個資料檔
解決方法:
1). 找出已鎖定的表
select b.owner,b.object_name ,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id;
,logon_time
from v$locked_object a,v$session b
where a.session_id = b.sid order by b.logon_time;
2). 殺害進程中的會話
alter system kill session "sid,serial#";建立標準索引:
CREATE INDEX 索引名ON表名(列名) TABLESPACE 表空間名;
建立唯一索引:
CREATE unique INDEX 索引名ON 表名(列名) TABLESPACE 表空間名;
1. 行共享鎖定(ROW SHARE)
#2. 行排他鎖(ROW EXCLUSIVE)
3 . 共享鎖(SHARE)
4. 共享行排他鎖(SHARE ROW EXCLUSIVE)
5. 排他鎖(EXCLUSIVE)
使用方法:
SELECT * FROM order_master WHERE vencode="V002"
FOR UPDATE WAIT 5;
LOCK TABLE order_master IN SHARE MODE;
LOCK TABLE itemfile# IN EXCLUSIVE MODE #IT; ##ORACLE鎖定具體分為以下幾類:
1.依使用者與系統劃分,可分為自動鎖定與顯示鎖定
自動鎖定:當進行一項資料庫操作時,預設情況下,系統會自動為此資料庫操作取得所有必要的鎖定。
顯示鎖定:某些情況下,需要使用者顯示的鎖定資料庫操作要用到的數據,才能使資料庫操作執行得更好,顯示鎖定是使用者為資料庫物件設定的。
2 . 以鎖定層級劃分,可分為共享鎖定與排它鎖定
共享鎖定:共享鎖定使一個事務對特定資料庫資源進行共享存取— —另一事務也可對此資源進行存取或取得相同共用鎖定。共享鎖為交易提供高並發性,但如拙劣的事務設計 共享鎖容易造成死鎖或資料更新遺失。
排它鎖定:事務設定排它鎖定後,該事務單獨取得此資源,另一事務不能在此事務提交之前獲得相同物件的共享鎖定或排它鎖定。
3.依作業劃分,可分為DML鎖定、DDL鎖定
#DML鎖定又可分為,行鎖定、表鎖定、死鎖
行鎖定:當交易執行資料庫插入、更新、刪除操作時,該交易會自動取得操作表中操作行的排它鎖定。
表格層級鎖定:當交易取得行鎖定後,此交易也會自動取得該行的表鎖定(共用鎖定),以防止其它交易進行DDL語句影響記錄行的更新。事務也可以在進行過程中獲得共享鎖或排它鎖,只有當事務顯示使用LOCK TABLE語句顯示的定義一個排它鎖時,事務才會獲得表上的排它鎖,也可使用LOCK TABLE顯示的定義一個表級的共享鎖(LOCK TABLE具體用法請參考相關文件)。
死鎖:當兩個事務需要一組有衝突的鎖,而不能將事務繼續下去的話,就出現死鎖。
如事務1在表A行記錄#3中有一排它鎖,並等待事務2在表A中記錄#4中排它鎖的釋放,而事務2在表A記錄行#4中有一排它鎖,並等待事務; 1在表A中記錄#3中排它鎖的釋放,事務1與事務2彼此等待,因此就造成了死鎖。死鎖一般是因拙劣的事務設計而產生。死鎖只能使用SQL下:alter system kill session "sid,serial#";或使用相關作業系統kill進程的指令,如UNIX下kill -9 sid,或使用其它工具殺掉死鎖程序。 DDL鎖定又可以分為:排它DDL鎖定、共享DDL鎖定、分析鎖定
排它DDL鎖定:建立、修改、刪除一個資料庫物件的DDL語句獲得操作物件的排它鎖。如使用alter table語句時,為了維護資料的完成性、一致性、合法性,該事務獲得一排它DDL鎖定。
共享DDL鎖定:需在資料庫物件之間建立相互依賴關係的DDL語句通常需共享取得DDL鎖定。
如建立一個包,該包中的過程與函數引用了不同的資料庫表,當編譯此包時,該事務就獲得了引用表的共享DDL鎖定。 分析鎖定:
ORACLE使用共享池儲存分析與最佳化的SQL語句及PL/SQL程序,讓執行相同語句的應用速度更快。一個在共享池中緩存的物件獲得它所引用資料庫物件的分析鎖。分析鎖是一種獨特的DDL鎖類型,ORACLE使用它追蹤共享池物件及它所引用資料庫物件之間的依賴關係。當一個事務修改或刪除了共享池持有分析鎖的資料庫物件時,ORACLE使共享池中的物件作廢,下次在引用這條SQL/PLSQL語句時,ORACLE重新分析編譯此語句。
4.內部閂鎖
#內部閂鎖:這是ORACLE中的一種特殊鎖,用於順序存取內部系統結構。當事務需向緩衝區寫入資訊時,為了使用此區塊記憶體區域,ORACLE首先必須取得這塊記憶體區域的閂鎖,才能向此區塊記憶體寫入資訊。
#相關學習推薦:oracle資料庫學習教學
以上是Oracle面試題彙總的詳細內容。更多資訊請關注PHP中文網其他相關文章!