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 .