News
DBA-Tipp: tnsnames.ora und der Parameter IFILE

Die Information ist ein schnelllebiges Gut. Jeden Tag werden wir mit hunderten Informationen zugemüllt. Deshalb sind wir bestrebt uns auf das Wesentliche zu konzentrieren und nur substantiell nachhaltige Informationen bereitzustellen.

Icon Unternehmen

Die tnsnames.ora wird für das Mapping von Aliassen auf Oracle Datenbank Verbindungsbeschreibungen verwendet - und ist eine Art hosts-Datei für Oracle Datenbanken. Die Anzahl von Alias-Einträgen kann dabei recht umfangreich werden, da hier jeder Passworteintrag mit einem TNS-Alias hinterlegt werden muss. Dies kann beispielsweise bei der Verwendung des Secure External Passwort Stores (SEPS) der Fall sein.

Sind die Oracle Datenbanken auf mehrere Hosts verteilt und alle Oracle Datenbanken sollen per Alias von jedem Host aus erreichbar sein, wird es in der tnsnames.ora schnell unübersichtlich. Für eine übersichtlichere Gestaltung bietet sich der Parameter IFILE an. Dieser Parameter erlaubt die Referenzierung weiterer TNS-Alias-Dateien und das in bis zu 3 Ebenen.

[oracle@test(db12c emrep) admin]$ ls -1
samples
shrept.lst
sqlnet.ora
tns_host1.ora
tns_host1_SEPS.ora
tns_host2.ora
tns_host2_SEPS.ora
tnsnames.ora


tnsnames.ora (1. Ebene)

emrep =
       (DESCRIPTION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.14)(PORT=1521))
         (CONNECT_DATA= (SID=emrep))
       )

IFILE=/u01/app/oracle/product/12.1.0/dbhome_1/network/admin/tns_host1.ora
IFILE=/u01/app/oracle/product/12.1.0/dbhome_1/network/admin/tns_host2.ora


tns_host1.ora (2. Ebene)

DB11HOST1 = 
         (DESCRIPTION = 
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.71)(PORT=1521))
         (CONNECT_DATA= (SID=db11))
       )

DB21HOST1 = 
       (DESCRIPTION = 
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.71)(PORT=1521))
         (CONNECT_DATA= (SID=db21))
       )

IFILE=/u01/app/oracle/product/12.1.0/dbhome_1/network/admin/tns_host1_SEPS
.ora


tns_host1_SEPS.ora (3. Ebene)

# SEPS-Alias DB11HOST1 User SYS
DB11HOST1_SYS = 
       (DESCRIPTION = 
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.71)(PORT=1521))
         (CONNECT_DATA= (SID=db11))
       )
# SEPS-Alias DB11HOST1 User SYSTEM
DB11HOST1_SYSTEM = 
       (DESCRIPTION = 
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.71)(PORT=1521))
         (CONNECT_DATA= (SID=db11))
       )
# SEPS-Alias DB21HOST1 User SYS
DB21HOST1_SYS = 
       (DESCRIPTION = 
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.71)(PORT=1521))
         (CONNECT_DATA= (SID=db21))
       )
# SEPS-Alias DB21HOST1 User SYSTEM
DB21HOST1_SYSTEM = 
       (DESCRIPTION = 
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.71)(PORT=1521))
         (CONNECT_DATA= (SID=db21))
       )

Die TNS-Alias-Dateien tns_host2.ora und tns_host2_SEPS.ora werden analog aufgebaut. Die obigen Einträge in einer einzelnen Datei mögen noch übersichtlich sein. Geht man jetzt doch von zehn Oracle Datenbanken aus, die auf zwei oder mehr Hosts verteilt sind, ist die Übersichtlichkeit nicht mehr gewährleistet. 

Fazit:
Der Parameter IFILE unterstützt den Oracle DBA, die Übersicht über die Alias-Einträge in der tnsnames.ora zu wahren.