You need the username, password, hostname, port and SID. TNSNAMES lets you define a label for the hostname, port and SID combination, so for example you might use scott/tiger@work where "work" is defined in tnsnames.ora as host=starbase, port=1521, SID=dev.
That is just the old TNS though. There is also Oracle Names, Oracle Instant Client, ODBC and about 94 flavours of JDBC so far as I can make out.