欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          Oracle面試題匯總

          Oracle面試題匯總

          1,delete 與Truncate區(qū)別?

          1)Truncate 是DDL 語(yǔ)句,DELETE 是DML語(yǔ)句。

          2) Truncate 的速度遠(yuǎn)快于DELETE;

          原因是: 當(dāng)執(zhí)行DELETE操作時(shí)所有表數(shù)據(jù)先被COPY到回滾表空間,數(shù)據(jù)量不同花費(fèi)時(shí)間長(zhǎng)短不一。而TRUNCATE 是直接刪除數(shù)據(jù)不進(jìn)回滾表空間。

          3) delete 數(shù)據(jù)可以運(yùn)行Rollback 進(jìn)行數(shù)據(jù)回滾。而Truncate 則是永久刪除不能回滾。

          4) Truncate 操作不會(huì)觸發(fā)表上的delete觸發(fā)器,而delete 會(huì)正常觸發(fā)。

          5) Truncate 語(yǔ)句不能帶where 條件意味著只能全部數(shù)據(jù)刪除,而DELETE可帶where 條件進(jìn)行刪除數(shù)據(jù)。

          6) Truncate 操作會(huì)重置表的高水位線(High Water Mark),而delete 不會(huì)。

          【專題推薦】:2020年oracle面試題匯總(最新)

          2,集合操作符

          Union : 不包含重復(fù)值,默認(rèn)按第一個(gè)查詢的第一列升序排列。

          Union All : 完全并集包含重復(fù)值。不排序。

          Minus 不包含重復(fù)值,不排序。

          3,數(shù)據(jù)庫(kù)的三大范式是什么?

          1) 第一范式:原子件,要求每一列的值不能再拆分了。

          2) 第二范式: 一張表只描述一個(gè)實(shí)體(若列中有冗余數(shù)據(jù),則不滿足)

          3)第三范式: 所有列與主鍵值直接相關(guān)。

          4 事務(wù)的特性(ACID)是指什么?

          1)原子性(Atomic): 事務(wù)中的各項(xiàng)操作,要么全做要么全不做,任何一項(xiàng)操作的失敗都會(huì)導(dǎo)致整個(gè)事務(wù)的失敗。

          2) 一致性(Consistent): 事務(wù)結(jié)束后系統(tǒng)狀態(tài)是一樣的。

          3)隔離性(Isolated): 并發(fā)執(zhí)行的事務(wù)彼此無(wú)法看到對(duì)方的中間狀態(tài)。

          4) 持久性(Durable):事務(wù)完成后,即使發(fā)生災(zāi)難性故障,通過(guò)日志和同步備份可以在故障發(fā)生后重建數(shù)據(jù)。

          5 Mysql數(shù)據(jù)庫(kù)與Oracle 數(shù)據(jù)庫(kù)有什么區(qū)別?

          1,應(yīng)用方面,Mysql 是中小型應(yīng)用的數(shù)據(jù)庫(kù)。一般用于個(gè)人和中小型企業(yè)。Oracle 屬于大型數(shù)據(jù)庫(kù),一般用于具有相當(dāng)規(guī)模的企業(yè)應(yīng)用。

          2, 自動(dòng)增長(zhǎng)的數(shù)據(jù)類型方面: MySQL有自動(dòng)增長(zhǎng)的數(shù)據(jù)類型。Oracle 沒有自動(dòng)增長(zhǎng)的數(shù)據(jù)類型。需要建立一個(gè)自增序列。

          3,group by 用法: Mysql 中g(shù)roup by 在SELECT 語(yǔ)句中可以隨意使用,但在ORACLE 中如果查詢語(yǔ)句中有組函數(shù),那么其他列必須是組函數(shù)處理過(guò)的或者是group by子句中的列,否則會(huì)報(bào)錯(cuò)。

          4,引導(dǎo)方面: MySQL中可以用單引號(hào)、雙引號(hào)包起字符串,Oracle 中只可以用單引號(hào)包起字符串

          6 Oracle跟SQL Server 2005的區(qū)別?

          宏觀上:
          1). 最大的區(qū)別在于平臺(tái),oracle可以運(yùn)行在不同的平臺(tái)上,sql server只能運(yùn)行在windows平臺(tái)上,由于windows平臺(tái)的穩(wěn)定性和安全性影響了sql server的穩(wěn)定性和安全性
          2). oracle使用的腳本語(yǔ)言為PL-SQL,而sql server使用的腳本為T-SQL
          微觀上: 從數(shù)據(jù)類型,數(shù)據(jù)庫(kù)的結(jié)構(gòu)等等回答

          7 . 如何使用Oracle的游標(biāo)?

          1). oracle中的游標(biāo)分為顯示游標(biāo)和隱式游標(biāo)
          2). 顯示游標(biāo)是用cursor…is命令定義的游標(biāo),它可以對(duì)查詢語(yǔ)句(select)返回的多條記錄進(jìn)行處理;隱式游標(biāo)是在執(zhí)行插入 (insert)、刪除(delete)、修改(update)和返回單條記錄的查詢(select)語(yǔ)句時(shí)由PL/SQL自動(dòng)定義的。
          3). 顯式游標(biāo)的操作:打開游標(biāo)、操作游標(biāo)、關(guān)閉游標(biāo);PL/SQL隱式地打開SQL游標(biāo),并在它內(nèi)部處理SQL語(yǔ)句,然后關(guān)閉它

          8 Oracle中function和procedure的區(qū)別?

          1). 可以理解函數(shù)是存儲(chǔ)過(guò)程的一種
          2). 函數(shù)可以沒有參數(shù),但是一定需要一個(gè)返回值,存儲(chǔ)過(guò)程可以沒有參數(shù),不需要返回值
          3). 函數(shù)return返回值沒有返回參數(shù)模式,存儲(chǔ)過(guò)程通過(guò)out參數(shù)返回值, 如果需要返回多個(gè)參數(shù)則建議使用存儲(chǔ)過(guò)程
          4). 在sql數(shù)據(jù)操縱語(yǔ)句中只能調(diào)用函數(shù)而不能調(diào)用存儲(chǔ)過(guò)程

          9 Oracle的導(dǎo)入導(dǎo)出有幾種方式,有何區(qū)別?

          1). 使用oracle工具 exp/imp
          2). 使用plsql相關(guān)工具
          方法1. 導(dǎo)入/導(dǎo)出的是二進(jìn)制的數(shù)據(jù), 2.plsql導(dǎo)入/導(dǎo)出的是sql語(yǔ)句的文本文件

          3) sqlloader

          4) dblink

          10 . 解釋冷備份和熱備份的不同點(diǎn)以及各自的優(yōu)點(diǎn)?

          冷備份發(fā)生在數(shù)據(jù)庫(kù)已經(jīng)正常關(guān)閉的情況下,將關(guān)鍵性文件拷貝到另外位置的一種說(shuō)法
          熱備份是在數(shù)據(jù)庫(kù)運(yùn)行的情況下,采用歸檔方式備份數(shù)據(jù)的方法

          冷備的優(yōu)缺點(diǎn):
          1).是非??焖俚膫浞莘椒ǎㄖ恍杩截愇募?
          2).容易歸檔(簡(jiǎn)單拷貝即可)
          3).容易恢復(fù)到某個(gè)時(shí)間點(diǎn)上(只需將文件再拷貝回去)
          4).能與歸檔方法相結(jié)合,作數(shù)據(jù)庫(kù)“最新狀態(tài)”的恢復(fù)。
          5).低度維護(hù),高度安全。
          冷備份不足:
          1).單獨(dú)使用時(shí),只能提供到“某一時(shí)間點(diǎn)上”的恢復(fù)。
          2).在實(shí)施備份的全過(guò)程中,數(shù)據(jù)庫(kù)必須要作備份而不能作其它工作。也就是說(shuō),在冷備份過(guò)程中,數(shù)據(jù)庫(kù)必須是關(guān)閉狀態(tài)。
          3).若磁盤空間有限,只能拷貝到磁帶等其它外部存儲(chǔ)設(shè)備上,速度會(huì)很慢。
          4).不能按表或按用戶恢復(fù)。

          熱備的優(yōu)缺點(diǎn)
          1).可在表空間或數(shù)據(jù)文件級(jí)備份,備份時(shí)間短。
          2).備份時(shí)數(shù)據(jù)庫(kù)仍可使用。
          3).可達(dá)到秒級(jí)恢復(fù)(恢復(fù)到某一時(shí)間點(diǎn)上)。
          4).可對(duì)幾乎所有數(shù)據(jù)庫(kù)實(shí)體作恢復(fù)。
          5).恢復(fù)是快速的,在大多數(shù)情況下在數(shù)據(jù)庫(kù)仍工作時(shí)恢復(fù)。
          熱備份的不足是:
          1).不能出錯(cuò),否則后果嚴(yán)重。
          2).若熱備份不成功,所得結(jié)果不可用于時(shí)間點(diǎn)的恢復(fù)。
          3).因難于維護(hù),所以要特別仔細(xì)小心,不允許“以失敗而告終”。

          11 解釋data block , extent 和 segment的區(qū)別?

          data block 數(shù)據(jù)塊,是oracle最小的邏輯單位,通常oracle從磁盤讀寫的就是塊
          extent 區(qū),是由若干個(gè)相鄰的block組成
          segment段,是有一組區(qū)組成
          tablespace表空間,數(shù)據(jù)庫(kù)中數(shù)據(jù)邏輯存儲(chǔ)的地方,一個(gè)tablespace可以包含多個(gè)數(shù)據(jù)文件

          12. 解釋什么是死鎖,如何解決Oracle中的死鎖?

          簡(jiǎn)言之就是存在加了鎖而沒有解鎖,可能是使用鎖沒有提交或者回滾事務(wù),如果是表級(jí)鎖則不能操作表,客戶端處于等在狀態(tài),如果是行級(jí)鎖則不能操作鎖定行

          解決辦法:
          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;

          select b.username,b.sid,b.serial#,logon_time
          from v$locked_object a,v$session b
          where a.session_id = b.sid order by b.logon_time;

          2). 殺進(jìn)程中的會(huì)話

          alter system kill session "sid,serial#";

          13 簡(jiǎn)述oracle中 dml、ddl、dcl的使用

          Dml 數(shù)據(jù)操縱語(yǔ)言,如select、update、delete,insert
          Ddl 數(shù)據(jù)定義語(yǔ)言,如create table 、drop table 等等
          Dcl 數(shù)據(jù)控制語(yǔ)言, 如 commit、 rollback、grant、 invoke等

          14 怎樣創(chuàng)建一個(gè)一個(gè)索引,索引使用的原則,有什么優(yōu)點(diǎn)和缺點(diǎn)

          創(chuàng)建標(biāo)準(zhǔn)索引:
          CREATE INDEX 索引名 ON 表名 (列名) TABLESPACE 表空間名;
          創(chuàng)建唯一索引:
          CREATE unique INDEX 索引名 ON 表名 (列名) TABLESPACE 表空間名;
          創(chuàng)建組合索引:
          CREATE INDEX 索引名 ON 表名 (列名1,列名2) TABLESPACE 表空間名;
          創(chuàng)建反向鍵索引:
          CREATE INDEX 索引名 ON 表名 (列名) reverse TABLESPACE 表空間名;
          索引使用原則:
          索引字段建議建立NOT NULL約束
          經(jīng)常與其他表進(jìn)行連接的表,在連接字段上應(yīng)該建立索引;
          經(jīng)常出現(xiàn)在Where子句中的字段且過(guò)濾性很強(qiáng)的,特別是大表的字段,應(yīng)該建立索引;
          可選擇性高的關(guān)鍵字 ,應(yīng)該建立索引;
          可選擇性低的關(guān)鍵字,但數(shù)據(jù)的值分布差異很大時(shí),選擇性數(shù)據(jù)比較少時(shí)仍然可以利用索引提高效率
          復(fù)合索引的建立需要進(jìn)行仔細(xì)分析;盡量考慮用單字段索引代替:
          A、正確選擇復(fù)合索引中的第一個(gè)字段,一般是選擇性較好的且在where子句中常用的字段上;
          B、復(fù)合索引的幾個(gè)字段經(jīng)常同時(shí)以AND方式出現(xiàn)在Where子句中可以建立復(fù)合索引;否則單字段索引;
          C、如果復(fù)合索引中包含的字段經(jīng)常單獨(dú)出現(xiàn)在Where子句中,則分解為多個(gè)單字段索引;
          D、如果復(fù)合索引所包含的字段超過(guò)3個(gè),那么仔細(xì)考慮其必要性,考慮減少?gòu)?fù)合的字段;
          E、如果既有單字段索引,又有這幾個(gè)字段上的復(fù)合索引,一般可以刪除復(fù)合索引;
          頻繁DML的表,不要建立太多的索引;
          不要將那些頻繁修改的列作為索引列;
          索引的優(yōu)缺點(diǎn):
          有點(diǎn):
          1. 創(chuàng)建唯一性索引,保證數(shù)據(jù)庫(kù)表中每一行數(shù)據(jù)的唯一性
          2. 大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因
          3. 加速表和表之間的連接,特別是在實(shí)現(xiàn)數(shù)據(jù)的參考完整性方面特別有意義。
          4. 在使用分組和排序子句進(jìn)行數(shù)據(jù)檢索時(shí),同樣可以顯著減少查詢中分組和排序的時(shí)間。
          缺點(diǎn):
          1. 索引創(chuàng)建在表上,不能創(chuàng)建在視圖上
          2. 創(chuàng)建索引和維護(hù)索引要耗費(fèi)時(shí)間,這種時(shí)間隨著數(shù)據(jù)量的增加而增加
          3. 索引需要占物理空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個(gè)索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會(huì)更大
          4. 當(dāng)對(duì)表中的數(shù)據(jù)進(jìn)行增加、刪除和修改的時(shí)候,索引也要?jiǎng)討B(tài)的維護(hù),降低了數(shù)據(jù)的維護(hù)速度

          15 oracle的鎖又幾種,定義分別是什么;

          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 NOWAIT;
          ORACLE鎖具體分為以下幾類:
          1.按用戶與系統(tǒng)劃分,可以分為自動(dòng)鎖與顯示鎖
          自動(dòng)鎖:當(dāng)進(jìn)行一項(xiàng)數(shù)據(jù)庫(kù)操作時(shí),缺省情況下,系統(tǒng)自動(dòng)為此數(shù)據(jù)庫(kù)操作獲得所有有必要的鎖。
          顯示鎖:某些情況下,需要用戶顯示的鎖定數(shù)據(jù)庫(kù)操作要用到的數(shù)據(jù),才能使數(shù)據(jù)庫(kù)操作執(zhí)行得更好,顯示鎖是用戶為數(shù)據(jù)庫(kù)對(duì)象設(shè)定的。
          2 . 按鎖級(jí)別劃分,可分為共享鎖與排它鎖
          共享鎖:共享鎖使一個(gè)事務(wù)對(duì)特定數(shù)據(jù)庫(kù)資源進(jìn)行共享訪問(wèn)——另一事務(wù)也可對(duì)此資源進(jìn)行訪問(wèn)或獲得相同共享鎖。共享鎖為事務(wù)提供高并發(fā)性,但如拙劣的事務(wù)設(shè)計(jì)+共享鎖容易造成死鎖或數(shù)據(jù)更新丟失。
          排它鎖:事務(wù)設(shè)置排它鎖后,該事務(wù)單獨(dú)獲得此資源,另一事務(wù)不能在此事務(wù)提交之前獲得相同對(duì)象的共享鎖或排它鎖。
          3.按操作劃分,可分為DML鎖、DDL鎖
          DML鎖又可以分為,行鎖、表鎖、死鎖
          行鎖:當(dāng)事務(wù)執(zhí)行數(shù)據(jù)庫(kù)插入、更新、刪除操作時(shí),該事務(wù)自動(dòng)獲得操作表中操作行的排它鎖。
          表級(jí)鎖:當(dāng)事務(wù)獲得行鎖后,此事務(wù)也將自動(dòng)獲得該行的表鎖(共享鎖),以防止其它事務(wù)進(jìn)行DDL語(yǔ)句影響記錄行的更新。事務(wù)也可以在進(jìn)行過(guò)程中獲得共享鎖或排它鎖,只有當(dāng)事務(wù)顯示使用LOCK TABLE語(yǔ)句顯示的定義一個(gè)排它鎖時(shí),事務(wù)才會(huì)獲得表上的排它鎖,也可使用LOCK TABLE顯示的定義一個(gè)表級(jí)的共享鎖(LOCK TABLE具體用法請(qǐng)參考相關(guān)文檔)。
          死鎖:當(dāng)兩個(gè)事務(wù)需要一組有沖突的鎖,而不能將事務(wù)繼續(xù)下去的話,就出現(xiàn)死鎖。
          如事務(wù)1在表A行記錄#3中有一排它鎖,并等待事務(wù)2在表A中記錄#4中排它鎖的釋放,而事務(wù)2在表A記錄行#4中有一排它鎖,并等待事務(wù); 1在表A中記錄#3中排它鎖的釋放,事務(wù)1與事務(wù)2彼此等待,因此就造成了死鎖。死鎖一般是因拙劣的事務(wù)設(shè)計(jì)而產(chǎn)生。死鎖只能使用SQL下:alter system kill session "sid,serial#";或者使用相關(guān)操作系統(tǒng)kill進(jìn)程的命令,如UNIX下kill -9 sid,或者使用其它工具殺掉死鎖進(jìn)程。
          DDL鎖又可以分為:排它DDL鎖、共享DDL鎖、分析鎖
          排它DDL鎖:創(chuàng)建、修改、刪除一個(gè)數(shù)據(jù)庫(kù)對(duì)象的DDL語(yǔ)句獲得操作對(duì)象的 排它鎖。如使用alter table語(yǔ)句時(shí),為了維護(hù)數(shù)據(jù)的完成性、一致性、合法性,該事務(wù)獲得一排它DDL鎖。
          共享DDL鎖:需在數(shù)據(jù)庫(kù)對(duì)象之間建立相互依賴關(guān)系的DDL語(yǔ)句通常需共享獲得DDL鎖。
          如創(chuàng)建一個(gè)包,該包中的過(guò)程與函數(shù)引用了不同的數(shù)據(jù)庫(kù)表,當(dāng)編譯此包時(shí),該事務(wù)就獲得了引用表的共享DDL鎖。
          分析鎖:ORACLE使用共享池存儲(chǔ)分析與優(yōu)化過(guò)的SQL語(yǔ)句及PL/SQL程序,使運(yùn)行相同語(yǔ)句的應(yīng)用速度更快。一個(gè)在共享池中緩存的對(duì)象獲得它所引用數(shù)據(jù)庫(kù)對(duì)象的分析鎖。分析鎖是一種獨(dú)特的DDL鎖類型,ORACLE使用它追蹤共享池對(duì)象及它所引用數(shù)據(jù)庫(kù)對(duì)象之間的依賴關(guān)系。當(dāng)一個(gè)事務(wù)修改或刪除了共享池持有分析鎖的數(shù)據(jù)庫(kù)對(duì)象時(shí),ORACLE使共享池中的對(duì)象作廢,下次在引用這條SQL/PLSQL語(yǔ)句時(shí),ORACLE重新分析編譯此語(yǔ)句。
          4.內(nèi)部閂鎖
          內(nèi)部閂鎖:這是ORACLE中的一種特殊鎖,用于順序訪問(wèn)內(nèi)部系統(tǒng)結(jié)構(gòu)。當(dāng)事務(wù)需向緩沖區(qū)寫入信息時(shí),為了使用此塊內(nèi)存區(qū)域,ORACLE首先必須取得這塊內(nèi)存區(qū)域的閂鎖,才能向此塊內(nèi)存寫入信息。

          相關(guān)學(xué)習(xí)推薦:oracle數(shù)據(jù)庫(kù)學(xué)習(xí)教程

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)