Oracle9i 數據庫設計指引全集
數據庫物理設計原則
1.1數據庫環境配置原則
1.1.1操作系統環境:
對於中小型數據庫系統,採用linux操作系統比較合適,對於數據庫冗餘要求負載均衡能力要求較高的系統,可以採用Oracle9i RAC的集羣數據庫的方法,集羣節點數範圍在2—64個。對於大型數據庫系統,可以採用Sun Solaris SPARC 64位小型機系統或HP 9000系列小型機系統。RAD5適合只讀操作的數據庫,RAD1適合OLTP數據庫
1.1.2內存要求
對於linux操作系統下的數據庫,由於在正常情況下Oracle對SGA的管理能力不超過1.7G。所以總的物理內存在4G以下。SGA的大小爲物理內存的50%—75%。對於64位的小型系統,Oracle數據庫對SGA的管理超過2G的限制,SGA設計在一個合適的範圍內:物理內存的50%—70%,當SGA過大的時候會導致內存分頁,影響系統性能。
1.1.3交換區設計
當物理內存在2G以下的情況下,交換分區swap爲物理內存的3倍,當物理內存>2G的情況下,swap大小爲物理內存的1—2倍。
1.1.4其它環境變量參考Oracle相關的安裝文檔和隨機文檔。
1.2數據庫設計原則
1.2.1數據庫SID
數據庫SID是唯一標誌數據庫的符號,命名長度不能超過5個字符。對於單節點數據庫,以字符開頭的5個長度以內字符串作爲SID的命名。對於集羣數據庫,當命名SID後,各節點SID自動命名爲SIDnn,其中nn爲節點號:1,2,…,64。例如rac1、rac2、rac24。
1.2.2數據庫全局名
數據庫全局名稱:
1.2.3數據庫類型選擇
對於海量數據庫系統,採用data warehouse的類型。對於小型數據庫或OLTP類型的數據庫,採用Transaction Processing類型。
1.2.4數據庫連接類型選擇
Oracle數據庫有專用服務器連接類型和多線程服務器MTS連接類型。對於批處理服務,需要專用服務器連接方式,而對於OLTP服務則MTS的連接方式比較合適。由於採用MTS後,可以通過配置網絡服務實現某些特定批處理服務採用專用服務器連接方式,所以數據庫設計時一般採用MTS類型。
1.2.5數據庫SGA配置
數據庫SGA可以採用手工配置或按物理內存比例配置,在數據庫初始設計階段採用按比例配置方式,在實際應用中按系統調優方式修改SGA。
1.2.6數據庫字符集選擇
爲了使數據庫能夠正確支持多國語言,必須配置合適的數據庫字符集,採用UTF8字符集。
注意:如果沒有大對象,在使用過程中進行語言轉換沒有什麼影響,具體過程如下(切記設定的字符集必須是ORACLE支持,不然不能start)
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter database open;
SQL> alter database character set internal_use we8iso8859p1;
|
1.2.9數據庫日誌文件配置
1.2.9.1日誌文件大小
日誌文件的大小由數據庫事務處理量決定,在設計過程中,確保每20分鐘切換一個日誌文件。所以對於批處理系統,日誌文件大小爲幾百M到幾G的大小。對於OLTP系統,日誌文件大小爲幾百M以內。
1.2.9.2日誌文件組數量
對於批處理系統,日誌文件組爲5—10組;對於OLTP系統,日誌文件組爲3—5組,每組日誌大小保持一致;對於集羣數據庫系統,每節點有各自獨立的日誌組。
1.2.9.3日誌成員數量
爲了確保日誌能夠鏡象作用,每日誌組的成員爲2個。
1.2.10數據庫回滾段配置
在Oracle9i數據庫中,設計Undo表空間取代以前版本的回滾段表空間。
Undo表空間大小的設計規範由以下公式計算:
Undospace = UR * UPS *db_block_size+冗餘量
UR: 表示在undo中保持的最長時間數(秒),由數據庫參數UNDO_RETENTION值決定。
UPS:表示在undo中,每秒產生的數據庫塊數量。
例如:在數據庫中保留2小時的回退數據,假定每小時產生200個數據庫塊。則Undospace = 2 * 3600 * 200 * 4K =5.8G
1.2.11數據庫臨時段表空間配置
數據庫臨時段表空間根據實際生產環境情況調整其大小,表空間屬性爲自動擴展。
1.2.12數據庫系統表空間配置
系統表空間大小1G左右,除了存放數據庫數據字典的數據外,其它數據不得存儲在系統表空間。
1.3數據庫表空間設計原則
1.3.1表空間大小定義原則
當表空間 大小小於操作系統對最大文件限制時,表空間由一個文件組成。如果表空間大小大於操作系統對最大文件限制時,該表空間由多個數據文件組成,表空間的總大小爲估算爲:
Tablespace + sum (數據段+索引段)*150%。
1.3.2表空間擴展性設計原則
表空間數據文件採用自動擴展的方式,擴展容量快大小按2的整數倍(1M、2M、4M、8M、16M、32M、64M)進行擴展,創建表空間時儘量採用nologing選項。表空間的最大限制一般採用unlimited,除非確切知道表空間數據文件的最大使用範圍。(一般windows32位系統的文件最大2G,64位的unix系統系統文件最大128G,但也要注意文件格式設定的文件大小),建議最大爲2G。表空間採用local管理方式,例如:
CREATE TABLESPACE TBS_USERINFO
'/oradata/tbs_userinfo.dbf'
SEGMENT SPACE MANAGEMENT AUTO;
|
1.4裸設備的使用
一個scsi設備可以14個分區,unix操作系統256個分區,性能比文件系統方式高15%左右,空間大於要小於(實際分區大小減兩個ORACLE的數據塊),比如100M,大於爲100000K,推薦在unix使用軟連接(ln)方式把裸設備形成文件,用加入表空間時加resue選項,當然也可只接把設備加入表空間,移動裸設備使用dd命令
對於windows平臺,oracle提供軟連接工具,實現裸設備的使用,計算一條記錄的長度
2數據庫邏輯設計原則
2.1命名規範
2.1.1表屬性規範
2.1.1.1表名
前綴爲Tbl_。數據表名稱必須以有特徵含義的單詞或縮寫組成,中間可以用“_”分割,例如:tbl_pstn_detail。表名稱不能用雙引號包含。
2.1.1.2表分區名
前綴爲p。分區名必須有特定含義的單詞或字符串。
例如 :tbl_pstn_detail的分區p2004100101表示該分區存儲2004100101時段的數據。
2.1.1.3字段名
字段名稱必須用字母開頭,採用有特徵含義的單詞或縮寫,不能用雙引號包含。
2.1.1.4主鍵名
前綴爲PK_。主鍵名稱應是前綴+表名+構成的字段名。如果複合主鍵的構成字段較多,則只包含第一個字段。表名可以去掉前綴。
2.1.1.5外鍵名
前綴爲FK_。外鍵名稱應是前綴+外鍵表名+主鍵表名+外鍵表構成的字段名。表名可以去掉前綴。
2.1.2索引
4.1.2.1普通索引
前綴爲IDX_。索引名稱應是前綴+表名+構成的字段名。如果複合索引的構成字段較多,則只包含第一個字段,並添加序號。表名可以去掉前綴。
2.1.2.2主鍵索引
前綴爲IDX_PK_。索引名稱應是前綴+表名+構成的主鍵字段名,在創建表時候用using index指定主鍵索引屬性。
2.1.2.3唯一所以
前綴爲IDX_UK_。索引名稱應是前綴+表名+構成的字段名。
2.1.2.4外鍵索引
前綴爲IDX_FK_。索引名稱應是前綴+表名+構成的外鍵字段名。
2.1.2.5函數索引
前綴爲IDX_func_。索引名稱應是前綴+表名+構成的特徵表達字符。
2.1.2.6蔟索引
前綴爲IDX_clu_。索引名稱應是前綴+表名+構成的簇字段。
2.1.3視圖
前綴爲V_。按業務操作命名視圖。
2.1.4實體化視圖
前綴爲MV_。按業務操作命名實體化視圖。
2.1.5存儲過程
前綴爲Proc_。按業務操作命名存儲過程
2.1.6觸發器
前綴爲Trig_。觸發器名應是前綴+表名+觸發器名。
2.1.7函數
前綴爲Func_。按業務操作命名函數
2.1.8數據包
前綴爲Pkg_。按業務操作集合命名數據包。
2.1.9序列
前綴爲Seq_。按業務屬性命名。
2.1.10表空間
2.1.10.1公用表空間
前綴爲Tbs_。根據存儲的特性命名,例如:tbs_parameter。
2.1.10.2專用表空間
Tbs_<表名稱>_nn。該表空間專門存儲指定的某一個表,或某一表的若干個分區的數據
2.1.11數據文件
<表空間名>nn.dbf。nn =1,2,3,4,…等。
2.1.12普通變數
前綴爲Var_。存放字符、數字、日期型變量。
2.1.13遊標變數
前綴爲Cur_。存放遊標記錄集。
1.2.7.2 Db_block_size
一個extent要是5個blocks的倍數爲好,如:一個blocks是4096字節,那一個extent就是2M、4M或8M爲好。Db_block_size是數據庫最小物理單元,一旦數據庫創建完成,該參數無法修改,db_block_size按以下規則調整:
數據倉庫類型:db_block_size儘可能大,採用8192或16384
OLTP類型:db_block_size用比較小的取值範圍:2048或4096
Blocks推薦是系統操作的塊倍數(裸設備塊大小是512字節,NTFS是4K,使用8K的方式在大部分系統上通用)。
1.2.8數據庫控制文件配置
1.2.8.1控制文件鏡象
多個控制文件存放在不同的物理位置。
1.2.8.2控制文件配置
控制文件中參數設置,最大的數據文件數量不能小於數據庫參數db_files。1.2.7數據庫其它參數配置
1.2.7.1 DB_FILES