1.語法檢查:檢查 SQL 拼寫是否正確,如果不正確,Oracle 會(huì)報(bào)語法錯(cuò)誤。
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、皋蘭ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的皋蘭網(wǎng)站制作公司
2.語義檢查:檢查 SQL 中的訪問對象是否存在。比如我們在寫 SELECT 語句的時(shí)候,列名寫錯(cuò)了,系統(tǒng)就會(huì)提示錯(cuò)誤。語法檢查和語義檢查的作用是保證 SQL 語句沒有錯(cuò)誤。
3.權(quán)限檢查:看用戶是否具備訪問該數(shù)據(jù)的權(quán)限。
4.共享池檢查:共享池(Shared Pool)是一塊內(nèi)存池,最主要的作用是緩存 SQL 語句和該語句的執(zhí)行計(jì)劃。Oracle 通過檢查共享池是否存在 SQL 語句的執(zhí)行計(jì)劃,來判斷進(jìn)行軟解析,還是硬解析。那軟解析和硬解析又該怎么理解呢?在共享池中,Oracle 首先對 SQL 語句進(jìn)行 Hash 運(yùn)算,然后根據(jù) Hash 值在庫緩存(Library Cache)中查找,如果存在 SQL 語句的執(zhí)行計(jì)劃,就直接拿來執(zhí)行,直接進(jìn)入“執(zhí)行器”的環(huán)節(jié),這就是軟解析。如果沒有找到 SQL 語句和執(zhí)行計(jì)劃,Oracle 就需要?jiǎng)?chuàng)建解析樹進(jìn)行解析,生成執(zhí)行計(jì)劃,進(jìn)入“優(yōu)化器”這個(gè)步驟,這就是硬解析。
5.優(yōu)化器:優(yōu)化器中就是要進(jìn)行硬解析,也就是決定怎么做,比如創(chuàng)建解析樹,生成執(zhí)行計(jì)劃。
6.執(zhí)行器:當(dāng)有了解析樹和執(zhí)行計(jì)劃之后,就知道了 SQL 該怎么被執(zhí)行,這樣就可以在執(zhí)行器中執(zhí)行語句了。
共享池是 Oracle 中的術(shù)語,包括了庫緩存,數(shù)據(jù)字典緩沖區(qū)等。我們上面已經(jīng)講到了庫緩存區(qū),它主要緩存 SQL 語句和執(zhí)行計(jì)劃。而數(shù)據(jù)字典緩沖區(qū)存儲(chǔ)的是 Oracle 中的對象定義,比如表、視圖、索引等對象。當(dāng)對 SQL 語句進(jìn)行解析的時(shí)候,如果需要相關(guān)的數(shù)據(jù),會(huì)從數(shù)據(jù)字典緩沖區(qū)中提取。
如何避免硬解析,盡量使用軟解析呢?在 Oracle 中,綁定變量是它的一大特色。綁定變量就是在 SQL 語句中使用變量,通過不同的變量取值來改變 SQL 的執(zhí)行結(jié)果。
Oracle
RDBMS執(zhí)行每一條SQL語句,都必須經(jīng)過Oracle優(yōu)化器的評估。所以,了解優(yōu)化器是如何選擇(搜索)路徑以及索引是如何被使用的,對優(yōu)化SQL語句有很大的幫助。Explain可以用來迅速方便地查出對于給定SQL語句中的查詢數(shù)據(jù)是如何得到的即搜索路徑(我們通常稱為Access
Path)。從而使我們選擇最優(yōu)的查詢方式達(dá)到最大的優(yōu)化效果。
1.1
、安
裝
要使用EXPLAIN首先要執(zhí)行相應(yīng)的腳本,創(chuàng)建出Explain_plan表。
具體腳本執(zhí)行如下:
$ORACLE_HOME/rdbms/admin/utlxplan.sql
(UNIX)
該腳本后會(huì)生成一個(gè)表這個(gè)程序會(huì)創(chuàng)建一個(gè)名為plan_table的表。
1.2
、使用
常規(guī)使用語法:
explainPLAN[SETSTATEMENT_ID[=]
評論
加載更多
Oracle執(zhí)行外部文件:
c:sqlplus
user/pwd@db
sql@new.sql
執(zhí)行多個(gè)sql文件:
1.把所有的文件都放在同一個(gè)目錄下,然后在命令行里執(zhí)行命令:
c:dir/b
d:/1.sql
會(huì)把所有的sql文件名都輸出到一個(gè)sql文件中。
2.用UltraEdit打開生成的sql文件,alt+C切換到column
mode,給所有的行前都添加一個(gè)"@",保存。
3.在sqlplus中執(zhí)行"@d:/1.sql"
如何避免''字符:
sql中可以傳遞參數(shù),但有時(shí)需要插入'',例:
SQL
select
'hello'
v
from
dual;
輸入
hello
的值:
hello
原值
1:
select
'hello'
v
from
dual
新值
1:
select
'hello'
v
from
dual
v
-----
hello
可以使用如下方法避免:
A:
SQL
select
chr(38)
||
'hello'
v
from
dual;
V
------
hello
B:
SQL
set
define
off
SQL
select
'hello'
v
from
dual;
V
------
hello
網(wǎng)站題目:oracle如何執(zhí)行 oracle如何執(zhí)行sqlloader
分享地址:http://chinadenli.net/article24/hgogje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、微信公眾號、外貿(mào)建站、定制開發(fā)、虛擬主機(jī)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)