programmera.net -> oracledba -> normal     för utskrift      info@programmera.net

Steg4: Skapa en lyssnare

1. Skapa en lyssnare för Oracle10g
2. Starta Net Manager
3. Öppna "local"
4. Listening locations
5. General parameters
6. Logging
7. Authentication
8. Service
9. Service Other
10. listener.ora
11. Starta lyssnaren
12. Registrera databasen som tjänst hos lyssnaren
13. Stoppa lyssnaren
14. Nästa steg

1. Skapa en lyssnare för Oracle10g

På denna sida kommer vi skapa en lyssnare. Lyssnarens uppgift är att ta emot anrop från klienter på andra maskiner.

  • Varför är lyssnaren ett eget program och inte lyssnaren en del av databasen? Är det inte jobbigt för DBAerna att ha en extra serverprocess som måste startas? Troligen för att man vill att lyssnaren ska kunna fungera som en lastbalancerare om man har flera instanser (RAC). Det kan också vara bra att lyssnaren är uppe även om instansen går ner, då kan lyssnaren svara klienterna att databasen är nere.
Vi förutsätter att steg2 och steg3 har utförts framgångsrikt (som beskrivs på  Steg2: Installera mjukvaran  och  Steg3: Installera databasen ).
  • OBS: Om man skapar databasen samtidigt som mjukvaran installeras kommer en defaultlyssnare skapas av sig själv. Eftersom vi valde att inte installera databasen samtidigt som mjukvaran blir vi tvungna att själva skapa lyssnaren.
  • OBS2: Om man kör t.ex. SQL*Plus lokalt behövs ingen lyssnare. SQL*Plus kan då kommunicera direkt med databasen.

2. Starta Net Manager

Vi startar Net Manager genom följande kommando:
[olle@dev1]$ su - oracle

[olle@dev1]$ netmgr

Nu öppnas följande fönster:



3. Öppna "local"

Du ska nu klicka på "local". Se bild:



4. Listening locations

Den första sida man ser är "Listening locations" där man ska specifiera databasens URL och port:



Kommentar:

  • URL: Min maskin har URLen "okullberg-pc" vilket egentligen inte är någon riktig URL som går att använda på internet. Hemma hos mig (där jag har min Oracleinstallation) har jag inget riktigt nätverk så det spelar ingen roll.
  • PORT: Defaultport för Oracle är 1521, och eftersom jag inte har någon gammal installation av Oracle på denna dator går det bra att köra på defaultporten.

5. General parameters

Jag väljer "General parameters" i fliken högst upp till höger. Här kan man göra allmänna inställningar:



Kommentar:

  • LISTENER: Defaultnamnet på den första lyssnaren är "LISTENER". Jag föreslår att vi använder detta namn för att man ska förstå att detta är "orginallyssnaren".

6. Logging

Om du klickar på fliken "logging & tracing" kan man se var lyssnaren loggar information om användaren:



Vi behåller defaultvärdena och låter logging vara "Enabled" och tracing vara "Disabled".

7. Authentication

Här kan man göra behörighetsinställningar. Vi använder defaultvärdena:



8. Service

Eftersom databaser (Oracle8 och framåt) registrerar sig själva hos lyssnaren lägger vi inte till något i detta fält:



9. Service Other

Vi låter även denna flik vara:



10. listener.ora

Nu ska vi kolla vad som sparades i filen $ORACLE_HOME/network/admin/listener.ora:
[olle@dev1]$  cd $ORACLE_HOME/network/admin
[olle@dev1]$  cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = okullberg-pc)(PORT = 1521))
  )

Inte så mycket egentligen, detta hade man kunnat skriva själv.

11. Starta lyssnaren

Lyssnaren kontrolleras med ett kommando som heter "lsnrctl" (LiSteNeR ConTroL). Programmet "lsnrctl" kan användas på två sätt:

  • Starta programmet med "lsnrctl" och ge kommandon, avsluta med kommandot "quit".
  • Kör kommandot direkt med syntaxen "lsnrctl kommando".
Först kontrollerar vi att lyssnaren inte kör med kommandot "services":
[olle@dev1]$  lsnrctl

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 24-JUL-2006 19:47:35

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> services
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=okullberg-pc)(PORT=1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
LSNRCTL> quit
Ok, vi såg att lyssnaren inte var startad. För att starta lyssnaren används kommandot "start":
[olle@dev1]$ lsnrctl start
Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=okullberg-pc)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=okullberg-pc)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                24-JUL-2006 19:49:31
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=okullberg-pc)(PORT=1521)))
The listener supports no services
The command completed successfully

Lyssnaren startade bra. Märk att texten "The listener supports no services" betyder att lyssnaren inte har någon databas registrerad ännu, så databasen "orcl" kan inte nås via lyssnaren. Den process som sköter själva lyssnandet heter tnslsnr. Du kan du se att processen kör med följande kommado:
[olle@dev1]$  ps -ef|grep LIST
oracle    4078     1  0 09:53 ?        00:00:00 /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit
olle      4098  4028  0 09:59 pts/3    00:00:00 grep LIST

12. Registrera databasen som tjänst hos lyssnaren

Du kan se (om du är snabb) att lyssnaren inte har några tjänster registrerade med kommandot "services":
[olle@dev1]$ lsnrctl services
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=okullberg-pc)(PORT=1521)))
The listener supports no services
The command completed successfully
Men om man väntar ett tag kommer databasen att automatiskt registrera sig hos lyssnaren. Om man inte orkar vänta kan man säga åt databasen att registrera sig med följande kommando (måste köras som t.ex. SYS):
SQL>  ALTER SYSTEM REGISTER;

System altered.

Nu syns databasen när man kör "services":
[olle@dev1]$ lsnrctl 

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 24-JUL-2006 19:49:58

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL< services
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=okullberg-pc)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:6 refused:0 state:ready
         LOCAL SERVER
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1022 state:ready
         DISPATCHER <machine: okullberg-pc, pid: 3980>
         (ADDRESS=(PROTOCOL=tcp)(HOST=okullberg-pc)(PORT=32777))
Service "orcl_XPT" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:6 refused:0 state:ready
         LOCAL SERVER
The command completed successfully

Ovan ser vi att databasen har registrerat 3 tjänster hos lyssnaren. Den tjänst som vi kommer att använda är orcl, som är själva databasen.

13. Stoppa lyssnaren

För att stoppa lyssnaren skriver vi följande:
[olle@dev1]$ lsnrctl stop

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 25-JUL-2006 00:22:54

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=okullberg-pc)(PORT=1521)))
The command completed successfully

Nu ser vi att även bakgrundsprocessen tnslsnr är borta:
[olle@dev1]$ ps -ef|grep LIST
olle      4137  4028  0 10:04 pts/3    00:00:00 grep LIST

14. Nästa steg

Gå till:  Steg5: Skapa TNS-namn .