急に下記のようにOracleに繋がらなくなりました。
(多分、何か変更したのだとは思いますが、誰も心当たりがありませんでした。)

$ sqlplus sys/password@localhost:1521/oracle.suz-lab.com as sysdba
SQL*Plus: Release 11.1.0.6.0 - Production on Fri Aug 26 01:50:25 2011
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor

上記より、リスナーがOracleのサービス名(oracle.suz-lab.com)を解決できないようです。
確かに、リスナーを再起動してみると、サービスが登録されていないということでした。

$ lsnrctl restart
...
The listener supports no services
...

このような場合、一番簡単な解決方法としては、下記のようにlistener.oraにサービス名に関する情報を静的に記述をしてしまうことです。
(本来ならば、動的に登録されるはずなのですが。)

LISTENER =
    (DESCRIPTION_LIST =
        (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
    )
SID_LIST_LISTENER =
    (SID_LIST =
        (SID_DESC =
            (GLOBAL_DBNAME = oracle.suz-lab.com)
            (ORACLE_HOME   = /u01/app/oracle/product/11.1.0/db_1)
            (SID_NAME      = oracle)
        )
    )

この状態で、再度リスナーを再起動すると、
下記のようにサービスが登録されていることを確認することができます。

$ lsnrctl start
...
Service "oracle.suz-lab.com" has 1 instance(s).
Instance "oracle", status UNKNOWN, has 1 handler(s) for this service...
...

そして、最初と同じようにOracleに接続すると、今度は無事接続できることが確認できます。

$ sqlplus sys/password@localhost:1521/oracle.suz-lab.com as sysdba
SQL*Plus: Release 11.1.0.6.0 - Production on Fri Aug 26 02:01:19 2011
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら