서버 단전 후 일련의 이상 처리
35669 단어 이상 처리
로그를 통해 아침 7시 44분에 서버를 다시 열었을 텐데 언제 전원이 끊겼는지 알 수 없다.
우선 데이터베이스에 연결되지 않는다는 반응이 있다. 원격 로그인 후 감청이 정상적이고 데이터가 상태인 것을 본다
SQL> select status from v$instance;
STATUS
------------------------
STARTED
데이터베이스에 OPEN이 없는 것을 발견하고 데이터베이스를 닫은 후에 다시 열어 무슨 오류 메시지가 있는지 보자
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1010827264 bytes
Fixed Size 2088920 bytes
Variable Size 608174120 bytes
Database Buffers 394264576 bytes
Redo Buffers 6299648 bytes
ORA-00214: control file '/u02/oradata/dba/control02.ctl' version 133052
inconsistent with file '/u02/oradata/dba/control01.ctl' version 133048
컨트롤 파일에 문제가 생겼어요. 첫 번째와 두 번째 컨트롤 파일이 이상해요. 세 번째는 좋은 것 같아요.
SQL> alter system set control_files='/u02/oradata/dba/control03.ctl' scope=spfile;
System altered.
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1010827264 bytes
Fixed Size 2088920 bytes
Variable Size 608174120 bytes
Database Buffers 394264576 bytes
Redo Buffers 6299648 bytes
Database mounted.
세 번째 제어 파일은 확실히 사용할 수 있다. 그러면 문제는 간단하다. 세 번째 제어 파일을 첫 번째 제어 파일과 두 번째 제어 파일을 덮어쓰면 된다
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> exit
-bash-3.2$ cd /u02/oradata/dba
-bash-3.2$ cp control03.ctl control01.ctl
-bash-3.2$ cp control03.ctl control02.ctl
-bash-3.2$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Aug 6 11:48:15 2014
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 1010827264 bytes
Fixed Size 2088920 bytes
Variable Size 608174120 bytes
Database Buffers 394264576 bytes
Redo Buffers 6299648 bytes
SQL> alter system set control_files='/u02/oradata/dba/control01.ctl','/u02/oradata/dba/control02.ctl','/u02/oradata/dba/control03.ctl' scope=spfile;
System altered.
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1010827264 bytes
Fixed Size 2088920 bytes
Variable Size 608174120 bytes
Database Buffers 394264576 bytes
Redo Buffers 6299648 bytes
Database mounted.
ORA-01113: file 3 needs media recovery
ORA-01110: data file 3: '/u02/oradata/dba/sysaux01.dbf'
그리고 데이터 파일은 복구해야 하기 때문에 이것도 처리하기 쉽다
SQL> recover datafile 3;
Media recovery complete.
마지막으로 10개에 가까운 데이터 파일을 복구했는데, 이게 웬만하면 될 줄 알았는데, 데이터베이스를 다시 시작할 때 또 새로운 문제가 생겼다
SQL> startup
ORACLE instance started.
Total System Global Area 1010827264 bytes
Fixed Size 2088920 bytes
Variable Size 608174120 bytes
Database Buffers 394264576 bytes
Redo Buffers 6299648 bytes
Database mounted.
ORA-00603: ORACLE server session terminated by fatal error
문제를 조사하여 두 개의 매개 변수를 수정하여 데이터베이스를 재부팅하는 데 성공하였다
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 1010827264 bytes
Fixed Size 2088920 bytes
Variable Size 608174120 bytes
Database Buffers 394264576 bytes
Redo Buffers 6299648 bytes
SQL> alter system set events '10046 trace name context off';
System altered.
SQL> alter system set timed_statistics=false;
System altered.
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1010827264 bytes
Fixed Size 2088920 bytes
Variable Size 608174120 bytes
Database Buffers 394264576 bytes
Redo Buffers 6299648 bytes
Database mounted.
Database opened.
SQL>
문제가 해결된 줄 알고 Alert를 뒤적였는데, Alert에 많은 오류가 발견되었다
Errors in file /u01/app/oracle/admin/dba/bdump/ora8_smon_5028.trc:
ORA-01595: error freeing extent (18) of rollback segment (11))
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [4194], [14], [16], [], [], [], [], []
Wed Aug 6 13:35:50 2014
DEBUG: Replaying xcb 0x9abcc418, pmd 0x991fa808 for failed op 8
Doing block recovery for file 18 block 6187
No block recovery was needed
Wed Aug 6 13:35:50 2014
Errors in file /u01/app/oracle/admin/dba/bdump/ora8_j000_5050.trc:
ORA-00600: internal error code, arguments: [4194], [18], [23], [], [], [], [], []
ORA-00600: internal error code, arguments: [4194], [18], [23], [], [], [], [], []
Wed Aug 6 13:35:51 2014
DEBUG: Replaying xcb 0x9abcc418, pmd 0x991fa808 for failed op 8
Wed Aug 6 13:35:51 2014
Errors in file /u01/app/oracle/admin/dba/bdump/ora8_j000_5050.trc:
ORA-00600: internal error code, arguments: [4194], [18], [23], [], [], [], [], []
ORA-00600: internal error code, arguments: [4194], [18], [23], [], [], [], [], []
Doing block recovery for file 18 block 6187
No block recovery was needed
Wed Aug 6 13:35:51 2014
Errors in file /u01/app/oracle/admin/dba/bdump/ora8_mmon_5034.trc:
ORA-00600: internal error code, arguments: [4194], [18], [23], [], [], [], [], []
Wed Aug 6 13:35:55 2014
DEBUG: Replaying xcb 0x9abcc418, pmd 0x991fa808 for failed op 8
Doing block recovery for file 18 block 6187
No block recovery was needed
Wed Aug 6 13:35:55 2014
Errors in file /u01/app/oracle/admin/dba/bdump/ora8_pmon_5016.trc:
ORA-00600: internal error code, arguments: [4194], [18], [23], [], [], [], [], []
Wed Aug 6 13:35:57 2014
Errors in file /u01/app/oracle/admin/dba/bdump/ora8_pmon_5016.trc:
ORA-00600: internal error code, arguments: [4194], [18], [23], [], [], [], [], []
PMON: terminating instance due to error 472
Instance terminated by PMON, pid = 5016
오류 메시지에서 롤백 단계와 관련이 있을 수 있고 데이터베이스가 강제로 닫힐 수 있음을 발견했습니다.
이 때 만약에 undo표 공간을 바꾸면 데이터베이스를 시작할 수 있는지 생각했다. 데이터베이스에서 사용하는 undo표 공간은 시스템의 기본이 아니기 때문에 이 때 기본적인 undo표 공간으로 바꾸어 보려고 했는데 나중에 안 된다는 것을 발견하고 undo의 관리 방식을 수동으로 바꾸었다. 이때 데이터베이스를 정상적으로 시작할 수 있다
SQL> startup mount
ORACLE instance started.
Total System Global Area 1010827264 bytes
Fixed Size 2088920 bytes
Variable Size 608174120 bytes
Database Buffers 394264576 bytes
Redo Buffers 6299648 bytes
Database mounted.
SQL> alter system set undo_management=manual scope=spfile;
System altered.
SQL> alter system set undo_tablespace=UNDOTBS01 scope=spfile;
System altered.
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1010827264 bytes
Fixed Size 2088920 bytes
Variable Size 608174120 bytes
Database Buffers 394264576 bytes
Redo Buffers 6299648 bytes
Database mounted.
Database opened.
그리고 원래의 undo 테이블 공간을 삭제하고 재구성하고 데이터를 다시 시작하여 정상적으로 엽니다.
SQL> drop tablespace jfsys_rb including contents and datafiles cascade constraints;
System altered.
SQL> create undo tablespace jfsys_rb datafile '/u02/oradata/jfsys_rb.dbf' size 4G;
Tablespace created.
SQL> alter tablespace jfsys_rb add datafile '/u02/oradata/jfsys_rb_add.dbf' size 4G;
Tablespace altered.
SQL> alter system set undo_tablespace=jfsys_rb scope=spfile;
System altered.
SQL> alter system set undo_management=auto scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1010827264 bytes
Fixed Size 2088920 bytes
Variable Size 608174120 bytes
Database Buffers 394264576 bytes
Redo Buffers 6299648 bytes
Database mounted.
Database opened.
로그 정보가 정상입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springboot 프로젝트에서 layui와 Thymeleaf 데이터 테이블에 문제를 표시할 수 없습니다springboot 프로젝트에서 layui와 Thymeleaf 데이터 테이블에 문제를 표시할 수 없습니다 해결 방법:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.