News zu Oracle

DBA Tipp: Easy Connect – Auf kurzem Weg zur Datenbank

Die wahr­schein­lich ge­bräuch­lichs­te und si­cher­lich nicht nur DBAs bekannte Methode zur Na­mens­auf­lö­sung für Da­ten­bank­ver­bin­dun­gen dürfte das „Local Naming“, also die Ver­wen­dung einer tnsnames.ora sein. 

Für ad hoc Zugriffe auf Da­ten­ban­ken, für die sich der Aufwand zur Ein­rich­tung einer tnsnames.ora nicht lohnt, bietet sich hingegen „Easy Connect“ an. Hier erfolgt die Be­schrei­bung der Ver­bin­dung im Stile einer URL. Das Verfahren ist ab Client Version 10g verfügbar.

Schauen wir uns im Folgenden die Kon­fi­gu­ra­ti­on sowie die Syntax an und welche zu­sätz­li­chen Mög­lich­kei­ten dir Easy Connect Plus bietet.

Wie kon­fi­gu­rie­re ich Easy Connect richtig?

Die Kon­fi­gu­ra­ti­on der un­ter­stütz­ten Na­mens­auf­lö­sungs­ver­fah­ren erfolgt grund­sätz­lich in der sqlnet.ora mit dem Parameter NAMES.DIRECTORY_PATH. Die Einträge am Client müssen sich dabei min­des­tens auch in der sqlnet.ora des Servers wie­der­fin­den, da die vom Server ge­stat­te­ten Na­mens­auf­lö­sungs­ver­fah­ren den Vorrang bekommen. Ist NAMES.DIRECTORY_PATH des Clients aber gleich oder eine Un­ter­men­ge des NAMES.DIRECTORY_PATH des Servers, sind keine Ein­schrän­kun­gen zu erwarten.

Ab Version 11g ist Easy Connect per default Be­stand­teil des NAMES.DIRECTORY_PATH, in Version 10g musste Easy Connect noch explizit in den DIRECTORY_PATH auf­ge­nom­men werden.

Was ist bei der Syntax von Easy Connect zu beachten?

In den Releases bis 19.10 folgt Easy Connect der folgenden Syntax: 
CONNECT username@[//]host[:port][/[service_name][:server_type][/instance_name]]

… wobei die einzelnen Kom­po­nen­ten folgende Bedeutung haben:

username 
host 
port 
service_name 
server_type 
instance_name 
Name des Datenbankaccounts 
Host-Adresse des Listeners 
Listener-Port (default: 1521) 
Datenbank-Servicename 
Con­nec­tion­mo­de (DEDICATED|SHARED|POOLED)
Datenbank-Instanzname 
username: Name des Datenbankaccounts 
host: Host-Adresse des Listeners 
port: Listener-Port (default: 1521) 
service_name: Datenbank-Servicename 
server_type: Con­nec­tion­mo­de (DEDICATED|SHARED|POOLED)
instance_name: Datenbank-Instanzname 

Eine voll­stän­dig be­schrie­be­ne Ver­bin­dung auf einen

  • Da­ten­bank­ac­count „system“
  • über den Listener des Hosts „oracle-server“, Port 1521
  • auf einen Service „orclsec“ der Instanz „orcl“
  • per dedicated server


sieht demnach fol­gen­der­ma­ßen aus:

$ sqlplus system@//oracle-server:1521/orclsec:dedicated/orcl

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jun 28 17:43:06 2024
Version 19.10.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Enter password: 
Last Successful login time: Fri Jun 28 2024 17:42:41 +02:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.10.0.0.0

SQL> 

Das ent­spricht dem tnsnames-Eintrag:

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-server)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orclsec)
      (INSTANCE_NAME = orcl)
    )
  )
Die zum voll­stän­di­gen Easy Connect String oben kor­re­spon­die­ren­de Kurzform ist: 
$ sqlplus system@oracle-server/orclsec
Es ist übrigens zu erwähnen, dass der Pass­wort­prompt erst ab ak­tu­el­le­ren Cli­ent­ver­sio­nen (mut­maß­lich ab 18c oder 19c) ohne weiteres erscheint. Davor musste der Connector fol­gen­der­ma­ßen gequotet werden, da an­dern­falls statt eines Pass­wort­prompts ein ORA-12504 erscheint: 
$ sqlplus system@\“oracle-server/orclsec\“
Diese „Aus­bau­stu­fe“ des Easy Connect reicht schon einmal grund­sätz­lich aus, um Single‑, SEHA- und RAC-Da­ten­ban­ken an­zu­spre­chen. Sie kommt al­ler­dings an ihre Grenzen, wenn für einen Connect mehrere po­ten­zi­el­le Hosts infrage kommen. Das ist ty­pi­scher­wei­se bei physical-standby-In­fra­struk­tu­ren wie DataGuard oder Dbvisit Standby der Fall. Um diese Ein­schrän­kung zu eli­mi­nie­ren, wurde mit Oracle 19c Easy Connect Plus veröffentlicht. 

Diese zu­sätz­li­chen Mög­lich­kei­ten bietet dir Easy Connect Plus

Easy Connect Plus, neu ab Version 19c, erweitert die URL-Syntax deutlich. Die all­ge­mei­ne Syn­tax­be­schrei­bung sieht jetzt fol­gen­der­ma­ßen aus: 
[[protocol:]//]host1{,host12}[:port1]{,host2:port2}[/[service_name][:server][/instance_name]][?parameter_name=value{&parameter_name=value}]

Neu gegenüber dem kon­ven­tio­nel­len Easy Connect sind:

  • Der protocol-Support, also die optionale Angabe des Con­nect­pro­to­kolls, das dem PROTOCOL-Teil des ADDRESS-Pa­ra­me­ters entspricht
  • Multi-Host-Support, also die Adres­sie­rung mehrerer Listener in einem Connector
  • Die Angabe folgender weiterer Parameter als Name-Value-Paare:
    • ENABLE
    • FAILOVER
    • LOAD_BALANCE
    • RECV_BUF_SIZE
    • SEND_BUF_SIZE
    • SDU
    • SOURCE_ROUTE
    • RETRY_COUNT
    • RETRY_DELAY
    • CONNECT_TIMEOUT
    • TRANSPORT_CONNECT_TIMEOUT
    • SSL_SERVER_DN_MATCH
    • SSL_SERVER_CERT_DN
    • WALLET_LOCATION

Eine typische Ver­bin­dungs­be­schrei­bung auf eine Pri­mär­da­ten­bank in einer DataGuard-Ar­chi­tek­tur könnte nach Local Naming Methode zum Beispiel fol­gen­der­ma­ßen aussehen:

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-srv-1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-srv-2)(PORT = 1525))
    )
    (FAILOVER = TRUE)
    (LOAD_BALANCE = FALSE)
    (TRANSPORT_CONNECT_TIMEOUT=1)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orclpri)
    )
  )

Der TNS-Name ORCL löst im Beispiel auf einen role-based-Service orclpri auf, der exklusiv auf einem der beiden Server oracle-srv‑1 oder oracle-srv‑2 verfügbar ist und dort gerade die primary-Seite der orcl-Datenbank in einer DataGuard-In­fra­struk­tur repräsentiert.

Dieser Connector ist mit der kon­ven­tio­nel­len Easy Connect-Syntax nicht dar­stell­bar, mit Easy Connect Plus hingegen sieht es so aus:

sqlplus system@'tcp:oracle-srv-1,oracle-srv-2:1525/orclpri:dedicated?failover=true&load_balance=false&transport_connect_timeout=1'
Fasse den Connector auf Unix-/Linux-Systemen dabei bitte wie dar­ge­stellt in einfache Hoch­kom­ma­ta ein, wenn du von der URL-Pa­ra­me­ter­syn­tax Gebrauch machst. Das Ampersand zur Trennung der Parameter würde an­dern­falls von der Shell in­ter­pre­tiert werden und der Connector würde wahr­schein­lich anders reagieren als gewünscht. Übrigens: Easy Connect Plus ersetzt Ea­sy­Con­nect einfach. Es ist also keine Änderung an den sqlnet.ora deiner Systeme erforderlich. 

Fazit

Unter Zu­hil­fe­nah­me des Easy Connect Naming kann man Ver­bin­dun­gen zu Oracle Da­ten­ban­ken schnell und ohne weitere Kon­fi­gu­ra­ti­ons­schrit­te aufbauen. Das ist ins­be­son­de­re für Ver­bin­dungs­tests, Feh­ler­su­che und ad hoc Abfragen in­ter­es­sant. Easy Connect kann für Single Instance, SEHA, RAC und Mul­ti­ten­ant Da­ten­ban­ken glei­cher­ma­ßen ein­ge­setzt werden. Es kann im RAC auch direkt eine bestimmte RAC Instanz an­spre­chen. Mit Easy Connect Plus erfährt es ab 19c sogar noch eine deutliche Auf­wer­tung mit der Un­ter­stüt­zung von Fail­over­kon­fi­gu­ra­tio­nen, wie etwa Data Guard und Im­ple­men­tie­rung aus­ge­wähl­ter Net Service Parameter. Auch Ver­bin­dun­gen auf SSL ge­si­cher­te TCPS Endpunkte sind nun möglich. 

Im Um­kehr­schluss macht Easy Connect einmal mehr deutlich, wie wichtig die Ein­rich­tung wirksamer Zu­gangs­be­schrän­kun­gen auf Oracle Da­ten­ban­ken im Un­ter­neh­men ist. Auch in ver­meint­lich durch Windows Domänen und Richt­li­ni­en ab­ge­si­cher­ten In­fra­struk­tu­ren reichen offenbar eine IP Ver­bin­dung, ein Da­ten­bank­lo­gin und die Kenntnis der Server IP und des Datenbank Ser­vice­na­mens für einen er­folg­rei­chen Connect zur Datenbank aus.

Solltest du Un­ter­stüt­zung bei der Ein­rich­tung von Zu­gangs­be­schrän­kun­gen für deine Oracle Da­ten­ban­ken benötigen oder diese einfach mal auf Herz und Nieren in Puncto Si­cher­heits­kon­fi­gu­ra­tio­nen über­prü­fen wollen, sind wir gern für dich da. 

Hier findest du weitere Features und Infos aus der Welt von » Oracle aus unserem News & Insights Bereich. Wichtige Li­zen­zie­rungs­in­fos rund um Oracle findest du auf unserer » Datenbank-Lizenzen-Seite.

icon-arrow_right_medium-violet-blue.svg

Share this article

Facebook 
Twitter 
LinkedIn 
XING 
WhatsApp 
Email