首頁  >  文章  >  資料庫  >  詳解Oracle控製檔及日誌檔的管理問題

詳解Oracle控製檔及日誌檔的管理問題

WBOY
WBOY轉載
2022-07-26 14:11:042637瀏覽

這篇文章為大家帶來了關於Oracle的相關知識,主要介紹了Oracle控製檔案及日誌檔案的管理,控製檔案是oracle的實體檔案之一,每個oracle資料庫都必須至少有一個控製文件,它記錄了資料庫的名字、資料文件的位置等信息,下面一起來看一下,希望對大家有幫助。

詳解Oracle控製檔及日誌檔的管理問題

推薦教學:《Oracle影片教學

一、控制檔的管理

控製文件是oracle的實體文件之一,每個oracle資料庫都必須至少有一個控製文件,它記錄了資料庫的名稱、資料檔案的位置等資訊。在啟動資料實例時,oracle會根據初始化參數定位控製文件,然後oracle會根據控製文件在實例和資料庫之間建立關聯。控製文件的重要性在於,一旦控製文件損壞,資料庫將無法啟動。

1、控製文件的概述

控製文件在資料庫創建時自動創建,並在資料庫發生物理變化時會同時更新。在任何時候都要保證控製文件是可用的。只有oracle進程才能夠安全地更新控製檔案的內容,所以,任何時候都不要試圖手動編輯控製檔。

2、控制檔的建立

資料庫在建立的時候,系統會根據初始化參數檔中control_files的設定來建立控制檔。在後期資料庫的使用過程中,如果控製檔案遺失或損壞,可以透過手動建立新的控製檔。
手動建立控製文件的基本語法如下所示。

create controlfile
reuse database db_name
logfile
group 1 redofiles_list1
...
datafile
...
maxlogfiles max_value1
maxlogmembers max_value2
maxinstances max_value3
maxdatafiles max_value4
noresetlogsiresetlogs
archiveloginoarchivelog;

參數說明如下。
db_name:資料庫名稱。
logfile:表示下面定義日誌組檔案。
redofiles_list1:重做日誌組中的重做日誌檔案清單1名稱及路徑。
datafile:表示下面定義資料檔。
max_value1:最大的重做日誌檔案數。
max_value2:最大的重做日誌組成員數。
max_value3:最大實例數。
max_value4:最大資料檔數。
新控制檔的基本步驟如下。
1、查看資料庫中所有的資料檔案和重做日誌檔案的名稱和路徑。
2、關閉資料庫。
3、備份所有的資料檔案和重做日誌檔案。
4、啟動資料庫執行個體。
5、建立新的控制檔。
6、編輯初始化參數。
7、重新開啟資料庫。

1、控制檔案的重新建立

1、檢視資料庫中所有的資料檔案和重做日誌檔案的名稱和路徑。
如果資料庫可以打開,則可以使用資料字典獲取資料檔案和日誌檔案的基本信息,如下所示。
使用資料字典v$logfile取得日誌檔案資訊。

select member from v$logfile;

使用資料字典v$datafile取得資料檔資訊。

select name from v$datafile;

使用資料字典v$controlfile取得控制檔資訊。

select name from v$controlfile;

2、關閉資料庫
如果資料庫處於運作狀態,在建立控製檔案之前,先以sys使用者登錄,關閉資料庫。

conn sys/change_on_install as sysdbashutdown normal

3、備份所有的資料檔案和重做日誌檔案。
4、啟動資料庫執行個體。
備份完成後,啟動資料庫,但是先不載入資料庫,這主要是因為如果載入資料庫,會同時開啟控製文件,就無法實現建立新的控製文件的目的。

startup nomount

3、控製檔案的備份

在日常資料庫維護過程中,為了避免因控製檔案遺失或損壞而導致資料庫系統崩潰,需要經常對控制文件進行備份。特別是當修改了資料庫結構之後,例如資料檔案的新增、刪除等,都需要及時重新備份控制檔。
備份控制檔可以使用下面語句來實作。

alter database backup controlfile

使用該語句一般有兩種備份,一種是以二進位檔案的形式進行備份,另一種是以文字檔案的形式進行備份。下面就分別看一下如何實現控製檔的備份。

1、將控制檔備份為二進位檔案

alter database backup controlfile to 'c:\bak.bkp';

#上面程式碼實作將控制檔備份到C盤根目錄下,檔案名稱為bak.bkp,該文件以二進制形式存在。

2、将控制文件备份为文本文件

alter database backup controlfile to trace;

4、控制文件的恢复

当数据库由于各种情况发生损坏时,这时可以使用所备份的文件来恢复数据库。在日常维护中,经常会遇到两种情况,一种是控制文件损坏,另一种情况是磁盘发生故障。
当控制文件损坏时,这种情况较为简单,只需要用备份文件替换损坏的文件即可,不过复制之前要先关闭数据库,然后再复制,复制完成后需要重新启动。

5、添加多路复用的控制文件

为了提高数据库的可靠性,可以建立多个镜像的控制文件,并且分别保存在不同的磁盘中进行多路复用,这样就可以避免由于单个设备故障而使得数据库无法启动的情况发生,这种管理策略被称为多路复用控制文件。当某个磁盘发生物理损坏导致控制文件损坏,数据库将被关闭,此时就可以利用另一个磁盘中保存的控制文件来恢复被损坏的控制文件,然后再重新启动数据库,达到保护控制文件的目的。

二、重做日志文件的管理

重做日志文件也称为日志文件,是记录系统的日常操作、异常等行为的文件,是包含系统信息的文件,包括内核、服务、在系统上运行的应用程序等。重做日志文件是数据库安全和恢复的基本保障,当数据库出现故障的时候,管理员可以根据日志文件和数据库备份文件,将崩溃的数据库恢复到最近一次记录日志时的状态。

1、重做日志文件概述

在oracle数据库中,重做日志文件用于记录用户对数据库所做的各种变更操作所引起的数据变化,此时,所产生的操作会先写入重做日志缓冲区,当用户提交一个事务的时候,LGWR进程将与该事务相关的所有重做记录写入重做日志文件,同时生成一个“系统变更数”,scn会和重做记录一起保存到重做日志文件组,以标识与该事务提交成功。如果某个事务提交出现错误,可以通过重做记录找到数据库修改之前的内容,进行数据恢复。

2、查询重做日志文件信息

在oracl数据库日常运行过程中,数据库管理员可以查看重做日志文件信息,用于了解数据库的运行情况。这可以通过查询数据字典视图v l o g 、 v log、v log、vlogfile和v l o g h i s t o r y 来 实 现 , 通 过 它 们 可 以 查 询 的 信 息 如 下 。 v log_history来实现,通过它们可以查询的信息如下。 v loghistory来实现,通过它们可以查询的信息如下。vlog:包含重做日志文件组的信息。
v l o g f i l e : 包 含 重 做 日 志 文 件 成 员 信 息 。 v logfile:包含重做日志文件成员信息。 v logfile:包含重做日志文件成员信息。vlog_history:包含日志历史信息。

3、重做日志文件组及成员的创建

在数据库的日常维护过程中,数据库管理员可以通过手工方式向数据库中添加新的重做日志组或日志文件,也可以改变重做日志文件的名称与位置,或者删除重做日志组或其成员。

1、创建重做日志文件组
语法如下:

alter database add logfile [group] [编号](日志文件) size

上面语句中group可选,当不选择的时候,系统会自动产生组号,为当前重做日志文件组的个数加1。

4、重做日志文件组及成员的删除

当重做日志文件组,其成员不合适或者所在存储位置出现错误时,此时可以将重做日志文件组或者其成员删除。

1、删除重做日志成员文件
删除重做日志文件成员使用如下语法。

alter database drop logfile member 文件名

删除group5添加的新成员文件

alter database drop logfile member 'd:\app\redo05_3.log';

5、修改重做日志文件的名称或位置

在数据库正常使用中,如果想要改变重做日志文件的名称或位置,可以按照如下步骤进行重做日志文件的修改。
1、关闭数据库。
2、复制或者修改日志文件的位置。
3、启动数据库实例,但不打开数据库,只加载数据库。
4、重新设置重做日志文件的名称或位置。
5、打开数据库。

三、归档日志文件的管理

在oracle数据库中,重做日志文件用于记录用户对数据库所做的各种变更操作所引起的数据变化。在把这些变化写入重做的日志文件的时候,一般情况下有多个重做日志文件组,每个文件组有多个文件,oracle向这些重做文件写入的时候,一般情况下有多个重做日志文件组,每个文件组有多个文件,oracle向这些重做文件写入的时候,是使用循环的方式向这些重做日志文件组中的文件进行写入的,当最后一个重做日志文件组中的文件内容写满后,会重新写入第一个重做日志文件组中的文件。在这种情况下,原先重做日志文件的内容如何处理,是直接覆盖还是把原先的记录保存,就是我们要介绍的归档日志。

1、归档日志文件概述

所谓归档日志文件就是指当重做日志文件写满的时候,把其中内容保存到新的文件中,这些新的文件集合就是归档日志文件。但是重做日志文件并不一定主动被保存到新的文件中,根据数据库设置不同,oracle有两种日志模式:归档日志模式和非归档日志模式。在非归档日志模式下,原日志文件的内容会被新的日志内容所覆盖;在归档日志模式下,oracle会首先对原日志文件进行归档存储,且在归档未完成之前不允许覆盖原有日志。

2、归档日志信息的查询

数据库管理人员可以修改归档日志文件和非归档日志文件,但首先需要了解归档日志信息。在oracle中,可以通过查询数据字典了解归档日志的一些基本信息,常用的数据字典有v a r c h i v e d l o g 、 v archived_log、v archivedlog、varchive_dest、v$database等

3、归档模式的设置

默认情况下,oracle数据库处于非归档日志模式,即当重做日志文件写满的时候,直接覆盖里面的内容,原先的日志记录不会被写入到归档日志文件中。根据oracle数据库对应的应用系统不同,数据库管理员可以把数据库的日志模式在归档模式和非归档模式之间进行切换。可以通过alter database archivelog或noarchivelog语句实现数据库在归档模式与非归档模式之间进行切换。
切换步骤如下:
1、关闭数据库

shutdown immediate;

2、将数据库启动到加载状态。

startup mount;

3、修改数据库的归档模式或非归档模式
归档模式修改为非归档模式

alter database noarchivelog;

非归档模式修改为归档模式

alter database archivelog;

4、重新打开数据库

alter database open;

推荐教程:《Oracle视频教程

以上是詳解Oracle控製檔及日誌檔的管理問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除