Pro naši aplikaci máme konfigurační soubor pro připojení k databázi Oracle (URL, uživatelské jméno, heslo).
Spuštění aplikace trvá 2-5 minut. Pokud je v databázi něco špatného, vidím to v protokolech, ale musím počkat 2-5 minut. To je hodně času.
Chci tedy zjistit rychle a jednoduše způsob, jak zjistit, že databáze je v pořádku a online.
Máte představu, jak bych to mohl udělat?
Pokud spustíte následující dotaz:
SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS FROM V$INSTANCE;
Mělo by se vrátit:
INSTANCE_NAME STATUS DATABASE_STATUS
---------------- ------------ -----------------
YOUR_DBASE OPEN ACTIVE
ps -ef | grep pmon
Proces PMON (Process Monitor) kontroluje všechny ostatní procesy na pozadí. Poté musíte zkontrolovat záznam výstrah pro další vyšetřování.
Nejdříve je potřeba znát uživatelské jméno a heslo pro připojení k databázi pro krok 2
Zkontrolujte běh procesu Oracle:
Zapnuto Un * x:
ps -ef|grep pmon
V systému Windows:
tasklist|findstr /i Oracle
pokud příkaz v každém případě vrací výstup, tj. pokud je ve vašem prostředí spuštěn proces pmon/Oracle, databáze běží.
Jít do Oracle_HOME/bin
a spusťte:
./sqlplus /nolog
Pokud po přihlášení získáte chyby, databáze se nespustí:
SQL*Plus: Release 11.2.0.1.0 Production on Sat Feb 31 21:61:61 2014
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter user-name: Oracle
Enter password:
ERROR:
ORA-01034: Oracle not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Process ID: 0
Session ID: 0 Serial number: 0
Měli byste použít/napsat skript, který se připojí k serveru a uvidíte, zda je vaše databáze online. Zde vám pomohou Oracle. Stačí jej spustit z dávkového/shellového skriptu (viz Spouštění skriptů z příkazového řádku SQL ) a uvidíte jeho výstup. Pokud je vše v pořádku, než máte odpověď.
Nebo jen zkuste s klientem SQL * Plus.
Mohlo by být rozumné spustit skutečný dotaz také proti databázi. To jen zajišťuje, že se můžete připojit i dotazovat. Udělal bych z toho něco velmi jednoduchého a rychlého, jako například:
SELECT pk_column
FROM sometable
WHERE rownum <= 1
PMON zkontroluje všechny procesy bg
ps -ef|grep pmon
Kromě toho můžeme zkontrolovat, zda databáze běží nebo není.
ps -ef|grep mydb