oracle重命名日志成员出错,Oracle日志文件
一、一些oracle日志的常用命令
oracle的日志文件是記錄數(shù)據(jù)庫變化的一個(gè)憑證,就是oracle對(duì)于一切數(shù)據(jù)庫的操作的記錄方便以后查找分析錯(cuò)誤。有可以恢復(fù)數(shù)據(jù)等作用。oracle的文件可以分為數(shù)據(jù)文件、控制文件和重做日志文件(也就是咱們平時(shí)說的redo), oracle的日志文件時(shí)分組存放的,一個(gè)oracle數(shù)據(jù)庫最少使用3個(gè)日志文件存放這些信息,以防寫滿之后的溢出,為了防止數(shù)據(jù)庫的災(zāi)難性宕機(jī),日志文件可以提供一個(gè)支持,可以把數(shù)據(jù)庫恢復(fù)到宕機(jī)之前的某個(gè)時(shí)間點(diǎn),我們也經(jīng)常對(duì)日志文件做一些操作,常用的操作如下:
Oracle日志文件
1.查詢系統(tǒng)使用的是哪一組日志文件:
select * from v$log;
2.查詢正在使用的組所對(duì)應(yīng)的日志文件:
select * from v$logfile;
3.強(qiáng)制日志切換:
alter system switch logfile;
4.查詢歷史日志:
select * from v$log_history;
5.查詢?nèi)罩镜臍w檔模式:
Select
dbid,name,created,log_mode from v$database;
6.查詢歸檔日志的信息:
select recid,stamp,thread#,sequence#,name
from v$archived_log;
7.增加與刪除日志文件組
alter database add logfile group 1
('/home1/oracle/oradata/ora8i/log1a.log'),'/home2/oracle/oradata/ora8i/log1b.log')
size 100M;
alter database drop logfile group 1;
8.增加與刪除日志成員
alter database add logfile member
'/home1/oracle/oradata/ora8i/log1a.log' to group
1,'/home1/oracle/oradata/ora8i/log2a.log' to group 2;
alter database drop logfile member '/home1/oracle/oradata/ora8i/log1a.log'
;
9.日志文件移動(dòng)
alter database rename file
'/home1/oracle/oradata/ora8i/log1a.log' to
'/home2/oracle/oradata/ora8i/log1a.log';
執(zhí)行該命令之前必須保證該日志文件物理上已經(jīng)移動(dòng)到新目錄
10.清除日志文件
alter database clear logfile
'/home1/oracle/oradata/ora8i/log1a.log';
該命令用于不能用刪除組及組成員命令刪除日志時(shí)使用
二、oracle日志文件類型及日志管理
如果是安全關(guān)閉數(shù)據(jù)庫.數(shù)據(jù)庫處于一致狀態(tài):
SQL> startup nomount
SQL> create controlfile reuse database "TEST
" resetlogs archivelog
SQL> alter database open tesetlogs;
馬上備份
如果不是非安全關(guān)閉:
非當(dāng)前日志就是
SQL> alter database clear unarchived logfile group n;
SQL> alter database clear logfile
'C:\oracle\product\10.1.0\oradata\hupan\REDO01
.LOG' group 1;
當(dāng)前日志:
在initsid> .ora中加入如下參數(shù):
_allow_resetlogs_corruption=TRUE
alter system set "_allow_resetlogs_corruption"
= true scope = spfile;
SQL> recover database until cancel;
Cancel
如果出錯(cuò),不再理會(huì),發(fā)出
SQL> alter database open resetlogs;
1、Oracle中的幾類日志文件
Redo log
files????? -->聯(lián)機(jī)重做日志
Archive log
files?? -->歸檔日志
Alert log
files???? -->告警日志
Trace
files???????? -->跟蹤日志
user_dump_dest????????? -->用戶跟蹤日志
backupground_dump_dest? -->進(jìn)程跟蹤日志
--查看后臺(tái)進(jìn)程相關(guān)目錄
SQL> show parameter dump
NAME????????????????? ??TYPE
VALUE
-------------------- ????-----------
------------------------------
background_core_dump???? ????string
partial
background_dump_dest?? ??????string????? /u01/app/oracle/admin/orcl/bdump
core_dump_dest??? ???????????string????? /u01/app/oracle/admin/orcl/cdump
max_dump_file_size???????? ??string
UNLIMITED
shadow_core_dump??????????? ?string
partial
user_dump_dest????? ?????????string
/u01/app/oracle/admin/orcl/udump
關(guān)于Oracle常用目錄及路徑請(qǐng)參考:Oracle常用目錄結(jié)構(gòu)(10g)
關(guān)于Oracle體系結(jié)構(gòu)請(qǐng)參考:Oracle實(shí)例和Oracle數(shù)據(jù)庫(Oracle體系結(jié)構(gòu))
2、聯(lián)機(jī)重做日志的規(guī)劃管理
1.聯(lián)機(jī)重做日志
記錄了數(shù)據(jù)的所有變化(DML,DDL或管理員對(duì)數(shù)據(jù)所作的結(jié)構(gòu)性更改等)
提供恢復(fù)機(jī)制(對(duì)于意外刪除或宕機(jī)利用日志文件實(shí)現(xiàn)數(shù)據(jù)恢復(fù))
可以被分組管理
2.聯(lián)機(jī)重做日志組
由一個(gè)或多個(gè)相同的聯(lián)機(jī)日志文件組成一個(gè)聯(lián)機(jī)重做日志組
至少兩個(gè)日志組,每組一個(gè)成員(建議每組兩個(gè)成員,分散放開到不同的磁盤)
由LGWR后臺(tái)進(jìn)程同時(shí)將日志內(nèi)容寫入到一個(gè)組的所有成員
LGWR的觸發(fā)條件
在事務(wù)提交的時(shí)候(COMMIT)
Redo Log Buffer三分之一滿
Redo Log Buffer多于一兆的變化記錄
在DBWn寫入數(shù)據(jù)文件之前
3.聯(lián)機(jī)重做日志成員
重做日志組內(nèi)的每一個(gè)聯(lián)機(jī)日志文件稱為一個(gè)成員
一個(gè)組內(nèi)的每一個(gè)成員具有相同的日志序列號(hào)(log sequence number),且成員的大小相同
每次日志切換時(shí),Oracle服務(wù)器分配一個(gè)新的LSN號(hào)給即將寫入日志的日志文件組
LSN號(hào)用于唯一區(qū)分每一個(gè)聯(lián)機(jī)日志組和歸檔日志
處于歸檔模式的聯(lián)機(jī)日志,LSN號(hào)在歸檔時(shí)也被寫入到歸檔日志之中
4.日志文件的工作方式
日志文件采用按順序循環(huán)寫的方式
當(dāng)一組聯(lián)機(jī)日志組寫滿,LGWR則將日志寫入到下一組,當(dāng)最后一組寫滿則從第一組開始寫入
寫入下一組的過程稱為日志切換
切換時(shí)發(fā)生檢查點(diǎn)過程
檢查點(diǎn)的信息同時(shí)寫入到控制文件
5.聯(lián)機(jī)日志文件的規(guī)劃
總原則
分散放開,多路復(fù)用
日志所在的磁盤應(yīng)當(dāng)具有較高的I/O
一般日志組大小應(yīng)滿足自動(dòng)切換間隔至少15-20分鐘左右業(yè)務(wù)需求
建議使用rdo結(jié)尾的日志文件名,避免誤刪日志文件。如redo1.rdo,redo2.rdo
規(guī)劃樣例
Redo
Log Group1???? Redo Log Group2???? Redo Log Group3
Member1???????????? Member1????????????? Member1??????????? -->Physical Disk 1
Member2???????????? Member2????????????? Member2?????? ?????-->Physical Disk 2
Member3???????????? Member3????????????? Member3??????????? -->Physical Disk 3
6.日志切換和檢查點(diǎn)切換
ALTER
SYSTEM SWITCH LOGFILE;?? --強(qiáng)制手動(dòng)切換
ALTER SYSTEM CHECKPOINT;
強(qiáng)制設(shè)置檢查點(diǎn)間隔
ALTER
SYSTEM SET FAST_START_MTTR_TARGET = n
7.添加日志文件組
ALTER
DATABASE ADD LOGFILE [GROUP n]
('$ORACLE_BASE/oradata/u01/logn1.rdo',
'$ORACLE_BASE/oradata/u01/logn2.rdo')
SIZE mM;
8.添加日志成員
ALTER
DATABASE ADD LOGFILE MEMBER
'$ORACLE_BASE/oradata/u01/logn1.rdo' TO GROUP 1,
'$ORACLE_BASE/oradata/u01/logn2.rdo' TO GROUP 2;
9.刪除日志成員
不能刪除組內(nèi)的唯一一個(gè)成員
不能刪除處于active和current狀態(tài)組內(nèi)的成員
刪除處于active和current狀態(tài)組內(nèi)的成員,應(yīng)使用日志切換使其處于INACTIVE狀態(tài)后再刪除
對(duì)于組內(nèi)如果一個(gè)成員為NULL值,一個(gè)為INVALID,且組處入INACTIVE,僅能刪除INVALID狀態(tài)成員
刪除日志成員,物理文件并沒有真正刪除,需要手動(dòng)刪除
刪除日志文件后,控制文件被更新
對(duì)于處于歸檔模式下的數(shù)據(jù)庫,刪除成員時(shí)確保日志已被歸檔,查看v$log視圖獲得歸檔信息
ALTER
DATABASE DROP LOGFILE MEMBER '$ORACLE_BASE/oradata/u01/logn1.rdo'
10.刪除日志組
一個(gè)實(shí)例至少需要兩個(gè)聯(lián)機(jī)日志文件組
活動(dòng)或當(dāng)前的日志組不能被刪除
組內(nèi)成員狀態(tài)有NULL值或INVALID狀態(tài)并存,組不可刪除
日志組被刪除后,物理文件需要手動(dòng)刪除(對(duì)于非OMF)
ALTER
DATABASE DROP LOGFILE GROUP n
11.日志的重定位及重命名
所需權(quán)限
ALTER DATABASE系統(tǒng)權(quán)限
復(fù)制文件到目的位置操作系統(tǒng)權(quán)限(寫權(quán)限)
CURRENT狀態(tài)組內(nèi)的成員不能被重命名
建議該行為之前備份數(shù)據(jù)庫
重命名或重定位之后建議立即備份控制文件
重定位及重命名的兩種方法
添加一個(gè)新成員到日志組,然后刪除一個(gè)舊的成員
使用ALTER
DATABASE RENAME FILE命令(不區(qū)分歸檔與非歸檔模式)
復(fù)制聯(lián)機(jī)日志文件到新路徑:ho cp
執(zhí)行ALTER
DATABASE RENAME FILE '' TO ''
對(duì)于處于CURRENT狀態(tài)的需要改名且不切換的情況下
辦法是切換到MOUNT狀態(tài)下再執(zhí)行上述操作
12.清空日志文件組
ALTER DATABASE CLEAR
LOGIFLE GROUP n
ALTER DATABASE CLEAR
UNARCHIVED LOGFILE GROUP n
--使用unarchived避免歸檔
13.日志周期循環(huán)及切換分析
Group
1????? Group 2????? Group 3
Current????? Inactive???? Inactive
----------
Log Switch -------------
Active?????? Current????? Inactive
----------
Log Switch -------------
Active?????? Active?????? Current
---------- Log Switch -------------
Current????? Inactive???? Inactive
--Active和Current稱之為在一個(gè)循環(huán)周期之內(nèi)(按順序?qū)懭罩?
--Inactive稱為一個(gè)周期之外(一個(gè)新的循環(huán))
--新一輪循環(huán)開始如在歸檔狀態(tài)則先歸檔再清空,否則直接清空日志
--數(shù)據(jù)庫啟動(dòng)時(shí)Active和Current狀態(tài)的日志不能丟失,否則出錯(cuò)
對(duì)于CURRENT組的也可以使用隱藏參數(shù)來解決
步驟:
alter system
set "_allow_resetlogs_corruption" = true scope = spfile;
recover
database using bakcup controlfile;
alter database
open resetlogs;
shutdown
immediate;
startup
mount;
alter
database open resetlogs;
alter
system reset "_allow_resetlogs_corruption" scope = spfile sid = '*'
對(duì)于歸檔模式下的日志文件丟失,同樣可以按上述步驟處理
REDO01.LOG文件誤刪除后恢復(fù)的方法如下:
conn
sys/sys@數(shù)據(jù)庫服務(wù)名稱as sysdba;
SQL>shutdown
immediate;
SQL>startup
mount;
SQL>recover
database until cancel;
SQL>alter
database open resetlogs;
SQL>shutdown;
SQL>startup;
三、歸檔日志文件的操作
1.將數(shù)據(jù)庫日志模式由非歸檔改為歸檔模式
Startup
mount
Alter
database archivelog;
2.查看v$log和v$logfile
Desc
v$log,desc v$logfile
Group#表示組別,members表示成員多少,arc表示是否歸檔保存了,status中current表示當(dāng)前正在使用的日志文件,不能刪除,INACTIVE表示已經(jīng)歸檔出去了的日志,可以刪除,要想刪除當(dāng)前日志,必須先切換日志(alter
system switch logfile),讓其歸檔出去,然后status變成ACTIVE,然后利用檢查點(diǎn)來刪除(alter system
checkpoint,alter database drop logfile member‘’,或者alter database drop logfile group 1)
3.增加一個(gè)日志文件組4,組中放入一個(gè)成員(redo04.log)
Alter
database add logfile group 4
(‘I:\oracle\product\10.2.0\oradata\orcl\redo04.log’)
size 10M;
4.向日志文件組4再增加一個(gè)成員(redo04a.log)
Alter
database add logfile member ‘…\redo04a.log’ to group 4;
5.將redo01.log移動(dòng)到一個(gè)新的地方
(日志文件的移動(dòng)重命名
1.關(guān)閉數(shù)據(jù)庫
2.使用操作系統(tǒng)命令拷貝,移動(dòng)或重命名重做日志文件
3.啟動(dòng)
4.使用alter database rename file‘original name’to‘new
name’ 命令更新控制文件
5.打開數(shù)據(jù)庫)
Sql>Shutdown
immediate
手動(dòng)移走redo01.log文件
Sql>startup
報(bào)錯(cuò)說找不到redo01.log文件
Sql>alter
database rename file‘原路徑’to‘新路徑’
Alter
database open;
6.刪除日志成員和日志文件組
Alter
database drop logfile member‘路徑’;
Alter
database drop logfile group 4;
7.設(shè)置歸檔目的地并測(cè)試文檔
Alter
system set log_archive_dest_1=’location:d:\arch’;
每當(dāng)進(jìn)行日志切換的時(shí)候,日志文件就被備份到歸檔日志里;
8.日志文件修復(fù)
當(dāng)status為INACTIVE時(shí)
SQL>alter
database clear logfile group 4;
SQL>alter
database clear unarchived logfile group 4;
SQL>shutdown
immediate;
SQL>startup
mount;
SQL>recover
database until cancel;
SQL>alter
database open resetlogs;
SQL>archive
log list;
總結(jié)
以上是生活随笔為你收集整理的oracle重命名日志成员出错,Oracle日志文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 意外事件,Oracle数据
- 下一篇: oracle 峰度 函数,Oracle