Skip to content

Commit

Permalink
source-oracle: add archive log retention period check
Browse files Browse the repository at this point in the history
  • Loading branch information
mdibaiee committed Jan 31, 2025
1 parent 4d8184f commit 10ea902
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions source-oracle/prerequisites.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package main
import (
"context"
"fmt"
"time"

log "github.com/sirupsen/logrus"
)
Expand All @@ -18,9 +19,36 @@ func (db *oracleDatabase) SetupPrerequisites(ctx context.Context) []error {
}
}

if err := db.prerequisiteArchiveLogRetention(ctx); err != nil {
errs = append(errs, err)
}

return errs
}

func (db *oracleDatabase) prerequisiteArchiveLogRetention(ctx context.Context) error {
if err := db.switchToCDB(ctx); err != nil {
return err
}
var row = db.conn.QueryRowContext(ctx, "SELECT MIN(FIRST_TIME) FROM V$ARCHIVED_LOG A WHERE A.NAME IS NOT NULL")
var minTimestamp time.Time
if err := row.Scan(&minTimestamp); err != nil {
return fmt.Errorf("querying minimum archived log timestamp from V$ARCHIVED_LOG: %w", err)
}

if time.Since(minTimestamp) < (time.Hour * 24) {
return fmt.Errorf("archived log retention is less than 24 hours. Please increase archived log retention to at least 24 hours")
}

if time.Since(minTimestamp) < (time.Hour * 24 * 7) {
log.WithFields(log.Fields{
"retention": time.Since(minTimestamp),
}).Warn("archive log retention is less than 7 days, we highly recommend a higher log retention to ensure data consistency.")
}

return nil
}

func (db *oracleDatabase) prerequisiteSupplementalLogging(ctx context.Context, owner, tableName string) error {
if err := db.switchToCDB(ctx); err != nil {
return err
Expand Down

0 comments on commit 10ea902

Please sign in to comment.