ITPUB论坛-专业的IT技术社区

标题: 请问v$sqlarea,v$sql,v$sqltext这三个视图提供的sql语句有什么区别? [打印本页]

作者: limpo    时间: 2003-12-15 16:04
标题: 请问v$sqlarea,v$sql,v$sqltext这三个视图提供的sql语句有什么区别?
对这三个视图的区别一直很迷惑,有时候通过他们查出的某个session正在执行的sql语句是一样的,有时候又不一样。
尝试查看v_$fixed_view_definition中的取数口径,发现引用了一些x$表,三个视图的取数方式确实不一样,但是看不懂到底有什么区别。

请大侠指点迷津,谢谢!
作者: limpo    时间: 2003-12-15 21:14
顶一下,我觉得这个问题挺重要的,希望引起注意,谢谢!
作者: shahand    时间: 2003-12-15 21:23
我也关注
作者: hanson    时间: 2003-12-15 23:06
先抛块砖,但愿能引点玉来
v$sqltext中有内存中完整的sql语句,而其他两个视图都是部分sql语句。但v$sqltext中没有该语句的统计信息,比如执行次数等。

而v$sql和v$sqlarea好像差不多,我好像没看出有多大区别。
作者: biti_rainy    时间: 2003-12-16 00:50
v$sqltext
存储的是完整的SQL,SQL被分割

SQL> desc v$sqltext
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ADDRESS                                            RAW(4)    ---------
HASH_VALUE                                         NUMBER   ---------  和 address 一起唯一标志一条sql
COMMAND_TYPE                                       NUMBER
PIECE                                              NUMBER   ----------  分片之后的顺序编号
SQL_TEXT                                           VARCHAR2(64)   --------------  注意长度



v$sqlarea   ---------  存储的SQL 和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息
SQL> desc v$sqlarea
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
SQL_TEXT                                           VARCHAR2(1000)
SHARABLE_MEM                                       NUMBER
PERSISTENT_MEM                                     NUMBER
RUNTIME_MEM                                        NUMBER
SORTS                                              NUMBER
VERSION_COUNT                                      NUMBER
LOADED_VERSIONS                                    NUMBER
OPEN_VERSIONS                                      NUMBER
USERS_OPENING                                      NUMBER
FETCHES                                            NUMBER
EXECUTIONS                                         NUMBER
USERS_EXECUTING                                    NUMBER
LOADS                                              NUMBER
FIRST_LOAD_TIME                                    VARCHAR2(38)
INVALIDATIONS                                      NUMBER
PARSE_CALLS                                        NUMBER
DISK_READS                                         NUMBER
BUFFER_GETS                                        NUMBER
ROWS_PROCESSED                                     NUMBER
COMMAND_TYPE                                       NUMBER
OPTIMIZER_MODE                                     VARCHAR2(25)
PARSING_USER_ID                                    NUMBER
PARSING_SCHEMA_ID                                  NUMBER
KEPT_VERSIONS                                      NUMBER
ADDRESS                                            RAW(4)
HASH_VALUE                                         NUMBER
MODULE                                             VARCHAR2(64)
MODULE_HASH                                        NUMBER
ACTION                                             VARCHAR2(64)
ACTION_HASH                                        NUMBER
SERIALIZABLE_ABORTS                                NUMBER
CPU_TIME                                           NUMBER
ELAPSED_TIME                                       NUMBER
IS_OBSOLETE                                        VARCHAR2(1)
CHILD_LATCH                                        NUMBER




v$sql     ----------  存储的是具体的SQL 和执行计划相关信息,实际上,v$sqlarea 可以看做 v$sql 根据 sqltext 等 做了 group by 之后的信息


SQL> desc v$sql
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
SQL_TEXT                                           VARCHAR2(1000)
SHARABLE_MEM                                       NUMBER
PERSISTENT_MEM                                     NUMBER
RUNTIME_MEM                                        NUMBER
SORTS                                              NUMBER
LOADED_VERSIONS                                    NUMBER
OPEN_VERSIONS                                      NUMBER
USERS_OPENING                                      NUMBER
FETCHES                                            NUMBER
EXECUTIONS                                         NUMBER
USERS_EXECUTING                                    NUMBER
LOADS                                              NUMBER
FIRST_LOAD_TIME                                    VARCHAR2(38)
INVALIDATIONS                                      NUMBER
PARSE_CALLS                                        NUMBER
DISK_READS                                         NUMBER
BUFFER_GETS                                        NUMBER
ROWS_PROCESSED                                     NUMBER
COMMAND_TYPE                                       NUMBER
OPTIMIZER_MODE                                     VARCHAR2(10)
OPTIMIZER_COST                                     NUMBER
PARSING_USER_ID                                    NUMBER
PARSING_SCHEMA_ID                                  NUMBER
KEPT_VERSIONS                                      NUMBER
ADDRESS                                            RAW(4)
TYPE_CHK_HEAP                                      RAW(4)
HASH_VALUE                                         NUMBER
PLAN_HASH_VALUE                                    NUMBER
CHILD_NUMBER                                       NUMBER    ----------  注意这个  
MODULE                                             VARCHAR2(64)
MODULE_HASH                                        NUMBER
ACTION                                             VARCHAR2(64)
ACTION_HASH                                        NUMBER
SERIALIZABLE_ABORTS                                NUMBER
OUTLINE_CATEGORY                                   VARCHAR2(64)
CPU_TIME                                           NUMBER
ELAPSED_TIME                                       NUMBER
OUTLINE_SID                                        NUMBER    --------------  注意这里跟 outline 有关
CHILD_ADDRESS                                      RAW(4)
SQLTYPE                                            NUMBER
REMOTE                                             VARCHAR2(1)
OBJECT_STATUS                                      VARCHAR2(19)
LITERAL_HASH_VALUE                                 NUMBER
LAST_LOAD_TIME                                     VARCHAR2(38)
IS_OBSOLETE                                        VARCHAR2(1)
CHILD_LATCH                                        NUMBER


另外注意这个
QL> desc v$sql_plan
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ADDRESS                                            RAW(4)
HASH_VALUE                                         NUMBER
CHILD_NUMBER                                       NUMBER   ------------   注意这个和 v$sql 里面的相同字段
OPERATION                                          VARCHAR2(60)
OPTIONS                                            VARCHAR2(60)
OBJECT_NODE                                        VARCHAR2(20)
OBJECT#                                            NUMBER
OBJECT_OWNER                                       VARCHAR2(30)
OBJECT_NAME                                        VARCHAR2(64)
OPTIMIZER                                          VARCHAR2(40)
ID                                                 NUMBER
PARENT_ID                                          NUMBER
DEPTH                                              NUMBER
POSITION                                           NUMBER
SEARCH_COLUMNS                                     NUMBER
COST                                               NUMBER
CARDINALITY                                        NUMBER
BYTES                                              NUMBER
OTHER_TAG                                          VARCHAR2(70)
PARTITION_START                                    VARCHAR2(10)
PARTITION_STOP                                     VARCHAR2(10)
PARTITION_ID                                       NUMBER
OTHER                                              VARCHAR2(4000)
DISTRIBUTION                                       VARCHAR2(40)
CPU_COST                                           NUMBER
IO_COST                                            NUMBER
TEMP_SPACE                                         NUMBER
ACCESS_PREDICATES                                  VARCHAR2(4000)
FILTER_PREDICATES                                  VARCHAR2(4000)


实际上,看起来同样的一句SQL ,往往具有不同的执行计划
如果是不同的数据库用户,那么相应的涉及的 对象 可能都不一样,注意v$sql 中
OBJECT#                                            NUMBER
OBJECT_OWNER                                       VARCHAR2(30)
OBJECT_NAME                                        VARCHAR2(64)
OPTIMIZER                                          VARCHAR2(40)

即使是相同的数据库用户,若 session 的优化模式、session 级的参数 等不一样,执行计划也能不同。所以即使相同的sql,也可能具有不同的执行计划!

v$sql   join  to  v$sql_plan  就代表了具体的sql的执行计划,通过下面3个字段做连接

ADDRESS                                            RAW(4)
HASH_VALUE                                         NUMBER
CHILD_NUMBER                                       NUMBER


而v$SQLAREA 忽略了  执行计划 等差异,只是在形式上sql文本看起来一样!相当于做了个聚合,是多个不同执行计划的sql的聚合和累计信息
作者: pineapplecui    时间: 2003-12-16 08:47
解释的很详细,收藏!
作者: aleckqian    时间: 2003-12-16 09:31
真是解释的漂亮!
一下就看清楚了!
作者: limpo    时间: 2003-12-16 22:00
谢谢回复!
请问biti,如果对动态视图的某些字段含义不理解,有没有相关资料或者相关网站的介绍,感觉Oracle这方面的资料好少?
呵呵,希望授之以渔,谢谢!
作者: prada_gu    时间: 2003-12-16 22:06
哎,平时只知道用,从没有注意过它们之间的差别
作者: eygle    时间: 2003-12-16 22:08
其实这几个视图都来自x$kglcursor表,你查一下v$sqltext 及 v$sql的创建语句就清楚了
作者: limpo    时间: 2003-12-16 22:59
呵呵,如前文所述,我看过那些x$表啊,但是连x$kglcursor各字段的含义都搞不懂还谈什么理解呢?:)
我在哪儿能集中找到相关动态视图和x$视图的含义呢?
还是那句话,希望授之以渔,谢谢各位!
作者: eygle    时间: 2003-12-17 13:41
www.google.com
+
metalink.oracle.com
+
oracle
+
yourselft
=渔
作者: thinworm    时间: 2003-12-18 15:58
最初由 eygle 发布
[B]其实这几个视图都来自x$kglcursor表,你查一下v$sqltext 及 v$sql的创建语句就清楚了 [/B]

怎么查呢?我在toad中用desc v$sql,还是看不了啊。
出来的脚本是
CREATE OR REPLACE FORCE VIEW SYS.V_$SQL
(SQL_TEXT, SHARABLE_MEM, PERSISTENT_MEM, RUNTIME_MEM, SORTS,
LOADED_VERSIONS, OPEN_VERSIONS, USERS_OPENING, EXECUTIONS, USERS_EXECUTING,
LOADS, FIRST_LOAD_TIME, INVALIDATIONS, PARSE_CALLS, DISK_READS,
BUFFER_GETS, ROWS_PROCESSED, COMMAND_TYPE, OPTIMIZER_MODE, OPTIMIZER_COST,
PARSING_USER_ID, PARSING_SCHEMA_ID, KEPT_VERSIONS, ADDRESS, TYPE_CHK_HEAP,
HASH_VALUE, CHILD_NUMBER, MODULE, MODULE_HASH, ACTION,
ACTION_HASH, SERIALIZABLE_ABORTS, OUTLINE_CATEGORY)
AS
select "SQL_TEXT","SHARABLE_MEM","PERSISTENT_MEM","RUNTIME_MEM","SORTS","LOADED_VERSIONS","OPEN_VERSIONS","USERS_OPENING","EXECUTIONS","USERS_EXECUTING","LOADS","FIRST_LOAD_TIME","INVALIDATIONS","PARSE_CALLS","DISK_READS","BUFFER_GETS","ROWS_PROCESSED","COMMAND_TYPE","OPTIMIZER_MODE","OPTIMIZER_COST","PARSING_USER_ID","PARSING_SCHEMA_ID","KEPT_VERSIONS","ADDRESS","TYPE_CHK_HEAP","HASH_VALUE","CHILD_NUMBER","MODULE","MODULE_HASH","ACTION","ACTION_HASH","SERIALIZABLE_ABORTS","OUTLINE_CATEGORY" from v$sql;
怎么又绕回v$sql了???
作者: tolywang    时间: 2004-3-2 08:47
你应该要有sys一样的权限。或登入SQL> sqlplus internal .   SQL>desc  v$sql .
作者: angelsliu    时间: 2005-7-6 09:13
正合我易
作者: zhangyg    时间: 2006-4-12 19:45
biti_rainy 大师佩服! 
作者: muzijiang    时间: 2006-9-4 10:28
精华
作者: javaliu2006    时间: 2008-11-7 20:34
v$sqlarea中的version_count为什么有的SQL会超过10000次呢,version_count能说明什么问题吗,值越高说明这SQL有问题吗?

原帖由 biti_rainy 于 2003-12-16 00:50 发表
v$sqltext
存储的是完整的SQL,SQL被分割

SQL> desc v$sqltext
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ADDRESS                                            RAW(4)    ---------
HASH_VALUE                                         NUMBER   ---------  和 address 一起唯一标志一条sql
COMMAND_TYPE                                       NUMBER
PIECE                                              NUMBER   ----------  分片之后的顺序编号
SQL_TEXT                                           VARCHAR2(64)   --------------  注意长度



v$sqlarea   ---------  存储的SQL 和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息
SQL> desc v$sqlarea
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
SQL_TEXT                                           VARCHAR2(1000)
SHARABLE_MEM                                       NUMBER
PERSISTENT_MEM                                     NUMBER
RUNTIME_MEM                                        NUMBER
SORTS                                              NUMBER
VERSION_COUNT                                      NUMBER
LOADED_VERSIONS                                    NUMBER
OPEN_VERSIONS                                      NUMBER
USERS_OPENING                                      NUMBER
FETCHES                                            NUMBER
EXECUTIONS                                         NUMBER
USERS_EXECUTING                                    NUMBER
LOADS                                              NUMBER
FIRST_LOAD_TIME                                    VARCHAR2(38)
INVALIDATIONS                                      NUMBER
PARSE_CALLS                                        NUMBER
DISK_READS                                         NUMBER
BUFFER_GETS                                        NUMBER
ROWS_PROCESSED                                     NUMBER
COMMAND_TYPE                                       NUMBER
OPTIMIZER_MODE                                     VARCHAR2(25)
PARSING_USER_ID                                    NUMBER
PARSING_SCHEMA_ID                                  NUMBER
KEPT_VERSIONS                                      NUMBER
ADDRESS                                            RAW(4)
HASH_VALUE                                         NUMBER
MODULE                                             VARCHAR2(64)
MODULE_HASH                                        NUMBER
ACTION                                             VARCHAR2(64)
ACTION_HASH                                        NUMBER
SERIALIZABLE_ABORTS                                NUMBER
CPU_TIME                                           NUMBER
ELAPSED_TIME                                       NUMBER
IS_OBSOLETE                                        VARCHAR2(1)
CHILD_LATCH                                        NUMBER




v$sql     ----------  存储的是具体的SQL 和执行计划相关信息,实际上,v$sqlarea 可以看做 v$sql 根据 sqltext 等 做了 group by 之后的信息


SQL> desc v$sql
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
SQL_TEXT                                           VARCHAR2(1000)
SHARABLE_MEM                                       NUMBER
PERSISTENT_MEM                                     NUMBER
RUNTIME_MEM                                        NUMBER
SORTS                                              NUMBER
LOADED_VERSIONS                                    NUMBER
OPEN_VERSIONS                                      NUMBER
USERS_OPENING                                      NUMBER
FETCHES                                            NUMBER
EXECUTIONS                                         NUMBER
USERS_EXECUTING                                    NUMBER
LOADS                                              NUMBER
FIRST_LOAD_TIME                                    VARCHAR2(38)
INVALIDATIONS                                      NUMBER
PARSE_CALLS                                        NUMBER
DISK_READS                                         NUMBER
BUFFER_GETS                                        NUMBER
ROWS_PROCESSED                                     NUMBER
COMMAND_TYPE                                       NUMBER
OPTIMIZER_MODE                                     VARCHAR2(10)
OPTIMIZER_COST                                     NUMBER
PARSING_USER_ID                                    NUMBER
PARSING_SCHEMA_ID                                  NUMBER
KEPT_VERSIONS                                      NUMBER
ADDRESS                                            RAW(4)
TYPE_CHK_HEAP                                      RAW(4)
HASH_VALUE                                         NUMBER
PLAN_HASH_VALUE                                    NUMBER
CHILD_NUMBER                                       NUMBER    ----------  注意这个  
MODULE                                             VARCHAR2(64)
MODULE_HASH                                        NUMBER
ACTION                                             VARCHAR2(64)
ACTION_HASH                                        NUMBER
SERIALIZABLE_ABORTS                                NUMBER
OUTLINE_CATEGORY                                   VARCHAR2(64)
CPU_TIME                                           NUMBER
ELAPSED_TIME                                       NUMBER
OUTLINE_SID                                        NUMBER    --------------  注意这里跟 outline 有关
CHILD_ADDRESS                                      RAW(4)
SQLTYPE                                            NUMBER
REMOTE                                             VARCHAR2(1)
OBJECT_STATUS                                      VARCHAR2(19)
LITERAL_HASH_VALUE                                 NUMBER
LAST_LOAD_TIME                                     VARCHAR2(38)
IS_OBSOLETE                                        VARCHAR2(1)
CHILD_LATCH                                        NUMBER


另外注意这个
QL> desc v$sql_plan
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ADDRESS                                            RAW(4)
HASH_VALUE                                         NUMBER
CHILD_NUMBER                                       NUMBER   ------------   注意这个和 v$sql 里面的相同字段
OPERATION                                          VARCHAR2(60)
OPTIONS                                            VARCHAR2(60)
OBJECT_NODE                                        VARCHAR2(20)
OBJECT#                                            NUMBER
OBJECT_OWNER                                       VARCHAR2(30)
OBJECT_NAME                                        VARCHAR2(64)
OPTIMIZER                                          VARCHAR2(40)
ID                                                 NUMBER
PARENT_ID                                          NUMBER
DEPTH                                              NUMBER
POSITION                                           NUMBER
SEARCH_COLUMNS                                     NUMBER
COST                                               NUMBER
CARDINALITY                                        NUMBER
BYTES                                              NUMBER
OTHER_TAG                                          VARCHAR2(70)
PARTITION_START                                    VARCHAR2(10)
PARTITION_STOP                                     VARCHAR2(10)
PARTITION_ID                                       NUMBER
OTHER                                              VARCHAR2(4000)
DISTRIBUTION                                       VARCHAR2(40)
CPU_COST                                           NUMBER
IO_COST                                            NUMBER
TEMP_SPACE                                         NUMBER
ACCESS_PREDICATES                                  VARCHAR2(4000)
FILTER_PREDICATES                                  VARCHAR2(4000)


实际上,看起来同样的一句SQL ,往往具有不同的执行计划
如果是不同的数据库用户,那么相应的涉及的 对象 可能都不一样,注意v$sql 中
OBJECT#                                            NUMBER
OBJECT_OWNER                                       VARCHAR2(30)
OBJECT_NAME                                        VARCHAR2(64)
OPTIMIZER                                          VARCHAR2(40)

即使是相同的数据库用户,若 session 的优化模式、session 级的参数 等不一样,执行计划也能不同。所以即使相同的sql,也可能具有不同的执行计划!

v$sql   join  to  v$sql_plan  就代表了具体的sql的执行计划,通过下面3个字段做连接

ADDRESS                                            RAW(4)
HASH_VALUE                                         NUMBER
CHILD_NUMBER                                       NUMBER


而v$SQLAREA 忽略了  执行计划 等差异,只是在形式上sql文本看起来一样!相当于做了个聚合,是多个不同执行计划的sql的聚合和累计信息

作者: hyp1981    时间: 2010-3-10 11:45
好贴。。。顶起来。。。
作者: xxzxzhf    时间: 2010-4-6 14:31
biti大师给大家解释一下三个视图里各个字段的含义吧,其实好多系统视图大家都是一知半解。谢谢啦!!!
作者: todayboy    时间: 2010-8-24 13:24
学习了!!!!!!!!!!!!!
作者: 红叶DBA    时间: 2010-8-24 13:56
受教了!
作者: 熊猫儿    时间: 2010-8-24 14:05
学习了。。。
作者: rwoman    时间: 2010-8-24 14:30
7年前的帖子,真能翻啊
作者: www_xylove    时间: 2010-9-29 16:58
标题: 回复 #24 rwoman 的帖子
那你还汉高祖呢,更能挖哦啊
作者: zty5984    时间: 2011-1-9 17:34
谢谢,很详细,那么多属性,你们都是怎么记住的?
作者: KAERTIGER    时间: 2011-5-3 15:38
再次翻起来
作者: qq82864774    时间: 2011-6-23 23:44
学习了
作者: JumFlow    时间: 2011-6-30 17:19
很详细,学习了
作者: achinesemind    时间: 2011-8-21 17:28
biti大师2003年底回答别人问题的帖子被我翻出来了。其中5楼的回答:而v$SQLAREA 忽略了  执行计划 等差异,只是在形式上sql文本看起来一样!相当于做了个聚合,是多个不同执行计划的sql的聚合和累计信息

哪v$sqlarea是否会给人一些误解?我们应该用其它更直接的v$sql***视图?
作者: Coast_lichao    时间: 2011-8-22 09:33
是啊,要发现等待sql的时候,v$sql的child_number和v$session的sql_child_number关联,子游标存储的是执行计划和解析信息。相同的sql文本具有相同的sql_id或者hash_value,要弄清楚sql_child_number.
作者: achinesemind    时间: 2011-8-22 09:52
这样讲的话,是不是v$sql其实没有什么用处?
作者: dajun539    时间: 2011-8-26 16:20
标题: 回复 #5 biti_rainy 的帖子
不好意思本来点鲜花的点错了
作者: ziling2011    时间: 2012-3-8 10:37
version_count是sql在share pool中的版本数,如同一条sql语句可能会生成不同的执行计划,也就会有不同的版本,
就会生成不同的子cursor
作者: -东方弘-    时间: 2012-3-14 13:59
无怪乎为精华帖,03年的帖子
作者: www_xylove    时间: 2012-3-27 16:56
biti,eygle --OARCLE巨头
作者: 幕南风    时间: 2012-6-2 01:15
我再来翻一翻哈。学习了。biti eygle
作者: 2009532140    时间: 2012-10-8 17:12
eygle 发表于 2003-12-16 22:08
其实这几个视图都来自x$kglcursor表,你查一下v$sqltext 及 v$sql的创建语句就清楚了

盖老师,你好!现在v$sqltext 及 v$sql的创建语句追寻起来已经不是你说的x$kglcursor表。
现在时两个不同的,但是那样的话数据不是有冗余么?
作者: kerks    时间: 2013-1-17 21:16
biti_rainy 发表于 2003-12-16 00:50
v$sqltext
存储的是完整的SQL,SQL被分割

select distinct sql_id from v$sqltext
  2  minus
  3  select distinct sql_id from v$sqlarea;
SQL_ID
-------------
00mm14u1ux4m2
01704s1wjb792
01uy9sb7w8a9g
0b75gy0pk5zj0
0d80fx9qdc59h
0kp18bywv3973
0kymmujhudyn5
0n3zp0x7u2bgu
0p7xsdu9qrqz6
0ymh1ar17m0sn
0z65g0cjmmqpj
......
为什么这些sql在v$sqlarea,v$sql中没有呢?查看了这些sql_id对应的sql_text发现基本都是WRH$开头的表。可能是系统在后台收集性能数据吧....?
为什么这些语句没有进出shared pool?
非常感谢!
看到是03的贴 小弟顿感亚历山大啊.......

作者: neves_0    时间: 2013-1-21 13:20
biti_rainy 发表于 2003-12-16 00:50
v$sqltext
存储的是完整的SQL,SQL被分割

相当完整。学习并收藏。
作者: xuyou58    时间: 2014-3-11 14:30
nice,mark
作者: sjtime    时间: 2014-3-11 14:32
关注中...
作者: 芳林野草    时间: 2014-3-11 23:07
achinesemind 发表于 2011-8-22 09:52
这样讲的话,是不是v$sql其实没有什么用处?

查v$sql比较快,我一般喜欢这样用。
v$sqlarea因为要分组,执行比较慢。
作者: xiaohua510510    时间: 2014-3-12 09:46
寻寻大师当年走过的足迹
作者: duanwukuaile    时间: 2014-7-7 16:13
前来拜读,非常详细
作者: db亮仔    时间: 2015-8-4 17:31
很详细,学习了。
作者: lasdaybg    时间: 2016-2-15 15:53
再顶起!
简单的说,v$sqlarea保存了Parent Cursor信息,v$sql保存了Child Cursor信息

作者: zqf20096327    时间: 2016-3-6 11:40
MARK  ths




欢迎光临 ITPUB论坛-专业的IT技术社区 (http://www.itpub.net/) Powered by Discuz! X3.2