.ad 8
.bm 8
.fm 4
.bt $Copyright (c) 2000-2005 SAP AG$$Page %$
.tm 12
.hm 6
.hs 3
.tt 1 $SQL$Project Distributed Database System$VBD14$
.tt 2 $$$
.tt 3 $JuergenP$backup_and_restore$$2000-11-06$
***********************************************************
.nf
 
 .nf

    ========== licence begin  GPL
    Copyright (c) 2000-2005 SAP AG

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    ========== licence end
.fo

 
.fo
.nf
.sp
Module  : backup_and_restore
=========
.sp
Purpose : database backup and restore
.CM *-END-* purpose -------------------------------------
.sp
.cp 3
Define  :
 
        PROCEDURE
              bd14ShutdownFileSystemAfterRestore (
                    VAR Trans           : tgg00_TransContext;
                    bRestoreSuccessfull : boolean);
 
        PROCEDURE
              bd14CreateConverterForRestore (
                    VAR Trans    : tgg00_TransContext;
                    pRestartPage : tkb00_PagePtr);
 
        PROCEDURE
              bd14CreateFileSystemForRestore (
                    VAR Trans    : tgg00_TransContext);
 
        PROCEDURE
              bd14RestartFileSystemForRestore (
                    VAR Trans    : tgg00_TransContext;
                    pRestartPage : tkb00_PagePtr);
 
        PROCEDURE
              bd14RestartFileSystemForSaveDataCold (taskid : tsp00_TaskId;
                    VAR error : tgg00_BasisError);
 
        PROCEDURE
              bd14ShutdownFileSystemAfterSaveDataCold (
                    TaskId : tsp00_TaskId);
 
.CM *-END-* define --------------------------------------
.sp;.cp 3
Use     :
 
        FROM
              pagestore : VBD10;
 
        PROCEDURE
              bd10FlushConverterSerial (VAR Trans : tgg00_TransContext;
                    VAR ConverterVersion           : tsp00_Int4;
                    VAR MaxStaticPageNo            : tsp00_PageNo;
                    VAR MaxDynamicPageNo           : tsp00_PageNo;
                    VAR PackedConvRootBlockAddress : tsp00_Int4);
 
        PROCEDURE
              b10create_converter_for_restore (
                    TaskId                 : tsp00_TaskId;
                    ConverterVersion       : tsp00_Int4;
                    NumAllPages            : tsp00_Int4;
                    LastSaveDataSuccessful : boolean;
                    VAR RestartRecord      : tkb00_ConfigRestartParam);
 
        PROCEDURE
              b10restart_converter_for_restore (
                    VAR t                  : tgg00_TransContext;
                    ConverterVersion       : tsp00_Int4;
                    NumAllPages            : tsp00_Int4;
                    LastSaveDataSuccessful : boolean;
                    VAR RestartParam       : tkb00_ConfigRestartParam;
                    VAR OldRestartParam    : tkb00_ConfigRestartParam);
 
        PROCEDURE
              b10rc_restart_converter (
                    TaskId                 : tsp00_TaskId;
                    ConverterVersion       : tsp00_Int4;
                    NumAllPages            : tsp00_Int4;
                    IncrementConvVersion   : boolean;
                    LastSaveDataSuccessful : boolean;
                    VAR RestartParam       : tkb00_ConfigRestartParam);
 
        PROCEDURE
              bd10ShutdownConverter (TaskId : tsp00_TaskId);
 
      ------------------------------ 
 
        FROM
              BD_Wrapper : VBD999;
 
        PROCEDURE
              bd999AttachAllDataVolumes(
                    TaskId      : tsp00_TaskId;
                    VAR TrError : tgg00_BasisError);
 
        PROCEDURE
              bd999CreateAllDataVolumes(
                    TaskId        : tsp00_TaskId;
                    VAR TrError   : tgg00_BasisError);
 
        PROCEDURE
              bd999DetachAllDataVolumes( TaskId : tsp00_TaskId );
 
        PROCEDURE
              bd999WriteRestartPage(
                    TaskId : tsp00_TaskId;
                    VAR p  : tkb00_PagePtr);
 
        FUNCTION
              bd999TotalDataPages : tsp00_Int4;
 
      ------------------------------ 
 
        FROM
              KB_restart_record : VKB57;
 
        VAR
              k57restartrec        : tkb00_PagePtr;
 
.CM *-END-* use -----------------------------------------
.sp;.cp 3
Synonym :
 
.CM *-END-* synonym -------------------------------------
.sp;.cp 3
Author  : JuergenP
.sp
.cp 3
Created : 1983-09-09
.sp
.cp 3
.sp
.cp 3
Release :      Date : 2000-11-06
.sp
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Specification:
 
.CM *-END-* specification -------------------------------
.sp 2
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Description:
 
.CM *-END-* description ---------------------------------
.sp 2
***********************************************************
.sp
.cp 10
.nf
.oc _/1
Structure:
 
.CM *-END-* structure -----------------------------------
.sp 2
**********************************************************
.sp
.cp 10
.nf
.oc _/1
.CM -lll-
Code    :
 
 
CONST
      INCREMENT_CONV_VERSION  = true;
 
 
(*------------------------------*) 
 
PROCEDURE
      bd14ShutdownFileSystemAfterRestore (
            VAR Trans           : tgg00_TransContext;
            bRestoreSuccessfull : boolean);
 
VAR
      ConverterVersion           : tsp00_Int4;
      MaxStaticPageNo            : tsp00_PageNo;
      MaxDynamicPageNo           : tsp00_PageNo;
      PackedConvRootBlockAddress : tsp00_Int4;
 
BEGIN
IF  (Trans.trError_gg00 = e_ok) AND bRestoreSuccessfull
THEN
    BEGIN
    bd10FlushConverterSerial (Trans, ConverterVersion ,MaxStaticPageNo,
          MaxDynamicPageNo, PackedConvRootBlockAddress);
    IF  Trans.trError_gg00 = e_ok
    THEN
        BEGIN
        WITH k57restartrec^, rstConfigParam_kb00 DO
            BEGIN
            rstConverterVersion_kb00 := ConverterVersion;
            crMaxDynamicPno_kb00     := MaxDynamicPageNo;
            crMaxStaticPno_kb00      := MaxStaticPageNo;
            crConvRootBlockAddr_kb00 := PackedConvRootBlockAddress;
            END;
        (*ENDWITH*) 
        bd999WriteRestartPage(Trans.trTaskId_gg00, k57restartrec)
        END
    (*ENDIF*) 
    END;
(*ENDIF*) 
bd10ShutdownConverter (Trans.trTaskId_gg00);
bd999DetachAllDataVolumes (Trans.trTaskId_gg00);
END;
 
(*------------------------------*) 
 
PROCEDURE
      bd14CreateConverterForRestore (
            VAR Trans    : tgg00_TransContext;
            pRestartPage : tkb00_PagePtr);
 
BEGIN
IF  (pRestartPage^.pageType_kb00 <> ptData_egg00) OR
    (pRestartPage^.pageType2_kb00 <> pt2Checkpt_egg00)
THEN
    Trans.trError_gg00 := e_bad_datapage
ELSE
    BEGIN
    b10create_converter_for_restore (
          Trans.trTaskId_gg00,
          pRestartPage^.rstConverterVersion_kb00,
          bd999TotalDataPages,
          pRestartPage^.rstLastSaveDataSuccessful_kb00,
          pRestartPage^.rstConfigParam_kb00);
    IF  Trans.trError_gg00 <> e_ok
    THEN
        bd999DetachAllDataVolumes (Trans.trTaskId_gg00)
    (*ENDIF*) 
    END;
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      bd14RestartFileSystemForRestore (
            VAR Trans    : tgg00_TransContext;
            pRestartPage : tkb00_PagePtr);
 
BEGIN
IF  (pRestartPage^.pageType_kb00 <> ptData_egg00) OR
    (pRestartPage^.pageType2_kb00 <> pt2Checkpt_egg00)
THEN
    Trans.trError_gg00 := e_bad_datapage
ELSE
    BEGIN
    (* *)
    (* RESTORE PAGES *)
    (* *)
    bd999AttachAllDataVolumes( Trans.trTaskId_gg00, Trans.trError_gg00 );
    IF  Trans.trError_gg00 = e_ok
    THEN
        BEGIN
        (* PTS 1134120 UH 2005-02-23 *)
        IF  k57restartrec^.rstConfigParam_kb00.crPrevDataRecoveryWasIncomplete_kb00
        THEN
            Trans.trError_gg00 := e_prev_data_recovery_was_incomplete
        ELSE
            b10restart_converter_for_restore (Trans,
                  pRestartPage^.rstCurrBackupVersion_kb00,
                  bd999TotalDataPages,
                  k57restartrec^.rstLastSaveDataSuccessful_kb00,
                  pRestartPage^.rstConfigParam_kb00,
                  k57restartrec^.rstConfigParam_kb00);
        END;
    (*ENDIF*) 
    IF  Trans.trError_gg00 <> e_ok
    THEN
        bd999DetachAllDataVolumes (Trans.trTaskId_gg00)
    (*ENDIF*) 
    END;
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      bd14CreateFileSystemForRestore (
            VAR Trans    : tgg00_TransContext);
 
VAR
      newDBIdent : tsp00_Line;
 
BEGIN
(* *)
(* RESTORE DATA *)
(* *)
bd999CreateAllDataVolumes (Trans.trTaskId_gg00, Trans.trError_gg00);
IF  Trans.trError_gg00 <> e_ok
THEN
    bd999DetachAllDataVolumes (Trans.trTaskId_gg00)
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      bd14RestartFileSystemForSaveDataCold (taskid : tsp00_TaskId;
            VAR error : tgg00_BasisError);
 
BEGIN
(* *)
(* SAVE PAGES/DATA COLD  *)
(* *)
bd999AttachAllDataVolumes( taskid, error );
IF  error = e_ok
THEN
    b10rc_restart_converter( taskid,
          k57restartrec^.rstConverterVersion_kb00,
          bd999TotalDataPages,
          NOT INCREMENT_CONV_VERSION,
          k57restartrec^.rstLastSaveDataSuccessful_kb00,
          k57restartrec^.rstConfigParam_kb00 );
(*ENDIF*) 
IF  error <> e_ok
THEN
    bd999DetachAllDataVolumes( taskid )
(*ENDIF*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      bd14ShutdownFileSystemAfterSaveDataCold (
            TaskId : tsp00_TaskId );
 
BEGIN
bd10ShutdownConverter( TaskId );
bd999DetachAllDataVolumes( TaskId )
END;
 
.CM *-END-* code ----------------------------------------
.SP 2 
***********************************************************
.PA 
