Oracle9i 數據庫管理實務講座(五)
2024-08-29 13:40:07
供稿:網友
手動建立 Oracle9i 數據庫
前幾期我們分別探討 Oracle9i 核心要素與數據庫實體組成,相信大家對于 Oracle9i 數據庫服務器已經具有一定程度的了解了。本期我將介紹手動建置 Oracle9i 數據庫的步驟與相關注重事項。
本文內容將涵蓋下列主題:
n 建立數據庫的前置工作
n 起始參數檔的重要參數
n手動建立 Oracle9i 數據庫的步驟
n如何移除 Oracle9i 數據庫
不管原因為何,當您預備自行建立 Oracle9i 數據庫時,都必須事先做好妥善預備。因為手動建立 Oracle9i 數據庫并不是件輕易的事,可能的話應該盡量使用 Oracle9i 提供的「數據庫建置輔助精靈」來建立新數據庫。但是要想成為一個合格的 Oracle DBA,您也必須熟稔手動建立數據庫的方式,才能面對建置 Oracle9i 數據庫所可能碰到的任何問題。
首先我們先看看建立 Oracle9i 數據庫之前應注重那些事情。
建立 Oracle9i 數據庫的前置處理工作
在開始建立新的 Oracle9i 數據庫之前,建議您先做好下列預備工作:
n評估資料表與索引的存放位置,并預估其所需空間(假如可能的話)。
n 規劃操作系統下數據庫實體檔案的部署方式 — 良好的檔案配置將大幅改善資料存取效能。不管是安裝 Oracle 服務器軟件或是建置新數據庫時,都必須非凡注重這點。例如說,您可以將重置日志文件 (Redo Log files) 置于其它磁盤或是 RAID 1磁盤陣列上;而將數據文件置于 RAID 5磁盤陣列上。
n選定「全域數據庫名稱」(global database name) — 它是在網際網絡上識別 Oracle9i 數據庫的方式,由 數據庫名稱 與 網域名稱 組成,分別設定在起始參數檔的 DB_NAME 與 DB_DOMAIN 參數內。
n熟悉起始參數檔內較重要的參數,甚至「服務器參數檔」(server parameter file)的使用時機與其功用。
n選定適當的數據庫字符集。所有字符資料都是依照特定字符集存入數據庫,因此您必須在建立數據庫時指定適當字符集 (注[1])。
n選定「標準資料區塊」大小 — 設定在起始參數檔的 DB_BLOCK_SIZE 參數。除了 SYSTEM 資料表空間,其它資料表空間也可以遵循「標準資料區塊」的設定。此外,在 Oracle9i 數據庫中,您可以設定額外四種「非標準資料區塊」。需要注重的是,「標準資料區塊」大小在數據庫建立完成后即無法更改。
n針對未來數據庫的運作情況,訂立一份良好的數據庫備份計劃,以便數據庫毀損時能在最短時間內予以修復。
n熟悉 Oracle9i 數據庫的激活/關閉方式,與其搭配的各種選項(如 STARTUP 指令的 nomount、mount、open 選項)。
n 確認物理內存是否足以激活 Oracle9i Instance。
n確認 Oracle9i 服務器機的磁盤空間足夠,以建置新數據庫。
除了本文提及的注重事項,您也可以查閱各種操作系統專屬的 Oracle9i 安裝指南,以獲取更詳盡的信息。
選擇數據庫建置方式
Oracle9i 數據庫建置過程包含下列三項主要工作:
n 建置新的數據庫實體檔案,包含資料文件、重置日志文件。
n 建立控制檔,并予以初始化。
n 建置 Oracle9i 存取數據庫系統時必要的數據字典(data dictionary)。
實際上,您可能經由下列三種方式之一來建置新的 Oracle9i 數據庫時:
n 使用 Oracle「數據庫建置組態精靈」(Database Configuration Assistant,DBCA)。
Oracle Universal Installer 在安裝過程中會適時激活 DBCA 協助您建立數據庫,視您選擇的安裝種類而定。DBCA 將以圖形接口方式引導您逐步完成 Oracle9i 數據庫的建置工作。若是安裝過程未激活 DBCA,您也可以事后單獨激活 DBCA 建立新數據庫,甚至建立第二個 Oracle9i 數據庫。
n 執行指令文件(script)手動建立 Oracle9i 數據庫
假如您手邊恰好保存著上次建立 Oracle9i 數據庫所用的指令文件,那么您可以直接編修該指令文件,并予以執行。否則,建議您使用 Oracle9i 提供的范例指令文件進行編修。Oracle9i 不僅提供了數據庫建置范例指令文件,也提供了起始參數范例文件。您可視實際需要進行必要調整。
n移轉(migrate)或升級(upgrade)既有數據庫。
假如您的應用系統正在存取既有 Oracle 數據庫,除非您需要一個全新的數據庫或是測試用環境,否則應該不需要建立新數據庫。
在此情況下,您所面臨的將是數據庫移轉或升級議題。有關這方面的詳盡信息,請參閱《Oracle9i Database Migration》手冊。
再談起始參數檔
還記得上一期曾經提過的起始參數檔嗎?因為手動建立 Oracle9i 數據庫之前必須先激活 Oracle9i Instance,因此您必須先建立一個起始參數檔。建立新的起始參數檔時,最快速的方式就是編輯 Oracle9i 提供的范例檔案,然后另存新檔。我較習慣的方式是直接編輯既有起始參數檔之復本,然后視實際需要進行調整。因為起始參數檔可供設定的參數非常多,假如某些參數未經過明確設定,Oracle9i 會自動代入默認值。
第一次以手動方式建立 Oracle 數據庫時,建議您盡可能不要修改各起始參數值。等到您熟悉每個參數的意義與使用時機之后,再利用文字編輯器調整或新增其它參數。除此之外,Oracle9i 答應您建立服務器參數文件(以二進制格式存放)。該檔案內的參數可在 Oracle9i Instance 激活后執行 ALTER SYSTEM 指令予以修改。
以下是建置新數據庫之前必須新增或編輯的起始參數,包括:
n 全域數據庫名稱
n 控制文件名稱與路徑
n 資料區塊大小
n 影響 SGA 容量的起始參數
n 設定處理程序最大數目
n 設定空間回復(Undo)治理方法
設定全域數據庫名稱
Oracle9i 的全域數據庫名稱由「數據庫名稱」與「網域名稱」所組成,其中「數據庫名稱」設定于 DB_NAME 起始參數,而「網域名稱」則是設定于 DB_DOMAIN 參數。這兩個參數合并之后就可以在網際網絡上唯一識別每一個 Oracle9i 數據庫。舉例來說,假設我們欲建立的 Oracle9i 數據庫之全域數據庫名稱為 mydb.uuu.com.tw,那么可在起始參數檔內設定下列兩參數:
DB_NAME = mydb
DB_DOMAIN = uuu.com.tw
Tips:
您可以執行 ALTER DATABASE RENAME GLOBAL_NAME 指令更改 Oracle9i 數據庫的全域數據庫名稱;在您更改 DB_NAME 與 DB_DOMAIN 這兩個起始參數后必須將 Oracle9i 數據庫重新激活才會生效。此外,控制檔也必須重新建立。
關于 DB_NAME 起始參數
DB_NAME 必須是文字字符串,且不能超過 8 個字符。在建立數據庫的過程中,DB_NAME 設定值會記錄在資料文件、控制文件、以及重置日志文件之中。假如您激活 Oracle9i Instance 的時候,起始參數檔內設定的 DB_NAME 不同于控制文件內所紀錄的,那么數據庫將無法激活。
關于 DB_DOMAIN 起始參數
DB_DOMAIN 通常是數據庫主機所在位置的網域名稱。假如您欲建立的數據庫將加入分布式數據庫運算環境,請非凡注重此參數的設定。
設定控制檔
如前所述,控制文件是 Oracle9i 數據庫內相當重要的檔案。因此您必須在新的起始參數檔內加入 CONTROL_FILE 參數以設定控制文件之文件名與路徑。當您執行 CREATE DATABASE 時,列在 CONTROL_FILE 之中的控制檔將隨之建立。假如起始參數檔忽略了此項參數,則 Oracle9i 會在執行 CREATE DATABASE 指令時自動建立控制文件并命名之,然后放在系統預設路徑下。
那么,假如 CONTROL_NAME 內設定的控制文件已經存在于操作系統下該怎么辦呢?此時 Oracle9i 會自動覆蓋既有的控制檔。假如您想建立全新的控制檔,請確定 CONTROL_NAME 設定的控制文件名不會與操作系統下任何文件名重復。
依照過去經驗,Oracle 強烈建議您為每個數據庫至少規劃兩個控制檔,并分散在兩個實體磁盤上。如此可避免任一控制文件毀損時造成系統停擺。
設定資料區塊大小
Oracle9i 數據庫內存放資料的最小單位為「資料區塊」(data block)。數據庫內「標準資料區塊」大小是設定在起始參數檔之 DB_BLOCK_SIZE 參數。Oracle9i 數據庫內最重要的 SYSTEM 資料表空間就是以 DB_LOCK_SIZE 設定值為基礎所建立。此外 DB_BLOCK _SIZE 也是建立新資料表空間時預設的資料區塊大小。除了標準資料區塊大小之外,Oracle9i 支持額外 4 種「非標準資料區塊」大小。
關于 DB_BLOCK_SIZE 起始參數
從 Oracle9i 開始,DB_BLOCK_SIZE 所設定的僅是標準資料區塊大小;絕大多數的數據庫環境只需要設定該參數即可。一般來說,DB_BLOCK_SIZE 可設定為 4K 或 8K。假如此參數未經設定,則 Oracle9i 會自動依照數據庫所在操作系統平臺自行決定適當的資料區塊大小。
需要注重的是,標準資料區塊大小在數據庫建立之后就無法改變 — 除非重建數據庫。假如數據庫的「資料區塊」大小不同于「操作系統區塊」大小,那么建議您將 DB_BLOCK_SIZE 設為「操作系統區塊」大小之整數倍。假定操作系統區塊大小為 4K,則不妨設定 DB_BLOCK_SIZE = 8192。在某些情況下,這樣的組態方式將會顯著地提升資料存取效能。
何謂「非標準資料區塊」?
由「非標準資料區塊」構成的資料表空間可經由 CREATE TABLESPACE 指令搭配 BLOCKSIZE 子句建立之;其區塊大小設定值可為 2K、4K、8K、16K、32。需注重的是此類型資料區塊將受到操作系統