資料庫oracle面試
Ⅰ oracle資料庫面試題
1、b沒有訪問表employee的許可權,或者有許可權但是在做desc時沒有加用戶名在表前面。
2、在建表時設置了max extent參數導致了表extent數滿了之後不能再進行擴展。
3、tablespace full表示該表空間沒有可擴展的塊了,這是設置了datafile為autoextend off後或者系統中沒有可擴展的物理空間導致。
4、首先我需要有一張主表(pri)擁有關鍵欄位(id),然後分兩種情況,一種是目標表不存在的情況那麼我需要建立目標表,如:create table oerder(id not null,aa char(8),id_p int, primary key(id),forergn key (id_p) references pri(id));。另一種情況是目標表存在,則增加約束條件:alter table order add foreign key (id_p) references pri(id);
5、pct_increase代表的是表在做了第一次extent後,下次再擴展時的增量,它是一個百分比值,也就是說,如果你設置了該值為50那麼在表下一次擴展時擴展量就增加為150%。這是個很「恐怖」的設置,如果你使用了它那麼有可能你會發現你的表空間很快就沒有可擴展的地方了。
6、英文不好,題目意思沒讀懂。
7、這題還是分兩種情況,一種是nt server就是你的database server,那麼你可能需要先在nt server上確認listener已經啟動,然後進行ping和tracert看看是否是網路問題,最後檢查pc上的tnsnames.ora配置文件是否正確,在pc上做tracerc看網路鏈接是否正常?檢查pc上防火牆的設置等。如果nt server 不是你的database server那麼說明你的database server的網路鏈接是正常的,那麼需要的就是:檢查pc上的tnsnames.ora配置文件是否正確,在pc上做tracerc看網路鏈接是否正常,檢查pc上防火牆的設置等。當然還有一種比較特殊的情況,在pc安裝了64位win操作系統+32位的oracle時會發生在cmd下可以進行鏈接,但是使用oracle的其他連接方式如客戶端,oem等等就會報tns錯誤,這是oracle本身的bug。
8、char和varchar2最根本的區別就在於一個是固定長度,另一個是可變長度。它們對空間的佔用量是不同的,在同樣長度的字元下char類型的需要用空字元補充不足的字元數,而varchar2則不會。當然運行效率上char占優。
9、這個太長,懶得打了。
Ⅱ oracle資料庫面試問題
oracle資料庫面試問題
Oracle資料庫產品為財富排行榜上的前1000家公司所採用,許多大型網站也選用了Oracle系統。下面是我整理的關於oracle資料庫面試問題,希望大家認真閱讀!
1. 解釋冷備份和熱備份的不同點以及各自的優點
解答:熱備份針對歸檔模式的資料庫,在資料庫仍舊處於工作狀態時進行備份。而冷備份指在資料庫關閉後,進行備份,適用於所有模式的資料庫。熱備份的優點在於當備份時,資料庫仍舊可以被使用並且可以將資料庫恢復到任意一個時間點。冷備份的優點在於它的備份和恢復操作相當簡單,並且由於冷備份的資料庫可以工作在非歸檔模式下,資料庫性能會比歸檔模式稍好。(因為不必將archive log寫入硬碟)
2. 你必須利用備份恢復資料庫,但是你沒有控制文件,該如何解決問題呢?
解答:重建控制文件,用帶backup control file 子句的recover 命令恢復資料庫。
3. 如何轉換init.ora到spfile?
解答:使用create spfile from pfile 命令.
4. 解釋data block , extent 和 segment的區別(這里建議用英文術語)
解答:data block是資料庫中最小的邏輯存儲單元。當資料庫的對象需要更多的物理存儲空間時,連續的data block就組成了extent . 一個資料庫對象擁有的所有extents被稱為該對象的segment.
5. 給出兩個檢查表結構的方法
解答:1.DESCRIBE命令
2.DBMS_METADATA.GET_DDL 包
6. 怎樣查看資料庫引擎的'報錯
解答:alert log.
7. 比較truncate和delete 命令
解答:兩者都可以用來刪除表中所有的記錄。區別在於:truncate是DDL操作,它移動HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花費較長時間.
8. 使用索引的理由
解答:快速訪問表中的data block
9. 給出在STAR SCHEMA中的兩種表及它們分別含有的數據
解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放對fact table 某些屬性描述的信息
10. FACT Table上需要建立何種索引?
解答:點陣圖索引 (bitmap index)
;Ⅲ 甲骨文(Oracle)面試題目
甲骨文(Oracle)面試題目 這也許是你一直期待的文章,在關注這部分 技術 問題的同時,請務必閱讀有關 面試 中有關
個人的問題和解答。這里的回答並不是十分全面,這些問題可以通過多個角度來進行解釋
,也許你不必在面試過程中給出完全詳盡的答案,只需要通過你的解答使面試考官了解你
對ORACLE概念的熟悉程度。
1.解釋冷備份和熱備份的不同點以及各自的優點
解答:熱備份針對歸檔模式的資料庫,在資料庫仍舊處於工作狀態時進行備份。而冷
備份指在資料庫關閉後,進行備份,適用於所有模式的資料庫。熱備份的優點在於當備份
時,資料庫仍舊可以被使用並且可以將資料庫恢復到任意一個 時間 點。冷備份的優點在於
它的備份和恢復操作相當簡單,並且由於冷備份的資料庫可以工作在非歸檔模式下,資料庫
性能會比歸檔模式稍好。(因為不必將archive log寫入硬碟)
2.你必須利用備份恢復資料庫,但是你沒有控制文件,該如何解決問題呢?
解答:重建控制文件,用帶backup control file 子句的recover 命令恢復資料庫。
3.如何轉換init.ora到spfile?
解答:使用create spfile from pfile 命令.
4.解釋data block , extent 和 segment的區別(這里建議用英文術語)
解答:data block是資料庫中最小的邏輯存儲單元。當資料庫的對象需要更多的物理
存儲空間時,連續的data block就組成了extent . 一個資料庫對象擁有的所有extents被
稱為該對象的segment.
5.給出兩個檢查表結構的`方法
解答:1.DESCRIBE命令
2.DBMS_METADATA.GET_DDL 包
6.怎樣查看資料庫引擎的報錯
解答:alert log.
7.比較truncate和delete 命令
解答:兩者都可以用來刪除表中所有的記錄。區別在於:truncate是DDL操作,它移動
HWK,不需要rollback segment .而Delete是DML操作, 需要rollback segment 且花費較長
時間.
8.使用索引的理由
解答:快速訪問表中的data block
9.給出在STAR SCHEMA中的兩種表及它們分別含有的數據
解答:Fact tables 和dimension tables. fact table包含大量的主要的信息而dime
nsion tables 存放對fact table 某些屬性描述的信息
10.FACT Table上需要建立何種索引?
解答:點陣圖索引 (bitmap index)
11. 給出兩種相關約束?
解答:主鍵和外鍵
12. 如何在不影響子表的前提下,重建一個母表
解答:子表的外鍵強制實效,重建母表,激活外鍵
13. 解釋歸檔和非歸檔模式之間的不同和它們各自的優缺點
解答:歸檔模式是指你可以備份所有的資料庫 transactions並恢復到任意一個時間點
。非歸檔模式則相反,不能恢復到任意一個時間點。但是非歸檔模式可以帶來資料庫性能
上的少許提高.
14. 如何建立一個備份控制文件?
解答:Alter database backup control file to trace.
15. 給出資料庫正常啟動所 經歷 的幾種狀態 ?
解答:STARTUP NOMOUNT – 資料庫實例啟動
STARTUP MOUNT - 資料庫裝載
STARTUP OPEN – 資料庫打開
16. 哪個column可以用來區別V$視圖和GV$視圖?
解答:INST_ID 指明集群環境中具體的 某個instance 。
17. 如何生成explain plan?
解答:運行utlxplan.sql. 建立plan 表
針對特定SQL語句,使用 explain plan set statement_id = 'tst1' into pl
an_table ,運行utlxplp.sql 或 utlxpls.sql察看explain plan
18. 如何增加buffer cache的命中率?
解答:在資料庫較繁忙時,適用buffer cache advisory 工具,查詢v$db_cache_adv
ice.如果有必要更改,可以使用 alter system set db_cache_size 命令
19. ORA-01555的應對方法?
解答:具體的出錯信息是snapshot too old within rollback seg , 通常可以通過增
大rollback seg來解決問題。當然也需要察看一下具體造成錯誤的SQL文本
20. 解釋$ORACLE_HOME和$ORACLE_BASE的區別?
解答:ORACLE_BASE是oracle的根目錄,ORACLE_HOME是oracle產品的目錄。 ;
Ⅳ 【面試攻略】Oracle中blob和clob的區別及查詢修改方法
在Oracle資料庫面試中,常常會遇到關於Blob和Clob的區別以及它們在查詢和修改操作中的應用問題。本文將為你詳細解析這兩個數據類型,並演示相應的代碼示例。
首先,Blob(Binary Large Object)和Clob(Character Large Object)都是Oracle用來存儲大量數據的欄位類型,但它們存儲的數據類型不同。Blob通常用於存儲二進制數據,如圖片、文件等,而Clob則用於存儲文本數據。
查詢Blob和Clob的內容時,查詢Blob欄位通常藉助DBMS_LOB包的DBMS_LOB.READ方法,指定欄位名(blob_column)、要讀取的位元組數(length)和起始位置(offset)。對於Clob欄位,同樣使用DBMS_LOB.SUBSTR方法,區別在於字元數(length)而非位元組數。
在修改Blob和Clob時,同樣使用DBMS_LOB包的DBMS_LOB.WRITE方法。Blob欄位操作時,輸入要寫入的位元組數、起始位置和數據緩沖區;Clob欄位則對應寫入的字元數、起始位置和數據緩沖區。
掌握這些基本操作後,你將在面試中更有信心,也能在實際項目中有效處理Blob和Clob數據。如果你對這方面的知識還有疑問,歡迎在下方留言,小米會及時解答。期待你在下期的閱讀中有所收獲,也別忘了關注「知其然亦知其所以然」微信公眾號,獲取更多技術分享。
Ⅳ Oracle資料庫的面試題目及答案
Oracle資料庫的面試題目及答案
基礎題目:
1. 比較truncate和 命令
解答:兩者都可以用來刪除表中所有的記錄。區別在於:truncate是DDL操作,它移動HWK,不需要 rollback segment .
而Delete是DML操作, 需要rollback segment 且花費較長時間.
【相同點
truncate和不帶where子句的, 以及drop都會刪除表內的數據
不同點:
1. truncate和 只姿轎刪除數據不刪除表的結構(定跡談肆義)
drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴於該表的.存儲過程/函數將保留,
但是變為invalid狀態.
2.語句是dml,這個操作會放到rollback segement中,事務提交之後才生效;如果有相應的trigger,執行的時候將被觸發.
truncate,drop是ddl, 操作立即生效,原數據不放到rollback segment中,不能回滾. 操作不觸發trigger.
3.語句不影響表所佔用的extent, 高水線(high watermark)保持原位置不動
顯然drop語句將表所佔用的空間全部釋放
truncate 語句預設情況下見空間釋放到 minextents個 extent,除非使侍渣用reuse storage; truncate會將高水線復位(回到最開始).
4.速度,一般來說: drop>; truncate >;
5.安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及
使用上,想刪除部分數據行用,注意帶上where子句. 回滾段要足夠大.
想刪除表,當然用drop
想保留表而將所有數據刪除. 如果和事務無關,用truncate即可. 如果和事務有關,或者想觸發trigger,還是用.
如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據
】
2.Oracle中,需要在查詢語句中把空值(NULL)輸出為0,如何處理?
答案:nvl(欄位,0).
nvl( ) 函數
從兩個表達式返回一個非 null 值。
語法
NVL(eExpression1, eExpression2)
參數
eExpression1, eExpression2
如果 eExpression1 的計算結果為 null 值,則 NVL( ) 返回 eExpression2。如果 eExpression1 的計算結果不是 null 值,
則返回 eExpression1。eExpression1 和 eExpression2 可以是任意一種數據類型。如果 eExpression1 與 eExpression2
的結果皆為 null 值,則 NVL( ) 返回 .NULL.。
返回值類型
字元型、日期型、日期時間型、數值型、貨幣型、邏輯型或 null 值
說明
在不支持 null 值或 null 值無關緊要的情況下,可以使用 NVL( ) 來移去計算或操作中的 null 值。
select nvl(a.name,空得) as name from student a join school b on a.ID=b.ID
注意:兩個參數得類型要匹配
3.Oracle中char和varchar2數據類型有什麼區別?有數據」test」分別存放到10)和varchar2(10)類型的欄位中,
其存儲長度及類型有何區別?
答案:
區別: 1).CHAR的長度是固定的,而VARCHAR2的長度是可以變化的, 比如,存儲字元串「test",對於CHAR (10),
Ⅵ 面試的時候問你熟悉oracle資料庫嗎
如果是開發的話,那還是基於SQL這種語言的語法了,要多自己使用才能熟悉的。 對於oracle資料庫來說,PL/SQL delelopment是重點,除了SQL,還要了解觸發器trigger,存儲過程procere,任務job,視圖view等等。
Ⅶ Oracle面試題(基礎篇)
Oracle面試題(基礎篇)
Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系資料庫管理系統。以下是關於Oracle面試題(基礎篇),希望大家認真閱讀!
1. Oracle跟SQL Server 2005的區別?
宏觀上:
1). 最大的區別在於平台,oracle可以運行在不同的平台上,sql server只能運行在windows平台上,由於windows平台的穩定性和安全性影響了sql server的穩定性和安全性
2). oracle使用的腳本語言為PL-SQL,而sql server使用的腳本為T-SQL
微觀上: 從數據類型,資料庫的結構等等回答
2. 如何使用Oracle的游標?
1). oracle中的游標分為顯示游標和隱式游標
2). 顯示游標是用cursor...is命令定義的游標,它可以對查詢語句(select)返回的多條記錄進行處理;隱式游標是在執行插入 (insert)、刪除(delete)、修改(update)和返回單條記錄的查詢(select)語句時由PL/SQL自動定義的。
3). 顯式游標的操作:打開游標、操作游標、關閉游標;PL/SQL隱式地打開SQL游標,並在它內部處理SQL語句,然後關閉它
3. Oracle中function和procere的區別?
1). 可以理解函數是存儲過程的一種
2). 函數可以沒有參數,但是一定需要一個返回值,存儲過程可以沒有參數,不需要返回值
3). 函數return返回值沒有返回參數模式,存儲過程通過out參數返回值, 如果需要返回多個參數則建議使用存儲過程
4). 在sql數據操縱語句中只能調用函數而不能調用存儲過程
4. Oracle的導入導出有幾種方式,有何區別?
1). 使用oracle工具 exp/imp
2). 使用plsql相關工具
方法1. 導入/導出的是二進制的數據, 2.plsql導入/導出的是sql語句的文本文件
5. Oracle中有哪幾種文件?
數據文件(一般後綴為.dbf或者.ora),日誌文件(後綴名.log),控制文件(後綴名為.ctl)
6. 怎樣優化Oracle資料庫,有幾種方式?
個人理解,資料庫性能最關鍵的因素在於IO,因為操作內存是快速的,但是讀寫磁碟是速度很慢的,優化資料庫最關鍵的問題在於減少磁碟的IO,就個人理解應該分為物理的和邏輯的優化, 物理的是指oracle產品本身的一些優化,邏輯優化是指應用程序級別的優化
物理優化的一些原則:
1). Oracle的運行環境(網路,硬體等)
2). 使用合適的優化器
3). 合理配置oracle實例參數
4). 建立合適的索引(減少IO)
5). 將索引數據和表數據分開在不同的表空間上(降低IO沖突)
6). 建立表分區,將數據分別存儲在不同的分區上(以空間換取時間,減少IO)
邏輯上優化:
1). 可以對表進行邏輯分割,如中國移動用戶表,可以根據手機尾數分成10個表,這樣對性能會有一定的作用
2). Sql語句使用佔位符語句,並且開發時候必須按照規定編寫sql語句(如全部大寫,全部小寫等)oracle解析語句後會放置到共享池中
如: select * from Emp where name=? 這個語句只會在共享池中有一條,而如果是字元串的話,那就根據不同名字存在不同的語句,所以佔位符效率較好
3). 資料庫不僅僅是一個存儲數據的地方,同樣是一個編程的地方,一些耗時的操作,可以通過存儲過程等在用戶較少的情況下執行,從而錯開系統使用的高峰時間,提高資料庫性能
4). 盡量不使用*號,如select * from Emp,因為要轉化為具體的列名是要查數據字典,比較耗時
5). 選擇有效的表名
對於多表連接查詢,可能oracle的優化器並不會優化到這個程度, oracle 中多表查詢是根據FROM字句從右到左的數據進行的,那麼最好右邊的表(也就是基礎表)選擇數據較少的表,這樣排序更快速,如果有link表(多對多中間表),那麼將link表放最右邊作為基礎表,在默認情況下oracle會自動優化,但是如果配置了優化器的情況下,可能不會自動優化,所以平時最好能按照這個方式編寫sql
6). Where字句 規則
Oracle 中Where字句時從右往左處理的,表之間的連接寫在其他條件之前,能過濾掉非常多的數據的條件,放在where的末尾, 另外!=符號比較的列將不使用索引,列經過了計算(如變大寫等)不會使用索引(需要建立起函數), is null、is not null等優化器不會使用索引
7). 使用Exits Not Exits 替代 In Not in
8). 合理使用事務,合理設置事務隔離性
資料庫的數據操作比較消耗資料庫資源的,盡量使用批量處理,以降低事務操作次數
7. Oracle中字元串用什麼符號鏈接?
Oracle中使用 || 這個符號連接字元串 如 ‘abc’ || ‘d’
8. Oracle分區是怎樣優化資料庫的`?
Oracle的分區可以分為:列表分區、范圍分區、散列分區、復合分區。
1). 增強可用性:如果表的一個分區由於系統故障而不能使用,表的其餘好的分區仍可以使用;
2). 減少關閉時間:如果系統故障隻影響表的一部份分區,那麼只有這部份分區需要修復,可能比整個大表修復花的時間更少;
3). 維護輕松:如果需要得建表,獨產管理每個公區比管理單個大表要輕松得多;
4). 均衡I/O:可以把表的不同分區分配到不同的磁碟來平衡I/O改善性能;
5). 改善性能:對大表的查詢、增加、修改等操作可以分解到表的不同分區來並行執行,可使運行速度更快
6). 分區對用戶透明,最終用戶感覺不到分區的存在。
9. Oracle是怎樣分頁的?
Oracle中使用rownum來進行分頁, 這個是效率最好的分頁方法,hibernate也是使用rownum來進行oralce分頁的
select * from
( select rownum r,a from tabName where rownum <= 20 )
where r > 10
10. Oralce怎樣存儲文件,能夠存儲哪些文件?
Oracle 能存儲 clob、nclob、 blob、 bfile
Clob 可變長度的字元型數據,也就是其他資料庫中提到的文本型數據類型
Nclob 可變字元類型的數據,不過其存儲的是Unicode字元集的字元數據
Blob 可變長度的二進制數據
Bfile 資料庫外面存儲的可變二進制數據
11. Oracle中使用了索引的列,對該列進行where條件查詢、分組、排序、使用聚集函數,哪些用到了索引?
均會使用索引, 值得注意的是復合索引(如在列A和列B上建立的索引)可能會有不同情況
12. 資料庫怎樣實現每隔30分鍾備份一次?
通過操作系統的定時任務調用腳本導出資料庫
13. Oracle中where條件查詢和排序的性能比較?
Order by使用索引的條件極為嚴格,只有滿足如下情況才可以使用索引,
1). order by中的列必須包含相同的索引並且索引順序和排序順序一致
2). 不能有null值的列
所以排序的性能往往並不高,所以建議盡量避免order by
14. 解釋冷備份和熱備份的不同點以及各自的優點?
冷備份發生在資料庫已經正常關閉的情況下,將關鍵性文件拷貝到另外位置的一種說法
熱備份是在資料庫運行的情況下,採用歸檔方式備份數據的方法
冷備的優缺點:
1).是非常快速的備份方法(只需拷貝文件)
2).容易歸檔(簡單拷貝即可)
3).容易恢復到某個時間點上(只需將文件再拷貝回去)
4).能與歸檔方法相結合,作資料庫“最新狀態”的恢復。
5).低度維護,高度安全。
冷備份不足:
1).單獨使用時,只能提供到“某一時間點上”的恢復。
2).在實施備份的全過程中,資料庫必須要作備份而不能作其它工作。也就是說,在冷備份過程中,資料庫必須是關閉狀態。
3).若磁碟空間有限,只能拷貝到磁帶等其它外部存儲設備上,速度會很慢。
4).不能按表或按用戶恢復。
熱備的優缺點
1).可在表空間或數據文件級備份,備份時間短。
2).備份時資料庫仍可使用。
3).可達到秒級恢復(恢復到某一時間點上)。
4).可對幾乎所有資料庫實體作恢復。
5).恢復是快速的,在大多數情況下在資料庫仍工作時恢復。
熱備份的不足是:
1).不能出錯,否則後果嚴重。
2).若熱備份不成功,所得結果不可用於時間點的恢復。
3).因難於維護,所以要特別仔細小心,不允許“以失敗而告終”。
15. 解釋data block , extent 和 segment的區別?
data block 數據塊,是oracle最小的邏輯單位,通常oracle從磁碟讀寫的就是塊
extent 區,是由若干個相鄰的block組成
segment段,是有一組區組成
tablespace表空間,資料庫中數據邏輯存儲的地方,一個tablespace可以包含多個數據文件
;