- 浏览: 345080 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (198)
- HIBERNATE (8)
- JAVA (13)
- 数据库 (24)
- SPRING (1)
- LINUX (0)
- 需求管理 (3)
- 职业提升 (6)
- 团队建设 (1)
- 日常用到语句 (1)
- FLEX (6)
- 用户体验 (3)
- 设计模式 (6)
- weblogic (2)
- PowerDesigner (3)
- HTML (7)
- ANT (7)
- 工具. (1)
- bat (5)
- 存储过程 (1)
- strus2 (1)
- DWR (2)
- jfreechart (4)
- 上线测试优化 (17)
- JVM (9)
- 工具使用 (2)
- 算法 (3)
- 私事 (0)
- 数据库-Oracle session (1)
- 软件开发 (5)
- 产品 (2)
- 项目管理 (4)
- oracle语句 (1)
- IntelliJ IDEA (4)
- GRAILS (10)
- Groovy (1)
- JS (1)
- DUBBO (1)
- JAVA EXCEL (3)
- netty websocket (1)
- kafka (1)
- 秘钥体系 (2)
- golang (6)
- gradle (1)
- spring cloud (0)
最新评论
-
wujt:
...
Grails_数据库逆向工程插件 db-reverse-engineer -
yy8093:
我也遇到这个问题,不过并不觉得是个好的方法。。。。不过最后也确 ...
关于dubbo服务产生异常之:Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting s -
wujt:
# ----- Execute The Requested C ...
jconsole基础配置(原创) -
gaowei52306:
你好,请问remotedir="/home/dmwe ...
Ant FTP -
抢街饭:
ant生成日志 在命令行也能看见 怎么去做啊
ant生成日志
- select sql_text ,sharable_mem from v$sql where sharable_mem > '100000' order by sharable_mem ;
select sql_text ,sharable_mem from v$sql where sharable_mem > '100000' order by sharable_mem ;
上面的sql语句是查询shared pool中占用内存超过100K的sql语句。
共享池主要由库缓冲区(共享SQL区和PL/SQL区)和数据字典缓冲区组成。
select * from v$sgastat; --显式SGA的状态信息。
If the SHARED_POOL_SIZE is large enough, most ORA-04031 errors are a result of dynamic sql fragmenting the shared pool. This can be caused by:
o Not sharing SQL
o Making unnecessary parse calls (soft)
o Not using bind variables
o Not sharing SQL
o Making unnecessary parse calls (soft)
o Not using bind variables
- select * from table_name where id = 1;
- select * from table_name where id = 2;
select * from table_name where id = 1; select * from table_name where id = 2;
每次查询都要进行sql语句的执行解析,并且每个sql都会分配一个区域来存放sql解析后的二进制可执行代码。试想,要是id不同的10万个sql呢?Oracle就会分配10万个sql区域来分别存放10万个这样的id不同的sql语句。对于一个数据库驱动的Web网站这样情况下,SGA开的再大,也会很快被耗尽share pool的,最后报一个ORA-4031错误。数据库就连接不上了,只好重起。
正确的写法应该是:
- PreparedStatement pstmt = conn.prepareStatement("select * from table_name where id = ?");;
- pstmt.setInt(1,1);;
- rset = pstmt.executeQuery();;
- ...
- pstmt.setInt(1,2);;
- rset = pstmt.executeQuery();;
PreparedStatement pstmt = conn.prepareStatement("select * from table_name where id = ?");; pstmt.setInt(1,1);; rset = pstmt.executeQuery();; ... pstmt.setInt(1,2);; rset = pstmt.executeQuery();;
这样Oracle数据库就知道你实际上用的都是同一条sql语句,会以这样的形式:
select * from table_name where id = :1
解析执行后存放在sql区域里面,当以后再有一样的sql的时候,把参数替换一下,就立刻执行,不需要再解析sql了。既加快了sql执行速度,也不会占有过多SGA的share pool。
发表评论
-
在oracle10g中如何恢复drop掉的表
2014-11-19 15:17 818在oracle10g中如何恢复drop掉的表 在oracl ... -
左关联右关联全关联
2014-11-10 17:06 3896左关联右关联全关联 参考:http://www.cn ... -
win8系统倒入数据imp-00058错误
2014-09-21 17:52 710win8系统倒入数据imp-00058错误 ... -
oracle中如何判断字符串是否全为数字,以及从任意字符串中提取数字
2013-12-18 13:09 1527本文介绍了判断字符串是否全为数字的4种办法,另外还介绍了一个t ... -
查询闪存
2013-12-17 09:36 820(1)查询目标表30分钟前的数据 select * from ... -
ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
2013-08-16 13:35 743ORA-00031: session marked for k ... -
Oracle创建表空间、创建用户以及授权
2013-07-30 11:30 739Oracle创建表空间、创建用户以及授权 创建临时表空间 创 ... -
Oracle中诊断阻塞session的方法 blocking error
2014-10-22 11:36 729Oracle中诊断阻塞session的方法 blocking ... -
查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL
2013-01-19 13:58 0查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL 数 ... -
查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL
2013-01-19 13:57 2697查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL 数 ... -
ORACLE阻塞
2013-01-19 13:56 945ORACLE阻塞 案例一: 34.//SYS窗口 35. ... -
数据库阻塞和死锁的区别(转载)
2013-01-19 13:30 1399数据库阻塞和死锁的区别(转载) 数据库阻塞和死锁在程序开发过程 ... -
oracle 死锁和锁等待的区别(转载)
2013-01-19 13:27 1342oracle 死锁和锁等待的区别(转载) 所谓的锁等待:就是 ... -
关于“ORA-00060:等待资源时检测到死锁”问题的分析(转载)
2013-01-19 13:26 1379关于“ORA-00060:等待资源时检测到死锁”问题的分析(转 ... -
查询Oracle正在执行和执行过的SQL语句
2013-01-18 22:55 0查询Oracle正在执行和执行过的SQL语句 ---正在执 ... -
如何检测被锁住的Oracle存储过程(转帖)
2013-01-18 17:39 891如何检测被锁住的Oracle存储过程(转帖) 1.查看是哪 ... -
Oracle死锁的处理
2013-01-18 17:29 761Oracle死锁的处理 Oracle死锁问题应该如何解决呢?可 ... -
oracle 查询所有表的记录数 SQL
2013-01-18 15:06 1330oracle 查询所有表的记录数 SQL create o ... -
oracle enterprise manager console 出现 ora-12154:TNS:无法处理的服务名
2011-11-27 20:23 1213登录oracle enterprise manager con ... -
启动服务报错ORA-12505
2011-10-25 18:23 1485今天在工作中配置plsqldev时,报错误是找不到服务名 同 ...
相关推荐
动态SQL与绑定变量是数据库编程中的重要概念,尤其在Oracle数据库中被广泛应用。动态SQL允许在运行时构建和执行SQL语句,而绑定变量则是在动态SQL中用于替代具体值的占位符,使得SQL语句更为灵活和高效。 ### 1. ...
绑定变量允许在SQL语句中使用程序变量作为参数,这不仅提高了代码的可读性和维护性,还增强了SQL语句的灵活性和效率。 ### SQL绑定变量的重要性 在数据库操作中,频繁地执行相同或相似的SQL语句会消耗大量的系统...
### C#中dataGridView1控件的使用与SQL Server数据绑定详解 #### 一、概述 在C#开发中,利用dataGridView1控件进行SQL Server数据库的数据绑定是非常常见且实用的操作方式之一。它可以帮助开发者轻松地将数据库中...
它提供了一种安全的方式来自定义和执行动态SQL,同时还可以绑定参数,避免了SQL注入的问题。 #### `sp_executesql`的基本语法 `sp_executesql`的基本语法如下: ```sql sp_executesql @stmt = N'<your SQL ...
2. **未校验输入**:如果没有对用户输入进行适当的验证,恶意用户可以篡改请求参数,可能导致权限提升、数据泄露或注入攻击(如SQL注入、命令注入)。 3. **默认配置不当**:Spring MVC的默认配置可能允许过于宽松的...
// 绑定参数 SQLCHAR param[50]; strcpy(param, "value"); // 执行查询 rc = sqlcoci(&sqlca, query); if (rc == SQL_SUCCESS) { // 绑定结果集 SQLCHAR result[100]; rc = sqlcoci(&sqlca, ¶m, &...
hibernate.session_factory_name 参数用于 SessionFactory 创建后,将自动使用这个名字绑定到 JNDI 中。其取值为 jndi/composite/name。 7. hibernate.max_fetch_depth hibernate.max_fetch_depth 参数用于设置...
`是参数化SQL,`setString(1, "testUser")`将字符串`"testUser"`安全地绑定到第一个占位符上。 在实际应用中,我们还需要关注SQL性能优化,例如,使用索引、避免全表扫描、合理设计数据类型等。对于复杂查询,可以...
3. 数据库连接与查询:SQL语句的编写,使用参数化查询防止SQL注入。 4. 数据绑定:将数据库数据绑定到ECharts图表,如使用`JsonResult`返回JSON数据。 5. ECharts使用:配置图表选项,理解各种图表属性,如系列、轴...
```sql declare type rc is ref cursor; l_rc rc; l_dummy all_objects.object_name%type; l_start number default dbms_utility.get_time; begin for i in 1 .. 1000 loop open l_rc for 'select object_...
在BIRT(Business Intelligence and Reporting Tools)中,数据集参数与列绑定是构建复杂报告的关键技术。本主题将深入探讨如何实现数据集之间的参数传递以及列的绑定,以充分利用BIRT的功能来创建高效的报告。 ...
因此,输出完整的带参数SQL语句对于调试和优化至关重要。 解决方案是通过配置MyBatis-Plus的日志实现来达到目的。MyBatis-Plus内部使用了MyBatis的日志工厂,该工厂支持多种日志框架,包括SLF4J、Apache Commons ...
此外,还可以使用参数绑定或者ORM框架(如Hibernate)来处理用户输入,这些方法都会自动处理潜在的SQL注入风险。 接下来,我们讨论一下跨站脚本(XSS)攻击。XSS攻击发生在攻击者将恶意脚本插入到其他用户看到的...
JinjaSQL实际上并不执行查询-它仅准备查询和绑定参数。 您可以使用任何正在使用的数据库引擎/驱动程序执行查询。 例如,如果您有这样的模板- select username, sum (spend) from transactions where start_date > ...
在Java中实现Oracle变量的绑定方法,主要是为了优化SQL语句的执行效率,减少数据库解析负担,提升系统性能。Oracle数据库在处理SQL语句时,会先进行解析,然后将解析后的SQL语句存储在共享池(Shared Pool)中。如果...
SQL Server的性能优化是数据库管理中的重要环节,其中参数化是一种有效的优化策略。参数化主要涉及两种模式:简单模式和强制模式。默认情况下,SQL Server采用简单参数化,这意味着如果收到的SQL语句与之前执行过的...
2.fetch.cpp文件主要是关于api的基本操作,包括连接数据库,sql语句的执行,绑定sql语句参数的方法,获取结果的方法,以及结果中字段的处理,断开连接,以及异常的处理。 3.sqlapi.cpp文件主要测试数据库优化的性能...
框架如Hibernate、MyBatis等在设计时已考虑了SQL注入问题,它们会自动处理预编译语句和参数绑定,减少开发者的安全顾虑。 6. **最小权限原则**: 数据库连接应使用具有最小权限的账户,这样即使发生SQL注入,攻击...
总的来说,“SQL数据库导入向导”是一个实用的工具,它简化了数据库之间的数据迁移过程,特别是对于需要自定义字段绑定、新建表和重命名字段的场景。通过向导式的用户界面,即使是对SQL不太熟悉的用户也能轻松操作。...