国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle9i 數據庫管理實務講座(七)-Oracle9i 數據庫控制文件

2024-08-29 13:38:56
字體:
來源:轉載
供稿:網友

  作者: 何致億, 美商甲骨文公司臺灣分公司特約顧問
  
  經過前幾期專欄文章的洗禮,相信大家對于 Oracle9i 數據庫應該已具備一些基本治理概念,但是這還不足以駕馭 Oracle9i 數據庫!接下來我將從實務角度深入解說 Oracle9i 數據庫的各種核心組成組件,與各種數據庫治理技巧。本期先從 Oracle9i 數據庫的控制文件(Control files) 開始談起。
  控制檔的角色
  
  每一個 Oracle9i 數據庫都必須有一個控制檔。它是一個小型二進制檔案,主要是儲存 Oracle9i 數據庫結構信息,包括:
  
  n     數據庫名稱
  
  n     數據庫建立時間
  
  n     資料文件名稱與所在位置
  
  n     重置日志文件名稱與所在位置
  
  n     目前的日志序列碼(log sequence number)
  
  n     檢查點信息
  
  
  
  簡言之,控制檔可用來描述 Oracle9i 實體結構。因此開啟 Oracle9i 數據庫時一定要讀取控制文件才能取得所有數據庫實體檔案相關信息。一旦控制文件不幸毀損,數據庫便無法順利開啟。也因為如此,控制檔的治理與維護工作顯得格外重要。
  
  
  
  如何治理控制檔
  
  設定控制文件名稱與所在位置
  
  因為控制文件將用來存放 Oracle9i 數據庫的實體結構信息,即使目前尚未建置 Oracle9i 數據庫,您也必須先預備好控制檔!換言之,在激活 Oracle Instance 時就必須知道控制文件的名稱與所在位置。為此,控制文件的相關信息必須設定在起始參數檔內,才能在開啟 Oracle Instance 時一并讀取控制檔內容,進而激活 Oracle9i 數據庫。控制文件的名稱與所在路徑位置是設定在起始參數檔內 CONTROL_FILES 參數。
  
  如何配置控制文件
  
  每個 Oracle9i 數據庫最好擁有兩個以上控制檔,并各自存放在不同磁盤上。如此一來當控制檔因故毀損時,您便可以在最短時間內修復控制文件,盡可能縮短數據庫停擺時間。假定您的 Oracle9i 數據庫目前配置了三個控制文件,那么 Oracle 如何維護這些控制檔呢? Oracle9i 與控制檔的互動方式如下:
  
  n     開啟 Oracle 數據庫時,只會讀取第一個控制文件(順序以 CONTROL_FILES 的設定值為基準)。
  
  n     假如需要將特定信息寫入控制文件,則 Oracle 會同時寫入 CONTROL_FILES 參數所指定的檔案。
  
  n     當某個控制檔發生問題時,Oracle Instance 將因此停擺。
  
  
  
  如前所述,各控制檔復本應該分散在不同實體磁盤。因此實際上規劃一個正式系統時,請仔細思考控制文件與重置日志文件之搭配方式。
  
  
  
  假定目前的重置日志群組有兩個,分別置于 /u01 與 /u02 兩個磁盤;每個重置群組包含三個重置日志文件:
  
  /u01/oradata/ora901/log1a.rdo   (Group1)
  
  /u01/oradata/ora901/log2a.rdo         (Group2)
  
  /u02/oradata/ora901/log1b.rdo     (Group1)
  
  /u02/oradata/ora901/log2b.rdo         (Group2)
  
  /u03/oradata/ora901/log1c.rdo     (Group1)
  
  /u03/oradata/ora901/log2c.rdo         (Group2)
  
  
  
  此時不妨在 /u01 與 /u02 各配置一個控制文件。如此可有效降低重置日志文件與控制文件同時遺失的風險。因為不管哪個磁盤出問題,另一個磁盤仍然保留完整的重置日志文件與控制文件資料。
  
  
  
  如何決定控制檔大小
  
  Oracle9i 控制檔大小主要是由 CREATE DATABASE 指令內數個參數所決定,分別是: MAXDATAFILES、MAXLOGFILES、MAZLOGMEMBERS、MAXLOGHISTORY 與 MAXINSTANCES。
  
  
  
  控制檔建立方式
  
  經由 CREATE DATABASE 指令建立控制文件
  
  Oracle9i 控制文件在建立數據庫的同時就會一并建立;換句話說,當您執行 CREATE DATABASE 之后就會產生控制檔。但是有一點必須注重:CREATE DATABASE 指令內并未指定控制文件相關信息! 其實控制文件的名稱與所在位置是定義在起始參數檔的 CONTROL_FILES 參數,其命名方式必須視操作系統環境而定;例如 Windows 系統與 linux 系統的檔案路徑表示法就不相同。以下是 CONTROL_FILES 參數之定義方式:
  
  CONTROL_FILES = ( /u01/oracle/ora901/control01.ctl,
  
  /u02/oracle/ora901/control02.ctl,
  
  /u03/oracle/ora901/control03.ctl)
  
  
  
  假如 CONTROL_FILES 參數所指定的文件名稱已經存在于操作系統中怎么辦? 此時您在執行 CREATE DATABASE 指令時就會發生錯誤,不過只要加上 CONTROL FILE REUSE 子句即可。
然而,假如現有控制檔名稱與 CONTROL_FILES 所設定的名稱相同,但是其 “大小” 卻不同,那么您還是無法使用 REUSE 選項。
  
  
  
  建立額外的控制檔
  
  為了避免控制文件(或其所在磁盤)毀損時影響到 Oracle9i 數據庫正常運作,您也許需要在其它硬盤上新增其它控制檔。最簡單的方式就是先將既有控制文件復制到目的位置,然后將控制文件名稱加入起始參數檔的 CONTROL_FILES 之中。同理,假如想更改控制檔名稱,也可以先將控制文件復制到目的位置后予以更名,再更新 CONTROL_FILES 參數。請注重,不管是上述何項動作,都應該先關閉 Oracle9i instance 再進行。在其它磁盤建立額外控制文件的步驟如下:
  
  1.    關閉 Oracle9i 數據庫。
  
  2.    在操作系統下將既有控制文件復制到目的位置。
  
  3.    開啟起始參數檔,并修改 CONTROL_FILES 參數。您必須將新的控制文件名與所在目錄名稱加入 CONTROL_FILES 參數。
  
  4.    重新開啟 Oracle9i 數據庫。
  
  
  
  建立全新的控制檔
  
  除了將控制文件復制到其它磁盤之外,某些時候您可能需要建立 ”全新的” 控制檔,例如:
  
  n     目前數據庫既有的控制文件不幸毀損,不僅未進行備份,也尚未在其它磁盤建立鏡射控制文件。
  
  n      您希望更改 CREATE DATABASE 指令內設定的控制文件相關參數,例如:數據庫名稱,或是 MAXLOGFILES、MAXLOGMEMBERS 與 MAXLOGHISTORY 等參數。
  
  
  
  舉例來說,在分布式運算環境中可能會有兩部 Oracle9i 數據庫名稱相同,其中一臺必須更改數據庫名稱。也有可能因為 MAXLOGFILES 與 MAXLOGMEMBERS 最初設定值太小,現在必須加大。上述情況都必須建立全新的控制檔。以下是建立具體的建置步驟:
  1.     先整理一份數據庫檔案清單,其中包含所有數據文件與重置日志檔案之路徑與名稱。V$LOGFILE 與 V$DATAFILE 這兩個視觀表可協助您進行這項供工作,例如:
  SELECT member FROM v$logfile;
   Oracle9i 數據庫治理實務講座(七)-Oracle9i 數據庫控制文件(圖一)
點擊查看大圖

  SELECT NAME FROM V$DATAFILE;
   Oracle9i 數據庫治理實務講座(七)-Oracle9i 數據庫控制文件(圖二)
點擊查看大圖

  2.     關閉數據庫。請盡可能以 NORMAL 選項關閉數據庫,必要時才使用 IMMEDIATE 或 ABORT 選項。
  
  3.     重新激活 Oracle Instance 至 NOMOUNT 狀態:
  
  STARTUP NOMOUNT;
  
  4.     執行 CREATE CONTROLFILE 指令建立新的控制文件。以下范例將為 ora901 數據庫建立一個全新的控制檔:
  
  CREATE CONTROLFILE
  
  SET DATABASE ora901
  
  LOGFILE GROUP 1 ( '/u01/oracle/ora901/redo01_01.log',
  
  '/u01/oracle/ora901/redo01_02.log'),
  
  GROUP 2 ( '/u01/oracle/ora901/redo02_01.log',
  
  '/u01/oracle/ora901/redo02_02.log'),
  
  GROUP 3 ( '/u01/oracle/ora901/redo03_01.log',
  
  '/u01/oracle/ora901/redo03_02.log')
  
  NORESETLOGS
  
  DATAFILE  '/u01/oracle/ora901/system01.dbf'   SIZE 300M,
  
  '/u01/oracle/ora901/rbs01.dbf'     SIZE 50M,
  
  '/u01/oracle/ora901/users01.dbf'    SIZE 500M,
  
  '/u01/oracle/ora901/temp01.dbf'    SIZE 100M
  
  MAXLOGFILES 100
  
  MAXLOGMEMBERS 3
  
  MAXDATAFILES 500
  
  MAXINSTANCES 10
  
  ARCHIVELOG;
  
  
  注重,假如您打算在控制文件內更改數據庫名稱,則必須使用 RESETLOGS 選項,否則請使用 NORESETLOGS 選項。
  
  
  
  5.     必要時修改起始參數檔 CONTROL_FILES 參數。假如數據庫名稱已被更改,請記得修改 DB_NAME 參數。
  
  6.     將數據庫開啟至 Open 狀態:
  
  ALTER DATABASE OPEN;
  
  假如您建立控制文件時曾搭配 RESETLOGS 選項,那么執行 ALTER DATABASE 指令時必須加上 RESETLOGS 選項:
  
  ALTER DATABASE OPEN RESETLOGS;
  
  備份控制檔
  
  也許您已經在不同磁盤上配置多個控制文件,但這并不表示控制檔永遠不會毀損。
為此,您應該適時備份這些控制檔;非凡是在 Oracle9i 數據庫實體結構經過變動時,例如:
  
  n     新增或移除數據文件,或是更改某數據文件名稱。
  
  n     新增或移除表格空間,或是更改表格空間的狀態。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金湖县| 巨鹿县| 阿拉善左旗| 乌恰县| 寿光市| 乐东| 远安县| 田阳县| 体育| 车险| 冕宁县| 广德县| 皮山县| 溧阳市| 黔西县| 辽源市| 黑河市| 绥芬河市| 会东县| 万宁市| 萨嘎县| 泌阳县| 桦川县| 威宁| 兴业县| 青岛市| 阳曲县| 图木舒克市| 漾濞| 伊通| 穆棱市| 永登县| 九龙坡区| 西昌市| 洪江市| 邛崃市| 眉山市| 桃园县| 托里县| 中超| 阿巴嘎旗|