cancel
Showing results for 
Search instead for 
Did you mean: 

recover_replace error 3004

Former Member
0 Kudos

Hello,

I get the 3004 error when i try to restore/recover in the below order:

1. recover_start LOG.001

(return code -8020)

2. recover_replace LOG.002

(return code -8020)

3. recover_replace LOG.003

(return code -8020)

4. recover_replace LOG.001

ERR 3004

i tried even using the recover_ignore or the recover_start and i get different error message (-8888 or Connection broken state 6 ..... etc).

how to determine the correct steps ?

I want to apply the LOG.001 after LOG.003, Is there any command that i have to execute after the 3rd step ?

Thanks in adv.

Accepted Solutions (0)

Answers (1)

Answers (1)

roland_mallmann
Advisor
Advisor
0 Kudos

Hi again Balu,

erm, I don't really understand why you'd want to do a recover_replace with a Logbackup which you've already recovered, i.e. LOG.001. That exact Logbackup was already recovered by the first command: recover_start LOG.001. It cannot recover that Logbackup if newer Logbackups are already recovered in the same session.

For your information: a recover_ignore signals the end of a recovery process.

Regards,

Roland

Former Member
0 Kudos

Hi Roland,

thanks for the quick reply.

My question:

Why not at this time (restore sequence) the message -7075 is not returned instead of -3004 error ?

I am using the SAPDB version 7.6.0.34. As i mentioned if i use the recover_ignore the command breaks with "Connection broken ...." . I am completely in confusion on the working of the SAPDB.

Need your suggestion

Thanks.

roland_mallmann
Advisor
Advisor
0 Kudos

Hi,

can you please show the complete output of the -3004 error (from dbm.prt, dbm.utl and knldiag)?

Regarding the recover_ignore; as stated, it signals the end of the recovery session and the DB kernel will then be tried to put into Online state. That seems to fail on your DB instance, more information why it fails, should be visible in either knldiag or knldiag.err.

Regards,

Roland

Former Member
0 Kudos

Hi,

if I use the recover_replace for the LOG_001, I will surely get the 3004 error.

What I tried was to use the recover_ignore.

1. recover_start LOG.001

(return code -8020)

2. recover_replace LOG.002

(return code -8020)

3. recover_replace LOG.003

(return code -8020)

4. recover_ignore

===> the Database was automatically brought to online

5. db_admin

6. util_connect

7. medium_put ..

8. recover_start LOG.001

-24920,ERR_BACKUPOP: backup operation was unsuccessful

The database was unable to fulfill a request (-71, connection broken server state 6).

Here my Question are

1. Why the recover_ignore brings the database online ?

With your prev. update, I understood that it tries to bring ot online. Was it the recent changes made to the code ? Can you please let me know if you know the version that is changed ?

2. How to continue from the recover_ignore onwards to apply the logs ? Is it the right command to give ?

3. if i dont give the recover_ignore and start with recover_replace/recover_start for the LOG_001, the error 3004 is seen ?

...... dbm.prt

2008-01-04 14:38:30 0x00002dee 0 DBM command recover_replace ....

2008-01-04 15:27:32 0x00002dee 0 DBM command recover_ignore

2008-01-04 15:34:28 0x00002dee ERR -24977 DBM ERR_COMMAND: unknown command "dbm"

2008-01-04 15:54:37 0x0000321a 0 DBM command util_connect

2008-01-04 15:54:37 0x0000321a ERR -24988 DBM ERR_SQL: sql error

0x0000321a ERR -24988 DBM 1,task limit

2008-01-04 15:55:28 0x0000321a 0 DBM command util_connect

2008-01-04 15:55:28 0x0000321a ERR -24988 DBM ERR_SQL: sql error

0x0000321a ERR -24988 DBM 1,task limit

2008-01-04 15:57:16 0x00002dee 0 DBM command db_admin

2008-01-04 15:57:35 0x00002dee 0 DBM command medium_put ....

2008-01-04 15:57:42 0x00002dee 0 DBM command recover_start ....

2008-01-04 15:57:42 0x00002dee ERR -24992 DBM ERR_NOUTILSESSION: no utility session available

2008-01-04 15:58:01 0x00002dee 0 DBM command dbm_configset -raw

2008-01-04 15:58:01 0x00002dee 0 DBM command dbm_configset -raw

2008-01-04 15:58:13 0x00002dee 0 DBM command medium_put .....

2008-01-04 15:58:19 0x00002dee 0 DBM command recover_start ....

2008-01-04 15:58:20 0x00002dee ERR -24920 DBM ERR_BACKUPOP: backup operation was unsuccessful

0x00002dee ERR -24920 DBM The database was unable to fulfill a request (-71, connection broken server state 6).

.....

2008-01-04 15:58:19 10 12822 TASKING Thread 24 joining

2008-01-04 15:58:19 25 11566 stop DEVi stopped

2008-01-04 15:58:19 10 12822 TASKING Thread 25 joining

2008-01-04 15:58:19 14 11000 vdetach 'LOG2' devno 4 T39

2008-01-04 15:58:19 26 11566 stop DEVi stopped

2008-01-04 15:58:19 10 12822 TASKING Thread 26 joining

2008-01-04 15:58:19 27 11565 startup DEVi started

2008-01-04 15:58:19 14 ERR 39 Log Logrecovery is not allowed, because state of log volume is 'HistoryLost' (log must be cleared)

2008-01-04 15:58:19 14 WNG 20026 Admin Initialization of log for 'restore log' failed with 'LogAndDataIncompatible'

2008-01-04 15:58:19 14 20040 Admin Kernel state: 'OFFLINE' reached

2008-01-04 15:58:19 14 12696 DBSTATE Change DbState to 'SHUTDOWN'(25)

....

Can i get the correct command ?

Thansk in adv.

roland_mallmann
Advisor
Advisor
0 Kudos

Hi Balu,

to answer your questions:

1. Why the recover_ignore brings the database online ?

Answer: this was not recently changed, but has been like that for quite a while. As stated, it signals the end of a recovery session and the DB will be restarted into ONLINE mode.

2. How to continue from the recover_ignore onwards to apply the logs ? Is it the right command to give ?

Answer: if you need to apply more Logbackups and they are still available, then just continue with the recover_replace commands until the last one is reached. The next one for you would be LOG.004.

3. if i dont give the recover_ignore and start with recover_replace/recover_start for the LOG_001, the error 3004 is seen ?

Answer: yes, an error is thrown, because a recover_replace (or recover_start for that matter) of the first logbackup (LOG.001) is not possible, because that specific logbackup was already recovered. Every logbackup contains a number of logpages with certain logpage numbers; the numbers of LOG.001, LOG.002 and LOG.003 were already recovered, so you'd have to find a suitable logbackup which contains the next logpages (with the correct starting lognr.).

If however, the next logpage number is found on the physical logvolume(s) (which then also means that the Log was not intialized prior to the whole recovery process), then the database kernel will use the logvolume(s) to bring the DB into Online mode.

Regards,

Roland

Former Member
0 Kudos

Hello Roland,

Thanks for the valuable answers.

For the Q1, Can you please let me know from what version the recover commands has been changed for bringing the DB online automatically ?

Is there any option to the recover commands that i can use to make it (Database) not to use the logs on the server or

be in the same state (don't bring online).

For the Question 3, why not the DB kernel give the return code of -7075 instead of the error ?

the SAPDB doc on 7075, implies that the log applied is older than the one the DB is in.

i.e, the DB is waiting for LOG.004, but if I apply LOG.001, it has to give the return code of -7075 (to skip)

Thanks in adv.

roland_mallmann
Advisor
Advisor
0 Kudos

Hi again Balu,

Q1 (recover_ignore signalling the end of a logrecovery): from all releases > 7.3 onwards, possibly even before that. In other words: in all releases.

Q3: error -3004 states 'Invalid host file sequence', so it doesn't sound too bad imho. I'll discuss it with the relevant dev however.

Regarding 'Is there any option to the recover commands that i can use to make it (Database) not to use the logs on the server or

be in the same state (don't bring online). ':

a) create your Data and Logbackups regularly

b) put DB into ADMIN mode

c) perform an 'init config' or 'db_activate' (this will clear the log) + recovery of data and all available logs. As long as you don't issue an recover_ignore, the DB should stay in ADMIN mode and you can apply newer log backups.

Regards,

Roland

Former Member
0 Kudos

Hello,

Not only the recover_ignore bringing the database online implictly, even the recover_start command brings the db online...

Also please let me know if you got any info from the dev on the Q3....

Thanks in adv.