关于plsql 部分表查询不出来的问题

PLSQL连接RAC数据库查询挂起问题
本文描述了一个使用PLSQL Developer工具连接Linux+RAC环境时遇到的查询挂起问题,特别是针对v$session表的全字段查询。问题在元旦期间出现,与网络配置及防火墙设置有关。通过禁用Juniper防火墙上的SQL应用层网关功能解决了该问题。
部署运行你感兴趣的模型镜像
环境 linux +rac
连接工具pl sql 8.0.1

连接数据库之后,执行select * from v$session 一直处于查询状态,出不来结果
在sqlplus 下执行正常.

PS:部分(用户创建的)是这种情况,但也有一部分是正常.

  

此问题 在askmaclean 中提问过


细作了一番实验,发现有几个特征

1、select * from t  查询不出数据,一直处于查询状态

  但是把t的字段列举出几个,如select a,b,c from t 是可以查询出数据

  或者 select * from t where rownum<10 也能查出数据,但也有表采取以上两种方式仍然查不出数据。

2、当plsql的客户端和数据库服务器在同一个网段时,则不出现此问题。

3、据开发人员介绍在元旦之前是没问题,在元旦期间,中间路由加了防火墙或者调整了网络,之后就出现了这种现象。

4、把tnsname.ora中的host 改为IP,结果还是一样。

5、数据库的两个用户都是这种情况


此问题应该与服务端无关,应该是客户端网络设置的问题。


(续)

这个问题在http://cqsztech.cqbayuan.com/bbs/dispbbs.asp?BoardID=4&ID=107&Page=1  中能找到答案

网关的防火墙是JUNIPER防火墙,在防火墙上取消JUNIPER防火墙应用层网关对SQL的拦截


Metalink ID 1293202.1

High Virtual Circuit Wait Running SQL Through a Juniper Firewall [ID 1293202.1]
	修改时间 18-MAR-2011     类型 PROBLEM     状态 PUBLISHED	

In this Document   Symptoms   Changes   Cause   Solution   References
Applies to:
Oracle Net Services - Version: 9.2.0.1 to 11.2.0.2 - Release: 9.2 to 11.2
Information in this document applies to any platform.
Symptoms

From DBControl, High 'virtual circuit wait' is seen on a 'SELECT' SQL.


From ASH Report in 65 minutes elapsed time: 
Top User Events

Event                "Event Class"      % Event "Avg Active Sessions"
virtual circuit wait  Network           98.32    7.99


The database is experiencing low performance.


Changes
Firewall policy was implemented for security purposes.

Firewall Device: Juniper Firewall  SSG-520 with Firmware Version 6.2.0 R4.0 .
Cause

"SQL" feature in Juniper Firewall Application Layer Gateway (ALG) is causing the hang.  This feature is documented as a known issue in several other documents:

 

Document 1075432.1 - Archive Log Shipments Failing in Environment With Juniper Firewall (Doc ID Document 1068158.1 - Shared Server Connections Hung, Waiting on Virtual Circuit Status via Juniper Firewall

 

Solution
Disable "SQL" feature in Juniper Firewall.

Solution Step: 
From the Admin Interface in Juniper Web Interface, 
under Security -> Deep Inspection -> ALG (Application Layer Gateway), 

Deselect the "SQL" feature (disable the feature).

The result is as in following graph:




您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### 如何使用 PL/SQL 查询数据结构 在 PL/SQL 中,可以利用数据字典视图来查询有关数据库对象的信息。对于获取特定的结构信息而言,`USER_TAB_COLUMNS` 是一个非常有用的数据字典视图[^4]。 下面是一个简单的例子,展示如何通过编写 PL/SQL 块来检索给定的所有列名及其属性: ```sql DECLARE v_table_name VARCHAR2(30) := 'YOUR_TABLE_NAME'; -- 替换成实际格名称 BEGIN FOR rec IN ( SELECT column_name, data_type, nullable, char_length AS length, data_precision, data_scale FROM user_tab_columns WHERE table_name = UPPER(v_table_name)) LOOP DBMS_OUTPUT.PUT_LINE('Column Name: ' || rec.column_name); DBMS_OUTPUT.PUT_LINE('Data Type: ' || rec.data_type); IF rec.nullable = 'Y' THEN DBMS_OUTPUT.PUT_LINE('Nullable: Yes'); ELSE DBMS_OUTPUT.PUT_LINE('Nullable: No'); END IF; IF rec.length IS NOT NULL THEN DBMS_OUTPUT.PUT_LINE('Length: ' || TO_CHAR(rec.length)); ELSIF rec.data_precision IS NOT NULL AND rec.data_scale IS NOT NULL THEN DBMS_OUTPUT.PUT_LINE('Precision & Scale: (' || TO_CHAR(rec.data_precision) || ',' || TO_CHAR(rec.data_scale) || ')'); END IF; DBMS_OUTPUT.PUT_LINE('-----------------------------'); END LOOP; END; / ``` 这段代码定义了一个匿名 PL/SQL 块,它会遍历 `USER_TAB_COLUMNS` 视图中的每一行,并打印出关于指定中各字段的相关细节。注意这里使用了大写形式的名作为条件过滤器的一部分,因为 Oracle 数据库通常存储的对象名为全大写字母除非创建时用了双引号包裹的小写或混合大小写的名称[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值