2014-07-21 17 views
5

Ho installato Oracle Database 11gR2 e Oracle Grid Infrastructure su una macchina Linux, quindi ho creato il database orcl.Il listener non supporta servizi

Sono sempre stato in grado di connettersi al mio database utilizzando SQL * Plus o OEM. Ma ultimamente, sto affrontando un problema durante la digitazione del comando lsnrctl status, e quindi non sono in grado di connettermi al database.

mio listener.ora di file:

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/grid/network/admin/listener.ora 
# Generated by Oracle configuration tools. 
LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
     (ADDRESS = (PROTOCOL = TCP)(HOST = pc.company.com)(PORT = 1521)) 
    ) 
) 
ADR_BASE_LISTENER = /u01/app/oracle 

mio file tnsnames.ora:

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora 
# Generated by Oracle configuration tools. 

ORCL = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = pc.company.com)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = orcl.example.com) 
    ) 
) 

Durante la digitazione lsnrctl status, ottengo il seguente:

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 21-JUL-2014 03:35:48 

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) 
STATUS of the LISTENER 
------------------------ 
Alias      LISTENER 
Version     TNSLSNR for Linux: Version 11.2.0.1.0 - Production 
Start Date    21-JUL-2014 03:25:58 
Uptime     0 days 0 hr. 9 min. 50 sec 
Trace Level    off 
Security     ON: Local OS Authentication 
SNMP      OFF 
Listener Log File   /u01/app/oracle/diag/tnslsnr/pc151/listener/alert/log.xml 
Listening Endpoints Summary... 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=pc.company.com)(PORT=1521))) 
The listener supports no services 
The command completed successfully 

Whe n digitando sqlplus/as sysdba poi startup, ottengo questo:

ORA-01078: failure in processing system parameters 
ORA-01565: error in identifying file '+DATA/orcl/spfileorcl.ora' 
ORA-17503: ksfdopn:2 Failed to open file +DATA/orcl/spfileorcl.ora 
ORA-29701: unable to connect to Cluster Synchronization Service 

E il comando srvctl start database non riesce ad avviare il database troppo.

Il mio file oratab è la seguente:

#Backup file is /u01/app/oracle/product/11.2.0/dbhome_1/srvm/admin/oratab.bak.pc150 line added by Agent 
# 

# This file is used by ORACLE utilities. It is created by root.sh 
# and updated by the Database Configuration Assistant when creating 
# a database. 

# A colon, ':', is used as the field terminator. A new line terminates 
# the entry. Lines beginning with a pound sign, '#', are comments. 
# 
# Entries are of the form: 
# $ORACLE_SID:$ORACLE_HOME:<N|Y>: 
# 
# The first and second fields are the system identifier and home 
# directory of the database respectively. The third filed indicates 
# to the dbstart utility that the database should , "Y", or should not, 
# "N", be brought up at system boot time. 
# 
# Multiple entries with the same $ORACLE_SID are not allowed. 
# 
# 
+ASM:/u01/app/oracle/product/11.2.0/grid:N 
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N   # line added by Agent 
+0

Il database è attualmente in esecuzione? Non apparirà nell'elenco dei servizi finché non si registra, cosa che fa all'avvio se può, e continua a provare se non può. Se è attivo, puoi connetterti localmente con SQL * Plus: hai il set di parametri init 'local_listener'; e 'pc.company.com' risolve l'indirizzo IP reale del tuo PC (ad esempio, non stai usando DHCP)? –

+0

Purtroppo il mio database non è in esecuzione e non sto utilizzando dhcp. Ho un indirizzo IP statico. – Simo03

risposta

15

La banca dati registra il proprio nome (s) di servizio con l'ascoltatore quando viene avviato. Se non è in grado di farlo, riprova periodicamente, quindi se il listener si avvia dopo il database, è possibile che si verifichi un ritardo prima che il servizio venga riconosciuto.

Se il database non è in esecuzione, tuttavia, non sarà registrato nulla sul servizio, quindi non ci si deve aspettare che l'ascoltatore lo sappia - lsnrctl status o lsnrctl services non segnalerà un servizio che non è ancora registrato.

È possibile avviare il database senza l'ascoltatore; dal conto di Oracle e con il vostro ORACLE_HOME, ORACLE_SID e PATH insieme si può fare:

sqlplus /nolog 

Poi dal prompt SQL * Plus:

connect/as sysdba 
startup 

o attraverso l'infrastruttura Grid, dal conto griglia, utilizzare il srvctl start database command:

srvctl start database -d db_unique_name [-o start_options] [-n node_name] 

si potrebbe desiderare di guardare se il database è impostato su auto-start in il tuo file oratab e, a seconda di cosa stai utilizzando, dovrebbe essere avviato automaticamente. Se ti aspetti che sia in esecuzione e non lo è, o se provi ad avviarlo e non verrà visualizzato, allora si tratta di uno scenario completamente diverso: dovresti controllare i messaggi di errore, il registro degli avvisi, è possibile tracciare i file, ecc., per vedere esattamente il motivo per cui non verrà avviato, e se non si riesce a capirlo, magari chiedere su Database Adminsitrators piuttosto che su Stack Overflow.


Se il database non può vedere +DATA allora ASM non sia in esecuzione; puoi see how to start that here; o usando srvctl start asm.Come dice la documentazione, assicurati di farlo dalla rete domestica, non dal database di casa.

+0

Non è riuscito ad avviare ASM emettendo srvctl start asm! Il mio file listener.ora si trova nella home della griglia e non nella home del database, è normale? – Simo03

+1

Sì, è normale. Si prega di aggiungere l'errore che si ottiene dall'ASM per iniziare la domanda. Hai iniziato ASM dalla griglia di partenza, giusto? Potrebbe essere utile esaminare lo stato ASM e lo stato del disco, a seconda dell'errore. –

0

è necessario riconfigurare il proprio tnsnames.ora in modo che possa puntare al proprio nome host dopo che il listener sarà in grado di scegliere il nuovo nome host. dopodiché controlla lo stato del tuo listener lsnrctl e avvia il listener lsnrctl start quindi registra il tuo listener. Modifica del registro di sistema