[ОТВЕТИТЬ]
01.10.2009 14:07
StriderNN
 
Oracle 8.1
SM2000

После аварийного выключения (умер БП) не стартует база. Бэкап - только весенний, спасибо администратору СМ.
Сервисы OracleServiceDBNAME, OracleDEFAULT_2000TNSListener, OracleDEFAULT_2000DataGatherer, Сервер Супермага, Кассовый сервер, Почтовый сервер стартуют нормально.
При попытке войти в базу обычным способом (через Супермаг) получаю сообщение ORA-03113: end-of-file on communication channel.
При попытке коннекта через DBA Studio не происходит ничего. Окно с именем-паролем остается висеть. При нажатии Cancel - выходит. При этом в Oradim.log пишет ORA-12638: Credential retrieval failed.
При попытке подключения через SqlPlus результат следующий

SET NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
SET ORACLE_SID=DBNAME
sqlplus /nolog

SQL*Plus: Release 8.1.6.0.0 - Production on Thu Oct 1 12:38:53 2009

(c) Copyright 1999 Oracle Corporation. All rights reserved.

SQL> connect sys/qqq as sysdba
ERROR:
ORA-12571: TNS packet writer failure

Сделал полную копию Ora81, Oradata, Admin при остановленных сервисах. Рестарт машины дал следующее в DbNAMEalrt.log

Dump file d:\Oracle\admin\DBNAME\bdump\DBNAMEALRT.LOG
Thu Oct 01 12:37:20 2009
ORACLE V8.1.6.3.0 - Production vsnsta=0
vsnsql=e vsnxtr=3
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Starting up ORACLE RDBMS Version: 8.1.6.3.0.
System parameters with non-default values:
processes = 150
shared_pool_size = 157286400
large_pool_size = 614400
java_pool_size = 32768
db_file_direct_io_count = 128
control_files = d:\Oracle\oradata\DBNAME\control02.ctl, d:\Oracle\oradata\DBNAME\control03.ctl, d:\Oracle\oradata\DBNAME\control01.ctl
db_block_buffers = 65536
db_block_size = 8192
compatible = 8.1.0
log_archive_start = TRUE
log_archive_dest_1 = LOCATION=D:\ORACLE\RDBMS
log_buffer = 10158080
log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800
db_files = 1024
db_file_multiblock_read_count= 16
max_enabled_roles = 30
remote_login_passwordfile= EXCLUSIVE
global_names = TRUE
distributed_transactions = 10
instance_name = DBNAME
service_names = DBNAME
sort_area_size = 4096000
sort_area_retained_size = 4096000
db_name = DBNAME
open_cursors = 100
os_authent_prefix =
job_queue_processes = 3
job_queue_interval = 60
parallel_max_servers = 5
background_dump_dest = d:\Oracle\admin\DBNAME\bdump
user_dump_dest = d:\Oracle\admin\DBNAME\udump
max_dump_file_size = 10240
oracle_trace_collection_name=
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7
SNP0 started with pid=8
SNP1 started with pid=9
SNP2 started with pid=10
Thu Oct 01 12:37:23 2009
ARCH: STARTING ARCH PROCESSES
ARC0 started with pid=11
Thu Oct 01 12:37:23 2009
ARCH: STARTING ARCH PROCESSES COMPLETE
Thu Oct 01 12:37:23 2009
ARC0: Archival started
Thu Oct 01 12:37:23 2009
alter database mount exclusive
Thu Oct 01 12:37:28 2009
Successful mount of redo thread 1, with mount id 3021814472.
Thu Oct 01 12:37:28 2009
Database mounted in Exclusive Mode.
Completed: alter database mount exclusive
Thu Oct 01 12:37:28 2009
alter database open
Thu Oct 01 12:37:28 2009
Rolling back half complete log switch of thread 1
***
Corrupt block relative dba: 0x0000005f file=0. blocknum=95.
Bad header found during controlfile block read
Data in bad block - type:255. format:255. rdba:0xffffffff
last change scn:0xffff.ffffffff seq:0xff flg:0xff
consistancy value in tail 0xffffffff
check value in block header: 0xffff, calculated check value: 0x0
spare1:0xff, spare2:0xff, spare2:0xffff
LGWR: terminating instance due to error 227
Instance terminated by LGWR, pid = 28284

Прошу помочь советом, заранее благодарен. Как DBA работаю в основном с SQl. C Oracle столкнулся вынужденно и отступать некуда.
01.10.2009 14:29
akonev
 
Цитата:
Bad header found during controlfile block read
у меня такое ощущение, что накрылся один из контрольников.
они все одинаковые. можно попробовать взять один, скопировать его в два других и поглядеть, что получится. при остановленных сервисах, конечно.
первый не подойдет - скопировать другой.

заодно настучать по голове тому, кто сложил их все на один диск:
Цитата:
control_files = d:\Oracle\oradata\DBNAME\control02.ctl, d:\Oracle\oradata\DBNAME\control03.ctl, d:\Oracle\oradata\DBNAME\control01.ctl
01.10.2009 15:29
StriderNN
 
Спасибо.
Первый не подошел, третий не подошел. Подошел второй.
Результат
Dump file d:\Oracle\admin\DBELENA\bdump\dbelenaALRT.LOG
Thu Oct 01 15:15:42 2009
ORACLE V8.1.6.3.0 - Production vsnsta=0
vsnsql=e vsnxtr=3
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Thu Oct 01 15:15:42 2009
Shutting down instance (immediate)
License high water mark = 5
Thu Oct 01 15:16:47 2009
alter database close normal
Thu Oct 01 15:16:47 2009
ORA-1507 signalled during: alter database close normal...
Dump file d:\Oracle\admin\DBELENA\bdump\dbelenaALRT.LOG
Thu Oct 01 15:16:51 2009
ORACLE V8.1.6.3.0 - Production vsnsta=0
vsnsql=e vsnxtr=3
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Starting up ORACLE RDBMS Version: 8.1.6.3.0.
System parameters with non-default values:
processes = 150
shared_pool_size = 157286400
large_pool_size = 614400
java_pool_size = 32768
db_file_direct_io_count = 128
control_files = d:\Oracle\oradata\DBELENA\control02.ctl, d:\Oracle\oradata\DBELENA\control03.ctl, d:\Oracle\oradata\DBELENA\control01.ctl
db_block_buffers = 65536
db_block_size = 8192
compatible = 8.1.0
log_archive_start = TRUE
log_archive_dest_1 = LOCATION=D:\ORACLE\RDBMS
log_buffer = 10158080
log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800
db_files = 1024
db_file_multiblock_read_count= 16
max_enabled_roles = 30
remote_login_passwordfile= EXCLUSIVE
global_names = TRUE
distributed_transactions = 10
instance_name = DBELENA
service_names = DBELENA
sort_area_size = 4096000
sort_area_retained_size = 4096000
db_name = DBELENA
open_cursors = 100
os_authent_prefix =
job_queue_processes = 3
job_queue_interval = 60
parallel_max_servers = 5
background_dump_dest = d:\Oracle\admin\DBELENA\bdump
user_dump_dest = d:\Oracle\admin\DBELENA\udump
max_dump_file_size = 10240
oracle_trace_collection_name=
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7
SNP0 started with pid=8
SNP1 started with pid=9
SNP2 started with pid=10
Thu Oct 01 15:16:54 2009
ARCH: STARTING ARCH PROCESSES
ARC0 started with pid=11
Thu Oct 01 15:16:54 2009
ARCH: STARTING ARCH PROCESSES COMPLETE
Thu Oct 01 15:16:54 2009
ARC0: Archival started
Thu Oct 01 15:16:54 2009
alter database mount exclusive
Thu Oct 01 15:16:57 2009
ORA-214 signalled during: alter database mount exclusive...

DBA Studio подключиться удалось, база в статусе Started
При входе через Супермаг выдает ошибку
ORA-01033: ORACLE initialization or shutdown in progress
01.10.2009 15:36
Mtirt
 
Message
ORA-00214:Controlfile 'string' version string inconsistent with file 'string' version string
Cause
An inconsistent set of control files, datafiles, and redo log files was used.
Action
Use a consistent set of control files, datafiles, and redo log files. That is, all the files must be for the same database and from the same time period.


По-русски: подошедший control_файл конфликтует с информацией в остальных файлах.
01.10.2009 15:39
Mtirt
 
Попробуй
сказать базе
ALTER DATABASE OPEN RESETLOGS;
и выложи сюда результат.
01.10.2009 15:42
StriderNN
 
Угу, понятно. Однако, по совету Andrew_Konev, ныне все три контрол файла - идентичные копии бывшего control02.
01.10.2009 15:45
StriderNN
 
2Mtirt
Т.е. srvplus /nolog
connect / as sysdba
ALTER DATABASE OPEN RESETLOGS
Правильно?
01.10.2009 15:48
StriderNN
 
Вынужден прерваться на час. Спасибо всем откликнувшимся. Скоро вернусь
01.10.2009 15:49
Mtirt
 
Цитата:
StriderNN Угу, понятно. Однако, по совету Andrew_Konev, ныне все три контрол файла - идентичные копии бывшего control02.
Т.е. перед тем, как начать экспериментировать, ты не сделал копию того, что осталось?
А еще на сис.админа ругаешься...
01.10.2009 15:58
Mtirt
 
Цитата:
StriderNN 2Mtirt
Т.е. srvplus /nolog
connect / as sysdba
ALTER DATABASE OPEN RESETLOGS
Правильно?
https://olegon.ru/showpost.php?p=29962&postcount=2
01.10.2009 16:09
akonev
 
Цитата:
StriderNN Угу, понятно. Однако, по совету Andrew_Konev, ныне все три контрол файла - идентичные копии бывшего control02.
они одинаковые между собой. но "подошедший" 2-й не соответствует состоянию чего-то из остальных файлов базы: данным или редушкам.

ВСЕ файлы должны быть за один и тот же период времени. если контрольники копировал из бэкапа, то для запуска надо и файлы данных взять оттуда же.

если дело в редушках, то должен помочь рецепт Mtirt.

попробуй еще
alter database backup controlfile to trace
если сработает, то можно будет просто пересоздать контрольники.
01.10.2009 16:22
akonev
 
Цитата:
Mtirt Т.е. перед тем, как начать экспериментировать, ты не сделал копию того, что осталось?
А еще на сис.админа ругаешься...
Погоди ругаться. Человек основательно подошел:
Цитата:
StriderNN ...Сделал полную копию Ora81, Oradata, Admin при остановленных сервисах...
Похоже, просто не уловил, что речь о consistency не только контрльников, но и всего остального
01.10.2009 16:41
OlegON
 
Предлагаю из текущего состояния сделать:
Цитата:
alter database open;
и посмотреть сначала, что же inconsistent на самом деле. Логи пока не обнулять.
И, по многократному совету друзей, не пользоваться DBA Studio при поднятии базы.
01.10.2009 16:46
OlegON
 
Да, на этапе разбора полетов можно не мучиться с кучей контрольников, а в ini.ora сменить кучу путей в control_files на один.
Есть подозрение, что с контрольниками все таки накосячили.
02.10.2009 09:40
StriderNN
 
Цитата:
Mtirt Т.е. перед тем, как начать экспериментировать, ты не сделал копию того, что осталось?
А еще на сис.админа ругаешься...
Копию я сделал. А ирония ситуации в том, что сис.админ - это я. На мне 2003-2008, MS SQL 2000, 1C, VPN сетка на 6 узлов и обычный юзерский зоопарк. И долгое время админ Супермага работал самостоятельно, не допуская меня ни к СМ, ни к Oracle. Я считал и считаю, что это правильно. Что я знаю, за то я и отвечаю. Не знаю Oracle - не лезу. А теперь DBA нет, его расхваленная безотказность = последний бэкап весной*54 . И разбираться мне. И взять control файл мне неоткуда, только из моей же копии битой базы или из весеннег бэкапа, что, как я думаю, бесполезная трата времени.
02.10.2009 09:49
akonev
 
из весеннего - да, пустая трата.
сейчас тебе надо делать то, что советовал Олег
Цитата:
alter database open;
и вывод сюда копировать
02.10.2009 10:27
StriderNN
 
Еще раз спасибо всем за участие в решении проблемы.
Короткий отчет.

1. При остановленных сервисах заменил все три control0x.ctl на control02.ctl из моей копии.
2. Запустил сервисы.Прочитал dbnamealrt.log (см. выше)
3. Запустил DBA Studio. Попытался подключиться к базе. Удалось. База в состоянии "Started"
4. Обрадовался. При попытке изменить на "Mount" или "Open" получил сообщение "ORA-00214: controlfile 'D:\ORACLE\ORADATA\DBELENA\CONTROL02.CTL' version 286054
inconsistent with file 'D:\ORACLE\ORADATA\DBELENA\CONTROL03.CTL' version 286042"
5. Огорчился. Прочитал мнение OlegON насчет DBA Studio и перешел на SqlPlus.

D:\Oracle>sqlplus /nolog

SQL*Plus: Release 8.1.6.0.0 - Production on Thu Oct 1 21:58:29 2009

(c) Copyright 1999 Oracle Corporation. All rights reserved.

SQL> connect sys/qqq as sysdba
Connected.
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 718390236 bytes
Fixed Size 70620 bytes
Variable Size 171282432 bytes
Database Buffers 536870912 bytes
Redo Buffers 10166272 bytes
ORA-00214: controlfile 'D:\ORACLE\ORADATA\DBELENA\CONTROL02.CTL' version 286054
inconsistent with file 'D:\ORACLE\ORADATA\DBELENA\CONTROL03.CTL' version 286042

6. По совету OlegON отредактировал init.ora. Закомментировал coontrol01 и control03. Рестартовал сервис базы.

alrt.log
Fri Oct 02 10:09:34 2009
ARCH: STARTING ARCH PROCESSES
ARC0 started with pid=11
Fri Oct 02 10:09:35 2009
ARCH: STARTING ARCH PROCESSES COMPLETE
Fri Oct 02 10:09:35 2009
alter database mount exclusive
Fri Oct 02 10:09:36 2009
ARC0: Archival started
Fri Oct 02 10:09:40 2009
Successful mount of redo thread 1, with mount id 3021872804.
Fri Oct 02 10:09:40 2009
Database mounted in Exclusive Mode.
Completed: alter database mount exclusive
Fri Oct 02 10:09:40 2009
alter database open
Fri Oct 02 10:09:40 2009
Rolling back half complete log switch of thread 1
***
Corrupt block relative dba: 0x0000005f file=0. blocknum=95.
Bad header found during controlfile block read
Data in bad block - type:255. format:255. rdba:0xffffffff
last change scn:0xffff.ffffffff seq:0xff flg:0xff
consistancy value in tail 0xffffffff
check value in block header: 0xffff, calculated check value: 0x0
spare1:0xff, spare2:0xff, spare2:0xffff
LGWR: terminating instance due to error 227
Instance terminated by LGWR, pid = 20772

SqlPlus
SQL> startup mount
ORACLE instance started.

Total System Global Area 718390236 bytes
Fixed Size 70620 bytes
Variable Size 171282432 bytes
Database Buffers 536870912 bytes
Redo Buffers 10166272 bytes
Database mounted.
SQL> alter database open
2 /
alter database open
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel

SQL> alter database backup controlfile to trace
2 /
alter database backup controlfile to trace
*
ERROR at line 1:
ORA-03114: not connected to ORACLE


SQL> ALTER DATABASE OPEN RESETLOGS
2 /
ALTER DATABASE OPEN RESETLOGS
*
ERROR at line 1:
ORA-03114: not connected to ORACLE

7. В печальном раздумии штудирую документацию и жду совета.
02.10.2009 10:41
Mtirt
 
shutdown immediate;
startup mount;
restore database using backup controlfile until cancel;
02.10.2009 10:42
akonev
 
по двум последним командам у тебя not connected
попробуй перед ними снова коннектиться
02.10.2009 10:49
StriderNN
 
2 Mtirt
SQL> restore database using backup controlfile until cancel
SP2-0734: unknown command beginning "restore da..." - rest of line ignored.
02.10.2009 10:52
akonev
 
Цитата:
StriderNN 2 Mtirt
SQL> restore database using backup controlfile until cancel
SP2-0734: unknown command beginning "restore da..." - rest of line ignored.
recover database using backup controlfile until cancel
оно же так пишется, кажется?
02.10.2009 10:56
StriderNN
 
Цитата:
Andrew_Konev по двум последним командам у тебя not connected
попробуй перед ними снова коннектиться
SQL> shutdown immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 718390236 bytes
Fixed Size 70620 bytes
Variable Size 171282432 bytes
Database Buffers 536870912 bytes
Redo Buffers 10166272 bytes
Database mounted.
SQL> alter database backup controlfile to trace
2 /

Database altered.

Вторую команду ALTER DATABASE OPEN RESETLOGS дать сразу?
02.10.2009 10:59
akonev
 
найди сначала свежесозданный трейс, чтобы потом не перекапывать все подряд
02.10.2009 11:02
StriderNN
 
Цитата:
Andrew_Konev найди сначала свежесозданный трейс, чтобы потом не перекапывать все подряд
База запущена с control03.ctl

ORA29924.TRC
Dump file d:\Oracle\admin\DBELENA\udump\ORA29924.TRC
Fri Oct 02 10:54:47 2009
ORACLE V8.1.6.3.0 - Production vsnsta=0
vsnsql=e vsnxtr=3
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Oracle8i Enterprise Edition Release 8.1.6.3.0 - Production
JServer Release 8.1.6.3.0 - Production
Windows 2000 Version 5.2 Service Pack 2, CPU type 586
Instance name: dbelena

Redo thread mounted by this instance: 1

Oracle process number: 12

Windows thread id: 29924, image: ORACLE.EXE


*** SESSION ID: (11.1) 2009-10-02 10:54:47.031
*** 2009-10-02 10:54:47.031
# 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 "DBELENA" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 254
MAXINSTANCES 1
MAXLOGHISTORY 4084
LOGFILE
GROUP 4 'D:\ORACLE\ORADATA\DBELENA\REDO04.ORA' SIZE 50M,
GROUP 5 'D:\ORACLE\ORADATA\DBELENA\REDO05.ORA' SIZE 50M,
GROUP 6 'D:\ORACLE\ORADATA\DBELENA\REDO06.ORA' SIZE 50M
DATAFILE
'D:\ORACLE\ORADATA\DBELENA\SYSTEM01.DBF',
'D:\ORACLE\ORADATA\DBELENA\RBS01.DBF',
'D:\ORACLE\ORADATA\DBELENA\USERS01.DBF',
'D:\ORACLE\ORADATA\DBELENA\TEMP01.DBF',
'D:\ORACLE\ORADATA\DBELENA\TOOLS01.DBF',
'D:\ORACLE\ORADATA\DBELENA\INDX01.DBF',
'D:\ORACLE\ORADATA\DBELENA\USERS02.DBF',
'D:\ORACLE\ORADATA\DBELENA\INDX02.DBF',
'D:\ORACLE\ORADATA\DBELENA\TEMP02.DBF',
'D:\ORACLE\ORADATA\DBELENA\TEMP03.DBF',
'D:\ORACLE\ORADATA\DBELENA\USERS03.DBF',
'D:\ORACLE\ORADATA\DBELENA\INDX03.DBF'
CHARACTER SET CL8MSWIN1251
;
# 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.
#
02.10.2009 11:04
akonev
 
искать в user_dump_dest (типа D:\ORACLE\admin\DBname\udump)

в нем должен быть кусок начинающийся с

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "DBname" NORESETLOGS NOARCHIVELOG

и окончавающися на

CHARACTER SET CL8MSWIN1251
;

если ничего другое не поможет - сделаем из него новый контролфайл
02.10.2009 11:05
OlegON
 
Да погодите вы логи обнулять :) Контрольник другой не пробовали? Этот битый.
02.10.2009 11:07
StriderNN
 
Цитата:
OlegON Да погодите вы логи обнулять :) Контрольник другой не пробовали? Этот битый.
Так не торопимся с ALTER DATABASE OPEN RESETLOGS ?
02.10.2009 11:08
akonev
 
трэйс нашел правильный. отложи в сторонку, может пригодиться.

слушаем Олега и пытаемся еще два раза доставать базу из бэкапа (целиком), но отключать другие контрольники
02.10.2009 11:14
OlegON
 
Извините, с большими интервалами участвую в беседе. Но два раза доставать не обязательно. После recover, если его уже прогнали или resetlog, один раз достаточно достать, прописать в ini один контрольник и по очереди все по одному подкладывать. Сомневаюсь я очень, что сразу три контрольника умерли. Если ни один не заведется все таки, тогда берем тот трейс, создаем контрольники и open resetlogs
02.10.2009 11:42
OlegON
 
Цитата:
StriderNN Так не торопимся с ALTER DATABASE OPEN RESETLOGS ?
Я предлагаю не торопиться. Битый контрольник, а не редо.


Опции темы


Часовой пояс GMT +3, время: 21:55.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.