Zum Inhalt springen

Oracle 10g - Datenbank per cmd starten


Empfohlene Beiträge

Geschrieben

Hallo,

ich bin ein absoluter Laie, was Oracle Datenbanken anbelangt und versucht mich langsam in die Sache einzuarbeiten. Nun habe ich mich gefragt, ob es eine Möglichkeit, eine angelegte Datenbank auch per cmd starten bzw. runterzufahren, denn die Dienste stoppen und starten ist wohl nicht die saubere Lösung oder?

Geschrieben

Ja Moment.... nur weil ich den Dienst beende, heißt es doch nicht, dass ich damit die Datenbank sauber herunterfahre oder??? Schliesslich fährt die Datenbank auch nicht hoch, nur weil ich den Dienst starte.

Geschrieben

Doch das tut sie.

Alternativ kannst Du dich natürlich auch als sys in sqlplus anmelden und die Datenbank per shutdown immediate bzw. startup runter und hochfahren. Das hat dann allerdings keinen Einfluss auf den Dienst.

Dim

Geschrieben

Aha.. ok. Dachte, dass mit den Diensten ist nicht so ganz korrekt. Könnte man für das shutdown immediate und startup auch ein Script schreiben, da ich es mit dem folgenden nicht hinkriege:

sqlplus system/"meinpasswort" AS SYSDBA startup

HIer läuft er mir aber in die sqlplus Kommandozeilenmenü rein, wo ich auch drin bleibe und nichts geschieht.

Geschrieben

Sicher kann man das. Du machst ein Skript mit dem Inhalt

shutdown immediate

exit
bzw. dann analog für startup und führst es wie folgt aus:
set oracle_sid=DEINE_SID

sqlplus / as sysdba @dein_skript_name.sql

Dein OS User muss dazu in der ora_dba Gruppe sein, ansonsten musst sys/pwd verwenden.

Als system kannst due DB übrigends nicht runterfahren und Du solltest system auch nicht die SYSDBA Rolle zuweisen.

Dim

Geschrieben

Man kann sich das Leben aber auch unnötig schwer machen.

Du kannst auch einfach in der Commandline folgenden Befehl ausführen und hast das selbe Ergebnis

oradim -shutdown -shutmode immediate -sid [DEINE SID] -syspwd [DEIN SYSPWD]

Geschrieben (bearbeitet)

OK. Nun gibt es drei Vorschläge für die Lösung, doch wo liegen die genauen Unterschiede intern?? GIbt es überhaupt welche?? Ist eins vielleicht nicht die stabilere Lösung?Was mich halt bei den Scripten mit den Diensten irritiert , ist dass wenn man sonst einen Dienst herunterfährt, die Anwendungen in der Regel nicht normal bzw. sauber runterfährt. Siehe VMWare. Dachte, es wäre hier genauso.

Bearbeitet von Rumak18
Geschrieben

Also was VMWare damit zu tun hat musst mal näher erklären denn ich wüsste nicht was daran unsauber ist den VMWare Server zu beenden indem ich den Dienst stoppe.

Ansonsten kannst du die Vorschläge hier alle verwenden wobei ich ehrlich gesagt von dieser Variante hier nicht sonderlich begeistert bin.

Sicher kann man das. Du machst ein Skript mit dem Inhalt

shutdown immediate

exit
bzw. dann analog für startup und führst es wie folgt aus:
set oracle_sid=DEINE_SID

sqlplus / as sysdba @dein_skript_name.sql

Wenn ich für jede Aktion die ich mit einem Skript abhandeln kann zwei Skripte mache dann wirds halt irgendwann sehr viel und sehr unübersichtlich. Aber ansonsten spricht auch gegen diese Variante nix.

Geschrieben
Also was VMWare damit zu tun hat musst mal näher erklären denn ich wüsste nicht was daran unsauber ist den VMWare Server zu beenden indem ich den Dienst stoppe.

Das mit VM war ja nur ein Beispiel. Aber starte doch mal deine VM Konsole, starte eine Maschine, und beende den VMWare Dienst in der "services.msc" Konsole. Resultat: Die Rechner wurden nicht "heruntergefahren" sondern virtuell "vom Strom" getrennt.

Geschrieben
die Anwendungen in der Regel nicht normal bzw. sauber runterfährt. Siehe VMWare. Dachte, es wäre hier genauso.

Du vergleichst Äpfel mit Birnen. Wenn Du die Oracle Instance beendest, dann werden auch die daran gerade angemeldeten Clients nicht sauber beendet sondern verlieren einfach ihre noch nicht comitteten Daten.

Umgekehrt, um wieder auf die Dienste zurückzukommen, falls es zwischen den Diensten abhängigkeiten gibt, dann werden auch die abhängigen Dienste sauber heruntergefahren.

Jede der hier gezeigten Möglichkeiten bietet dir die Möglichkeit die Datenbank in einem sauberen, sprich konsistenten Zustand herunterzufahren.

Dim

Geschrieben
Wenn Du die Oracle Instance beendest, dann werden auch die daran gerade angemeldeten Clients nicht sauber beendet sondern verlieren einfach ihre noch nicht comitteten Daten.

Aber genau das wollen wir doch nicht oder??

Geschrieben (bearbeitet)
Aber genau das wollen wir doch nicht oder??

Es gibt mehrere Möglichkeiten eine Oracle Datenbank herunterzufahren:

shutdown abort: Die schnellste aber auch brutalste Art. Im Prinzip wird die Instance abgeschossen. Die DB muss nach einem Neustart erstmal ein Instance Recovery fahren.

shutdowm immediate: Die DB beendet alle offene Transaktionen mit Rollback und fährt dann herunter. Die DB selbst ist sauber aber die Clients haben uncomittete Daten verloren.

shutdown transactional: Die DB wartet bis alle Transaktionen beendet sind und sich alle User abgemeldet haben. Es können sich keine neuen User mehr anmelden und es können keine neue Transktionen mehr gestartet werden.

shutdown normal: Wie transactional aber die User können weiterhin neue Transaktionen starten.

Diese Möglichkeiten gibt es eine Oracle DB herunterzufahren. Bei normal und transactional hast Du allerdings keine Kontrolle wann die DB herunterfährt, denn solange noch mindestens ein user angemeldet ist wartet die Instance - also theoretisch auch Tage, Wochen und Monate.

Eine davon kannst dir aussuchen.

Dim

Bearbeitet von dr.dimitri
Geschrieben

Also... habe mir nun das folgende Script erstellt:

net start "OracleDBConsoleOSCO"

net start "OracleOracle_OrgasoftTNSListener"

net start "OracleServiceOSCO"

sqlplus / as sysdba @C:\Users\administrator\Desktop\Oracle_starten2.sql

und "Oracle_starten2.sql" ist einfach nur

startup

exit

Beim Beenden dann:

sqlplus / as sysdba @C:\Users\administrator\Desktop\Oracle_stoppen2.sql

net stop "OracleDBConsoleOSCO"

net stop "OracleOracle_OrgasoftTNSListener"

net stop "OracleServiceOSCO"

und "Oracle_stoppen2.sql" ist einfach nur

shutdown immediate

exit

Geschrieben

Öhm das ist ja alles durcheinander. Wieso verwendest nicht einfach oradim?

Den Listener und die dbconsole musst nicht extra stoppen. Die DB im übrigen auch nicht wenn Du die Maschine normal herunterfährst.

Ich dachte es ging dir darum die Instance so mittendrin durchzustarten o.ä.

Dim

Geschrieben

Ich finde der Befehl mit "oradim" ist ja wirklich gut, nur bleiben dann die ganzen Dienste noch auf "gestartet". Wieso brauche ich den Listener und die dbconsole nicht herunterzufahren?

P.S.: Danke für die Mühe!!

Geschrieben

Ich frag mal anders: warum bist du so versessen darauf die DB unbedingt selbst herunterzufahren? Im übrigen ist der Dienst den Du siehst nur dafür da überhaupt eine oracle.exe zu starten - es ist nicht gleichbedeuten mit die Instance ist hochgefahren (das ist unter Linux/Unix meiner Meinung nach deutlich einfacher gelöst).

Versuchs doch auch selbst einfach mal aus. Wenn der Dienst weg ist, kannst auch per sqlplus die Instance nicht hochfahren.

Weswegen willst den Listener und die dbconsole den runterfahren? Das passiert schon automatisch wenn das OS beendet wird (wie im übrigen auch mit der Instance).

Dim

Geschrieben

Ich frage lieber nochmals nach:

Ist das Beenden der Dienste gleich zu setzen mit "shutdown immediate" von der Datenintegrität hergesehen? Denn das, was mich hier irritiert ist ganz einfach. Fahre ich die Datenbank mit oradim oder sqlplus herunter, dann laufen schlicht und einfach immer noch die Dienste. Ok. Nun sagst du dass das egal ist. Auch beim Backup der Daten?? Ich bin mir halt nicht sicher, ob die Oracle Daten wirklich dann so "runtergefahren" sind, dass sie auch "sauber" gesichert werden können, ohne dass ein Dienst noch darauf zugreift. Ich beende zusätzlich auch die anderen beiden Dienste (Listeneder und DB) , weil ich hier ebenfalls die Befürchtung haben (Aber vielleicht liege ich ja eben falsch), dass die Datenbank nicht konsistent beim wegsichern sein könnte.

Geschrieben

Also es geht ums Sichern? Sag das doch gleich ;)

Also wenn Du die Instance erfolgreich mit shutdown immediate heruntergefahren hast, dann ist die DB konsistent. Egal welche Dienste laufen oder nicht.

Du kannst die DB übrigends auch sichern während sie noch läuft. Dazu gibts den RMAN von Oracle. Die Syntax ist vielleicht nicht ganz intuitiv aber wenn Du dir eine Testumgebung aufbaust und dort das Sichern und wiederherstellen übst klappt das schon. Damit kannst auch ganz geziehlt einen bestimmten Zeitpunkt wieder herstellen.

Wenn Du diesen weg gehen möchtest, dann wäre das hier der richtige Einstiegspunkt. Ist wie gesagt mit deutlich mehr (Lern)aufwand verbunden bietet aber auch sehr viele Vorteile gegenüber einem Coldbackup.

Dim

Geschrieben

Ok. Und mit dem "oradim -shutdown -shutmode immediate -sid [DEINE SID] -syspwd [DEIN SYSPWD] " Befehl ist das Herunterfahren für eine Sicherung auch konsistent?? Gleiches gilt für "net stop Dienst" ... auch konstant?

Geschrieben

Oder mal anders nachgefragt:

Was passiert denn, wenn die Datenbank gerade hochgefahren ist, Benutzer daran arbeiten und ich nun einfach die Dienste herunterfahre?? Oder sonstige Befehle. Sind die bearbeiteten Daten der Benutzer weg, die DB inkonsistent oder konsistent oder wie darf man sich das vorstellen? Denn schliesslich "schmeiße" ich die Benutzer ja anscheinend mit den net stop Dienst Befehl raus.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...