JDBC Oracle Thin-Client-Failover auf Zweite DB

Ich habe gelesen, dass kann ich einrichten einer JDBC-thin-client-Verbindungszeichenfolge so, dass mein Java-Programm wird versuchen, eine Verbindung zur ersten Datenbank erst dann, wenn es ein problem gibt, es wird versucht, eine Verbindung zu der zweiten Datenbank.

Aber dies geschieht nicht in der Praxis.

Wenn ich verwenden Sie die folgende Zeichenfolge:

jdbc:oracle:thin:@(DESCRIPTION = 
  (ADDRESS_LIST = 
    (ADDRESS = 
      (PROTOCOL = TCP)
      (HOST = site1)
      (PORT = 1521)
    )
    (ADDRESS = 
      (PROTOCOL = TCP)
      (HOST = site2)
      (PORT = 1521)
    )
  )
  (FAILOVER=ON)
  (FAILOVER_MODE=
    (TYPE=SELECT)
    (METHOD=BASIC)
    (RETRIES=20)
    (DELAY=3)
  )
  (LOAD_BALANCE = OFF)
  (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = MYDB)
  )
)

Jetzt weiß ich, dass site1 down ist und site2 ist. Wenn ich angeben site2 ersten in meiner Liste, dann bekomme ich eine Verbindung (so wie ich es erwarten würde, wenn ich nur versucht, die Verbindung zu site2). Aber wenn ich site1 ersten bekomme ich die gleiche Fehlermeldung wie wenn ich versuchte, eine direkte Verbindung zu site1 - das ist:

java.util.concurrent.ExecutionException:
  java.lang.RuntimeException:
    java.sql.SQLException:
      ORA-01033: ORACLE initialization or shutdown in progress

Macht die Oracle-thin-client erfordern, die erste Datenbank zu arbeiten, die auf eine Verbindung und nur failover, wenn etwas schief geht während der Verbindung? Was ich will, ist für die Anwendung, um zu versuchen, den nächsten server, wenn die Verbindung zum ersten server ausfällt (was ich tun konnte, mit try { ... } catch { ... } Anwendung der Logik vorziehen würde, aber die Fahrer kümmern sich um die details für mich).

InformationsquelleAutor PP. | 2013-07-18
Schreibe einen Kommentar