Magic
121
2.8.11 0x03 0x51 Set password
当用户使用GRANT更改密码时,客户先通过0x0352发送用户信息,然后通过0x0351发送密码信息。
Request id Magic1
User name length Magic2 Username
1 4 1 99 User name length
Session key Host info
32 可变
用户名长度
2.8.12 0x03 0x52 Set user
当用户使用GRANT更改密码时,客户先通过0x0352发送用户信息,然后通过0x0351发送密码信息。
Request id Magic1
User name length Magic2 Username
1 4 1 99 User name length
Host info
可变
用户名长度
2.8.13 0x03 0x5E SQL
一般的SQL查询语句是封装在0x035e命令结构中,用该命令请求数据时,服务器
返回数据和确认命令数据。
? 如果查询命令错误,则返回错误代码和错误消息。 ? 如果查询正常,服务器返回执行结果数据和确认命令。 它的结构如下:
Request id Magic1 Data Format Magic3
1 80 48
返回列数 总是为0x07
可变 SQL查询语句
2.8.14 0x03 0x73 AUTH2
用户登录过程发送用户密码和用户信息,包括用户名,终端名称,客户端程序,机器,客户端进程号。
2.8.15 0x03 0x76 AUTH1
用户登录过程发送用户相关信息,包括用户名,会话密钥,终端名称,客户端程序,机器,客户端进程号和对服务器一些设置(语言,时区等)。
2.8.16 0x03 0x77 desc table
当用户通过DESC TABLE tablename命令查询用户表属性信息时,客户端发送0x0377命令到ORACLE服务器。
Request id Magic1
Table name length Magic2 Data Format
1 4 1 16
返回列数 表名长度
可变 SQL查询语句
2.8.17 0x04 0x01 ACK
各种数据库操作会通过0x04命令来返回结果,如是否正常运行,影响行数,影响的表格,操作类型等,如果错误还要返回错误消息,以下0x0402,0x0405均为数据库查询
返回,但是还不知道什么情况适用这三种应答。
数据应答报结构如下: Magic1 Record num Error num Magic2 Type Magic3 Obj Id Magic4 Ack id Magic5 Msg length Msg
4 4 2 8 1 2 2 19 1 46 1 Msg length
记录数,该操作影响记录数 返回错误代码
操作类型(如select,insert,create等)
操作对象ID,如表的对象ID
确认号(为该请求号+1)
消息长度 消息
2.8.18 0x04 0x02 ACK
同0x0401
2.8.19 0x04 0x05 ACK
同0x0401
2.8.20 0x06 0x00 行结果信息
如果0x06 01命令传送数据未完成则后续数据用0x06 00命令传输,且每行只传输和前一行不同的列。
行结果数据结构信息
Magic1 Column Num Magic2
Column distributing Magic3
2 2 23 1
返回列数
总是为0x07
可变 等于[Column Num/8]
Row Data Row Split Row Data Row Split … Row Data
行数据(Row Data)结构信息
Data Format Data Format …
Data Format
注:
? 对于第一行列数为Column Num
可变 可变 可变 可变 …
…
可变 可变 列数据 可变 列数据 …
…
可变 列数据
? 非第一行,每行列数和列分布信息根据行分隔结构获取 ?
行分隔结构信息
Id
Column Num Column distributing Magic3
注:
? Column distributing 为该行列分布信息,如果第i列不为空,则Column
distributing的第I bit为1 ?
1 2 1
总是0x15 返回列数 总是为0x07
可变 等于[Column Num/8]
2.8.21 0x06 0x01开始行结果信息
SQL查询语句返回结果主要包括字段信息和数据,其中字段数据用0x1019传输,数据有0x0601和0x0600传输。
对于0x0601命令只返回开始几行数据(一般为一行),第一行显示所有的列,以后每行传输和前一行不同的列,即如果和前一行数据相同,则不传送数据,如果多行的某一列都相同,则只传送最开始一行的该列数据。
Magic1 Column Num Magic2
Column distributing Magic3
2 2 23 1 1
返回列数
总是为0x00 总是为0x07