Skip to main content

Übertragung von Produktiv- in Testsystem

1 | Zweck

clone_doit.sh automatisiert den kompletten Refresh einer kVASy-5-Testumgebung:

  1. Archiviert alte Logs & prüft Konfigurations-Drift (MD5).
  2. Exportiert Registry & XML-Config (optional).
  3. Bereitet die Ziel-DB vor (DROP, FRA, PFILE …).
  4. Kopiert die Produktions-DB per RMAN Duplicate (from active oder from backup).
  5. Führt Nacharbeiten aus (Flashback / Archivelog Modus, Grants …).
  6. Importiert Registry & XML-Config (optional).
  7. Deaktiviert Batchjobs, Mail- & Archiv-API (optional).
  8. Aktualisiert die Middleware-Container (optional).
  9. Versendet eine Status-Mail mit Master-Log (optional).

2 | Verzeichnis-Layout

/u01/clone/ISTTESTN/
├─ clone_doit.sh
├─ env/
│  ├─ basics                # globale Flags & Defaults
│  ├─ db/ISTTESTN           # pro Ziel-DB eine Datei
│  └─ schema/NETZ2021       # pro Schema   eine Datei
├─ skripte/
│  ├─ agent/                # Middleware-CLI
│  ├─ config/config.jar     # kVASy-Konfig-Tool
│  └─ custom_*.sh           # optionale Hooks
├─ java/jre1.7.0_75/        # JRE für config.jar
├─ xml/                     # Registry & XML-Dumps
└─ logs/
   ├─ cloning_YYYY-MM-DD_HH:MM:SS.log   # Master-Log
   └─ log_archiv_<SID>_<Stempel>/      # Rotation (31 Tage)

3 | Konfiguration

3.1 env/basics

Variable

Beispiel

Bedeutung

SHOW_OPTIONS

y

Optionen vor Start anzeigen + Bestätigung

DB_CLONING_FROM_ACTIVE

y

Clone über Netzwerk (live)

DB_CLONING_FROM_BACKUP

n

Clone aus RMAN-Backups

REGISTRY_BACKUP_EXPORT

y

Registry sichern

vor

Clone

MAIL_SERVER

192.168.24.44:25

SMTP-Relay für Status-Mail

SIV_HOST

http://manager@192.168.24.233:5001

Middleware-API-Endpoint

3.2 env/db/ISTTESTN

Variable

Wert

Zweck

ORACLE_SID

ISTTESTN

Zielinstanz

TAR_DB / TAR_TNS

ISTPRODN

Quell-Instanz

CONTROL_FILES

/u01/oradata/ISTTESTN/control01.ctl,
/u01/fast_recovery_area/ISTTESTN/control02.ctl

Pfad in initSID.ora

ARCHIVELOG

off

ARCHIVELOG nach Clone abschalten

JOB_QUEUE_PROCESSES

0

wird später reaktiviert

3.3 env/schema/NETZ2021

Variable

Wert

Erklärung

SCHEMA

netz2021

Schema-Name

PASSWORD

(Ziel-PW)

Passwort in Ziel-DB

MW_MANDANT

test_n

Label in Middleware

4 | Workflow-Flags

Flag

y

n

c

PRETASKS

Standard-& Custom-PreTasks

aus

nur Custom-PreTask

POSTTASKS

Standard-& Custom-PostTasks

aus

nur Custom-PostTask

MIDDLEWARE_UPDATE

Agent update & restart

aus

5 | Vorbereitung & Prüfliste

  • TNS-Einträge ISTPRODN & ISTTESTN testen: tnsping SID
  • Ziel-Pfad & FRA existieren + genügend Speicherplatz.
  • Alle ENV-Dateien Version Linux_v16.
  • oracle-User aktiv & . oraenv geladen.
  • Ports 1521 Quell ↔ Ziel offen.
  • Klartext-Passwörter aktuell.
  • Optional: Prod-Cronjobs via custom_PreTask_DB.sh deaktivieren.

6 | Aufrufbeispiele

  1. Clone from active (Default)
    cd /u01/clone/ISTTESTN
    ./clone_doit.sh
  2. Clone from backup zu bestimmtem Zeitpunkt
    ./clone_doit.sh 16-06-2025:10:30:00
  3. Mit anderem Basics-Profil
    ./clone_doit.sh /u01/clone/ISTTESTN/env/basics_dev

7 | Ablaufbeispiel (gekürzt)

Zeit

Schritt

Ergebnis

10:38:28

LOGs archivieren

FERTIG

10:39:06

custom_PreTask_DB.sh

FERTIG

10:39:06

RMAN Duplicate

FERTIG

10:53:21

Agent-Update

iwvtest

FEHLER

10:59:11

Agent-Update

test_n

FERTIG

11:03:49

Status-Mail

FERTIG

8 | Troubleshooting

Meldung / Log-Snippet

Wahrscheinliche Ursache

Behebungs­schritte

Update der Middleware Umgebung ... FEHLER (iwvtest)

Middleware-Mandant im Agent nicht vorhanden / Agent-Port blockiert

  • MW_MANDANT in env/schema/* prüfen
  • Agent -> skripte/agent/agent list
  • Firewall/SELinux für Port 5001 kontrollieren

Letzter Klonevorgang lief nicht durch

Lock-File

.drop_aux_<SID>.point

existiert, Controlfiles noch da

  1. Controlfiles im FS löschen
  2. PRETASKS=n setzen
  3. DB mit PFILE im NOMOUNT starten
  4. Skript erneut ausführen

RMAN-06026 : some targets not found

Falsches

DB_FILE_NAME_CONVERT

/ Pfad nicht angelegt

  • Pfad in env/db/<SID> anpassen
  • clone_cmd_<SID>.sql neu generieren (Flag CHECK_DB_CLONING)

ORA-19505 : failed to identify file

Backup-Piece im RMAN-Katalog nicht auffindbar

  • Pfad / NetWorker-Client / SBT-Library prüfen
  • Gegebenenfalls CROSSCHECK BACKUP durchführen

9 | Custom Hooks

Hook-Datei

Zeitpunkt

Typische Einsätze

custom_PreTask_DB.sh

Direkt vor dem DB-DROP & RMAN Duplicate

  • Prod-Cronjobs anhalten (sed -ri auf /etc/crontab)
  • Storage-Snapshot triggern

custom_PostTask_DB.sh

Nach Standard-Posttasks, vor Registry-Import

  • Spezielle Grants / Synonyms
  • Aufruf interner Health-Checks

custom_PostTask_MW.sh

Unmittelbar vor

MIDDLEWARE_UPDATE

  • WebLogic-Bounce
  • Cache-Cleanup

10 | Sicherheits­hinweise

  • Klartext-Passwörter in ENV-Files, SQL-Skripten und Logs → Verzeichnis chmod 700, Zugriff auf oracle beschränken.
  • source env/… lädt Shell-Code → ENV-Files nur aus vertrauens­wür­digem Repo (Git) verwenden.
  • set -euo pipefail ist ab Werk deaktiviert. In kritischen Umgebungen testen und aktivieren.
  • SMTP-Daten (Pass) liegen unverschlüsselt in basics → lokaler Relay ohne Auth bevorzugt.

11 | Best-Practice Checkliste (vor jedem Lauf)

  • Snapshot / Backup der Ziel-DB vorhanden
  • tnsping ISTPRODN & tnsping ISTTESTN erfolgreich
  • ENV-Versionen = Linux_v16
  • init<SID>.ora & clone_cmd_<SID>.sql gegen­gelesen
  • Speicher­platz in /u01/oradata und FRA ausreichend
  • SMTP-Test: sendEmail.pl -f … -t … funktioniert

12 | Kontakt

Rolle

Name

E-Mail

Telefon

DBA

Team Thüringen

dba@swi.local

+49 3683 123-456

Applikations­support

T. Eck

t.eck@stadtwerke-ilmenau.de

intern 321

🔄 Feedback? Jede Erfahrung macht das Skript robuster – einfach beim DBA-Team melden!