글쓴이 :이원영 1998년 10월 19일 18:10:52
In Reply to: JDBC와 오라클 연결이 안돼요...!!! posted by 이태한 on 1998년 10월 19일 17:13:32:
올리신 소스는 이상없습니다.
Sun solaris 2.6, Oracle 7.3에서 정상적으로 잘 되는 군요...
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@www:1521:ORA7", "id", "passwd");
[확인사항]
1. Oracle Listener를 제대로 띄웠습니까?
1-1. Oracle 이 정말 starting 되어 있습니까?
power:/home1/oracle73/app/oracle/product/7.3.2/network/admin# ps -ef|grep ORA
oracle73 3214 1 0 Oct 13 ? 0:07 oracleORA73 (LOCAL=NO)
oracle73 455 1 0 Oct 09 ? 0:03 ora_pmon_ORA7
oracle73 457 1 0 Oct 09 ? 0:07 ora_dbwr_ORA7
oracle73 459 1 0 Oct 09 ? 0:04 ora_lgwr_ORA7
oracle73 461 1 0 Oct 09 ? 8:06 ora_smon_ORA7
oracle73 463 1 0 Oct 09 ? 0:00 ora_reco_ORA7
oracle73 8705 8662 0 17:52:05 pts/5 0:00 grep ORA
만약 없다면 Oracle을 띄우세요.
$ svrmgrl
ORA> connect internal;
ORA> startup
1-2. $ORACLE_HOME/network/admin/listener.ora 파일에
아래와 같은 설정이 되어 있습니까?
LISTENER=
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=165.244.227.233) <== www의 IP address
(PORT=1521)
)
)
....
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=ORA7)
(ORACLE_HOME=/home1/oracle73/app/oracle/product/7.3.2)
)
.....
)
...
1-3. lsnrctl status 로 확인 했을 시 아래처럼 ORA7이라는
SID에 대하여 listener가 떠 있음이 확인 됩니까?
power:/home1/oracle73/app/oracle/product/7.3.2/network/admin# lsnrctl status
LSNRCTL for Solaris: Version 2.3.2.1.0 - Production on 19-OCT-98 17:48:56
Copyright (c) Oracle Corporation 1994. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=TCP)(HOST=165.244.227.233)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Solaris: Version 2.3.2.1.0 - Production
Start Date 09-OCT-98 13:12:48
Uptime 10 days 4 hr. 32 min. 31 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File /home1/oracle73/app/oracle/product/7.3.2/network/admin/listener.ora
Listener Log File /home1/oracle73/app/oracle/product/7.3.2/network/log/listener.log
Services Summary...
BMT has 1 service handler(s)
ORA7 has 1 service handler(s)
The command completed successfully
만약 없다면 $ lsnrctl start 로 띄우세요.
2. CLASSPATH가 제대로 걸려 있습니까?
power:/tmp$ env|grep CLASSPATH
CLASSPATH=.:/usr/java/lib/classes.zip:/home3/java/api/jdbc/oracle/lib/classes111.zip:/usr/local/etc/httpd/jserv/lib/servclasses.zip:/usr/local/e
tc/httpd/jserv/classes:/home3/java/vbroker/lib/vbjapp.jar:/home3/java/vbroker/lib/vbjorb.jar:/home3/java/vbroker/lib/vbjtools.jar:/home3/java/ap
i/mom:/home3/java/api/JSDT-1.3/lib/jsdt.jar
처럼 /home3/java/api/jdbc/oracle/lib/classes111.zip
이 정확히 CLASSPATH에 걸려 있습니까?
3. listener port가 1521이 맞습니까?
혹시 1721아닙니까? 대부분 1521 이나 1721 번을 사용합니다.
4. id/passwd가 정확합니까?(이건 맞겠지...)
위 사항을 정확하게만 확인하시면 될 겁니다.
PS: setenv LD_LIBRARY_PATH /usr/lib:$ORACLE_HOME/lib/:$ORACLE_HOME/jdbc/lib/:LD_LIBRARY_PATH
는 OCI Driver를 사용할 경우에 필요합니다.
이 경우는 listener뿐만 아니라, tnsnames.ora에서
DB Alias를 설정해 주시고, 그 alias명을 JDBC_URL에
기술하셔야 합니다. 어쨌거나 thin Driver를 사용할
경우엔 필요 없습니다.
행운을....