http://forums.oracle.com/forums/thread.jspa?threadID=613450
Oracle的通信协议TNS对不完全对外公开的,只用成为oracle的合作伙伴并向oracle支付一定的费用才能使用。
Jonah H. Harris对oracle的通信协议进行了深入的研究,致力于解析oracle通信协议,实现一个自己的oracle驱动。
他在个人站点 http://www.oracle-internals.com 发表了一些文章介绍。
作者自己也是通过抓包分析来了解TNS协议的。
--------------------------------
Oracle's wire-level protocol is proprietary and not publicly documented. The only way to get a hold of the official specification is to become a partner and pay (what I've heard is) about $100K US for access to it. If you want to research the protocol yourself, there are several online sources of information if you can get the Google keywords just right.
If you're looking for starting information, you can find basic protocol information in David Litchfield's Oracle Hacker's Handbook . If you're looking for a bit more detailed code, you can find dissectors for Oracle's protocol from the Wireshark project (formerly Ethereal) at:
For TNS (Transparent Network Substrate):
http://anonsvn.wireshark.org/wireshark/trunk/epan/dissectors/packet-tns.c
http://anonsvn.wireshark.org/wireshark/trunk/epan/dissectors/packet-tns.h
For TTI (Two-Task Interface):
http://anonsvn.wireshark.org/wireshark/trunk/epan/dissectors/packet-sqloracle.c
http://anonsvn.wireshark.org/wireshark/trunk/epan/dissectors/packet-sqloracle.h
The Wireshark TNS dissector is fairly complete, but the TTI one is far from it.
FYI, I started researching the Oracle protocol in 2001 and now know enough about it to write my own wire-level driver. While I won't release the code to it, in the next couple months you can visit my soon-to-be-fixed website (http://www.oracle-internals.com/ ) for more information on the basic protocol.
Also, if you happen to attend IOUG's COLLABORATE 08, I'm actually presenting on this topic in particular. The session information resides below:
---
381: Listening In: Passive Capture and Analysis of Oracle Network Traffic
http://iougew.prod.web.sba.com/displaymod/detailevent.cfm?conference_id=52&event_id=1666
In this presentation we will discuss and demonstrate the methods for passively capturing, analyzing, and reporting the details of Oracle network traffic in real-time for use in end-to-end Oracle tuning and troubleshooting scenarios.
In cases where very short response time requirements must be met, or where sporadic spikes in response time occur, the most reliable way to tune and troubleshoot them is by capturing Oracle's Ethernet traffic, analyzing it, and reporting on various aspects of it. Throughout this session we will demonstrate the passive capture of SQL statements, their frequency, time spent in execution, number of roundtrips, and all relevant response times.
Using the data from these reports can not only assist DBAs in diagnosing network-related issues and in tuning Oracle's network settings, but also ensure that application developers are writing performant, network-friendly database access code.