-------------------------------------第一段----------------------------------------
SQL> select SQL_TEXT 
  2    from v$sqltext where SQL_ID='&sql_id' order by piece;
Enter value for sql_id: 01grdaq0u7gkg
old   2:   from v$sqltext where SQL_ID='&sql_id' order by piece
new   2:   from v$sqltext where SQL_ID='01grdaq0u7gkg' order by pieceSQL_TEXT
----------------------------------------------------------------
SELECT /*+ FULL(P) +*/ * FROM "V_JF_KUANXIANG" PSQL> --------------------------------------第二段-----------------------------------------
SQL> select SQL_TEXT 
  2    from v$sqltext where SQL_ID='&sql_id' order by piece;
Enter value for sql_id: bzr6zhk94ashb
old   2:   from v$sqltext where SQL_ID='&sql_id' order by piece
new   2:   from v$sqltext where SQL_ID='bzr6zhk94ashb' order by pieceSQL_TEXT
----------------------------------------------------------------
SELECT /*+ FULL(P) +*/ * FROM "V_JF_ERROR" PSQL> 
-----------------------------------以下是运维分析出来的------------------------------------
这个hint语法错误。
应该是
SELECT /*+ FULL(P) */ * FROM "V_JF_KUANXIANG" P
没有后面那个+号。SELECT /*+ FULL(P) */ * FROM "V_JF_ERROR" P  这个是正确的写法。
请定位应用程序相关代码,修改SQL语句。

解决方案 »

  1.   

    我查了我库里面的sql语句,都没有找到运维说的那条查询语句。
    这两个视图都是通过DBLINK共享到中间库里面,然后由业务系统通过DBLINK来访问中间库,查询我们提供的这两个视图。
    经常是这两个视图用一天左右,结果第二天在用的时候就一直处于查询状态,在中间库也DROP不掉这两个视图,也不能查看创建语句。
    各位大神能给分析一下 是啥原因吗?
      

  2.   

    hint语法错误的话也就相当于hint不生效了。
    hint是为了手动影响优化器得出的执行计划;
    不过你这个虽然后面确实多了个+号,但是其实 hint是生效了的,你看下执行计划就知道了。/*+ FULL(P) */这个  hint 是让P表走全表扫描。
    一直处理查询状态,性能慢,可以看下执行计划是不是走得不对。
      

  3.   

    另外通过dblink的查询都是很耗性能的,跟网络关系还很大,你这个连视图是啥内容都看不到是没法分析的了。
      

  4.   

    dblink处理端hint driving_site(table_name)
        此hint常用于通过dblink连接处理数据的业务,它的作用是将本地表推送到远端数据库进行关联然后将结果返回,常用于本地表较小,远端表较大的情况,效果很是不错。可以用这个hints试试有没有效果。 /*+  driving_site(P) */SELECT  /*+  driving_site(P) */  * FROM "V_JF_ERROR" P 
      

  5.   

    我找到原因了  是因为oracle在通过DBLINK进行查询的时候  会在源端数据库自动拼接上HINT语法。
    详情可以看下下面的这个连接
    http://www.oracleplus.net/arch/830.html
      

  6.   

    但是这个只能说找出了为什么出息 这个 /*+ FULL(P) +*/  。至于一直处理查询状态这个性能问题还是没解决了