Post List

2025년 6월 24일 화요일

Max Data File의변경

Describe MaxDataFile의변경 here


SQL> --Control File의 MAXDATAFILES의 수정
SQL> connect internal
연결되었습니다.
SQL> alter database backup controlfile to trace;

데이타베이스가 변경되었습니다.

SQL> --udump에 create control 형식으로 된 파일을 백업했을 것이다. 해당 경로를 찾아본다.
SQL> shutdown immediate;
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> 

Trace 내용 -- Create Controlfile 명령이 보일 것이다. 
==========================================================================================
Dump file e:\Oracle\admin\ora816\udump\ORA03404.TRC
Thu Oct 30 03:32:50 2003
ORACLE V8.1.6.0.0 - Production vsnsta=0
vsnsql=e vsnxtr=3
Windows 2000 Version 5.2 , CPU type 586
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
Windows 2000 Version 5.2 , CPU type 586
Instance name: ora816

Redo thread mounted by this instance: 1

Oracle process number: 14

Windows thread id: 3404, image: ORACLE.EXE


*** SESSION ID:(11.55) 2003-10-30 03:32:50.082
*** 2003-10-30 03:32:50.082
# The following commands will create a new control file and use it
# to open the database.
# Data used by the recovery manager will be lost. Additional logs may
# be required for media recovery of offline data files. Use this
# only if the current version of all online logs are available.
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORA816" NORESETLOGS NOARCHIVELOG
    MAXLOGFILES 32
    MAXLOGMEMBERS 2
    MAXDATAFILES 32
    MAXINSTANCES 16
    MAXLOGHISTORY 1815
LOGFILE
  GROUP 1 'E:\ORACLE\ORADATA\ORA816\REDO03.LOG'  SIZE 1M,
  GROUP 2 'E:\ORACLE\ORADATA\ORA816\REDO02.LOG'  SIZE 1M,
  GROUP 3 'E:\ORACLE\ORADATA\ORA816\REDO01.LOG'  SIZE 1M
DATAFILE
  'E:\ORACLE\ORADATA\ORA816\SYSTEM01.DBF',
  'E:\ORACLE\ORADATA\ORA816\RBS01.DBF',
  'E:\ORACLE\ORADATA\ORA816\USERS01.DBF',
  'E:\ORACLE\ORADATA\ORA816\TEMP01.DBF',
  'E:\ORACLE\ORADATA\ORA816\TOOLS01.DBF',
  'E:\ORACLE\ORADATA\ORA816\INDX01.DBF',
  'E:\ORACLE\ORADATA\ORA816\DR01.DBF',
  'E:\ORACLE\ORADATA\ORA816\WS_DATA1.ORA',
  'E:\ORACLE\ORADATA\ORA816\WS_IDX1.ORA',
  'E:\ORACLE\ORADATA\ORA816\TMP1ORCL.ORA'
CHARACTER SET KO16KSC5601
;
# Recovery is required if any of the datafiles are restored backups,
# or if the last shutdown was not normal or immediate.
RECOVER DATABASE
# Database can now be opened normally.
ALTER DATABASE OPEN;
# No tempfile entries found to add.
#
==========================================================================================

MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 32
MAXINSTANCES 16
MAXLOGHISTORY 1815

여기에서 볼 수 있듯이 로그파일의 개수나 로그 맴버의 개수, 최대 데이터 파일수등이 있는 것이
보인다. 이 값이 넘어가면 오라클은 기동되지 않을 것이다. 다음을 정확히 수행한다. 

1. MAXDATAFILES값을 어마어마한 숫자로 늘려준다. 
	MAXDATAFILES 100000000000
	
2. 기존의 제어파일명을 바꾼다. 
   필자의 경우 제어파일의 위치는 다음과 같다. 
   control_files = ("e:\Oracle\oradata\ora816\control01.ctl",
                    "e:\Oracle\oradata\ora816\control02.ctl", 
                    "e:\Oracle\oradata\ora816\control03.ctl")
   
   control01.ctl.old, control01.ctl.old, control01.ctl.old로 바꾸었다.    

SQL> startup mount ora816 exclusive;
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  237008140 bytes
Fixed Size                    70924 bytes
Variable Size              79572992 bytes
Database Buffers          157286400 bytes
Redo Buffers                  77824 bytes
ORA-00205: ????? ????? ??, ?? ??? ? ?? ??? ?? ??? ??????


SQL>  -- 위에서 trace한 것에서 Create Controlfile...을 실행시킨다. 
SQL> CREATE CONTROLFILE REUSE DATABASE "ORA816" NORESETLOGS NOARCHIVELOG
  2      MAXLOGFILES 32
  3      MAXLOGMEMBERS 2
  4      MAXDATAFILES 100000000000
  5      MAXINSTANCES 16
  6      MAXLOGHISTORY 1815
  7  LOGFILE
  8    GROUP 1 'E:\ORACLE\ORADATA\ORA816\REDO03.LOG'  SIZE 1M,
  9    GROUP 2 'E:\ORACLE\ORADATA\ORA816\REDO02.LOG'  SIZE 1M,
 10    GROUP 3 'E:\ORACLE\ORADATA\ORA816\REDO01.LOG'  SIZE 1M
 11  DATAFILE
 12    'E:\ORACLE\ORADATA\ORA816\SYSTEM01.DBF',
 13    'E:\ORACLE\ORADATA\ORA816\RBS01.DBF',
 14    'E:\ORACLE\ORADATA\ORA816\USERS01.DBF',
 15    'E:\ORACLE\ORADATA\ORA816\TEMP01.DBF',
 16    'E:\ORACLE\ORADATA\ORA816\TOOLS01.DBF',
 17    'E:\ORACLE\ORADATA\ORA816\INDX01.DBF',
 18    'E:\ORACLE\ORADATA\ORA816\DR01.DBF',
 19    'E:\ORACLE\ORADATA\ORA816\WS_DATA1.ORA',
 20    'E:\ORACLE\ORADATA\ORA816\WS_IDX1.ORA',
 21    'E:\ORACLE\ORADATA\ORA816\TMP1ORCL.ORA'
 22  CHARACTER SET KO16KSC5601
 23  ;

동작제어 파일이 생성되었습니다.
SQL> --어떤 복구 작업이 수행되었다면 alter database open resetlog 처럼 
SQL> --resetlog옵션을 붙여줘야 한다. 
SQL> alter database open;

데이타베이스가 변경되었습니다.

SQL> 

컨트롤 파일이 있던 경로로 가보면 3개의 컨트롤 파일이 생성되어 있을 것이다. 필자는 일반 PC
여서 컨트롤 파일을 하나의 디스크에 놓았다. 만약 실제 서비스중인 DB서버인 경우는 이렇게
컨트를 파일이 하나의 디스크에 있어서는 곤란다. 깔끔하게 이전의 컨트롤 파일을 지워준다. 




댓글 없음:

댓글 쓰기