'복구'에 해당되는 글 5건

  1. 2014.11.06 리두로그 장애2
  2. 2014.11.05 리두로그 장애1
  3. 2014.11.04 컨트롤 파일복구 3-1
  4. 2014.11.04 컨트롤 파일 복구 3
  5. 2014.11.04 컨트롤 파일복구 2
2014. 11. 6. 13:41

archive 완료된 그룹이 지워진 후 DB Close 상태


current 아닌 active / inactive 하나의 그룹이 삭제된 후 DB가 종료된 경우


이 상황에서는 DB가 오픈되지 않음


살펴봐야 할 것

archive 완료 여부 :  삭제된 그룹이 삭제 전에 다른 곳으로 저장(archive) 해두었다면 별다른 문제 생기지 않음


장애이유

오라클이 시작할 때 control file을 읽음->지정된 redo log file을 읽으려고 시도 : 현재 os에는 리두로그 파일이 없지만 control file 내용 내에는 redo log file의 경로가 있기때문에 오류가 남


해결책

실제 파일이 없으므로 control file에수 해당그룹의 명단은 삭제


 SYS>startup

ORACLE instance started.


Total System Global Area  422670336 bytes

Fixed Size                  1344616 bytes

Variable Size             293604248 bytes

Database Buffers          121634816 bytes

Redo Buffers                6086656 bytes

Database mounted.

Database opened.


현재상태 확인

SYS>@log


GROUP# MEMBER                                          MB SEQ# STATUS   ARC

------ --------------------------------------------- ---- ---- -------- -----

     1 /data/temp7/redo01_a.log                         5   63 CURRENT  NO

     1 /data/temp7/redo01_b.log                         5   63 CURRENT  NO

     2 /data/temp7/redo02_a.log                         5   62 INACTIVE YES

     2 /data/temp7/redo02_b.log                         5   62 INACTIVE YES


redo log file 삭제 후 장애 확인
SYS>!rm /data/temp7/redo02*

SYS>!ls /data/temp7/*.log
/data/temp7/redo01_a.log  /data/temp7/redo01_b.log

SYS>shutdown immediate
Database closed.
Database dismounted.
ORA-01013: user requested cancel of current operation

강제 종료되었다는 메시지
SYS>startup
ORA-03113: end-of-file on communication channel
SYS>startup
ORA-24324: service handle not initialized
ORA-01041: internal error. hostdef extension doesn't exist

그룹이 삭제되면 오라클이 시작되지 않고 강제 종료 됨

[oracle@localhost ~]$ vi /app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log
vi로 열고  대문자 G를 입력하면 파일의 맨 끝 화면으로 이동함
Thu Nov 06 20:10:06 2014
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x20006098] [PC:0x9A321FF, dbkdEventChk()+1503] [flags: 0x0, count: 1]
Errors in file /app/oracle/diag/rdbms/testdb/testdb/trace/testdb_ora_4295.trc  (incident=69601):
ORA-07445: exception encountered: core dump [dbkdEventChk()+1503] [SIGSEGV] [ADDR:0x20006098] [PC:0x9A321FF] [Address not mapped to object] []
Incident details in: /app/oracle/diag/rdbms/testdb/testdb/incident/incdir_69601/testdb_ora_4295_i69601.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.

어라... 그런데 startup이 안 됨
위 작업시에 shutdown immdiate를 하면서 
중간에  putty에서 복사를 한다고 마우스 오른쪽을 클릭하는 바람에
정상적으로 db가 종료가 된 것이 아니라 abort로 종료가 되었음
그래서 startup 안 됨

어쩔 수 없이 계속 db open 이 안되는 상황이라서
startup force : shutdown abort를 하고 startup를 하는 기능을 해준다.

SYS> startup force
마운트까지 됨
그런데도 db가 죽어서 sqlplus 접속 종료를 하고 sqlplus로 재접속했음
다시 sqlplus로 접속 후 startup mount해 줌

[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Thu Nov 6 20:48:03 2014

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Connected to an idle instance.

SYS>startup mount
ORACLE instance started.

Total System Global Area  422670336 bytes
Fixed Size                  1344616 bytes
Variable Size             293604248 bytes
Database Buffers          121634816 bytes
Redo Buffers                6086656 bytes
Database mounted.

[oracle@localhost temp7]$ ls
control01.ctl  example01.dbf  sysaux01.dbf  temp02.dbf
control02.ctl  redo01_a.log   system01.dbf  undotbs01.dbf
control03.ctl  redo01_b.log   temp01.dbf    users01.dbf
[oracle@localhost temp7]$ exit
exit

SYS>@log

GROUP# MEMBER                                          MB SEQ# STATUS   ARC
------ --------------------------------------------- ---- ---- -------- -----
     1 /data/temp7/redo01_a.log                         5   63 CURRENT  NO
     1 /data/temp7/redo01_b.log                         5   63 CURRENT  NO
     2 /data/temp7/redo02_a.log                         5   62 INACTIVE YES
     2 /data/temp7/redo02_b.log                         5   62 INACTIVE YES

오라클에서 권장하는 최소는 그룹 2개에 멤버 1개씩인데 
여기서 내가 그룹2의 리두로그를 모두 지워버리면 이러한 원칙이 깨지게 된다. 
그래서 새로운 리두로그 그룹3을 추가하고 2를 삭제해야 한다.

SYS>alter database drop logfile group 2;
alter database drop logfile group 2
*
ERROR at line 1:
ORA-01567: dropping log 2 would leave less than 2 log files for instance testdb (thread 1)
ORA-00312: online log 2 thread 1: '/data/temp7/redo02_a.log'
ORA-00312: online log 2 thread 1: '/data/temp7/redo02_b.log'


SYS>ed
Wrote file afiedt.buf

  1  alter database add logfile group 3(
  2  '/data/temp7/redo03_a.log',
  3 '/data/temp7/redo03_b.log') size 50m
  4  /

SYS>alter database drop logfile group 2;

Database altered.

SYS>alter database open;

Database altered.

SYS>select member from v$logfile;

MEMBER
---------------------------------------------
/data/temp7/redo01_a.log
/data/temp7/redo01_b.log
/data/temp7/redo03_a.log
/data/temp7/redo03_b.log

오픈이 된다. 복구 완료!

SYS>ed
Wrote file afiedt.buf

  1  alter database add logfile group 2
  2  ('/data/temp7/redo02_a.log',
  3* '/data/temp7/redo02_b.log') size 50m
SYS>/

Database altered.

다시 2를 추가해준다.

SYS>select member from v$logfile;

MEMBER
---------------------------------------------
/data/temp7/redo02_a.log
/data/temp7/redo02_b.log
/data/temp7/redo01_a.log
/data/temp7/redo01_b.log
/data/temp7/redo03_a.log
/data/temp7/redo03_b.log

6 rows selected.


'DB > oralce' 카테고리의 다른 글

export/import 1 미완  (0) 2014.11.06
리두로그 장애3  (0) 2014.11.06
리두로그 장애1  (0) 2014.11.05
리두로그마이너 - 정리 덜됨...엉망임;;  (0) 2014.11.05
컨트롤 파일복구 3-1  (0) 2014.11.04
Posted by 성장하는yw
2014. 11. 5. 19:10

1개의 멤버가 삭제되는 장애 발생


SYS>startup

ORACLE instance started.


Total System Global Area  422670336 bytes

Fixed Size                  1344616 bytes

Variable Size             293604248 bytes

Database Buffers          121634816 bytes

Redo Buffers                6086656 bytes

Database mounted.

Database opened.


log.sql 파일 내용
SYS>!vi log.sql
set line 200
col group# for 999
col mb for 999
col member for a45
col seq# for 999
col status for a8
col arc for a5

SELECT a.group#,a.member,b.bytes /1024/1024 MB, b.sequence# "SEQ#", b.status,
b.archived "ARC"
FROM v$logfile a,v$log b
where a.group#=b.group#
order by 1,2
/



SYS>!vi log.sql


SYS>@log


GROUP# MEMBER                                          MB SEQ# STATUS   ARC

------ --------------------------------------------- ---- ---- -------- -----

     1 /data/temp7/redo01_a.log                         5   57 CURRENT  NO

     1 /data/temp7/redo01_b.log                         5   57 CURRENT  NO

     2 /data/temp7/redo02_a.log                         5   56 INACTIVE YES

     2 /data/temp7/redo02_b.log                         5   56 INACTIVE YES


redo01_a.log 삭제
[oracle@localhost ~]$ rm -f /data/temp7/redo01_a.log
[oracle@localhost ~]$ ls -al /data/temp7/*.log
-rw-r----- 1 oracle oinstall 5243392 Nov  6 02:49 /data/temp7/redo01_b.log
-rw-r----- 1 oracle oinstall 5243392 Nov  6 02:46 /data/temp7/redo02_a.log
-rw-r----- 1 oracle oinstall 5243392 Nov  6 02:46 /data/temp7/redo02_b.log

[oracle@localhost ~]$ exit
exit

SYS>alter system switch logfile;

System altered.

SYS>/

System altered.

SYS>/

System altered.

SYS>/

System altered.

파일을 지웠지만 있다고 나옴
SYS>@log

GROUP# MEMBER                                          MB SEQ# STATUS   ARC
------ --------------------------------------------- ---- ---- -------- -----
     1 /data/temp7/redo01_a.log                         5   61 CURRENT  NO
     1 /data/temp7/redo01_b.log                         5   61 CURRENT  NO
     2 /data/temp7/redo02_a.log                         5   60 INACTIVE YES
     2 /data/temp7/redo02_b.log                         5   60 INACTIVE YES

정확한 장애내용은 alert log 파일을 열어 확인

SYS>!

[oracle@localhost ~]$ vi  $ORACLE_BASE/diag/rdbms/testdb/testdb/trace/alert_testdb.log
...생략

Errors in file /app/oracle/diag/rdbms/testdb/testdb/trace/testdb_arc1_7763.trc:

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: '/data/temp7/redo01_a.log'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

...생략

장애가 확인 된 멤버는 삭제 후 다시 생성하면 됨
SYS>@log

GROUP# MEMBER                                          MB SEQ# STATUS   ARC
------ --------------------------------------------- ---- ---- -------- -----
     1 /data/temp7/redo01_a.log                         5   61 CURRENT  NO
     1 /data/temp7/redo01_b.log                         5   61 CURRENT  NO
     2 /data/temp7/redo02_a.log                         5   60 INACTIVE YES
     2 /data/temp7/redo02_b.log                         5   60 INACTIVE YES

SYS>alter system switch logfile;

System altered.

SYS>@log

GROUP# MEMBER                                          MB SEQ# STATUS   ARC
------ --------------------------------------------- ---- ---- -------- -----
     1 /data/temp7/redo01_a.log                         5   61 ACTIVE   YES
     1 /data/temp7/redo01_b.log                         5   61 ACTIVE   YES
     2 /data/temp7/redo02_a.log                         5   62 CURRENT  NO
     2 /data/temp7/redo02_b.log                         5   62 CURRENT  NO


SYS>alter database drop logfile member
  2  '/data/temp7/redo01_a.log';

Database altered.

SYS>@log

GROUP# MEMBER                                          MB SEQ# STATUS   ARC
------ --------------------------------------------- ---- ---- -------- -----
     1 /data/temp7/redo01_b.log                         5   61 ACTIVE   YES
     2 /data/temp7/redo02_a.log                         5   62 CURRENT  NO
     2 /data/temp7/redo02_b.log                         5   62 CURRENT  NO

SYS>alter database add logfile member

  2  '/data/temp7/redo01_a.log' to group 1;


Database altered.


SYS>@log


GROUP# MEMBER                                          MB SEQ# STATUS   ARC

------ --------------------------------------------- ---- ---- -------- -----

     1 /data/temp7/redo01_a.log                         5   61 INACTIVE YES

     1 /data/temp7/redo01_b.log                         5   61 INACTIVE YES

     2 /data/temp7/redo02_a.log                         5   62 CURRENT  NO

     2 /data/temp7/redo02_b.log                         5   62 CURRENT  NO





'DB > oralce' 카테고리의 다른 글

리두로그 장애3  (0) 2014.11.06
리두로그 장애2  (0) 2014.11.06
리두로그마이너 - 정리 덜됨...엉망임;;  (0) 2014.11.05
컨트롤 파일복구 3-1  (0) 2014.11.04
컨트롤 파일 복구 3  (0) 2014.11.04
Posted by 성장하는yw
2014. 11. 4. 20:42

redo log file까지 손상이 있을 경우 resetlogs 모드로 재생성

SYS>startup

ORACLE instance started.


Total System Global Area  422670336 bytes

Fixed Size                  1344616 bytes

Variable Size             293604248 bytes

Database Buffers          121634816 bytes

Redo Buffers                6086656 bytes

Database mounted.

ORA-01122: database file 1 failed verification check

ORA-01110: data file 1: '/data/temp7/system01.dbf'

ORA-01207: file is more recent than control file - old control file



SYS>alter database backup controlfile to trace as '/app/oracle/back.sql';


Database altered.


SYS>shut immediate

ORA-01109: database not open



Database dismounted.

ORACLE instance shut down.

'DB > oralce' 카테고리의 다른 글

리두로그 장애1  (0) 2014.11.05
리두로그마이너 - 정리 덜됨...엉망임;;  (0) 2014.11.05
컨트롤 파일 복구 3  (0) 2014.11.04
컨트롤 파일복구 2  (0) 2014.11.04
컨트롤 파일 복구1  (0) 2014.11.04
Posted by 성장하는yw
2014. 11. 4. 19:01

정상적인 DB 에서 old control file error 에러 발생시키기


SYS>startup

ORACLE instance started.


Total System Global Area  422670336 bytes

Fixed Size                  1344616 bytes

Variable Size             293604248 bytes

Database Buffers          121634816 bytes

Redo Buffers                6086656 bytes

Database mounted.

Database opened.


SYS>alter system switch logfile;


System altered.


SYS>alter system checkpoint;


System altered.


SYS>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS>startup

ORACLE instance started.


Total System Global Area  422670336 bytes

Fixed Size                  1344616 bytes

Variable Size             293604248 bytes

Database Buffers          121634816 bytes

Redo Buffers                6086656 bytes

Database mounted.

ORA-01122: database file 1 failed verification check

ORA-01110: data file 1: '/app/oracle/oradata/testdb/system01.dbf'

ORA-01207: file is more recent than control file - old control file


에러의 원인

- 컨트롤 파일 정보가 저장된 시점이 데이터파일의 정보저장 시점보다 예전 내용이기 때문


문제 해결 방법

1. 백업 데이터파일과 아카이브 리두로그파일을 사용 using backup controlfile 옵션으로 recovery 하는 방법

2. 1의 방법이 되지 않으면 컨트롤파일을 재생성 해야 함

     - 현재 리두로그 파일에 손상이 없을 경우 : noresetlogs 모드로 재생성

     - 현재 리두고르 파일에 손상이 있을 경우 : resetlogs 모드로 재생성



나의 경우는 리두로그 파일에 손상이 없을 경우임


nomount 상태에서 컨트롤 파일을 재생성하는 명령어를 입력하면 됨, 

but 그 명령어가 너무 길어서 외우기가 힘듬

현재 운영 중인 서버에서 재생성용 스크립트를 만들어 생성하는 방법으로 실습할 예정임 


컨트롤 파일을 재생성하는 스크립트는 현재 올드 컨트롤 파일로부터 trace 해서 만들게 됨

이 방법은 현재 컨트롤 파일의 정보를 사용해서 재생성하는 것이므로 mount상태에서 수행해야 함


현재 상태 확인

SYS>select status from v$instance;


STATUS

------------

MOUNTED


컨트롤 파일 재생성 스크립트 만들기
SYS>alter database backup controlfile to trace as '/app/oracle/re11.sql';

Database altered.

SYS>shutdown immediate
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.

SYS>!
[oracle@localhost ~]$ vi /app/oracle/re11.sql
-- The following are current System-scope REDO Log Archival related
-- parameters and can be included in the database initialization file.
--
-- LOG_ARCHIVE_DEST=''
-- LOG_ARCHIVE_DUPLEX_DEST=''
--
-- LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf
--
-- DB_UNIQUE_NAME="testdb"
--
-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'
-- LOG_ARCHIVE_MAX_PROCESSES=4
-- STANDBY_FILE_MANAGEMENT=MANUAL
-- STANDBY_ARCHIVE_DEST=?/dbs/arch
-- FAL_CLIENT=''
-- FAL_SERVER=''
--
-- LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST'
-- LOG_ARCHIVE_DEST_1='MANDATORY NOREOPEN NODELAY'
-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM EXPEDITE NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_1='NOREGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_1='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_1=ENABLE

--
-- Below are two sets of SQL statements, each of which creates a new
-- control file and uses it to open the database. The first set opens
-- the database with the NORESETLOGS option and should be used only if
-- the current versions of all online logs are available. The second
-- set opens the database with the RESETLOGS option and should be used
-- if online logs are unavailable.
-- The appropriate set of statements can be copied from the trace into
-- a script file, edited as necessary, and executed when there is a
-- need to re-create the control file.
--
--     Set #1. NORESETLOGS case 
--  
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- Additional logs may be required for media recovery of offline
-- Use this only if the current versions of all online logs are
-- available.

-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TESTDB" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/app/oracle/oradata/testdb/redo01_a.log',
    '/app/oracle/oradata/testdb/redo01_b.log'
  ) SIZE 5M BLOCKSIZE 512,
  GROUP 2 (
    '/app/oracle/oradata/testdb/redo02_a.log',
    '/app/oracle/oradata/testdb/redo02_b.log'
  ) SIZE 5M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/app/oracle/oradata/testdb/system01.dbf',
  '/app/oracle/oradata/testdb/sysaux01.dbf',
  '/app/oracle/oradata/testdb/undotbs01.dbf',
  '/app/oracle/oradata/testdb/users01.dbf',
  '/app/oracle/oradata/testdb/example01.dbf'
CHARACTER SET KO16MSWIN949
;

-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/app/oracle/fast_recovery_area/TESTDB/archivelog/2014_11_05/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/app/oracle/fast_recovery_area/TESTDB/archivelog/2014_11_05/o1_mf_1_1_%u_.arc';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE

-- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;
-- Database can now be opened normally.
ALTER DATABASE OPEN;

-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/app/oracle/oradata/testdb/temp01.dbf' REUSE;
-- End of tempfile additions.
--
--     Set #2. RESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.

-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TESTDB" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/app/oracle/oradata/testdb/redo01_a.log',
    '/app/oracle/oradata/testdb/redo01_b.log'
  ) SIZE 5M BLOCKSIZE 512,
  GROUP 2 (
    '/app/oracle/oradata/testdb/redo02_a.log',
    '/app/oracle/oradata/testdb/redo02_b.log'
  ) SIZE 5M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/app/oracle/oradata/testdb/system01.dbf',
  '/app/oracle/oradata/testdb/sysaux01.dbf',
  '/app/oracle/oradata/testdb/undotbs01.dbf',
  '/app/oracle/oradata/testdb/users01.dbf',
  '/app/oracle/oradata/testdb/example01.dbf'
CHARACTER SET KO16MSWIN949
;

-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/app/oracle/fast_recovery_area/TESTDB/archivelog/2014_11_05/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/app/oracle/fast_recovery_area/TESTDB/archivelog/2014_11_05/o1_mf_1_1_%u_.arc';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE USING BACKUP CONTROLFILE

-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;

-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/app/oracle/oradata/testdb/temp01.dbf' REUSE;
-- End of tempfile additions.
--

이 파일 사용 -- 부분은 주석이므로 모두 지우고, 
노리셋모드는 :set nu 해서 59-87줄만 남기고 다 지울 것.
리셋모드는 112-154줄 안에 주석은 삭제하기 

각 파일의 경로는 상황에 맞게 수정해서 스크립트를 돌림

각 경로의 정보는 컨트롤 파일에서 가져오는 정보임! 

[oracle@localhost ~]$ vi /app/oracle/re11.sql
  1 STARTUP NOMOUNT
  2 CREATE CONTROLFILE REUSE DATABASE "TESTDB" NORESETLOGS  ARCHIVELOG
  3     MAXLOGFILES 16
  4     MAXLOGMEMBERS 3
  5     MAXDATAFILES 100
  6     MAXINSTANCES 8
  7     MAXLOGHISTORY 292
  8 LOGFILE
  9   GROUP 1 (
 10     '/data/temp7/redo01_a.log',
 11     '/data/temp7/redo01_b.log'
 12   ) SIZE 5M BLOCKSIZE 512,
 13   GROUP 2 (
 14     '/data/temp7/redo02_a.log',
 15     '/data/temp7/redo02_b.log'
 16   ) SIZE 5M BLOCKSIZE 512
 17 -- STANDBY LOGFILE
 18 DATAFILE
 19   '/data/temp7/system01.dbf',
 20   '/data/temp7/sysaux01.dbf',
 21   '/data/temp7/undotbs01.dbf',
 22   '/data/temp7/users01.dbf',
 23   '/data/temp7/example01.dbf'
 24 CHARACTER SET KO16MSWIN949
 25 ;
~
~
~
:wq!

컨트롤 파일을 재생성하기 위해 데이터베이스를 shutdown 상태로 해놓고 스크립트를 실행함
SYS>shutdown
ORA-01012: not logged on

파라미터파일의 컨트롤 파일의 경로에 생김
SYS>@/app/oracle/re11.sql
ORACLE instance started.

Total System Global Area  422670336 bytes
Fixed Size                  1344616 bytes
Variable Size             293604248 bytes
Database Buffers          121634816 bytes
Redo Buffers                6086656 bytes

Control file created.

SYS>alter database open;
Database altered.

SYS>select name from v$controlfile;

NAME
--------------------------------------------------
/data/temp7/control01.ctl
/data/temp7/control02.ctl
/data/temp7/control03.ctl



스크립트 모드로 컨트롤 파일을 재생성할 때의 주의 사항
1. DB가 resetlogs mode 로 open 되는지 
    noresetlogs mode로 open 되는지 정확히 구분할 것

2. 스크립트 안에 공백이 있으면 생성도중 에러생김
    (10g 경우에 공백이 있으니 주의할 것)

3. noresetlogs 모드 일 경우 스크립트 내부의 redo log file이 전부 해당 경로에 있어야만 함

4. resetlogs 모드 일 때 스크립트 내부의 redo log file 은 실제 파일이 없어도 resetlog로 open될 때 재생성 됨

5. 두 모드 공통적으로 데이터 파일은 반드시 스크립트 내부의 경로에 실제 존재 해야함

6. control file의 생성 위치는 파라미터 파일에 지정된 경로 


'DB > oralce' 카테고리의 다른 글

리두로그마이너 - 정리 덜됨...엉망임;;  (0) 2014.11.05
컨트롤 파일복구 3-1  (0) 2014.11.04
컨트롤 파일복구 2  (0) 2014.11.04
컨트롤 파일 복구1  (0) 2014.11.04
시점복구시 주의할 사항  (0) 2014.11.04
Posted by 성장하는yw
2014. 11. 4. 17:36

SYS>startup

ORACLE instance started.


Total System Global Area  422670336 bytes

Fixed Size                  1344616 bytes

Variable Size             293604248 bytes

Database Buffers          121634816 bytes

Redo Buffers                6086656 bytes

ORA-00214: control file '/data/temp7/control01.ctl' version 1782 inconsistent with file '/data/temp7/control02.ctl' version 1767


모든 컨트롤 파일끼리는 정보가 동일해야하는데 

컨트롤 파일끼리 정보가 달라서 생기는 version error임


SYS>!

[oracle@localhost ~]$ cp /data/temp7/control01.ctl /data/temp7/control02.ctl

[oracle@localhost ~]$ cp /data/temp7/control01.ctl /data/temp7/control03.ctl

[oracle@localhost ~]$ exit


SYS>alter database mount;

Database altered.


SYS>alter database open;
Database altered.

SYS>select name from v$controlfile;

NAME
--------------------------------------------------
/data/temp7/control01.ctl
/data/temp7/control02.ctl
/data/temp7/control03.ctl


해결방법

- 버전이 높은 것(최신으로) 복사해서 컨트롤파일2, 3을 동일하게 복사함

   만일 낮은 버전으로 복사하게 되면 old controlfile error 발생함

'DB > oralce' 카테고리의 다른 글

컨트롤 파일복구 3-1  (0) 2014.11.04
컨트롤 파일 복구 3  (0) 2014.11.04
컨트롤 파일 복구1  (0) 2014.11.04
시점복구시 주의할 사항  (0) 2014.11.04
ora-01190  (0) 2014.11.04
Posted by 성장하는yw