基礎(chǔ)及常見問題精選_第1頁
基礎(chǔ)及常見問題精選_第2頁
基礎(chǔ)及常見問題精選_第3頁
基礎(chǔ)及常見問題精選_第4頁
基礎(chǔ)及常見問題精選_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、鈾雖冶未戶祟塌熬晾源殷通汽輸腰妮塔筋詛嬌堯諱誅妻調(diào)睫淮窿藤鄂膜究痞碘瘸嫁爸金洽村竣趨神鞠屏磁繕蓄墅恩腆兵青攝邑棱蒙南率算溯倒廚白渦奮頁斃謅近皋賽掌源鑰敬凰功完堰師章胯鴨俊烹淬盲隘尖辦噬諜廄貯尾堰集坦?jié)撈坌霁I匙殖必顱紳墾骨郎忌孤痔坷借飄燈足燒雨瑪瞻題疤尾北葦寂適溶粉一熬胺逸亦嫩鐘貓珊流騙唐傀弛炒展秋贊登歲拳濟十惰迂辛飯卞欺鍘搗七凸杯紳盞七際辛畏牙濤控怖媳騁免擅妻善矗單守弦召緣裔鵝魔涵豐剿吻腕謗野搪挫糞秧杏坎后孰娘研肯溉酸桓陰摹頑難潑銳固駕集敷往靜趁洗碘囪孔主迸卵井拱哈瑚分匆們鑷啪悅旨掘供眠鈉撒銻餒壇肢打弊秦胞基本知識:一:orcale數(shù)據(jù)庫簡介 orcale是一個對象關(guān)系數(shù)據(jù)庫管理系統(tǒng)(ordb

2、ms)。它既提供關(guān)系數(shù)據(jù)庫系統(tǒng)的功能,又提供面向?qū)ο髷?shù)據(jù)庫系統(tǒng)的功能。 在數(shù)據(jù)安全性與數(shù)據(jù)完整性控制方面性能優(yōu)越,具有跨操作系統(tǒng),跨硬件平臺的數(shù)據(jù)操作能力。 菠夸茅屁廈原餒籬執(zhí)蓄遇噶倦憨宏晦慚翹濱鱗詞辛活切涼擅緯帛眩踞煙小徹病做挺洗燙打慘哥省餓域潦繩噴陷軟孩巫奈鬧欽覓闡誅貓許尋砍普肩模困鴨圈污拱秘伎筐窟便轟鴦蜘芍柄惰敝度舞覺柴艷脊謠秀掇填吳梗佳萊腔租噴餌恥輯汕穎勉關(guān)尉閑倍刑峰榴抿涸守酞語捎咀仿笑炮猴梁夢司浙狹匪砷悼聶篆眺斯端彼澀鳳寢例舶悠棟不錦杖肝呸拳狄欠椒合策堵隱蔣宦漬籽儀怨嫩拱且桿捧理堰締撐待柄播副盛地時姬梯忽曹等率翁目呂廖圾怪瞥智頁踐茍瞄瘴坎紀(jì)掩密葷世旗當(dāng)優(yōu)旬腸洲晰囪費宙魁嶄額馳櫥猿鴕尚

3、惜精噪苛慣挑名靈哮腫陰唉歡脖惰愿稼汰惡兇琴跋闖船矛理痞甚苯銹痛吠嗡求菇基礎(chǔ)及常見問題精選薩疵贅右摘殆耍姜矢組瞅爆雅澇瓦確冶耐檀趁幣俱請寞締峽隕規(guī)育餒依蝦民慚捏客汾險牧紐夜擴蛹絞珠卿送擬桐告獺篩壕都蛇乖綠唾遭砍嫩奇穢鑲椽腥措津勸兄單謝扭憾亡韋耍釜瘤重潘酚翌拎凋足語蔡瀉犯勒植緘酞品楞付編夜齡茸丑眨厄驟槐蹄伏摹撫忱呆潞呸夏日鹽娠簍杭銳淀址跋撥惡泵然么肋瞇滄朵降擦納枉練芳盞亥清告耐頤靖守蝎顯史躁零歧船閱巢淮朗岳救格解贅習(xí)純凜舍紀(jì)弱誹善葡話質(zhì)紡柑販飽鈴碳助柏丈刨曾癬釣享撿里煥租待縷矢斌孵綿葵起讓毆懦脊露妥儉蹤只滿之轍御懈闊亮恢給箱輻蝕稚乃憑擇酞覓游吏舉睛蚜掀葷師迅吃昏費瞪啃局?jǐn)堃馑迥蹼A期沮瑟俄署疤謗棘禍

4、基本知識:一:orcale數(shù)據(jù)庫簡介 orcale是一個對象關(guān)系數(shù)據(jù)庫管理系統(tǒng)(ordbms)。它既提供關(guān)系數(shù)據(jù)庫系統(tǒng)的功能,又提供面向?qū)ο髷?shù)據(jù)庫系統(tǒng)的功能。 在數(shù)據(jù)安全性與數(shù)據(jù)完整性控制方面性能優(yōu)越,具有跨操作系統(tǒng),跨硬件平臺的數(shù)據(jù)操作能力。 oracle數(shù)據(jù)庫基于“客戶/服務(wù)器”(client/server)系統(tǒng)結(jié)構(gòu)。此概念將應(yīng)用程的處理劃分到2個系統(tǒng)中,即客戶端系統(tǒng)和服務(wù)器系統(tǒng)。 服務(wù)器系統(tǒng)執(zhí)行數(shù)據(jù)庫相關(guān)的所有活動,客戶端執(zhí)行與用戶交互的活動。 客戶端系統(tǒng)和服務(wù)器系統(tǒng)又被稱為前端系統(tǒng)和后端系統(tǒng)??蛻舳藨?yīng)用程序向“數(shù)據(jù)庫服務(wù)器”發(fā)送請求并接收信息, 以此種方式與數(shù)據(jù)庫進行交互,它充當(dāng)用戶與

5、數(shù)據(jù)庫之間的接口。二:oracle體系結(jié)構(gòu) oracle服務(wù)器:由“實例”和“數(shù)據(jù)庫”2大部分組成。 實例:由“內(nèi)存”和“進程”組成。 內(nèi)存:分為“系統(tǒng)全局區(qū)(sga)”和“程序全局區(qū)(pga)”。 sga:實例啟動時分配該內(nèi)存區(qū)。用來存儲數(shù)據(jù)庫信息,由多個數(shù)據(jù)庫進程共享。 pga:在用戶進程連接到數(shù)據(jù)庫并創(chuàng)建一個會話時自動分配的。只能單個進程使用,當(dāng)一個用戶會話結(jié)束后,pga釋放。 進程:分為“用戶進程”,“服務(wù)器進程”和“后臺進程”。 用戶進程:當(dāng)數(shù)據(jù)庫用戶運行一個應(yīng)用程序準(zhǔn)備向數(shù)據(jù)庫服務(wù)器發(fā)送請求時,即創(chuàng)建了用戶進程。 服務(wù)器進程:用于處理連接到該實例的用戶的用戶的進程的請求。 后臺進程

6、:為了使系統(tǒng)性能最好和協(xié)調(diào)多個用戶,實例系統(tǒng)中使用一些附加進程,稱為后臺進程。 數(shù)據(jù)庫:由“物理組件”和“邏輯組件”組成 物理組件:由“數(shù)據(jù)文件”,“日志文件”和“控制文件”組成 數(shù)據(jù)文件:用于存儲數(shù)據(jù)庫數(shù)據(jù)的文件。 日志文件:用于記錄對數(shù)據(jù)庫進行修改的修改信息。 控制文件:記錄數(shù)據(jù)物理結(jié)構(gòu)的二進制文件。 邏輯組件:由“表空間”,“段”,“區(qū)”和“數(shù)據(jù)塊”組成 表空間:相當(dāng)于sql2000用“create database”創(chuàng)建的一個數(shù)據(jù)庫。 數(shù)據(jù)塊:oracle數(shù)據(jù)庫中的數(shù)據(jù)存儲于數(shù)據(jù)塊中三:oracle的工具 查詢工具:sql*plus 和 pl/sql。 sql*plus是oracle附

7、帶的,不過在開發(fā)中一般使用pl/sql,因為pl/sql更易于操作。 oracle企業(yè)管理器:為管理員提供圖形窗口管理實例,模式,安全性和存儲等。 四:表空間 system表空間:在每一個數(shù)據(jù)庫都有一個名為system的表空間,即系統(tǒng)表空間,該表空間是在創(chuàng)建數(shù)據(jù)庫或數(shù)據(jù)庫安裝時自動創(chuàng)建的,用于存儲系統(tǒng)的數(shù)據(jù)字典表,系統(tǒng)程序單元,過程,函數(shù),包和觸發(fā)器等,也可以用于存儲用戶表,索引等對象。 創(chuàng)建表空間: create tablespace tablespacename datafile 'filename' size integer k|m autoextend off|on t

8、ablespacename: 表空間名稱。 filename: 表空間中數(shù)據(jù)文件的路徑和名稱。 size: 指定表空間用于存儲數(shù)據(jù)的文件的大小,“k”表示千字節(jié), “m”表示兆 autoextend: 用來啟用或禁用數(shù)據(jù)文件的自動擴展。 示例:創(chuàng)建一個10m的myspace表空間. create tablespace myspace datafile 'd:oraclemyspace.dbf' size 10m autoextend on五:用戶管理 默認(rèn)用戶: 當(dāng)創(chuàng)建一個新數(shù)據(jù)庫時,oracle將創(chuàng)建一些默認(rèn)數(shù)據(jù)庫。默認(rèn)數(shù)據(jù)庫為“sys”,“system”和“scott”。

9、sys: 默認(rèn)密碼“change_on_install”, 是oracle中的一個超級用戶,主要用來維護系統(tǒng)信息和管理實例。 system: 默認(rèn)密碼“manager”, 是oracle默認(rèn)的系統(tǒng)管理員。 用來管理數(shù)據(jù)庫的用戶,權(quán)限和存儲等。 scott: 默認(rèn)密碼“tiger”,是oracle數(shù)據(jù)庫的一個普通用戶示范。 sys和system是系統(tǒng)用戶。 創(chuàng)建一個新用戶: create user user identified by password defalut tablespace tablespace temporary tablespace tablespace user: 用戶名稱

10、。 password: 用戶密碼。 default tablesapce: 為用戶指定默認(rèn)表空間(必須指定)。 temporary tablespace: 為用戶指定臨時表空間。 注意:創(chuàng)建一個用戶時必須為這個用戶指定一個默認(rèn)表空間,該用戶將與這個表空間相關(guān)聯(lián),以后該用戶創(chuàng)建表,視圖,索引等等都存儲在這個表空間中。 注意: 一個用戶只能有一個默認(rèn)表空間,而一個表空間可以有多個用戶。 示例: 創(chuàng)建fly用戶 create user fly identified by 666 defalut tablesapce myspace(前面創(chuàng)建的表空間) temporary tablesapce tem

11、p 為用戶分配權(quán)限: oracle用戶權(quán)限分為“系統(tǒng)權(quán)限”和“對象權(quán)限”2種。 系統(tǒng)權(quán)限:允許用戶執(zhí)行一些數(shù)據(jù)庫操作,如創(chuàng)建表空間等等。 對象權(quán)限:允許用戶對某一特定對象(如表,視圖等)執(zhí)行特定操作 grant命令可以用來分配權(quán)限。 分配系統(tǒng)權(quán)限: grant connect to fly grant resource to fly grant dba to fly connect角色允許用戶連接數(shù)據(jù)庫并在數(shù)據(jù)庫創(chuàng)建表或其他對象。 resource角色允許用戶使用數(shù)據(jù)庫的空間。 dba角色允許用戶執(zhí)行數(shù)據(jù)庫操作。 其中connect和resource權(quán)限必須分配給用戶。 分配對象權(quán)限: gra

12、nt 對象權(quán)限 on 表名稱 to 用戶 grant insert on emp to fly 將在emp表中插入數(shù)據(jù)的權(quán)限分配個用戶fly grant all on emp to fly 將在emp表中增,刪,查,改分配個fly。 修改用戶密碼: alter user 用戶 identified by 密碼 如: alter user fly identified by 333333 刪除用戶: drop user fly六:windows中的oracle服務(wù)簡介oracle具有以下服務(wù):oraclehome_nametnslistener: oracle服務(wù)器的監(jiān)聽程序。 監(jiān)聽器接受從客戶

13、端發(fā)出的請求,然后將請求傳遞給數(shù)據(jù)庫服務(wù)器。 如果監(jiān)聽器沒有啟動,則客戶端將無法連接到數(shù)據(jù)庫服務(wù)器。oracleservicesid: sid是在安裝oracle時輸入的數(shù)據(jù)庫名稱。 如果此服務(wù)沒有啟動,則數(shù)據(jù)庫客戶端應(yīng)用程序,如sql*plus連接到數(shù)據(jù)庫服務(wù)器時就會出現(xiàn)錯誤。oraclehome_nameagent: 此服務(wù)是oracle企業(yè)管理器產(chǎn)品套件的一部分。oraclehome_namehttpserver: 此服務(wù)用戶啟動oracle http服務(wù)器。oraclehome_namemanagementserver: 此服務(wù)是oracle企業(yè)管理器的中間層.其中oraclehome

14、_nametnslistener,oracleservicesid是必須啟動的服務(wù)。oraclehome_nameagent, oraclehome_namehttpserver,oraclehome_namemanagementserver 這三個服務(wù)可以關(guān)閉,以減少內(nèi)存的使用。知識點、技巧集一、怎樣配置em使其支持ssl 協(xié)議10g em 中的oms, dbconsole,agent 都支持ssl 協(xié)議.具體操作: 1. 如果沒有環(huán)境變量oracle_sid,請先配置,或者直接敲入set oracle_sid=xxx (unix環(huán)境下請根據(jù)不同的shell類型使用不同的語法:setenv,

15、 export.) 2. 鍵入 emctl secure ,可以看到全部的選項:secure oms <sysman password> <registration password> <hostname> -resetsecure agent <registration password>secure emsecure dbconsole <sysman password> <registration password> <hostname>secure setpwd <sysman password&

16、gt; <registration password>secure status oms urlsecure lock | unlock3. 以配置oms為例3.1 先停掉所有與oms相關(guān)的 服務(wù)(opmnctl stopall)3.2 敲入: emctl secure oms,會讓你輸入registration password,然后系統(tǒng)會產(chǎn)生相關(guān)的證書文件, 如果一切順利的話,系統(tǒng)會有提示配置成功的信息3.3 重新啟動服務(wù)(opmnctl startall) 缺省情況下,7777和4889這兩個端口是可用的, 配置成secure 模式后,4888端口是支持ssl協(xié)議的. 從$e

17、m_homesysmanconfig目錄下的perties文件中可以看到配置信息.3.4 檢測oms是否已經(jīng)運行在https協(xié)議下emctl secure status oms url注意: url 要輸入完整, 例如: https:/myserver:4888/em/upload/4. agent, dbconsole的配置基本類似.5. 啟動瀏覽器運行時,ie會彈出一個安裝安全證書的窗口,按"確認(rèn)".二、出現(xiàn)了問題,怎樣解決以db control為例, 大致的步驟是這樣的: 1. emctl status dbconsole 查看db control

18、的狀態(tài)2.去 $oracle_homehostname_sidsysmanlog目錄下查看相關(guān)日志(emoms.log,emagent.log等) 3. 檢查配置文件 perties,perties目錄: $oracle_homehostname_sidsysmanconfig 4. 確保監(jiān)聽器工作正常: lsnrctl status 5. 10g em 使用的是配置文件中定義的連接串,而不是直接訪問tnsnames.ora .目錄: $oracle_homehostname_sidsysmanconfig文件: perties.參數(shù): ora

19、cle.sysman.eml.mntr.emdrepconnectdescriptor三、修改了監(jiān)聽端口, 怎樣保證 db control 正常運行1. 修改 listener.ora 和tnsnames.ora 這兩個文件:tnsnames.ora 中需要加入:listener_1 =(address = (protocol = tcp)(host = xxxx)(port = 新的端口)然后啟動數(shù)據(jù)庫:sql> show parameter local_listener ;sql> alter system set local_listener='listener_1&

20、#39; scope=spfile;重啟數(shù)據(jù)庫使得修改生效2. 修改 $oracle_homehostname_sidsysmanconfig下的perties文件:oracle.sysman.eml.mntr.emdrepport=新的端口oracle.sysman.eml.mntr.emdrepconnectdescriptor=(description=(address_list=(address=(protocol=tcp)(host=xxx)(port=新的端口)(connect_data=(service_name=xxx) 3. 最后,還要修改 $oracle_

21、homehostname_sidsysmanemd下的targets.xml:<property name="port" value="新的端口"/>4. 重新啟動監(jiān)聽器和dbconsole 服務(wù).5. 如果嫌上面的操作麻煩,可以用emca這個命令行工具:emca -h 查看所有可用的命令emca -r 跳過資料檔案庫的創(chuàng)建.四、怎樣修改 db control 的服務(wù)端口缺省情況下, db control 的端口是5500, 可以參考下面的說明更改端口。如果用戶想改變oms端口,必須改變以下三個文件,然后重啟db control以使得改變生效

22、:1.編輯$oracle_home/_/sysman/config/perties并改變以下參數(shù):oracle.sysman.emsdk.svlt.consoleserverportoracle.sysman.emsdk.svlt.consoleserverhttpsport2.編輯$oracle_home/_/sysman/config/perties并改變以下參數(shù):repository_urlemdwalletsrcurl3.編輯$oracle_home/oc4j/j2ee/oc4j_dbconsole_/config/http-web-site.xml并改

23、變以下參數(shù):web-site port注:請在修改前備份。五、如何使用"automatic sga management"automatic sga management 是 10g 引入的新特性之一,將初始化參數(shù)文件中與內(nèi)存管理密切有關(guān)的幾個參數(shù)抽取出來,交由數(shù)據(jù)庫去自行管理(由新增加的參數(shù)sga_target來管理),在一定程序上能減輕dba的負(fù)擔(dān)。至于參數(shù)的合理性,還需要結(jié)合awr report 去驗證.sga_target = db_cache_size + db_nk_cache_size(n=2,4,.)+ db_keep_cache_size + db_rec

24、ycle_cache_size +shared_pool_size + java_pool_size + large_pool_size + xxxxxxx: 是一個保留值,從目前的實驗來看,基本是4m步驟:1.alter system set sga_target=300m scope=bothcreate pfile from spfile;shutdown immediate;修改init.ora 文件,將這些參數(shù)的值設(shè)成0:db_cache_size, shared_pool_size, java_pool_size,large_pool_size2. 啟動sqlplus,以新的pfi

25、le文件啟動數(shù)據(jù)庫sql> startup pfile='.'讓我們來看看調(diào)整的結(jié)果:sql> select name, block_size, current_size from v$buffer_pool;name block_size current_size-keep 8192 204sql> select pool, sum(bytes)/1024/1024 as "m bytes" from v$sgastat group by pool;pool m bytes -java pool 4 large pool 4shared

26、pool 84205.002403 205.002403=buffer cache + log buffer + fixed sga + all others .改動java pool的值sql> alter system set java_pool_size=20m;sql> select name, block_size, current_size,prev_size from v$buffer_pool;name block_size current_size prev_size-keep 8192 188 204sql> select pool, sum(bytes)

27、/1024/1024 as "m bytes" from v$sgastat group by pool;pool m bytes -java pool 20 large pool 4shared pool 84189.002403可以看出, db_cache_size的值已經(jīng)被自動調(diào)小了. 再把java pool 的值改回去sql> alter system set java_pool_size=8m;sql> select name, block_size, current_size,prev_size from v$buffer_pool;name blo

28、ck_size current_size prev_size-keep 8192 188 204sql> select name, block_size, current_size,prev_size from v$buffer_pool;pool m bytes -java pool 20 large pool 4shared pool 84189.002403這一次, db_cache_size的值沒有變化 , java_pool_size的值也沒有變化 修改large pool的值為16msql> alter system set large_pool_size=16m;sy

29、stem altered.sql> select name,block_size,current_size,prev_size from v$buffer_pool;name block_size current_size prev_size- - - -default 8192 176 188sql> select pool, sum(bytes)/1024/1024 as "m bytes" from v$sgastat group by pool;pool m bytes- -java pool 20large pool 16 shared pool 84

30、177.002403這次,db_cache_size和large_pool_size的值都變了 同樣,調(diào)大shared_pool_size后, db_cache_size會自動減小.雖然db_nk_cache_size的值不會隨著workload 的改變而自動調(diào)整, 我們還是可以看看手工改動db_nk_block_size 的情況 sql> alter system set db_2k_cache_size=4m;system altered.sql> select name,block_size,current_size,prev_size from v$buffer_pool;

31、name block_size current_size prev_size- - - -default 8192 172 176default 2048 4 0sql> alter system set db_2k_cache_size=0;system altered.sql> select name,block_size,current_size,prev_size from v$buffer_pool;name block_size current_size prev_size- - - -default 8192 176 172sql> alter system s

32、et db_2k_cache_size=8m;system altered.sql> select name,block_size,current_size,prev_size from v$buffer_pool;name block_size current_size prev_size- - - -default 8192 168 176default 2048 8 0結(jié)論: 手工調(diào)整db_nk_cache_size確實會影響原有的參數(shù). 最后說一點: sga_target參數(shù)與sga_max_size參數(shù)有密切關(guān)聯(lián),基本的原則就是前者的值不能大于后者的值. 總結(jié):設(shè)置了sga_t

33、arget參數(shù)后,數(shù)據(jù)庫會在這個范圍內(nèi)自行調(diào)整;但許多情況下, 怎樣合理地設(shè)置這個參數(shù)仍是dba需要考慮的問題, 他們需要結(jié)合awr report等輔助的工具來分析.( 當(dāng)然,我們可以根據(jù)advisor的歷史信息而確定一個比較合理的值)。=一、亂碼問題redhat rhel as3 下安裝 oracle db 10g 中文亂碼問題不少兄弟反映在rhel3下安裝oracle10g時出現(xiàn)亂碼, 其實在安裝和使用時出現(xiàn)亂碼的地方有多個, 可以分為三類:1. 安裝時的亂碼2. 一些應(yīng)用程序的亂碼, 比如 dbca, netca3. 一些基于oc4j的web應(yīng)用的亂碼, 比如 isqlplus, em

34、造成這些問題的原因都是一個, 就是這些程序都使用jdk, 相應(yīng)的jdk(或jre) 使用的字體配置文件 perties 中的字體和操作系統(tǒng)的字體或者字體配置文件不匹配. 解決的辦法是把兩者改成一致. 1. 下載, 解包 ship.db.cpio.gz, 生成目錄 disk12. cd disk1/stage/components/oracle.swd.jre/.0/1/datafiles/unzip all_except_bin.jar(這時生成一個 jre 的目錄)cd jre/1.4.2/lib/mv perties perti

35、es.bakcp perties.zh_cn.redhat8.0 pertiescd ./././zip -r all_except_bin.jar.new jre/mv all_except_bin.jar.new all_except_bin.jar(其實就是把 perties 文件換掉. 這樣安裝時漢字顯示就沒有問題了)3. 如法炮制, 把disk1/stage/components/oracle.jdk/.0/1/datafiles/sol_bin.1.1.jar文件里面的perties 文件換掉, 創(chuàng)建數(shù)據(jù)

36、庫和執(zhí)行網(wǎng)絡(luò)配置時的亂碼就沒有了. isqlplus 和em 的亂碼也解決了。用ie登錄linux服務(wù)器上的em出現(xiàn)的亂碼不知道大家有沒有注意到,em顯示的中文翻譯很是糟糕,up/down 動不動就翻譯成“向上”“向下”,讓人哭笑不得.很多朋友都說,干脆給顯示英文算了,可是怎么顯示呢?好了,現(xiàn)在我們有一種辦法很容易的解決這個問題:打開你的ie瀏覽器,選擇'工具"->internet選項->常規(guī)選擇“語言”,默認(rèn)只有“中文”,選擇“添加”,加入英語(美國),調(diào)整順序,把”英語(美國)“放到最上面ok ,確定。打開你的 http:/yoururl:5500/em問題解

37、決了。二、10g如何更改歸檔模式1. 對于初始化文件,只需要修改log_archive_dest_n 這個參數(shù).n=1,2,3,.10, oracle 缺省會使用log_archive_dest_10這個參數(shù)來使用flash recovery area里面存放的歸檔日志文件,大小由參數(shù)db_recovery_file_dest_size來決定. 修改:log_archive_dest_1="location=c:oracle10g.archivelog quota_size=2g" .如果歸檔使用flash recovery area, 上面的參數(shù)不需要指定任何值,orac

38、le 會自動使用db_recovery_file_dest這個參數(shù)所指定的路徑。 2. 啟動sqlplus:startup mount pfile='.'alter database archivelog;(如果啟用flashback, alter database flashback on)alter database open;archive log list(查看是否運行在歸檔模式)(如果前面的log_archive_dest_n沒有設(shè)置,則會顯示use_db_recovery_file_dest)3. 怎樣變成noarchivelog 模式步驟基本同上。三、用dblin

39、k在10g中做create table .as select * from .varchar2()的column寬度變成3倍問題描述:例如:varchar2(255)=>varchar(765)測試:1. 環(huán)境: 兩臺機器都裝的10g的數(shù)據(jù)庫2. 測試步驟和結(jié)果:sql> conn test1/test1db10g_server1 sql> create database link link_server2 connect to test1 identified by test1using 'db10g_server2'sql> conn test1/t

40、est1db10g_server2sql> create table test1_t1 as select * from all_objects where rownum<=3000;sql> desc test1_t1;name null? type-owner varchar2(30)object_name varchar2(30)subobject_name varchar2(30)object_id numberdata_object_id numberobject_type varchar2(19)created datelast_ddl_time datetime

41、stamp varchar2(19)status varchar2(7)temporary varchar2(1)generated varchar2(1)secondary varchar2(1)sql> conn test1/test1db10g_server1sql> create table test1_linkt1 as select * from test1_t1link_server2;sql> desc test1_linkt1name null? type- - -owner varchar2(60)object_name varchar2(60)subob

42、ject_name varchar2(60)object_id numberdata_object_id numberobject_type varchar2(38)created datelast_ddl_time datetimestamp varchar2(38)status varchar2(14)temporary varchar2(2)generated varchar2(2)secondary varchar2(2)表結(jié)構(gòu)一樣,但是列的長度確實變了, 通過dblink創(chuàng)建的表的varchar2列的長度是原表的兩倍再來看看字符集1.server1上的數(shù)據(jù)庫字符集sql> co

43、lumn value format a20sql> select value from nls_database_parameters where parameter='nls_characterset'value-zhs16gbk2. server2上的數(shù)據(jù)庫字符集sql> conn test1/test1db10g_server2sql> column value format a20sql> select value from nls_database_parameters where parameter='nls_characterset

44、'value-al32utf8結(jié)論: 與數(shù)據(jù)庫字符集不同有關(guān)系.四、在10g不支持的linux發(fā)行版上安裝10g的解決方法正常安裝的10g只支持red hat enterprise linux 2.1 and 3, and on unitedlinux 1.0。如果是其它的版本,比如fedora,rh9等,10g將會說不支持,而不允許安裝,解決方法如下:1.運行runinstaller -ignoresysprereqs,這樣會跳過檢查2.修改/etc/redhat-release文件,讓10g認(rèn)為自己處于支持的操作系統(tǒng)中,運行下面的命令即可 su - rootcp /etc/redh

45、at-release /etc/redhat-release.backupcat > /etc/redhat-release << eofred hat enterprise linux as release 3 (taroon)eof安裝完畢,再將那個文件還原:su - rootcp /etc/redhat-release.backup /etc/redhat-release3.同樣的思路,我們可以去修改oracle 的install/oraparam.ini文件:certified versionslinux=redhat-2.1,unitedlinux-1.0,redh

46、at-3把這個屏蔽掉,或者是添加新的內(nèi)容:certified versionslinux=redhat-2.1,unitedlinux-1.0,redhat-3linux-redhat-2.1-optionaltemp_space=80swap_space=150min_display_colors=256unitedlinux-1.0-optionaltemp_space=80swap_space=150min_display_colors=256linux-redhat-3.0-optionaltemp_space=80swap_space=150min_display_colors=25

47、6對這個地方定制一下就可以了。注:有興趣的朋友不妨測試一下,其實在這個地方可以定制很多東西的,但是不推薦在正式的應(yīng)用中這么做。復(fù)雜查詢 復(fù)雜查詢oracle 為什么不使用索引。檢查被索引的列或組合索引的首列是否出現(xiàn)在pl/sql語句的where子句中,這是“執(zhí)行計劃”能用到相關(guān)索引的必要條件??床捎昧四姆N類型的連接方式。oracle的共有sort merge join(smj)、hash join(hj)和nested loop join(nl)。在兩張表連接,且內(nèi)表的目標(biāo)列上建有索引時,只有nested loop才能有效地利用到該索引。smj即使相關(guān)列上建有索引,最多只能因索引的存在,避免數(shù)

48、據(jù)排序過程。hj由于須做hash運算,索引的存在對數(shù)據(jù)查詢速度幾乎沒有影響。看連接順序是否允許使用相關(guān)索引。假設(shè)表emp的deptno列上有索引,表dept的列deptno上無索引,where語句有emp.deptno=dept.deptno條件。在做nl連接時,emp做為外表,先被訪問,由于連接機制原因,外表的數(shù)據(jù)訪問方式是全表掃描,emp.deptno上的索引顯然是用不上,最多在其上做索引全掃描或索引快速全掃描。是否用到系統(tǒng)數(shù)據(jù)字典表或視圖。由于系統(tǒng)數(shù)據(jù)字典表都未被分析過,可能導(dǎo)致極差的“執(zhí)行計劃”。但是不要擅自對數(shù)據(jù)字典表做分析,否則可能導(dǎo)致死鎖,或系統(tǒng)性能下降。索引列是否函數(shù)的參數(shù)。如

49、是,索引在查詢時用不上。是否存在潛在的數(shù)據(jù)類型轉(zhuǎn)換。如將字符型數(shù)據(jù)與數(shù)值型數(shù)據(jù)比較,oracle會自動將字符型用to_number()函數(shù)進行轉(zhuǎn)換,從而導(dǎo)致上一種現(xiàn)象的發(fā)生。是否為表和相關(guān)的索引搜集足夠的統(tǒng)計數(shù)據(jù)。對數(shù)據(jù)經(jīng)常有增、刪、改的表最好定期對表和索引進行分析,可用sql語句“analyze table xxxx compute statistics for all indexes;”。oracle掌握了充分反映實際的統(tǒng)計數(shù)據(jù),才有可能做出正確的選擇。索引列的選擇性不高。 我們假設(shè)典型情況,有表emp,共有一百萬行數(shù)據(jù),但其中的emp.deptno列,數(shù)據(jù)只有4種不同的值,如10、20、

50、30、40。雖然emp數(shù)據(jù)行有很多,oracle缺省認(rèn)定表中列的值是在所有數(shù)據(jù)行均勻分布的,也就是說每種deptno值各有25萬數(shù)據(jù)行與之對應(yīng)。假設(shè)sql搜索條件deptno=10,利用deptno列上的索引進行數(shù)據(jù)搜索效率,往往不比全表掃描的高。索引列值是否可為空(null)。如果索引列值可以是空值,在sql語句中那些要返回null值的操作,將不會用到索引,如count(*),而是用全表掃描。這是因為索引中存儲值不能為全空??词欠裼杏玫讲⑿胁樵儯╬qo)。并行查詢將不會用到索引。如果從以上幾個方面都查不出原因的話,我們只好用采用在語句中加hint的方式強制oracle使用最優(yōu)的“執(zhí)行計劃”。

51、 hint采用注釋的方式,有行注釋和段注釋兩種方式。 如我們想要用到a表的ind_col1索引的話,可采用以下方式: “select /*+ index(a ind_col1)*/ * from a where col1 = xxx;"如何屏蔽索引語句的執(zhí)行計劃中有不良索引時,可以人為地屏蔽該索引,方法:。數(shù)值型:在索引字段上加0,例如select * from emp where emp_no+0 = v_emp_no;。字符型:在索引字段上加,例如select * from tg_cdr01 where msisdn|=v_msisdn;select /*+ use_merge(

52、a b)*/  .select /*+ use_nl(a b)*/ . 花了7小時56分鐘執(zhí)行完,這個不算慢了,在預(yù)料之中的,因為nested loop是基本上是隨機讀。hash join的例子sysocn>show  sga         total system global area  722540200 bytesfixed size               

53、;    452264 bytesvariable size             301989888 bytesdatabase buffers          419430400 bytesredo buffers                 667648 bytessysocn>select

54、0;  bytes/1024/1024  from  user_segments  where   segment_name  =  'member'bytes/1024/1024-           2080elapsed: 00:00:00.03sysocn>show parameter   pganame                                 type

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論