Подключение базы из...

shihun
Дата: 31.10.2015 17:41:01
C oracle столкнулся первый раз в жизни. Задача тривиальная - подключить базу данных. Читая мануалы и штудируя форумы так и не понял, смогу ли я что-то восстановить из имеющихся у меня файлов. А имею я архив с файлами и папками(на картинке). Насколько я понимаю - это не бэкап и не дамп. Связаться с тем, кто оправил мне этот архив я пока не могу. Хотел спросить у вас, могу ли я восстановить базу данных с помощью того, что имею и как мне это сделать. Пошаговую инструкцию не прошу, просто направьте меня пожалуйста.
eev
Дата: 31.10.2015 18:19:15
shihun,
1. установить соответствующее для БД ПО
2. Ну совместно, наверно, с тем, кто выдал это, как-то так 4FAQ - клонирование базы
shihun
Дата: 31.10.2015 18:24:51
eev, а без того, кто выдал? То есть не зная изначальной структуры каталогов, название базы, sid и тд.? Или это знать не обязательно для клонирования?
ветеран этого дела
Дата: 31.10.2015 19:58:39
в каталоге bdump скорее всего есть файл alert_<sid>.log, в котором есть имя и версия базы, а также параметры для pfile со всеми каталогами.

Файл restore.cmd/bat тоже выглядит многообещающе, судя по имени там полезное содержвние должно быть.

Но это всё тлен и тщетность энивей.
shihun
Дата: 31.10.2015 21:12:05
ветеран этого дела,

Все папки, кроме oldfiles, пустые.
Содержимое restore.bat:
+
@echo off
setlocal enabledelayedexpansion

REM -----------------------------------------------------------------------------
REM --- Параметры командного файла (без завершающих слешей)
REM -----------------------------------------------------------------------------
SET ORACLE_HOME=C:\app\product\11.2.0\dbhome_1
SET DB_PATH=D:\oradata\XE

SET TEMP_TABLESPACE=TEMP
SET TEMP_TABLESPACEFILENAME=TEMP.DBF
SET TEMP_SIZE=200
SET NEW_SID=XE
SET CONNECTION_SID=XE
REM -----------------------------------------------------------------------------
REM -----------------------------------------------------------------------------

set NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251

SET oracle_sid=%NEW_SID%
set PATH=%ORACLE_HOME%;%ORACLE_HOME%\bin

ECHO ----------------------------------------------------------------------------
ECHO -------------------------------------------------------- DROP ORACLE SERVICE
ECHO ----------------------------------------------------------------------------
oradim -delete -sid %NEW_SID%

if ""%NEW_SID%"" == """" goto needParams

ECHO ----------------------------------------------------------------------------
ECHO ------------------------------------------------------ CREATE ORACLE SERVICE
ECHO ----------------------------------------------------------------------------
oradim.exe -new -sid %NEW_SID% -intpwd sys -startmode manual
rem -pfile C:\oracle\oradata\PARUS_8530\initdemo8530.ora

md %DB_PATH%\adump
md %DB_PATH%\bdump
md %DB_PATH%\cdump
md %DB_PATH%\udump
md %DB_PATH%\oldfiles

echo a|MOVE /-Y %DB_PATH%\%TEMP_TABLESPACEFILENAME% %DB_PATH%\oldfiles
echo a|MOVE /-Y %DB_PATH%\*.CTL %DB_PATH%\oldfiles

del listener.ddl
del restore.ddl

echo Restarting Listener...
ECHO STOP >listener.ddl
ECHO SET DISPLAYMODE COMPAT >>listener.ddl
ECHO START >>listener.ddl

LSNRCTL @listener.ddl

ECHO PROMPT ----------------------------------------------------------------------------; >restore.ddl
ECHO PROMPT ---------------------------------------------------------- CONNECT TO SERVER; >>restore.ddl
ECHO PROMPT ----------------------------------------------------------------------------; >>restore.ddl
ECHO connect sys/sys@%CONNECTION_SID% as sysdba; >>restore.ddl
ECHO PROMPT ----------------------------------------------------------------------------; >>restore.ddl
ECHO PROMPT ------------------------------------------------------------- MOUNT DATABASE; >>restore.ddl
ECHO PROMPT ----------------------------------------------------------------------------; >>restore.ddl
ECHO shutdown immediate; >>restore.ddl
ECHO startup nomount; >>restore.ddl

ECHO PROMPT ----------------------------------------------------------------------------; >>restore.ddl
ECHO PROMPT ---------------------------------------------------- REBUILD DATABASE STRUCT; >>restore.ddl
ECHO PROMPT ----------------------------------------------------------------------------; >>restore.ddl
ECHO CREATE CONTROLFILE SET DATABASE "%NEW_SID%" RESETLOGS NOARCHIVELOG >>restore.ddl
ECHO MAXLOGFILES 16 >>restore.ddl
ECHO MAXLOGMEMBERS 3 >>restore.ddl
ECHO MAXDATAFILES 100 >>restore.ddl
ECHO MAXINSTANCES 8 >>restore.ddl
ECHO MAXLOGHISTORY 292 >>restore.ddl
ECHO LOGFILE >>restore.ddl
SET /a COUNT=1
FOR %%F IN (%DB_PATH%\REDO*.LOG) DO (
IF !COUNT! GTR 1 ECHO ,>>restore.ddl
ECHO GROUP !COUNT! '%%F' SIZE 50M >>restore.ddl
SET /a COUNT=COUNT+1
)
ECHO DATAFILE >>restore.ddl
SET /a COUNT=1
FOR %%F IN (%DB_PATH%\*.DBF;%DB_PATH%\*.DAT) DO (
IF %%F NEQ %TEMP_TABLESPACEFILENAME% (
IF !COUNT! GTR 1 ECHO ,>>restore.ddl
ECHO '%%F' >>restore.ddl
SET /a COUNT=COUNT+1
)
)
ECHO CHARACTER SET CL8MSWIN1251; >>restore.ddl

ECHO PROMPT ----------------------------------------------------------------------------; >>restore.ddl
ECHO PROMPT ------------------------------------------------------ REBUILD CONTROL FILES; >>restore.ddl
ECHO PROMPT ----------------------------------------------------------------------------; >>restore.ddl
ECHO recover database until cancel using backup controlfile; >>restore.ddl
ECHO %DB_PATH%\redo01.log >>restore.ddl
ECHO recover database until cancel using backup controlfile; >>restore.ddl
ECHO %DB_PATH%\redo02.log >>restore.ddl
ECHO recover database until cancel using backup controlfile; >>restore.ddl
ECHO %DB_PATH%\redo03.log >>restore.ddl
ECHO recover database until cancel using backup controlfile; >>restore.ddl
ECHO CANCEL >>restore.ddl
ECHO alter database open resetlogs upgrade; >>restore.ddl
ECHO PROMPT ----------------------------------------------------------------------------; >>restore.ddl
ECHO PROMPT --------------------------------------------------- RECREATE TEMP TABLESPACE; >>restore.ddl
ECHO PROMPT ----------------------------------------------------------------------------; >>restore.ddl
ECHO alter tablespace %TEMP_TABLESPACE% add tempfile '%DB_PATH%\%TEMP_TABLESPACEFILENAME%' size %TEMP_SIZE%M AUTOEXTEND ON; >>restore.ddl
rem ECHO @createuser.sql >>restore.ddl
ECHO select status from v$instance; >>restore.ddl
ECHO exit >>restore.ddl

sqlplus /NOLOG @restore.ddl

rem %ORACLE_HOME%\bin\oradim.exe -edit -sid %NEW_SID% -startmode auto
%SystemRoot%\system32\sc config OracleService%NEW_SID% start= auto

goto end
:needParams
echo.
echo Требуется настройка
:end
pause



В нем полезные строки вроде как
SET ORACLE_HOME=C:\app\product\11.2.0\dbhome_1
SET DB_PATH=D:\oradata\XE
rem -pfile C:\oracle\oradata\PARUS_8530\initdemo8530.ora
landy
Дата: 01.11.2015 08:34:19
1. Ставите Oracle XE
2. sql> create pfile from spfile;
sql> shutdown immediate;
3. Правите initXE.ora (пути до каталога на контрол файлы, куда распаковали архив) или
просто заменяете все файлы БД установки файлами из архива
4. стартуете БД
mefman
Дата: 01.11.2015 15:26:03
а что в батнике "restore"?
mefman
Дата: 01.11.2015 15:33:13
mefman
а что в батнике "restore"?

сорри. не посмотрел
shihun
Дата: 02.11.2015 13:21:10
landy,

После проделанных операций:


SQL> startup
ORACLE instance started.

Total System Global Area 535662592 bytes
Fixed Size 1384760 bytes
Variable Size 226496200 bytes
Database Buffers 301989888 bytes
Redo Buffers 5791744 bytes
Database mounted.
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF'
ORA-01202: wrong incarnation of this file - wrong creation time
landy
Дата: 02.11.2015 15:30:19
Т е Вы сделали create pfile from spfile?

переименуйте или переместите spfile из каталога OH/database
Поправьте initXE.ora чтобы указывал на правильные имена контролфайлов
Попробуйте запустить БД