I would certainly say it should. The SQL*Net protocol it uses is essentially unchanged. Here's an example of me connecting an Oracle 9 to an Oracle 10 server.
oracle@cammi:~$ sqlplus "urs/urs@THANOS_URS"
SQL*Plus: Release 9.2.0.8.0 - Production on Thu Jun 25 05:55:57 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Data Mining and Real Application Testing options
According to the guys at "http://www.experts-exchange.com/"...
11 can talk to 11,10,9
10 can talk to 11,10,9,8
9 can talk to 11,10,9,8,7
8 can talk to 10,9,8,7
7 can talk to 9,8,7
According to Oracle forums, this is defined in Metalink DocID 207303.1, which provides a comprehensive client/ server compatibility matrix. I don't have Metalink access sadly, so I can't confirm this.
If you are having connection troubles, I suggest you start with the Oracle alert log on your server machine. To find the location of your oracle alert log:
SQL> select value from v$parameter where name = 'background_dump_dest';
Also, you'll probably get something useful out of enabling listener tracing:
$ lsnrctl
LSNRCTL> set trc_level ADMIN
The trace file on my Solaris Oracle 10 install is found in:
$ORACLE_HOME/network/trace/listener.trc
You can view it directly or use the trcasst program to "format" it. Note that ALL of this is on the server, not your client side.
Hope this helps.