表 article 有一个info 大字段列,存储的文章的详细信息,现在要用sql语句取出10条记录,并且包含大字段info的前100个字符如何写这个sql语句,并且操作以后能释放大字段的(游标或是指针)?现在用 SELECT * FROM v$open_cursor 查看打开的游标发现很多类似这样的东西table_4_200_76f3_0_0_0
table_4_2000_769c_0_0_0网上说是大字段周围的指针,上面那个东西持续增加,是我连接数过多,怀疑是取错误操作大字段造成的下面附网上的原文章,这样的问题应该如何排查呢?
V$OPEN_CURSOR中奇怪的项
为什么V$OPEN_CURSOR.SQL_TEXT以"table_4_xxxx_x_x_x_ x"的形式进行显示?V$OPEN_CURSOR中的多数项都与此类似。我的数据库客户机是Oracle8i 8.1.7版的JDBC瘦驱动程序,操作系统为Sun Solaris 8。例如:
select user_name, count(1) as count, sql_text
from sys.v_$open_cursor
group by user_name, sql_text
order by count;
USER_NAME COUNT SQL_TEXT
--------- ----- ---------------------
ORACLE 1 select user_name, ...
SGMASTER 1 SELECT PROPERTY_N...
SGMASTER 5 INSERT INTO ...
SGMASTER 7 table_4_200_5ee2_0_0_0
SGMASTER 12 table_4_2000_5ed8_0...
SGMASTER 12 table_4_200_5ed8_0_0_0
SGMASTER 12 table_e_400_5ed8_2_0_0
这些项与LOB周围的隐藏指针相连接。当你有一个为读/写而打开的LOB时,你会在V$OPEN_ CURSOR中发现这些神秘项中的一个。利用嵌套表也可以看到它们(在创建或访问时)。
在这种情况下,看起来似乎你的所有项都是LOB指针。带有TABLE_4_*的项表明打开的LOB是用于读取的,而带有TABLE_E_*的项表示打开的LOB是用于写入的。考虑清单 2中的例子,它是一个为读取而打开的LOB,而清单 3中的例子是为写入而打开的LOB。
在清单 3中以WRITE模式的例子可以看出,TABLE_E项出现了。有趣的是,SQL_TEXT中间的数字(在本例中为9912)实际上是以十六进制表示的包含LOB的表的OBJECT_ID号:
SQL> select object_name, object_type
2 from user_objects
3 where object_id = to_number('9912', 'XXXX');
OBJECT_NAME OBJECT_TYPE
----------- -----------
T TABLE
所以利用这些项不仅可以看到打开的LOB,还可以确定它们来自哪些表。
table_4_2000_769c_0_0_0网上说是大字段周围的指针,上面那个东西持续增加,是我连接数过多,怀疑是取错误操作大字段造成的下面附网上的原文章,这样的问题应该如何排查呢?
V$OPEN_CURSOR中奇怪的项
为什么V$OPEN_CURSOR.SQL_TEXT以"table_4_xxxx_x_x_x_ x"的形式进行显示?V$OPEN_CURSOR中的多数项都与此类似。我的数据库客户机是Oracle8i 8.1.7版的JDBC瘦驱动程序,操作系统为Sun Solaris 8。例如:
select user_name, count(1) as count, sql_text
from sys.v_$open_cursor
group by user_name, sql_text
order by count;
USER_NAME COUNT SQL_TEXT
--------- ----- ---------------------
ORACLE 1 select user_name, ...
SGMASTER 1 SELECT PROPERTY_N...
SGMASTER 5 INSERT INTO ...
SGMASTER 7 table_4_200_5ee2_0_0_0
SGMASTER 12 table_4_2000_5ed8_0...
SGMASTER 12 table_4_200_5ed8_0_0_0
SGMASTER 12 table_e_400_5ed8_2_0_0
这些项与LOB周围的隐藏指针相连接。当你有一个为读/写而打开的LOB时,你会在V$OPEN_ CURSOR中发现这些神秘项中的一个。利用嵌套表也可以看到它们(在创建或访问时)。
在这种情况下,看起来似乎你的所有项都是LOB指针。带有TABLE_4_*的项表明打开的LOB是用于读取的,而带有TABLE_E_*的项表示打开的LOB是用于写入的。考虑清单 2中的例子,它是一个为读取而打开的LOB,而清单 3中的例子是为写入而打开的LOB。
在清单 3中以WRITE模式的例子可以看出,TABLE_E项出现了。有趣的是,SQL_TEXT中间的数字(在本例中为9912)实际上是以十六进制表示的包含LOB的表的OBJECT_ID号:
SQL> select object_name, object_type
2 from user_objects
3 where object_id = to_number('9912', 'XXXX');
OBJECT_NAME OBJECT_TYPE
----------- -----------
T TABLE
所以利用这些项不仅可以看到打开的LOB,还可以确定它们来自哪些表。
解决方案 »
- SUSE LINUX下ORACLE无法解析指定的连接标识符
- 【分享】关于日期问题需求的总结
- 有一个软件,后台数据库是Oracle,怎样截获这个软件对Oracle操作的sql?或者怎样知道这个软件的每个模块都用到了哪些表?
- 数据表操作的问题
- 有没有语句是重新编译存储过程的??
- 同样的表空间,为何我建的表导入时提示表空间不存在?而别人以前建的表却可以导入?
- 求助
- *****奇怪问题:一段sql语句在oracle10g中执行报错,而在92中执行没有问题
- exp/imp,如何解决初始大小问题,还有表空间问题
- 关于大文本的类型,非常着急
- 大哥们,来帮忙,关于sqlldr导文本文件..
- 通过角色赋权给用户后无法创建视图
select id,title,to_char(info) Info from article where rownum<=10还有就是上面提到的
SELECT * FROM v$open_cursor 查看打开的游标发现很多类似这样的东西table_4_200_76f3_0_0_0
table_4_2000_769c_0_0_0这个应该如何解决?
DBMS_LOB.SUBSTR (
lob_loc IN CLOB CHARACTER SET ANY_CS,
amount IN INTEGER := 32767,
offset IN INTEGER := 1)
RETURN VARCHAR2
这个oracle提供的包函数