風(fēng)哥oracle如何 oracle 風(fēng)哥

如何學(xué)習(xí)oracle

有一定的數(shù)據(jù)庫基礎(chǔ)嗎?沒有的話,建議從SQL語句學(xué)起。比較好的教材是Oracle OCP認證的《SQL and PL/SQL》。學(xué)習(xí)SQL的時候,盡可能堅持使用Oracle自帶的工具:SQLPLUS?!?/p>

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的濱州網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

有了一定的SQL基礎(chǔ)后,就要盡可能的了解Oracle的體系結(jié)構(gòu),這就涉及到了Oracle管理的內(nèi)容了?!禣racle10g OCP認證手冊》這本書不錯。

如果是初學(xué)者的話,到后期,不建議自己去摸索,因為這樣往往會如盲人摸象,不僅會事倍功半,而且會有一些錯誤的概念。你可以去CUUG報個DBA就業(yè)培訓(xùn)班進行學(xué)習(xí),主要是培訓(xùn)能獲得實踐和項目經(jīng)驗,這兩樣對日后找工作很重要。

如何遠程將oracle數(shù)據(jù)庫導(dǎo)出本地?

在虛擬機中打開運行輸入cmd

在彈出的命令行中輸入:exp用戶名/密碼@遠程oralce數(shù)據(jù)庫的IP:端口號/實例file=存放位置:\文件名.dmpfull=y。

如果不是dba的話會有如下提示

root用戶下首先切換到oracle用戶命令:?su-oracle

導(dǎo)出命令格式如下:expuser/pwd@SIDfile=path/sth.dmp其中:user/pwd是你要導(dǎo)出的表空間的oracle用戶的用戶名與密碼;SID為oracle啟動實例,一般為orcl。path是你導(dǎo)出的路徑;請注意最后面的sth.dmp不能少。

導(dǎo)入dmp文件-在oracle用戶下:兩種方法[oracle@system~]impuser/passwdfileName=fielPathfull=y(full不能少)

導(dǎo)入導(dǎo)出在oracle用戶下,文件file=路徑+dmp的文件名,都不能少。

如何分析Oracle

以oracle表分析為例:

drop table test;

select count(*) from test;

--創(chuàng)建測試表

create table test

(

id number(9),

nick varchar2(30)

);

--插入測試數(shù)據(jù)

begin

for i in 1..100000 loop

insert into test(id) values(i);

end loop;

commit;

end;

select * from test;

--更新nick字段,使數(shù)據(jù)發(fā)生嚴重傾斜

update test set nick='abc' where rownum99999;

--創(chuàng)建索引

create index idx_test_nick on test(nick);

update test set nick='def' where nick is null;

--只對索引進行分析

analyze index idx_test_nick compute statistics;

select * from user_indexes;

--查看索引名,對應(yīng)存儲的數(shù)據(jù)塊,不同的key數(shù)量,記錄數(shù)(行數(shù))的分析信息

select index_name, LEAF_BLOCKS, DISTINCT_KEYS, NUM_ROWS

from user_indexes

where index_name = 'IDX_TEST_NICK';

--dba_tab_col_statistics

--查看表的統(tǒng)計信息

select COLUMN_NAME, NUM_BUCKETS, num_distinct

from USER_tab_columns

where table_name = 'TEST';

select * from test where nick ='abc';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST'

2 1 INDEX (RANGE SCAN) OF 'IDX_TEST_NICK' (NON-UNIQUE)

select * from test where nick ='def';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST'

2 1 INDEX (RANGE SCAN) OF 'IDX_TEST_NICK' (NON-UNIQUE)

--由上可以看到,對索引分析之后,sql的執(zhí)行路徑都是基于規(guī)則的,索引的字段的偏移

--先根據(jù)索引找到rowid,然后再根據(jù)rowid讀取記錄,這個過程肯定比全表掃描讀取記錄要慢

--user_part_col_statistics 分區(qū)分析信息

--分析表的第二列nick

analyze table test compute statistics for columns size 2 nick;

select * from test where nick ='abc';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST'

2 1 INDEX (RANGE SCAN) OF 'IDX_TEST_NICK' (NON-UNIQUE)

--根據(jù)上面的執(zhí)行計劃,還是按照規(guī)則來執(zhí)行的

--分析表

analyze table test compute statistics for table;

select * from test where nick ='abc';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=49 Card=99998 Bytes=

1499970)

1 0 TABLE ACCESS (FULL) OF 'TEST' (Cost=49 Card=99998 Bytes=14

99970)

--分析表之后,完全按照成本來執(zhí)行

--刪除所有的統(tǒng)計數(shù)據(jù),并只對表與列進行分析,不分析索引,

--ORACLE使用CBO的優(yōu)化器,并產(chǎn)生了正確的執(zhí)行計劃

analyze table test delete statistics;

--分析列nick

analyze table test compute statistics for table for columns size 2 nick;

select * from test where nick ='abc';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=49 Card=99998 Bytes=

1499970)

1 0 TABLE ACCESS (FULL) OF 'TEST' (Cost=49 Card=99998 Bytes=14

99970)

--

select * from test where nick ='def';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=2 Bytes=30)

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST' (Cost=2 Card=2 Byt

es=30)

2 1 INDEX (RANGE SCAN) OF 'IDX_TEST_NICK' (NON-UNIQUE) (Cost

=1 Card=2)

--創(chuàng)建TEST表ID列上的索引,但不對索引進行分析

create index idx_test_id on test(id);

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1000 Bytes=15

000)

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST' (Cost=2 Card=1000

Bytes=15000)

2 1 INDEX (RANGE SCAN) OF 'IDX_TEST_ID' (NON-UNIQUE) (Cost=1

Card=400)

--當條件中即有id,又有nick時,因為nick上有直方圖,ORACLE知道nick='abc'的值特別的多,所以不走IDX_TEST_NICK索引,走IDX_TEST_ID上的索引

select * from test where id=5 and nick='abc';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1000 Bytes=15

000)

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST' (Cost=2 Card=1000

Bytes=15000)

2 1 INDEX (RANGE SCAN) OF 'IDX_TEST_ID' (NON-UNIQUE) (Cost=1

Card=400)

--當條件中即有id,又有nick時,因為nick上有直方圖,ORACLE知道nick='def'的值特別的少,所以走IDX_TEST_NICK上的索引,不走IDX_TEST_ID索引

select * from test where id=5 and nick='def';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=15)

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST' (Cost=2 Card=1 Byt

es=15)

2 1 INDEX (RANGE SCAN) OF 'IDX_TEST_NICK' (NON-UNIQUE) (Cost

=1 Card=2)

select * from test where nick='def' and id=5;

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=15)

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST' (Cost=2 Card=1 Byt

es=15)

2 1 INDEX (RANGE SCAN) OF 'IDX_TEST_NICK' (NON-UNIQUE) (Cost

=1 Card=2)

--在分析ID列后,ORACLE發(fā)現(xiàn)ID列的選擇度更高,所以不再選擇IDX_TEST_NICK索引,而是選擇IDX_TEST_ID

analyze table test compute statistics for columns size 1 id;

select * from test where id=5 and nick='def';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=7)

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST' (Cost=2 Card=1 Byt

es=7)

2 1 INDEX (RANGE SCAN) OF 'IDX_TEST_ID' (NON-UNIQUE) (Cost=1

Card=1)

/*

下面來看另外一種情況,我們刪除所有的統(tǒng)計數(shù)據(jù),然后在ID列上創(chuàng)建唯一索引,在此條件下,

只分析表與分析列nick,我們看到ORACLE走了正確的執(zhí)行計劃,

走了UK_TEST_ID,其實從這里也給我們帶來很多的啟示:

在主鍵與唯一鍵約束的列上是否需要直方圖的問題?

如果在這些列上有像這樣的查詢where id 100 and id 1000,

我們還是需要有直方圖的,但除此之外,好像真的沒有直方圖的必要了!

*/

analyze table test delete statistics;

drop index idx_test_id;

create unique index uk_test_id on test(id);

--分析表的第二列nick

analyze table test compute statistics for table for columns size 2 nick;

select * from test where id=5 and nick='def';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=15)

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST' (Cost=2 Card=1 Byt

es=15)

2 1 INDEX (UNIQUE SCAN) OF 'UK_TEST_ID' (UNIQUE) (Cost=1 Car

d=100000)

從以上一系列的實驗可以看出,對ORACLE的優(yōu)化器CBO來說,表的分析與列的分析才是最重要的,索引的分析次之。還有我們可以考慮我們的哪些列上需要直方圖,對于bucket的個數(shù)問題,oracle的默認值是75個,所以根據(jù)你的應(yīng)用規(guī)則,選擇合適的桶數(shù)對性能也是有幫助的。因為不必要的桶的個數(shù)的大量增加,必然會帶來SQL語句硬解析時產(chǎn)生執(zhí)行計劃的復(fù)雜度問題。

如何正確安裝oracle

Oracle 11g 64位/32位官方版(附詳細的安裝圖解教程)

Oracle 11g安裝圖解教程

安裝以win7 64位系統(tǒng)為例

1、將win64_11gR2_database_1of2和win64_11gR2_database_2of2解壓到同個文件夾下合并(可以直接左鍵框住右鍵點擊一起解壓),打開運行其中的setup開始安裝,如圖所示:

2、稍后進入Oracle 11g安裝界面(如下圖:)

3、【配置安全更新】郵箱以及口令可以不寫,點擊下一步,出現(xiàn)提醒,直接點是即可。

4、【安裝選項】直接選擇默認創(chuàng)建和配置一個數(shù)據(jù)庫(安裝完Oracle后,系統(tǒng)會自動創(chuàng)建一個數(shù)據(jù)庫實例)。

5、【系統(tǒng)類】個人用戶直接選擇默認的桌面類就可以了,如圖所示:

6、【典型安裝】Oracle基目錄,軟件目錄,和數(shù)據(jù)庫文件目錄,Oracle一般會自動幫你選擇空間最大的盤和你解壓文件的盤符,全部默認即可。管理口令需要輸入(大寫+小寫+數(shù)字)的八位密碼,也有網(wǎng)友指出此處可以隨意設(shè)置簡單好記的密碼,無視軟件提醒即可。

7、【先決條件檢查】安裝程序會檢查軟硬件系統(tǒng)是否滿足此Oracle版本的最低要求,安裝需要占用約2G的C盤空間,內(nèi)存2G以上即可。如果還是通不過要求,選擇全部忽略。

8、【概要】安裝前的一些相關(guān)選擇配置信息,點擊完成。

9、安裝正在進行中,請耐心等待。。。。如圖所示:

10、Oracle實例創(chuàng)建啟動完成后,會自動創(chuàng)建安裝一個實例數(shù)據(jù)庫名稱orcl123,(小編用的是orcl123,默認為orcl名稱的數(shù)據(jù)庫)。

11、 安裝完成,運行開始菜單Oracle - OraDb11g_home1Database Control - orcl123,以IE運行進入登錄界面或打開ie直接輸入即可 (此處如果出現(xiàn)證書錯誤的話,點擊繼續(xù)瀏覽此網(wǎng)站即可)。

12、登錄界面,輸入用戶名"SYS",口令為之前注冊設(shè)置的管理密碼,將連接身份改為SYSDBA,點擊登錄,成功之后你就可以管理你的數(shù)據(jù)庫實例了。

標題名稱:風(fēng)哥oracle如何 oracle 風(fēng)哥
網(wǎng)站鏈接:http://m.kartarina.com/article12/hjgjgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站制作、靜態(tài)網(wǎng)站、營銷型網(wǎng)站建設(shè)、微信小程序、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
主站蜘蛛池模板: 亚洲a∨无码男人的天堂| 国产激情无码一区二区三区| 久久无码精品一区二区三区| 无码无套少妇毛多69XXX| 东京热人妻无码人av| 人妻中文字系列无码专区| 曰韩无码无遮挡A级毛片| 无码少妇一区二区| 精品久久久无码中文字幕 | 无码综合天天久久综合网| 精品无码久久久久久国产| 噜噜综合亚洲AV中文无码| 国产亚洲大尺度无码无码专线| 一本色道久久HEZYO无码| 亚洲一区二区三区无码国产| 亚洲人成影院在线无码按摩店| 午夜不卡无码中文字幕影院| 国产强被迫伦姧在线观看无码| 午夜福利无码不卡在线观看| 手机在线观看?v无码片| 亚洲6080yy久久无码产自国产| 九九久久精品无码专区| 精品无码国产自产拍在线观看| 国产精品无码午夜福利| 国产成人无码18禁午夜福利p| 国产精品一区二区久久精品无码 | 久久综合精品国产二区无码| 精品国产v无码大片在线观看 | 亚洲国产AV无码一区二区三区| 日韩av片无码一区二区三区不卡| 亚洲AV无码不卡在线观看下载| 亚洲AV中文无码乱人伦在线视色| 久久久久亚洲av无码专区| 国产日韩精品无码区免费专区国产| 无码孕妇孕交在线观看| 中文无码AV一区二区三区| 无码色AV一二区在线播放| 人妻丰满?V无码久久不卡| 国产强伦姧在线观看无码| 久久久久无码精品| 在线精品自拍无码|