1. 同義詞的使用

(1) 什麼是Oracle的同義詞?

同義詞可以出去對象名必須帶的方案限制,並提供給你一個可替換表名,視圖名,序列名和存儲過程名或其他對象名.該方法對具有特別長的對象的名字很有用.

(2) 創建同義詞的語法結構是什麼?

Create synonym 別名 for 表名

(3) 刪除同義詞的語法結構是什麼?

Drop synonym 別名

2. 創建用戶

(1) 什麼是Oracle的用戶?

Oracle用戶是用來連接資料庫和訪問資料庫對象的

(2) 創建用戶的語法結構是什麼?

Create user 用戶名 identified by 用戶摩瑪

(3) 刪除用戶的語法結構是什麼?

Drop user 用戶名

(4) 刪除用戶同時刪除該用戶下的其他對象的語法結構是什麼?

Drop user 用戶名 cascaed

3. 授予用戶系統許可權

(1) 資料庫控制語言的作用是什麼?

Grant 許可權名 to 表名 授予用戶許可權

Revork 許可權名 from 表名 撤銷用戶許可權

授予創建其他對象許可權

Create session 授予創建用戶的許可權

Create table 創建表的許可權

Create sequence

Create view

Create procedure

Unlimited tablespace 無限制的使用表空間的許可權

格式

Grant create session,unlimited tablespace ... to 用戶名

4. 撤銷用戶系統許可權

(1) 撤銷許可權的句法結構是什麼?

Revork 許可權名 from 表名

5. 通過角色為用戶授權

(1) 什麼是角色?

角色是命名的可以授予用戶的相關許可權的組,該方法使得授予,撤回,維護許可權容易的多.一個用戶可以使用幾個角色,並且幾個用戶也可以被指定相同的角色

(2) 創建角色的語法結構是什麼?

Create role manager

(3) 為角色授予許可權的語法結構是什麼?

Grant create table,create view ... to manager

(4) 為用戶授予角色的語法結構是什麼?

Grant 角色名to 用戶名

(5) 撤銷用戶角色的語法結構是什麼?

Revoke manager from newbjsxt

6. 什麼是執行計劃

(1) 什麼是執行計劃?

執行計劃是一條查詢語句在Oracle中的執行過程或訪問路徑的描述

(2) 執行計劃中的Cardinality、Bytes、COST、Time欄位分別表示什麼含義?

基數(Cardinality):Oracle估計的當前操作的返回結果集行數

位元組(Bytes):執行該步驟後返回的位元組數

耗費(Cost),CPU耗費:Oracle估計的該步驟的執行成本,用於說明SQL執行的代價,理論上越小越好(該值可能與實際有出入)

時間(Time):Oracle 估計的當前操作所需時間

(3) 執行計劃中的執行順序是什麼順序?

縮進最多的最先執行:(縮進相同時,最上面的最先執行)

7. 執行計劃中的表與索引的訪問方式

(1) 資料庫中的TABLE ACCESS FULL表示什麼含義?

1. 全表掃描

Oracle會讀取表中所有的行,並檢查,每一行是否滿足SQL語句中Where限制條件;

使用建議:數據量太大的表不建議使用全表掃描,出發本身需要取出的數據較多,佔到表總量的5%-10%或以上

(2) 資料庫中的TABLE ACCESS BY INDEX ROWID表示什麼含義?

通過rowid的表存取

1. 什麼是rowid

Rowid是由Oracle自動加在表中每行最後的一列偽列,既然是偽列,就說明表中並不會物理存儲rowid的值.

你可以像使用其他列一樣使用它,只是不能對該列的值進行增,刪,改操作.

一旦一行數據插入後,則其對應的rowid在該列的生命週期內是唯一的,即使發生行遷移,該行的rowid值也不變

2. table access by index rowid

行的rowid指出了該行所在的數據文件,數據塊以及行在該塊中的位置,所以通過rowid可以迅速定位到目標數據上,這也是Oracle中存取單行數據最快的方法

(3) 資料庫中的TABLE ACCESS BY INDEX SCAN表示什麼含義?

1. (索引掃描)

在索引塊中,既存儲每個索引的鍵值,也存儲具有該鍵值的行的rowid

2. 五種索引掃描

Index unique scan(索引唯一掃描)

Index range scan (索引範圍掃描)

Index full scan (索引全掃描)

Index fast full scan(索引快速掃描)

Index skip scan(索引跳躍掃描)

3. 具體索引掃描功能

2.1.index unique scan(索引唯一掃描)

針對唯一性索引(unique index)的掃描,每次至多隻返回一條記錄

表中某欄位存在 unique ,primary key約束時,Oracle常實現唯一性掃描

2.2.index range scan(索引範圍掃描)

使用一個索引存取多行數據

發生索引範圍掃描的三種情況

1. 在唯一性索引列上使用了範圍操作符,如(>,<,<>,>=,<=,between);

2. 在組合索引上,只使用了部分列進行查詢(查詢時必須包含前導列,否則會走全表掃描)

3. 對非唯一性索引列上進行的任何查詢;

2.3.index full scan (索引全掃描(默認排序))

進行全索引掃描時,查詢出的數據都必須從索引中可以直接得到

2.4. index fast full scan(索引快速掃描(索引全掃描不排序))

掃描索引中的所有資料庫,與 index full scan 類似,但是一個顯著的區別是它不對查詢出的數據進行排序(返回時的數據不是排序的)

2.5.index skip scan(索引跳躍掃描)

表有一個複合索引,且查詢時有除了前導列(索引中的第一列)外的其他列作為條件

5.23.Oracle的優化器種類

RBO:基於規則的優化器

CBO:基於代價的優化器

5.2.4.2 RBO 優化器

RBO 有嚴格的使用規則,只要按照這套規則去寫 SQL 語句,無論數據表中的內容怎樣,

也不會影響到你的執行計劃。換句話說,RBO 對數據「不敏感」,它要求 SQL 編寫人員必

須要了解各項細則。RBO 一直沿用至 ORACLE 9i,從 ORACLE 10g 開始,RBO 已經徹底

被拋棄。

5.24.3. CBO優化器

CBO是一種比RBO更加合理,可靠的優化器,在oracle 10g中完全取得RBO.CBO通過計算各種可能的執行計劃的』代價』(COST),從中選用cost最低的執行方案作為實際運行方案.

8. 執行計劃的使用

(1) 通過執行計劃分析查詢employees表中的所有數據的查詢語句。

select * from employees;全表掃描

(2) 通過執行計劃分析查詢employees表中employees_id為100的僱員的查詢語句。

select * from employees where employee_id=100;索引掃描

(3) 通過執行計劃分析查詢僱員名字為Tarloy的僱員的查詢語句。

select * from employees where employees.last_name=Tarloy;索引範圍掃描

(4) 通過執行計劃分析查詢僱員名字中含有a的僱員的查詢語句。通過執行計劃分析查詢僱員名字中含有a的僱員的查詢語句。

select * from employees where last_name like %a%;全表掃描

9. Oracle的數據導入與導出

(1) 資料庫導入導出需要注意什麼?

1. 目標資料庫要與源資料庫有著名稱相同的表空間

2. 目標數據在進行導入時,用戶名盡量相同(這樣保證用戶的許可權級別相同)

3. 目標資料庫每次在進行數據導入前,應做好數據備份,以防數據丟失

4. 弄清楚導入導出到相同版本還是不同版本

5. 目標數據導入前,弄清楚是數據覆蓋(替換),還是僅插入新數據或替換部分數據表

6. 確定目標資料庫磁碟空間是否足夠容納新數據,是否需要擴充表空間

7. 導入導出時注意字符集是否相同,一般Oracle資料庫的字符集只有一個,並且固定,一般不改變

8. 確定操作者的賬號許可權

(2) 導出數據格式有幾種?每種的特點是什麼?

Dmp格式:dmp是二進位文件,可跨平臺,還能包含許可權,效率好

Sql格式:.sql格式的文件,可用文本編輯器查看,通用性比較好,效率不如第一種,適合小數據量導入導出.尤其注意的是表中不能有大欄位(blob,clob,long),如果有,會報錯.

Pde格式:.pde格式的文件,.pde為PL/SQL Developer自有的文件格式,只能用PL/SQL Developer工具導入導出,不能用文本編輯器查看

10. exp與imp命令講解

1. 命令執行方式

該命令需要在操作系統的命令窗口(cmd)執行,而非sql/plus

2. 命令格式

Exp|imp 用戶名/密碼@連接地址:埠/服務名 file=路徑/文件名.dmp full=y|tables(tablename,tablename....)|owner(username1,username2,...)

Exp|imp:導出,導入命令(必寫)

Usename:導出數據的用戶名必寫

Password;導出數據的密碼 必寫

@:地址符號 必寫

Servicename:oracle的服務名,必寫

1521:埠號,1521是默認的可以不寫,非默認的要寫

File=文件名.dmp :文件的存放路徑地址,非默認要寫

Full=y:表示全庫導出.可以不寫,則默認為no,則只導出用戶下的對象

Table:表示只導出那些表

Owner:導出該用戶下對象

Full|tables|owner:只能選擇一種

(1) 導出數據的命令格式是什麼?

Exp 用戶名/密碼@oracle的連接地址:埠/需要導出的服務名 file=路徑/文件名.dmp

(2) 導入數據的命令格式是什麼?

imp用戶名/密碼@oracle的連接地址:埠/需要導出的服務名 file=路徑/文件名.dmp

Imp hr/12345@localhost:1521/orcl file=d:/l.dmp


推薦閱讀:
相關文章