




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實(shí)用文檔Oracle數(shù)據(jù)庫系統(tǒng)安裝及配置規(guī)范目錄1. 數(shù)據(jù)庫物理設(shè)計原則 51.1. 數(shù)據(jù)庫環(huán)境配置原則 51.1.1. 操作系統(tǒng)環(huán)境 51.1.2. 內(nèi)存要求 51.1.3. 交換區(qū)設(shè)計 51.1.4. 其他 61.2. 數(shù)據(jù)庫設(shè)計原則 61.2.1. 數(shù)據(jù)庫 SID 61.2.2. 數(shù)據(jù)庫全局名 61.2.3. 數(shù)據(jù)庫類型選擇 61.2.4. 數(shù)據(jù)庫連接類型選擇 71.2.5. 數(shù)據(jù)庫SG納已置 71.2.6. 數(shù)據(jù)庫字符集選擇 81.2.7. 數(shù)據(jù)庫其他參數(shù)配置 91.2.8. 數(shù)據(jù)庫控制文件配置 91.2.9. 數(shù)據(jù)庫日志文件配置 101.2.10. 數(shù)據(jù)庫回滾段配置 101.2.11
2、. 數(shù)據(jù)庫臨時段表空間配置 111.2.12. 數(shù)據(jù)庫系統(tǒng)表空間配置 111.3. 數(shù)據(jù)庫表空間設(shè)計原則 111.3.1. 表空間大小定義原則 111.3.2. 表空間擴(kuò)展性設(shè)計原則 121.4. 裸設(shè)備的使用 122. 數(shù)據(jù)庫邏輯設(shè)計原則 132.1. 命名規(guī)范 132.1.1. 表屬性規(guī)范 132.1.2. 索弓 | 142.1.3. 視圖 152.1.4. 實(shí)體化視圖 152.1.5. 存儲過程 152.1.6. 觸發(fā)器 152.1.7. 函數(shù) 162.1.8. 數(shù)據(jù)包 162.1.9. 序列 162.1.10. 表空間 162.1.11. 數(shù)據(jù)文件 162.1.12. 普通變量 162
3、.1.13. 游標(biāo)變量 172.1.14. 記錄型變量 172.1.15. 表類型變量 172.1.16. 數(shù)據(jù)庫鏈 172.2. 命名 172.2.1. 語言 172.2.2. 大小寫 182.2.3. 單詞分隔 182.2.4. 保留字 182.2.5. 命名長度 182.2.6. 字段名稱 182.3. 數(shù)據(jù)類型 182.3.1. 字符型 182.3.2. 數(shù)字型 192.3.3. 日期和時間 192.3.4. 大字段 192.3.5. 唯一鍵 192.4. 設(shè)計 202.4.1. 范式 202.4.2. 表設(shè)計 202.4.3. 索引設(shè)計 232.4.4. 視圖設(shè)計 242.4.5.
4、包設(shè)計 242.4.6. 安全性設(shè)計 252.5. SQL編寫 262.5.1. 字符類型數(shù)據(jù) 262.5.2. 復(fù)雜 sql 272.5.3. 高效性 272.5.4. 健壯性 282.5.5. 安全性 292.5.6. 完整性 303. 備份恢復(fù)設(shè)計原則 303.1. 數(shù)據(jù)庫exp/imp備份恢復(fù) 303.1.1. 數(shù)據(jù)庫級備份原則 303.1.2. 用戶級備份原則 303.1.3. 表級備份原則 313.2. 數(shù)據(jù)庫冷備份原則 313.3. Rman備份恢復(fù)原則 313.3.1. Catalog 數(shù)據(jù)庫 313.3.2. Archive Log 333.3.3. 全備份策略 333.3.
5、4. 增量備份策略 333.3.5. 恢復(fù)原則 333.4. 備用數(shù)據(jù)庫原則 343.5. 一些小經(jīng)驗(yàn) 343.6. 系統(tǒng)調(diào)優(yōu)知識 353.6.1. 生成狀態(tài)報表(statspack 的使用) 353.6.2. sql 追蹤 363.6.3. 內(nèi)存調(diào)整 373.6.4. 排序的優(yōu)化 403.6.5. 統(tǒng)計信息 414. 設(shè)計工具 421 .數(shù)據(jù)庫物理設(shè)計原則1.1. 數(shù)據(jù)庫環(huán)境配置原則1.1.1. 操作系統(tǒng)環(huán)境對于中小型數(shù)據(jù)庫系統(tǒng),采用linux操作系統(tǒng)比較合適,對于數(shù) 據(jù)庫冗余要求負(fù)載均衡能力要求較高的系統(tǒng), 可以采用Oracle10gRAC 的集群數(shù)據(jù)庫的方法,集群節(jié)點(diǎn)數(shù)范圍在264個。對
6、于大型數(shù)據(jù)庫 系統(tǒng),可以采用Sun Solaris SPARC 64位小型機(jī)系統(tǒng)或HP 9000系 列小型機(jī)系統(tǒng)。RAD5適合只讀操作的數(shù)據(jù)庫,RAD1適合OLTP數(shù)據(jù) 庫。1.1.2. 內(nèi)存要求對于linux操作系統(tǒng)下的數(shù)據(jù)庫,由于在正常情況下 Oracle對 SGA勺管理能力不超過1.7G。所以總的物理內(nèi)存在 4G以下。SGA的 大小為物理內(nèi)存的50V75%對于64位的小型系統(tǒng),Oracle數(shù)據(jù)庫 對SGA勺管理超過2G的限制,SGA設(shè)計在一個合適的范圍內(nèi):物理 內(nèi)存的50%-70%當(dāng)SGA過大的時候會導(dǎo)致內(nèi)存分頁,影響系統(tǒng)性 能。1.1.3. 交換區(qū)設(shè)計當(dāng)物理內(nèi)存在2G以下的情況下,交換
7、分區(qū)swap為物理內(nèi)存的3倍,當(dāng)物理內(nèi)存2G的情況下,swap大小為物理內(nèi)存的12倍1.1.4. 其他其他環(huán)境變量參考Oracle相關(guān)的安裝文檔和隨機(jī)文檔。1.2. 數(shù)據(jù)庫設(shè)計原則1.2.1. 數(shù)據(jù)庫SID數(shù)據(jù)庫SID是唯一標(biāo)志數(shù)據(jù)庫的符號,命名長度不能超過5個字 符。對于單節(jié)點(diǎn)數(shù)據(jù)庫,以字符開頭的5個長度以內(nèi)字串作為SID的 命名。對于集群數(shù)據(jù)庫,當(dāng)命名SID后,各節(jié)點(diǎn)SID自動命名為SIDnn, 其中 nn 為節(jié)點(diǎn)號:1, 2, ,64。例如 rac1、rac2、rac24。1.2.2. 數(shù)據(jù)庫全局名fcnowIng databaEe iFitarm&tJoinAn 0r>c
8、liT9l” wfi如修WHdf l«d by * Global燈>311/ 3 th*form "irii3me.doma:inB。3匕三匕日,蟲 Mamta- 卜4。?$什0丁力恒AIs rsfirvncfd bv OnKAvSI instance 9<i *ch cl us t*r d惠ri 由 #. E*chj n.ce ts uniqus-J-yied ty a n Oracle Sy stem ' "& ntjf ier (8口L For -= ach cl usterdIrrhurv:,. the SiD i-.erg,d
9、 o-f a : >mmon nr外、 2 th1- 九,M,七,事$ and i numnar hsr t ach mstan-:e that Is auto mat inzallA id SlD p re 11 ?: haj.been entered for you «h ich you can ec<ept « change to a* value yoo preferSID Pmfi閨:n數(shù)據(jù)庫全局名稱:j<sid>.domain1.2.3. 數(shù)據(jù)庫類型選擇對于海量數(shù)據(jù)庫系統(tǒng),采用 data warehouse的類型。對于小型數(shù)據(jù)庫或OLT硬
10、型的數(shù)據(jù)庫,采用Transaction Processing 類型1.2.4. 數(shù)據(jù)庫連接類型選擇Oracle數(shù)據(jù)庫有專用服務(wù)器連接類型和多線程服務(wù)器MTS連接類型。對于批處理服務(wù),需要專用服務(wù)器連接方式,而對于OLTPI艮務(wù)則MTS勺連接方式比較合適。由于采用MTSW,可以通過配置網(wǎng)絡(luò) 服務(wù)實(shí)現(xiàn)某些特定批處理服務(wù)采用專用服務(wù)器連接方式,所以數(shù)據(jù)庫設(shè)計時一般采用MT駛型1.2.5. 數(shù)據(jù)庫SGA配置數(shù)據(jù)庫SGAM以采用手工配置或按物理內(nèi)存比例配置, 在數(shù)據(jù)庫初始設(shè)計階段采用按比例配置方式,在實(shí)際應(yīng)用中按系統(tǒng)調(diào)優(yōu)方式修改SGA1 - LMiMuTi-orJrlitii »».
11、 1* S*kJiIHxhFFl* Li.m.s由才/舊僧-T* 口 IQI卜if ph.'S i<3l rriern< C1 0 £" ME: " iralstiue Tyu 呼F。iFA-dfrg'% how dHtnbkJtl?!盡pnn?r.Custprn| JHShahiT d Fool:uElr1 CKM:u i BJ.”Lar號始P»bj岳:j 叵三'口 11alik.口I nyr一Pm.,.,, g - - - . , “, -f 1", ,,,-k q卜Total M-mciry lxMTo
12、tui| memory mc|ud-Q-= 4OMB qF 力鼻小口虧 1咨。彘nd thR defa-j. 1fc*tlwnwtve . H .ny.1.2.6. 數(shù)據(jù)庫字符集選擇為了使數(shù)據(jù)庫能夠正確支持多國語言,必須配置合適的數(shù)據(jù)庫字 符集,采用UTF8字符集。注意:如果沒有大對象,在使用過程中進(jìn)行語言轉(zhuǎn)換沒有什么影 響,具體過程如下(切記設(shè)定的字符集必須是ORACL皮持,不然不能 start )SQL> shutdown immediate;SQL> startup mount;SQL> alter system enable restricted session;SQ
13、L> alter system set job_queue_processes=0;SQL> alter database open;SQL> alter database character set internal_use we8iso8859P1;SQL> shutdown immediate;SQL> startup1.2.7. 數(shù)據(jù)庫其他參數(shù)配置. DB_FILESDb_files是數(shù)據(jù)庫能夠同時打開的文件數(shù)量,默認(rèn)值是 200個。 當(dāng)數(shù)據(jù)庫規(guī)劃時文件數(shù)量FILES接近或超過200個時候,按以下估計 值配置:DB_FILES = FILES
14、 * .2. Db_block_size一個extent要是5個blocks的倍數(shù)為好,如:一個 blocks是 4096 字節(jié),那一個 extent 就是 2M 4M或 8M為好。Db_block_size 是數(shù)據(jù)庫最小物理單元,一旦數(shù)據(jù)庫創(chuàng)建完成,該參數(shù)無法修改, db_block_size按以下規(guī)則調(diào)整:數(shù)據(jù)倉庫類型:db_block_size 盡可能大,采用8192或16384OLTP類型:db_block_size 用比較小的取值范圍:2048 或4096Blocks推薦是系統(tǒng)操作的塊倍數(shù)(裸設(shè)備塊大小是512字節(jié),NTFSM 4K,使用8K的方式在大部分系統(tǒng)上通用)
15、。1.2.8. 數(shù)據(jù)庫控制文件配置. 控制文件鏡象多個控制文件存放在不同的物理位置。. 控制文件配置控制文件中參數(shù)設(shè)置,最大的數(shù)據(jù)文件數(shù)量不能小于數(shù)據(jù)庫參數(shù) db_files 。1.2.9. 數(shù)據(jù)庫日志文件配置. 日志文件大小日志文件的大小由數(shù)據(jù)庫事務(wù)處理量決定,在設(shè)計過程中,確保每20分鐘切換一個日志文件。所以對于批處理系統(tǒng),日志文件大小 為幾百M(fèi)到幾G的大小。對于OLT陳統(tǒng),日志文彳大小為幾百 M以 內(nèi)。. 日志文件組數(shù)量對于批處理系統(tǒng),日志文件組為 510組;Xt于OLTP系統(tǒng),日 志文件組為35組,每組日志大小保持一致;對于集群數(shù)
16、據(jù)庫系統(tǒng), 每節(jié)點(diǎn)有各自獨(dú)立的日志組。. 日志成員數(shù)量為了確保日志能夠鏡象作用,每日志組的成員為2個。1.2.10. 數(shù)據(jù)庫回滾段配置在Oracle9i數(shù)據(jù)庫中,設(shè)計Undo表空間取代以前版本的回滾段 表空間。Undo表空間大小的設(shè)計規(guī)范由以下公式計算:Undospace = UR * UPS *db_block_size+ 冗余量UR 表示在undo中保持的最長時間數(shù)(秒),由數(shù)據(jù)庫參數(shù) UNDO_RETENTlONfe 定。UPS表示在undo中,每秒產(chǎn)生的數(shù)據(jù)庫塊數(shù)量。例如:在數(shù)據(jù)庫中保留2小時的回退數(shù)據(jù),假定每小時產(chǎn)生 200 個數(shù)據(jù)庫塊。貝U Undospace = 2
17、 * 3600 * 200 * 4K = 5.8G。1.2.11. 數(shù)據(jù)庫臨時段表空間配置數(shù)據(jù)庫臨時段表空間根據(jù)實(shí)際生產(chǎn)環(huán)境情況調(diào)整其大小,表空間 屬性為自動擴(kuò)展。1.2.12. 數(shù)據(jù)庫系統(tǒng)表空間配置系統(tǒng)表空間大小1G左右,除了存放數(shù)據(jù)庫數(shù)據(jù)字典的數(shù)據(jù)外, 其他數(shù)據(jù)不得存儲在系統(tǒng)表空間。1.3. 數(shù)據(jù)庫表空間設(shè)計原則1.3.1. 表空間大小定義原則當(dāng)表空間大小小于操作系統(tǒng)對最大文件限制時, 表空間由一個文 件組成。如果表空間大小大于操作系統(tǒng)對最大文件限制時, 該表空間 由多個數(shù)據(jù)文件組成,表空間的總大小為估算為:Tablespace + sum (數(shù)據(jù)段 + 索弓 I段)*150%。1.3.2
18、. 表空間擴(kuò)展性設(shè)計原則表空間數(shù)據(jù)文件采用自動擴(kuò)展的方式,擴(kuò)展容量快大小按2的整 數(shù)倍(1M 2M 4M 8M 16M 32M 64M進(jìn)行擴(kuò)展,創(chuàng)建表空間時 盡量采用nologing選項。表空間的最大限制一般采用unlimited ,除非確切知道表空間數(shù)據(jù)文件的最大使用范圍。(一般 windows 3 2位系統(tǒng)的文件最大2 G, 6 4位的 unix系統(tǒng)系統(tǒng)文件最大1 2 8 G,但也要注意文件格式設(shè)定的文件大?。?,建議最大為2G表空間采 用local管理方式,例如:CREATE TABLESPACE TBS_USERINFO DATAFILE '/oradata/tbs_userin
19、fo.dbf ' SIZE 8M REUSE AUTOEXTEND ON NEXT2M MAXSIZE UNLIMITEDNOLOGGINGEXTENT MANAGEMENTLOCALAUTOALLOCATESEGMENT SPACE MANAGEMENT AUTO;1.4. 裸設(shè)備的使用一個scsi設(shè)備可以14個分區(qū),unix操作系統(tǒng)256個分區(qū),性能 比文件系統(tǒng)方式高15%左右,空間大于要小于(實(shí)際分區(qū)大小減兩個 ORACLE勺數(shù)據(jù)塊),比如100M大于為100000K推薦在unix使用 軟連接(ln)方式把裸設(shè)備形成文件,用加入表空間時加 resue選項,當(dāng)然也可只接把設(shè)備加入表
20、空間,移動裸設(shè)備使用dd命令。對于windows平臺,oracle提供軟連接工具,實(shí)現(xiàn)裸設(shè)備的使 用,計算一條記錄的長度。2 .數(shù)據(jù)庫邏輯設(shè)計原則2.3. 命名規(guī)范2.3.1. 表屬性規(guī)范. 表名前綴為Tbl_。數(shù)據(jù)表名稱必須以有特征含義的單詞或縮寫組成, 中間可以用“_”分割,例如:tbl_pstn_detail 。表名稱不能用雙引 號包含。. 表分區(qū)名前綴為p。分區(qū)名必須有特定含義的單詞或字串。例如:tbl_pstn_detail 的分區(qū)p2004100101表示該分區(qū)存儲 2004100101時段的數(shù)據(jù)。. 字段名字段名稱必須用字母開頭,采用有特
21、征含義的單詞或縮寫,不能 用雙引號包含. 主鍵名前綴為PK、主鍵名稱應(yīng)是 前綴+表名+構(gòu)成的字段名。如果復(fù) 合主鍵的構(gòu)成字段較多,則只包含第一個字段。表名可以去掉前綴。. 外鍵名前綴為FK,外鍵名稱應(yīng)是前綴+外鍵表名+主鍵表名+外 鍵表構(gòu)成的字段名。表名可以去掉前綴。2.3.2. 索弓. 普通索引前綴為IDX_。索引名稱應(yīng)是 前綴+表名+構(gòu)成的字段名。如果復(fù) 合索引的構(gòu)成字段較多,則只包含第一個字段,并添加序號。表名可 以去掉前綴。. 主鍵索引前綴為IDX_PK,索引名稱應(yīng)是前綴+表名+構(gòu)成的主鍵字段名, 在創(chuàng)建表時候用using ind
22、ex指定主鍵索引屬性。. 唯一索引前綴為IDXUK。索引名稱應(yīng)是 前綴+表名+構(gòu)成的字段名. 外鍵索引前綴為IDX_FK,索引名稱應(yīng)是 前綴+表名+構(gòu)成的外鍵字段名。. 函數(shù)索引前綴為IDX_func_。索引名稱應(yīng)是 前綴+表名+構(gòu)成的特征表達(dá) 字符。. 藤索引前綴為IDX_clu_。索引名稱應(yīng)是 前綴+表名+構(gòu)成的簇字段。2.3.3. 視圖前綴為V_o按業(yè)務(wù)操作命名視圖。2.3.4. 實(shí)體化視圖前綴為MV_按業(yè)務(wù)操作命名實(shí)體化視圖。2.3.5. 存儲過程前綴為Proc_。按業(yè)務(wù)操作命名存儲過程。2.3.6. 觸發(fā)器前綴為Trig_ 。觸
23、發(fā)器名應(yīng)是前綴+表名+觸發(fā)器名2.3.7. 函數(shù)前綴為Func_。按業(yè)務(wù)操作命名函數(shù)。2.3.8. 數(shù)據(jù)包前綴為Pkg_。按業(yè)務(wù)操作集合命名數(shù)據(jù)包。2.3.9. 序列前綴為Seq_。按業(yè)務(wù)屬性命名。2.3.10. 表空間. 公用表空間前綴為Tbs_。根據(jù)存儲的特性命名,例如:tbs_parameter. 專用表空間Tbs_表名稱門。該表空間專門存儲指定的某一個表,或某一 表的若干個分區(qū)的數(shù)據(jù)。2.3.11. 數(shù)據(jù)文件表空間名,nn.dbf 。 nn =1 , 2, 3, 4,等。2.3.12. 普通變量前綴為Var存放字符、數(shù)字、日期型變量2.3.13. 游標(biāo)變
24、量前綴為Cur_。存放游標(biāo)記錄集。2.3.14. 記錄型變量前綴為Rec_。存放記錄型數(shù)據(jù)。2.3.15. 表類型變量前綴為Tab_。存放表類型數(shù)據(jù)。2.3.16. 數(shù)據(jù)庫鏈前綴為dbl_。表示分布式數(shù)據(jù)庫外部鏈接關(guān)系。2.4. 命名2.4.1. 語言命名應(yīng)該使用英文單詞,避免使用拼音,特別不應(yīng)該使用拼音簡 寫。命名不允許使用中文或者特殊字符。英文單詞使用用對象本身意義相對或相近的單詞。選擇最簡單或最通用的單詞。不能使用毫不相干的單詞來命名。當(dāng)一個單詞不能表達(dá)對象含義時,用詞組組合,如果組合太長時, 采用用簡或縮寫,縮寫要基本能表達(dá)原單詞的意義。當(dāng)出現(xiàn)對象名重名時,是不同類型對象時,加類型前綴
25、或后綴以 示區(qū)別2.4.2. 大小寫名稱一律大寫,以方便不同數(shù)據(jù)庫移植,以及避免程序調(diào)用問題。2.4.3. 單詞分隔命名的各單詞之間可以使用下劃線進(jìn)行分隔。2.4.4. 保留字命名不允許使用SQL呆留字。2.4.5. 命名長度表名、字段名、視圖名長度應(yīng)限制在 20個字符內(nèi)(含前綴)。2.4.6. 字段名稱同一個字段名在一個數(shù)據(jù)庫中只能代表一個意思。比如 telephone在一個表中代表“電話號碼”的意思,在另外一個表中就 不能代表“手機(jī)號碼”的意思。不同的表用于相同內(nèi)容的字段應(yīng)該采用同樣的名稱,字段類型定義。2.5. 數(shù)據(jù)類型2.5.1. 字符型固定長度的字串類型采用char,長度不固定的字串
26、類型采用varchar。避免在長度不固定的情況下采用 char類型。如果在數(shù)據(jù)遷 移等出現(xiàn)以上情況,則必須使用trim()函數(shù)截去字串后的空格。2.5.2. 數(shù)字型數(shù)字型字段盡量采用number類型,要注意精度。2.5.3. 日期和時間1.1.1 .1. 系統(tǒng)時間由數(shù)據(jù)庫產(chǎn)生的系統(tǒng)時間首選數(shù)據(jù)庫的日期型,如DAT嘿型。2.3.32 外部時間由數(shù)據(jù)導(dǎo)入或外部應(yīng)用程序產(chǎn)生的日期時間類型采用varchar類型,數(shù)據(jù)格式采用: YYYYMMDDHH24MISS2.5.4. 大字段如無特別需要,避免使用大字段(blob , clob , long , text , image 等)。2.5.5. 唯一鍵
27、對于數(shù)字型唯一鍵值,盡可能用系列sequence產(chǎn)生。2.6. 設(shè)計2.6.1. 范式如無性能上的必須原因,應(yīng)該使用關(guān)系數(shù)據(jù)庫理論,達(dá)到較高的 范式,避免數(shù)據(jù)冗余,但是如果在數(shù)據(jù)量上與性能上無特別要求,考 慮到實(shí)現(xiàn)的方便性可以有適當(dāng)?shù)臄?shù)據(jù)冗余,但基本上要達(dá)到3NF.如非確實(shí)必要,避免一個字段中存儲多個標(biāo)志的做法。如 11101表示5 個標(biāo)志的一種取值。這往往是增加復(fù)雜度,降低性能的地方。2.6.2. 表設(shè)計. 邏輯段設(shè)計原則.1. Tablespace每個表在創(chuàng)建時候,必須指定所在的表空間,不要采用默認(rèn)表空 間以防止表建立在系統(tǒng)表空間上導(dǎo)致性能問題。 對于事務(wù)比較繁
28、忙的 數(shù)據(jù)表,必須存放在該表的專用表空間中。.2. Pctused默認(rèn)pctused導(dǎo)致數(shù)據(jù)庫物理空間利用率非常低 40溢右;對于 update比較少或update不導(dǎo)致行增大的表,pctused可設(shè)置在60 85之間;對于update能夠?qū)е滦性龃蟮谋恚瑄pdate設(shè)置在4070 之間。.3.Initrans對于需要并行查詢或者在RAC數(shù)據(jù)庫中需要并行處理的表,initrans 設(shè)置為2的倍數(shù),否則,不設(shè)該值。.4. Storage1) Initial盡量減少表數(shù)據(jù)段的extents數(shù)量,initial的大小盡量接近數(shù)據(jù)段的大小 64K, 128K,
29、,1M 2M 4M 8M 16M ,,等按 2 的倍數(shù)進(jìn)行圓整。例如表或分區(qū)數(shù)據(jù)段大小為28M則initial取32M2) Next表或分區(qū)擴(kuò)展extents的大小,按上述方法進(jìn)行圓整。當(dāng)表或分 區(qū)數(shù)據(jù)段無法按Initial接近值進(jìn)行圓整的情況下,其大小可以按Initial+Next 進(jìn)行圓整。此時,必須設(shè)置 Minextents=2。例如:表 或分區(qū)數(shù)據(jù)段大小為 150M,則Initial=128M ; Next=32M, Minextents=2 。3) Minextents該參數(shù)表示表創(chuàng)建時候 Extents的初始數(shù)量,一般取12。4) Pctincrease表示每個擴(kuò)展Extents的
30、增長率,設(shè)置pctincrease=0 能夠獲得 較好的存儲性能。2.4.22特殊表設(shè)計原則.1. 分區(qū)表對于數(shù)據(jù)量比較大的表,根據(jù)表數(shù)據(jù)的屬性進(jìn)行分區(qū),以得到較 好的性能。如果表按某些字段進(jìn)行增長,則采用按字段值范圍進(jìn)行范 圍分區(qū);如果表按某個字段的幾個關(guān)鍵值進(jìn)行分布,則采用列表分區(qū); 對于靜態(tài)表,則采用hash分區(qū)或列表分區(qū);在范圍分區(qū)中,如果數(shù) 據(jù)按某關(guān)鍵字段均衡分布,則采用子分區(qū)的復(fù)合分區(qū)方法。2.4222聚族表如果某幾個靜態(tài)表關(guān)系比較密切,則可以采用聚族表的方法。2.423. 完整性設(shè)計原則1.1.1. 3.1.主鍵約束關(guān)聯(lián)表的父表要求有主健,主健字段或組合字段必須滿足
31、非空屬 性和唯一性要求。對于數(shù)據(jù)量比較大的父表,要求指定索引段。1.1.2. 32外鍵關(guān)聯(lián)對于關(guān)聯(lián)兩個表的字段,一般應(yīng)該分別建立主鍵、外鍵。 實(shí)際是 否建立外鍵,根據(jù)對數(shù)據(jù)完整性的要求決定。為了提高性能,對于數(shù) 據(jù)量比較大的標(biāo)要求對外健建立索引。對于有要求級聯(lián)刪除屬性的外 鍵,必須指定 on delete cascade 。2.423.3.NULL®對于字段能否null ,應(yīng)該在sql建表腳本中明確指明,不應(yīng)使 用缺省。由于NULL直在參加任何運(yùn)算中,結(jié)果均為 NULL所以在應(yīng) 用程序中必須利用nvl()函數(shù)把可能為NULL值得字段或變量轉(zhuǎn)換為 非NULL的默認(rèn)值。例如:NVL (s
32、ale,0 )。2.423.4. Check 條件對于字段有檢查性名束,要求指定 check規(guī)則。2.423.5. 觸發(fā)器觸發(fā)器是一種特殊的存儲過程,通過數(shù)據(jù)表的DMl作而觸發(fā)執(zhí) 行,起作用是為確保數(shù)據(jù)的完整性和一致性不被破壞而創(chuàng)建, 實(shí)現(xiàn)數(shù) 據(jù)的完整約束。觸發(fā)器的before或after事務(wù)屬性的選擇時候,對表操作的事 務(wù)屬性必須與應(yīng)用程序事務(wù)屬性保持一致,以避免死鎖發(fā)生。在大型 導(dǎo)入表中,盡量避免使用觸發(fā)器。2.423.6. 注釋表、字段等應(yīng)該有中文名稱注釋,以及需要說明的內(nèi)容。2.4.3. 索引設(shè)計對于查詢中需要作為查詢條件的字段,可以考慮建立索引。最終 根據(jù)性能的需要決定是否建立索引。
33、 對于復(fù)合索引,索引字段順序比 較關(guān)鍵,把查詢頻率比較高的字段排在索引組合的最前面。 在分區(qū)表 中,盡量采用local分區(qū)索引以方便分區(qū)維護(hù)。除非時分區(qū)local索引,否則在創(chuàng)建索引段時候必須指定指定索 引段的tablespace、storage屬性,具體參考 內(nèi)容。2.4.4. 視圖設(shè)計視圖是虛擬的數(shù)據(jù)庫表,在使用時要遵循以下原則:1)從一個或多個庫表中查詢部分?jǐn)?shù)據(jù)項;2)為簡化查詢,將復(fù)雜的檢索或字查詢通過視圖實(shí)現(xiàn);3)提高數(shù)據(jù)的安全性,只將需要查看的數(shù)據(jù)信息顯示給權(quán)限有 限的人員;4)視圖中如果嵌套使用視圖,級數(shù)不得超過 3級;5)由于視圖中只能固定條件或沒有條件,所以對
34、于數(shù)據(jù)量較大 或隨時間的推移逐漸增多的庫表,不宜使用視圖;可以采用 實(shí)體化視圖代替;6)除特殊需要,避免類似 Select * from TableName 而沒有 檢索條件的視圖;7)視圖中盡量避免出現(xiàn)數(shù)據(jù)排序的 SQL®句。2.4.5. 包設(shè)計存儲過程、函數(shù)、外部游標(biāo)必須在指定的數(shù)據(jù)包對象 PACKAGE 實(shí)現(xiàn)。存儲過程、函數(shù)的建立如同其它語言形式的編程過程,適合采 用模塊化設(shè)計方法;當(dāng)具體算法改變時,只需要修改需要存儲過程即 可,不需要修改其它語言的源程序。當(dāng)和數(shù)據(jù)庫頻繁交換數(shù)據(jù)是通過 存儲過程可以提高運(yùn)行速度,由于只有被授權(quán)的用戶才能執(zhí)行存儲過 程,所以存儲過程有利于提高系統(tǒng)
35、的安全性。存儲過程、函數(shù)必須檢索數(shù)據(jù)庫表記錄或數(shù)據(jù)庫其他對象,甚至 修改(執(zhí)行 Insert、Delete、Update、Drop、Create 等操作)數(shù)據(jù) 庫信息。如果某項功能不需要和數(shù)據(jù)庫打交道,則不得通過數(shù)據(jù)庫存儲過程或函數(shù)的方式實(shí)現(xiàn)。在函數(shù)中避免采用DM或DDL®句。在數(shù)據(jù)包采用存儲過程、函數(shù)重載的方法,簡化數(shù)據(jù)包設(shè)計,提 高代碼效率。存儲過程、函數(shù)必須有相應(yīng)的出錯處理功能。2.4.6. 安全性設(shè)計. 管理默認(rèn)用戶在生產(chǎn)環(huán)境中,必須嚴(yán)格管理 sys和system用戶,必須修改其 默認(rèn)密碼,禁止用該用戶建立數(shù)據(jù)庫應(yīng)用對象。 刪除或鎖定數(shù)據(jù)庫測 試用戶scott
36、。2.4.62 數(shù)據(jù)庫級用戶權(quán)限設(shè)計必須按照應(yīng)用需求,設(shè)計不同的用戶訪問權(quán)限。包括應(yīng)用系統(tǒng)管 理用戶,普通用戶等,按照業(yè)務(wù)需求建立不同的應(yīng)用角色。用戶訪問另外的用戶對象時,應(yīng)該通過創(chuàng)建同義詞對象synonym進(jìn)行訪問。2.4.63 角色與權(quán)限確定每個角色對數(shù)據(jù)庫表的操作權(quán)限,如創(chuàng)建、檢索、更新、刪 除等。每個角色擁有剛好能夠完成任務(wù)的權(quán)限,不多也不少。在應(yīng)用 時再為用戶分配角色,則每個用戶的權(quán)限等于他所兼角色的權(quán)限之 和。2.4.64 4. 應(yīng)用級用戶設(shè)計應(yīng)用級的用戶帳號密碼不能與數(shù)據(jù)庫相同, 防止用戶直接操作數(shù) 據(jù)庫。用戶只能用帳號登陸到應(yīng)用軟件,通過應(yīng)用軟件訪問數(shù)據(jù)庫, 而沒有其它途徑操作
37、數(shù)據(jù)庫。2.4.65 5. 用戶密碼管理用戶帳號的密碼必須進(jìn)行加密處理,確保在任何地方的查詢都不 會出現(xiàn)密碼的明文。2.5. SQLIi寫2.5.1. 字符類型數(shù)據(jù)SQL中的字符類型數(shù)據(jù)應(yīng)該統(tǒng)一使用單引號。特別對純數(shù)字的字 串,必須用單引號,否則會導(dǎo)致內(nèi)部轉(zhuǎn)換而引起性能問題或索引失效 問題。利用trim(),lower() 等函數(shù)格式化匹配條件。2.5.2. 復(fù)雜 sql對于非常復(fù)雜的sql(特別是有多層嵌套,帶子句或相關(guān)查詢的), 應(yīng)該先考慮是否設(shè)計不當(dāng)引起的。對于一些復(fù)雜SQL可以考慮使用程 序?qū)崿F(xiàn)。user_tab_commeNTS 字典Comment on可力口注解2.5.3. 高效性
38、. 避免In子句使用In或not In 子句時,特別是當(dāng)子句中有多個值時,且查 詢數(shù)據(jù)表數(shù)據(jù)較多時,速度會明顯下降??梢圆捎眠B接查詢或外連接 查詢來提高性能。Char比varchar 查詢時高效。在進(jìn)行查詢及建立索引時,char 比varchar的效率要高,當(dāng)然 varchar在存儲上比char要好。2.5.32 避免嵌套的Select子句這個實(shí)際上是In子句的特例。.避免使用Select * 語句如果不是必要取出所有數(shù)據(jù),不要用*來代替,應(yīng)給出字段列表, 注:不含 select count(*)2.534. 避免不必要的排序不必要的數(shù)據(jù)排序大大的降低系統(tǒng)性能。2.
39、534.4. 健壯性2.534.4.1. Insert 語句使用Insert語句一定要給出要插入值的字段列表,這樣即使更 改了表結(jié)構(gòu)加了字段也不會影響現(xiàn)有系統(tǒng)的運(yùn)行。2.534.4.2. Count(*)、Count(id)、count(distinct id) 的區(qū)別Select count(*) from testtab得到表testtab 的記錄數(shù)select count(id) from testtab得到表testtab id 字段非空記錄數(shù)select count(distinct id) from testtab得到表testtab id字段值非相同記錄數(shù)2.534.4.3. N
40、ot null為字段類型性質(zhì)的約束本約束功能在后期無語法使期失效,可使用修改字段類型方式。alter table modify 字段名 類型 not nullalter table modify 字段名類型2.534.4.4. 外鍵值可用null的問題外鍵列如沒有明確說明 not null ,可插入null記錄(而null 是在外部表的記錄中沒有的),如無可插 null記錄的想法,要對外 鍵字段加not null約束。2.534.4.5. 序列sequence跳號的問題sequence因回滾,系統(tǒng)崩潰(使用cache內(nèi)的值將認(rèn)為已用), 多表引用都將使其跳號,所以不能用于為連續(xù)序號 utl_r
41、ow.cast_to_row2.534.4.6. unicn intersect' minus 使用 ordey by 的注意事項以上語句進(jìn)行連表操作,而表同表的字段順序的類型相同但字段 標(biāo)題名可不同,使用ordey by時后面如果是字段名,要求所有的表 的字段標(biāo)題名相同,否則用字段的順序號select id,name,year from useriunionselect no,name,to_number(null) year from user2order by 1,name,year2.534.5. 安全性無論在使用Select,還是使用破壞力極大的Update和Delete語句
42、時,一定要檢查Where條件判斷的完整性,不要在運(yùn)行時出現(xiàn)數(shù)據(jù)的重大丟失。如果不確定,最好先用 Select語句帶上相同條件來驗(yàn) 證一下結(jié)果集,來檢驗(yàn)條件是否正確。2.534.6. 完整性有依賴關(guān)系的表,例如主外鍵關(guān)系表,在刪除父表時必須級聯(lián)刪 除其子表相應(yīng)數(shù)據(jù),或則按照某種業(yè)務(wù)規(guī)則轉(zhuǎn)移該數(shù)據(jù)。9I中表中字段縮小及變類型,字段為空或表空,varchar和char長度不變可任意改,字段名和表名可字段可用 ALTER TABLE table SET UNUSED (column)設(shè)定為不可用,注意無命令再設(shè)為可用。3 .備份恢復(fù)設(shè)計原則3.1. 數(shù)據(jù)庫exp/imp備份恢復(fù)Oracle數(shù)據(jù)庫的Ex
43、p> Imp提供了數(shù)據(jù)快速的備份和恢復(fù)手段, 提供了數(shù)據(jù)庫級、用戶級和表級的數(shù)據(jù)備份恢復(fù)方式。 這種方法一般 作為數(shù)據(jù)庫輔助備份手段。3.1.1. 數(shù)據(jù)庫級備份原則在數(shù)據(jù)庫的數(shù)據(jù)量比較小,或數(shù)據(jù)庫初始建立的情況下采用。 不 適合7*24的在線生產(chǎn)環(huán)境數(shù)據(jù)庫備份。3.1.2. 用戶級備份原則在用戶對象表數(shù)據(jù)容量比較小、或則用戶對象初始建立的情況下使用。3.1.3. 表級備份原則主要在以下場合采用的備份方式:參數(shù)表備份、靜態(tài)表備份、分 區(qū)表的分區(qū)備份。3.2. 數(shù)據(jù)庫冷備份原則數(shù)據(jù)庫冷備份必須符合以下原則:1)數(shù)據(jù)庫容量比較小。2)數(shù)據(jù)庫允許關(guān)閉的情況。3.3. Rman&份恢復(fù)原則
44、這種方式適用于7*24環(huán)境下的聯(lián)機(jī)熱備份情形。3.3.1. Catalog 數(shù)據(jù)庫單獨(dú)建立備份恢復(fù)用的數(shù)據(jù)庫實(shí)例,盡可能與生產(chǎn)環(huán)境的數(shù)據(jù)庫分開,確保catalog與生產(chǎn)數(shù)據(jù)庫的網(wǎng)絡(luò)連接良好。在 9I系統(tǒng)使用 良好的備份策略以可,支持完全使用控制文件保存catalog信息,備 份策略如下:backup spfile format'/data/backup/%d_SPFILE_%T_%s_%p.bak'sql "alter system archive 10g current"backup archivelog all format'/data/back
45、up/%d ARC%T%s%p.bak' delete allinput;backup current controlfile format'/data/backup/%d_CTL_%T_%s_%p.bak'在spfile、控制文件、數(shù)據(jù)庫全丟的情況下可通過下面 的方式恢復(fù)RMAN> connect targetconnected to target database (not started)RMAN> startupRMAN> restore spfile from7data/backup/COMMDB_SPFILE_20030411_9_1.ba
46、k'SQL> startupORA-00205: error in identifying controlfile, checkalert log for more infoRMAN> restore controlfile from'd:DB92_CTL_20031113_9_1.BAK'Mout database:RMAN> recover database;RMAN> alter database open resetlogs;注意:對數(shù)據(jù)庫設(shè)定控制文件保存?zhèn)浞菪畔?365天,具體語句如下alter system set control_
47、file_record_keep_time=365 SCOPE=BOTH;3.3.2. Archive Log設(shè)置Archive Log的位置,確保存儲介質(zhì)有足夠的空間來保留 指定時間內(nèi)archive log 的總量。建設(shè)定期對 RMANJ行全備份,刪 除冗余歸檔日志文件。3.3.3. 全備份策略對于小容量數(shù)據(jù)庫,可以采用全備份策略。對于大容量數(shù)據(jù)庫, 必須制定全備份策略方案,備份時對 archive log進(jìn)行轉(zhuǎn)儲,同時冷 備份catalog數(shù)據(jù)庫。3.3.4. 增量備份策略對于大容量數(shù)據(jù)庫,必須制定增量備份、累積備份和全備份的周 期,備份時對archive log 進(jìn)行轉(zhuǎn)儲,同時冷備份ca
48、talog數(shù)據(jù)庫c3.3.5. 恢復(fù)原則采用Rman如本進(jìn)行數(shù)據(jù)庫恢復(fù)。數(shù)據(jù)庫恢復(fù)有以下幾種:. 局部恢復(fù)主要用于恢復(fù)表空間、數(shù)據(jù)文件,一般不影響數(shù)據(jù)庫其他操作。. 完全恢復(fù)數(shù)據(jù)庫恢復(fù)到故障點(diǎn),由catalog當(dāng)前數(shù)據(jù)庫決定。. 不完全恢復(fù)恢復(fù)到數(shù)據(jù)庫的某一時間點(diǎn)或備份點(diǎn)?;謴?fù)catalog數(shù)據(jù)庫?;謴?fù)數(shù)據(jù)庫control file ?;謴?fù)到數(shù)據(jù)庫某一時間點(diǎn)。重設(shè)日志序列。3.4. 備用數(shù)據(jù)庫原則數(shù)據(jù)庫系統(tǒng)在以下情況下可以考慮采用備用數(shù)據(jù)庫data guard原則:數(shù)據(jù)庫容量適中。數(shù)據(jù)庫嚴(yán)格要求7*24不間斷,或間斷時間要求控制在最小范圍 內(nèi)。數(shù)據(jù)庫要
49、求有異地備份冗余。3.5. 一些小經(jīng)驗(yàn)使用oemc的oms時,首選項要求是節(jié)點(diǎn)和數(shù)據(jù)庫分別加入系統(tǒng) 用戶(如:administrator )和數(shù)據(jù)庫 DBA用戶(system)。節(jié)點(diǎn)的系 統(tǒng)用戶必須有批處理作業(yè)登錄的權(quán)限。agent不能啟動,lisnter 修改后都要手動刪除oracleora9networkagent 中的*q 文件。oracleadminmy9ibdump中是用戶的出錯日志。改變表的空間的方式 alter table hr.ssss move TABLESPACEexample (要重建索引);或用imp導(dǎo)入時,設(shè)定導(dǎo)入用戶只有某一表空間的使用權(quán),無RESOURCE色和UN
50、LIMITED TABLESPACE艮。aleter system set log_checkpoint_to_alter=true ,后可報警文件發(fā)現(xiàn)checkpoint的起動和結(jié)束時間。3.6. 系統(tǒng)調(diào)優(yōu)知識3.6.1. 生成狀態(tài)報表(statspack 的使用)使用(存放位置)的文件生成報表用戶。?rdbmsadminSpcreate.sql 建表。將 timed_statistics 設(shè)定 true 。使用生成的perfstat用戶登錄,執(zhí)行以下語句手動收集信息。Exex statspack.snapExecstatspack.snap(I_SNAP_LEVEL=>0,I_MOD
51、EFY_PRAMETER=>TRUE0級,最少10最大。使用下面的語句生成狀態(tài)報表:?rdbmsadminSpreport.sql其他相關(guān)文件delete stats$snapshot ;清原來記錄數(shù)據(jù)?rdbmsadminSaputo.sql取用戶作業(yè)號select job from user_jobsexec dbms_remove(作業(yè)號)timed_statistics=true 要求?rdbmsadminspdrop.sql ;3.6.2. sql 追蹤設(shè)定全部用戶跟蹤alter system set sql_trace=true;用戶級別跟蹤alter session set
52、 sql_trace=true;用戶 的跟 蹤文件 生成在 adminpidudumppid_ora_ SPID.trc 中,spid從下面語句得到SELECT bkpr, s.username, p.spid,s.sid,s.serial# FROM v$bgprocess b, v$session s, v$process p WHERE p.addr = b.paddr(+) AND p.addr = s.paddr and s.username=user;DBA寸特定用戶跟蹤execdbms_system_set_Sql_trace_in_session(sid,seria
53、l#,true)信息從下面得到SELECTbkpr,s.username,p.spid,s.sid,s.serial#,osuser,gram FROM v$bgprocess b, v$session s, v$process p WHERE p.addr = b.paddr(+)AND p.addr =s.paddr;/*p.spid 用于 sql_trace 時日志編號,dbms_system.set_sql_trace_in_session(sid,erial#,true)*/用戶的跟蹤文件生成在 adminpidudump 中系統(tǒng)的跟蹤文件生成在 adminpi
54、dbdumpalert_pid.logtkprof.exe 將log文件生成格式化文本在av Rd(ms) 20以上說明表空間使用過用頻繁,考慮將表分開 其他表空間上系統(tǒng)變量fast_start_mttr_target的值要大到不產(chǎn)生log等待,當(dāng)然也可通過加10g組使其不等待reao log大小應(yīng)為每30分鐘切換一次建議表空間的利用率不超80%buffer hit 要達(dá)80必上為好3.6.3. 內(nèi)存調(diào)整一般的內(nèi)存分配原則SGA 50%(其中 80% DATA BUFFER15% SHARE POOL5 其他)PGA30%OS 20%例如:2G的 WINDOWS平臺,OS 300M SAG 1
55、.2G,PGA 500M內(nèi)存分配的基本單位SGA=128M 4MSGA128M6 4位系統(tǒng)1 6 M, 3 2 M系統(tǒng)8 M動態(tài)分配時總值不可大于 sga_max_size通過 V$SGA_DYNAMIC_FREE_MEMORY內(nèi)存空間在縮小時如果內(nèi)存空間實(shí)際在應(yīng)用中,CPU利用率將達(dá)100%,最后將語句出錯。V$SGASTAT可看實(shí)際的使用情況Redo log buffer 一般在 5 M 內(nèi),可通過 v$sessuon_wait 看是 否等,v$sysstat可也通過報警文件看是否等切換,方法可加組。可通過nologging (數(shù)據(jù)庫也要設(shè)定支持nologging )方法減少日志文件產(chǎn)生量。java_pool 沒有設(shè)定時,使用 shared_pool_size. shared_pool本緩沖區(qū)用于sql語句,pl sql等的對象保存Cursor_sharingExact|Similar|force游標(biāo)共享設(shè)定Force方式適用OLT嗽據(jù)庫,Exact方式適合數(shù)據(jù)倉庫,similar 為智能方式hard parses 硬SQL語句分析,每秒要底于 100次,小要加大 shared_poolsoft parse 軟SQ
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶市涪陵區(qū)第十九中學(xué)2024-2025學(xué)年物理八上期末考試模擬試題含解析
- 亳州市重點(diǎn)中學(xué)2024年七上數(shù)學(xué)期末學(xué)業(yè)水平測試模擬試題含解析
- 成都市二手房交易房產(chǎn)過戶及產(chǎn)權(quán)轉(zhuǎn)移服務(wù)合同
- 車貸保證金及車輛貸款利率調(diào)整通知協(xié)議范本
- 市場調(diào)研背景與目的
- 2025至2030富馬酸福莫特羅行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國蒸汽高壓釜行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 機(jī)艙輕量化革新:技術(shù)發(fā)展與市場策略
- 2025年六年級數(shù)學(xué)校本課程開發(fā)計劃
- 文化傳承主題班會計劃
- 2024年廣東廣州市天河區(qū)社區(qū)專職工作人員招聘筆試參考題庫附帶答案詳解
- 電池的歷史與發(fā)展
- 醫(yī)患溝通原則與技巧課件
- 小學(xué)學(xué)業(yè)生涯規(guī)劃與目標(biāo)
- 2023年CQE客訴工程師年度總結(jié)及下年規(guī)劃
- 國家開放大學(xué)《中國法律史》形成性考核1
- 攪拌類設(shè)備單機(jī)試車原始記錄
- 老舊小區(qū)物業(yè)投標(biāo)方案(技術(shù)標(biāo))
- 國家開放大學(xué)法學(xué)本科《商法》歷年期末考試試題及答案題庫
- 城市水工程概論
- 空調(diào)溫度控制系統(tǒng)的設(shè)計與實(shí)現(xiàn)畢業(yè)論文
評論
0/150
提交評論