Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
aquadba
Member

Откуда:
Сообщений: 18
Приветствую, Комрады!
Подскажите пжл по моей ошибке!

Провожу дублирование с использованием SET NEWNAME FOR DATABASE. Дублирование с другой структурой каталогов чем на source db.
Восстановление из бэкапа - no target db, no recovery catalog.
Скрипт дублирования:

SPOOL LOG to '/export/home/oracle/scripts/dupdb.log'
RUN
{
SET NEWNAME FOR DATABASE TO '/data/oradata/dupdb/%b';
DUPLICATE DATABASE TO dupdb
SPFILE
BACKUP LOCATION '/u01/oradata/backup/dupdb'
LOGFILE
GROUP 1
('/data/oradata/dupdb/redo01.log') size 4M reuse,
GROUP 2
('/data/oradata/dupdb/redo02.log') size 4M reuse;
}

Дублирование проходит без проблем, в логе ошибок не наблюдается, кроме проблемы с TEMPом.
В алерт логе (alert_dupdb.log) после дублирования:

Fri Aug 22 17:44:28 2014
Errors in file /data/oracle/diag/rdbms/dupdb/dupdb/trace/dupdb_j000_29397.trc:
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/data/oradata/dupdb/temp01.dbf'

Добавлял в скрипт - SET NEWNAME FOR TEMPFILE 1 TO '/data/oradata/dupdb/temp01.dbf'; - рез-т фактический тот же!

Oracle 11.2.0.1.0.

Можно пересоздать темп дата-файл или временно таб. прост-во. Но хотелось бы понять что делаю неверно?

К сообщению приложен файл (dupdb.log - 13Kb) cкачать
22 авг 14, 18:35    [16481711]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
aquadba
Member

Откуда:
Сообщений: 18


К сообщению приложен файл (alert_dupdb.log - 28Kb) cкачать
22 авг 14, 18:36    [16481714]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
kao
Member

Откуда:
Сообщений: 22
aquadba,

Всё норм, так и должно быть . Просто пересоздайте файлы во временном табличном пространстве.
25 авг 14, 11:21    [16487341]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
aquadba
Member

Откуда:
Сообщений: 18
Successfully onlined Undo Tablespace 2.
Dictionary check beginning
Errors in file /data/oracle/diag/rdbms/dupdb/dupdb/trace/dupdb_dbw0_21624.trc:
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/data/oradata/dupdb/temp01.dbf'
ORA-27037: unable to obtain file status
Solaris-AMD64 Error: 2: No such file or directory
Additional information: 3
Errors in file /data/oracle/diag/rdbms/dupdb/dupdb/trace/dupdb_dbw0_21624.trc:
ORA-01186: file 201 failed verification tests
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/data/oradata/dupdb/temp01.dbf'
File 201 not verified due to error ORA-01157
Dictionary check complete
Verifying file header compatibility for 11g tablespace encryption..
Verifying 11g file header compatibility for tablespace encryption completed
SMON: enabling tx recovery
Re-creating tempfile /data/oradata/dupdb/temp01.dbf
Cannot re-create tempfile /data/oradata/dupdb/temp01.dbf, the same name file exists
Errors in file /data/oracle/diag/rdbms/dupdb/dupdb/trace/dupdb_ora_21646.trc:
ORA-03214: File Size specified is smaller than minimum required

Errors in file /data/oracle/diag/rdbms/dupdb/dupdb/trace/dupdb_dbw0_21624.trc:
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/data/oradata/dupdb/temp01.dbf'
ORA-27086: unable to lock file - already in use
Solaris-AMD64 Error: 11: Resource temporarily unavailable


Это баг?
25 авг 14, 16:00    [16489238]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
kao
Member

Откуда:
Сообщений: 22
aquadba,

Используйте reuse при пересоздании temp файлов
26 авг 14, 12:39    [16493271]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
aquadba
Member

Откуда:
Сообщений: 18
это кусок алерта после выполнения скрипта приведенного выше!
29 авг 14, 12:56    [16512170]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
AlexVin
Member

Откуда: E-burg
Сообщений: 1055
"Cannot re-create tempfile /data/oradata/dupdb/temp01.dbf, the same name file exists"

убей его сначала оттедова
29 авг 14, 13:40    [16512498]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
aquadba
Member

Откуда:
Сообщений: 18
База восстанавливается из бэкапа на др машине, в каталогах никаких дата-файлов нет!
Если удалить ручками темпдатафайл, то при последующем перезапуске база скажет, что слишком маленький размер файла или что-то в этом роде!
29 авг 14, 13:47    [16512560]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
AlexVin
Member

Откуда: E-burg
Сообщений: 1055
наугад: добавить NOFILENAMECHECK?
29 авг 14, 14:27    [16512956]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
AlexVin
Member

Откуда: E-burg
Сообщений: 1055
ктсати, а где у тебя DB_FILE_NAME_CONVERT?
для темпфайлов он нужен
29 авг 14, 15:09    [16513300]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
aquadba
Member

Откуда:
Сообщений: 18
Хороший вопрос!
Кому не лень, смотрим доку:

SET NEWNAME FOR DATABASE - Sets new default names for all data files and temp files in the specified database that have not been named with the SET NEWNAME FOR TABLESPACE, SET NEWNAME FOR TEMPFILE or SET NEWNAME FOR DATAFILE command.
This command enables you to change the names for multiple files in the database and provides a quick alternative to naming each file individually. This command does not set names for temp files
(http://docs.oracle.com/cd/E11882_01/backup.112/e10643/rcmsynta2014.htm#i1003832)

Еще смотрим тут:
http://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmdupad.htm#BRADV443
Example 25-3, Table 25-2

И видим, что Oracle нам говорит temp переименовывает без доп указания!

А также в мое алерт логе:
ORA-01110: data file 201: '/data/oradata/dupdb/temp01.dbf'
Что подтверждает, что темп-файл переименовывается, он только не хочет автоматом создаваться!
Исходные файлы лежат в /data/oracle/oradata/testprimary.

Решил сделать вот так:

SPOOL LOG to '/export/home/oracle/scripts/dupdb.log'
RUN
{
SET NEWNAME FOR TEMPFILE 1 TO '/data/oradata/dupdb/temp01.dbf';
SET NEWNAME FOR DATABASE TO '/data/oradata/dupdb/%b';
DUPLICATE DATABASE TO dupdb
SPFILE
BACKUP LOCATION '/u01/oradata/backup/dupdb'
LOGFILE
GROUP 1
('/data/oradata/dupdb/redo01.log') size 4M reuse,
GROUP 2
('/data/oradata/dupdb/redo02.log') size 4M reuse;
}

SET NEWNAME FOR TEMPFILE в контексте DB_FILE_NAME_CONVERT думаю равнозначно?!
Результат тот же!
29 авг 14, 15:34    [16513430]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
AlexVin
Member

Откуда: E-burg
Сообщений: 1055
DB_FILE_NAME_CONVERT в инишку впиши
1 сен 14, 07:27    [16518563]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
aquadba
Member

Откуда:
Сообщений: 18
При восстановлении из бекапа восстанавливается spfile. Init-файл не используется!
1 сен 14, 21:08    [16521403]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
aquadba
Member

Откуда:
Сообщений: 18
Решение видать только такое http://www.dba-oracle.com/t_ora_01187_cannot_read_from_file_failed_verification_tests.htm

ALTER TABLESPACE TEMP ADD TEMPFILE '/data/oradata/dupdb/temp.dbf' size 10M;
ALTER DATABASE TEMPFILE '/data/oradata/dupdb/temp01.dbf' DROP;
2 сен 14, 12:33    [16522916]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
AlexVin
Member

Откуда: E-burg
Сообщений: 1055
чо такой уперто-категоричный?)

оракел при DUPLICATE DATABASE TO $MYINST BACKUP LOCATION '$BKDIR'; в новый путь
сам создает темп-файлы, не надо ниче дропать-создавать

oracle 11.2.0.3 на aix, на linux_x64
в sp-файле *.LOG_FILE_NAME_CONVERT= и *.DB_FILE_NAME_CONVERT=

в алерт-логе после Dictionary check beginning
ор, что они No such file or directory
а потом Re-creating tempfile бла-бла-гуд
2 сен 14, 14:12    [16523572]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
AlexVin
Member

Откуда: E-burg
Сообщений: 1055
+ на момент запуска dublicate никаких темп-файлов в "новом пути" быть не должно (а то непонятно: "Если удалить ручками темпдатафайл ..")
2 сен 14, 14:22    [16523664]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
И именно в этом случае он и получит на своей версии ORA-03214: File Size specified is smaller than minimum required (Bug 9055954 : RMAN DUPLICATE DOES NOT CREATE TEMPFILES)
3 сен 14, 01:58    [16526598]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
AG#
Member

Откуда: Российская Федерация
Сообщений: 2305
ну если не лезет DUPLICATE у Вас...ручками сделать Standby религия не позволяет ? темп-файл ведь все-равно создавать....
3 сен 14, 02:56    [16526616]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
AlexVin
Member

Откуда: E-burg
Сообщений: 1055
Вячеслав Любомудров
получит на своей версии

а я не просто так версию приписал) ибо есть у аффтора, судя по другим его вопросам, и такая чтоб попробовать
3 сен 14, 06:54    [16526703]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
aquadba
Member

Откуда:
Сообщений: 18
на момент запуска dublicate никаких темп-файлов в "новом пути" нет!

Rman сам создает темр файл в результате тот алерт лог который приложен.

Поставлю 11.2.0.4 проверю на нем, а так же попробую *.LOG_FILE_NAME_CONVERT= и *.DB_FILE_NAME_CONVERT=
3 сен 14, 12:12    [16528170]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
aquadba
Member

Откуда:
Сообщений: 18
В общем, комрады.
Поставил 11.2.0.4, запустил duplicate все прошло на раз!
Dictionary check beginning
Errors in file /u01/app/oracle/diag/rdbms/dupdb/dupdb/trace/dupdb_dbw0_7452.trc:
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/u01/oradata/dupdb/temp01.dbf'
ORA-27037: unable to obtain file status
Solaris-AMD64 Error: 2: No such file or directory
Additional information: 3
Errors in file /u01/app/oracle/diag/rdbms/dupdb/dupdb/trace/dupdb_dbw0_7452.trc:
ORA-01186: file 201 failed verification tests
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/u01/oradata/dupdb/temp01.dbf'
File 201 not verified due to error ORA-01157
Dictionary check complete
Verifying file header compatibility for 11g tablespace encryption..
Verifying 11g file header compatibility for tablespace encryption completed
SMON: enabling tx recovery
Re-creating tempfile /u01/oradata/dupdb/temp01.dbf


никаких ошибок пересоздания темпфайла!
3 сен 14, 14:38    [16529475]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
aquadba
Member

Откуда:
Сообщений: 18
Комрады, подскажите еще!
Провожу дублирование теперь таким образом, указал в инит-файле параметры конвертации

initdupdb.ora:

DB_NAME=dupdb
DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/test/users01.dbf','/u02/oradata/dupdb/users01.dbf','/u01/app/oracle/oradata
/test/example01.dbf','/u02/oradata/dupdb/example01.dbf','/u01/app/oracle/oradata/test/','/u01/oradata/dupdb/'
LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/test/','/u01/oradata/dupdb/'
CONTROL_FILES='/u01/oradata/dupdb/control01.ctl','/u01/oradata/dupdb/control02.ctl'



Скрипт дублирования dupdb_3.rman:
SPOOL LOG to '/export/home/oracle/scripts/dupdb.log'
connect auxiliary /


RUN
{
DUPLICATE DATABASE TO dupdb
SPFILE
BACKUP LOCATION '/u01/backup/dupdb';
}
SPOOL LOG OFF;

Ошибка:

Oracle instance shut down
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 09/04/2014 16:56:39
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
ORA-19870: error while restoring backup piece /u01/backup/dupdb/full_TEST_20140903_5_1_ctl.bak
ORA-19504: failed to create file "/u01/app/oracle/oradata/test/control01.ctl"
ORA-27040: file create error, unable to create file
Solaris-AMD64 Error: 2: No such file or directory
Additional information: 1

Recovery Manager complete.


Как правильно указать конвертацию контрол-файла в файле параметров?
4 сен 14, 17:03    [16536213]     Ответить | Цитировать Сообщить модератору
 Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Ты же в команде DUPLICATE указываешь кляузу SPFILE, т.е. восстанавливаешь файл параметров из бэкапа
Значит, твой локальный файл параметров идет лесом
Варианты:
  • не восстанавливать SPFILE из бэкапа, а создать нужный, где все прописать и не трогать
  • юзать подкляузу SET кляузы SPFILE (SET CONTROL_FILES=...)
  • юзать подкляузу PARAMETER_VALUE_CONVERT кляузы SPFILE
  • юзать SET NEWNAME FOR DATABASE
  • 5 сен 14, 03:34    [16537914]     Ответить | Цитировать Сообщить модератору
     Re: SET NEWNAME FOR DATABASE. DUPLICATE. ORA-01157. TEMP  [new]
    aquadba
    Member

    Откуда:
    Сообщений: 18
    Вячеслав Любомудров
    Значит, твой локальный файл параметров идет лесом


    Лесом-то идет, но !

    Если мы, например сделаем так:


    RUN
    {
    DUPLICATE DATABASE TO dupdb
    SPFILE
    SET CONTROL_FILES='/u01/oradata/dupdb/control01.ctl','/u01/oradata/dupdb/control02.ctl'
    BACKUP LOCATION '/u01/backup/dupdb';
    }
    SPOOL LOG OFF;

    А в инит-файле скажем:
    initdupdb.ora:

    DB_NAME=dupdb
    DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/test/users01.dbf','/u02/oradata/dupdb/users01.dbf','/u01/app/oracle/oradata
    /test/example01.dbf','/u02/oradata/dupdb/example01.dbf','/u01/app/oracle/oradata/test/','/u01/oradata/dupdb/'
    LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/test/','/u01/oradata/dupdb/'

    То дублирование пройдет на ура!
    Т.е параметры
    DB_FILE_NAME_CONVERT, LOG_FILE_NAME_CONVERT можно указать в initdupdb при дублировании с spfile. Хотел попробовать также указать CONTROL_FILES, но не прокатывает.

    Я не нашел в доке по CONTROL_FILES ясного объяснения, или его просто нельзя указывать в init, а нужно только в spfile кляузе?
    5 сен 14, 11:54    [16539079]     Ответить | Цитировать Сообщить модератору
    Все форумы / Oracle Ответить