日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle重命名日志成员出错,Oracle日志文件

發(fā)布時(shí)間:2024/4/18 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle重命名日志成员出错,Oracle日志文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、一些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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。