Oracle学习之sql共享以及4031解决方法

》共享sql:

1、统一书写风格

2、使用绑定变量

》》找出没有共享的SQL语句:

在v$sql查找执行次数较小的SQL语句,观察这些SQL语句是否是经常执行的。

select SQL_FULLTEXT from v$sql where EXECUTIONS=1 and sql_text like ‘%from t%‘;

select SQL_FULLTEXT from v$sql where EXECUTIONS=1 order by sql_text; --将执行次数只有一次的语句列出,同时排序

》解析命中率:

select sum(pinhits)/sum(pins)*100 from v$librarycache; --软解析

select sum(gets),sum(getmisses),100*sum(gets-getmisses)/sum(gets) from v$rowcache where gets>0;

》解决4031错误方法

1、alter system flush shared_pool; --临时手段

2、共享sql

alter system set cursor_sharing=‘force‘;

3、select * from v$db_object_cache where sharable_mem > 10000

and (type = ‘PACKAGE‘ or type=‘PACKAGE BODY‘ or type=‘FUNCTION‘ or type=‘PROCEDURE‘)

and kept = ‘NO‘;

执行dbms_shared_pool.keep(‘上一条语句出来的对象名‘);

DBMS_SHARED_POOL

@?/rdbms/admin/dbmspool.sql

4、保留区

select REQUEST_MISSES from v$shared_pool_reserved;

show parameter shared;

5、增加shared pool空间

select COMPONENT,CURRENT_SIZE from V$SGA_DYNAMIC_COMPONENTS;

show parameter sga_target

show parameter sga_max_size

alter system set shared_pool_size=150M scope=both;--Oracle 默认会有159M,只能修改比159M大

时间: 2024-12-09 21:33:47

Oracle学习之sql共享以及4031解决方法的相关文章

oracle学习笔记 SQL语句执行过程剖析讲课

oracle学习笔记 SQL语句执行过程剖析讲课 这节课通过讲述一条SQL语句进入数据库 和其在数据库中的整个的执行过程 把数据库里面的体系结构串一下. 让大家再进一步了解oracle数据库里面的各个进程.存储结构以及内存结构的关联关系. 首先来讲整个体系中有客户端.实例和数据库 数据库里有三类文件 控制文件ctl.数据文件dbf.日志文件log 实例中SGA有六大池子 第一大内存区shared pool即共享池 第二大内存区buffer cache 第三块是redo log 我们主要讲上面的三

oracle分页查询结果集重复问题&解决方法

做项目时,无意间发现了分页上的一个bug,在此记录一下: 首先手动将后台输出的sql语句复制进oracle中查看,以便排查错误,对比以下视图前10条的结果集与10到20条的结果集,发现大部分记录出现重复现象,SQL语句如下: --前10条记录 select *   from (select row_.*, rownum rownum_           from (select t.idcard, count(1)                   from sampling.v_unvou

yii下使用oracle中文都变成问号乱码的解决方法

在配置文件中,一般会用以下配置: 'db_oracle'=>array( 'class' => 'CDbConnection', 'connectionString'=>'oci:dbname=服务器地址/服务名', 'username'=>'用户名', 'password'=>'密码', 'charset' => 'utf8', 'enableParamLogging'=>true, ), 我试了千万遍,找了N久的资料,就是不行,在thinkphp中发现也没有什

powerDesigner 连接Oracle 报Unable to connect SQLState=08004 解决方法

powerDesigner 报Unable to connect SQLState=08004 解决方法 环境:win7(64) powersigner 15 oracle 10G 错误提示: Unable to connect SQLState=08004 [Oracle][ODBC][Ora]ORA-12154:TNS:无法解析指定的连接标示符 解决方法: 看看是不是把powerDesigner安装在了有空格的目录下,如果是重新安装在非空目录即可. 分类: windows 7 powerDe

ORACLE数据库占用大量硬盘空间常规解决方法

通常ORACLE数据库占用硬盘空间过大的原因有这么几个(以oracle 10.2.0版本为例): 1.oracle的安装目录...\oracle\product\10.2.0\admin\orcl\udump目录下,追踪日志文件占用大量硬盘空间: 2.oracle的安装目录...\oracle\product\10.2.0\oradata\orcl目录下,UNDO表空间文件占用大量硬盘空间. 针对以上两个问题,解决方法如下. 第一个问题解决方法: udump目录下面是oracle的追踪日志文件,

创建SQL作业错误的解决方法(不能将值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs';列不允许有空值。)

在用SQL语句创建SQL Server作业时有时出现如下错误: 消息 515,级别 16,状态 2,过程 sp_add_job,第 137 行 不能将值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs':列不允许有空值.INSERT 失败. 语句已终止. 这可能与为作业创建的数据库登录ID有关,这个登录ID需要是数据库的所有者(我的是sa),因此将 @owner_login_name=N'HYSERITC003/wellcomm', 中的N'HYSERITC00

Oracle常见死锁发生的原因以及解决方法

Oracle常见死锁发生的原因以及解决办法 一,删除和更新之间引起的死锁 造成死锁的原因就是多个线程或进程对同一个资源的争抢或相互依赖.这里列举一个对同一个资源的争抢造成死锁的实例. Oracle 10g, PL/SQL version 9.2 CREATE TABLE testLock(  ID NUMBER, test VARCHAR(100)  ) COMMIT INSERT INTO testLock VALUES(1,'test1'); INSERT INTO testLock VAL

关于spring4和hibernate4整合,配置事务报“Cannot unwrap to requested type [javax.sql.DataSource]”错误的解决方法及心得

Cannot unwrap to requested type [javax.sql.DataSource] 配置hibernate4和spring4时,出现错误,解决方法: 1.我去了spring4中的事务配置,数据库可以正常执行并访问.如下: <!-- 配置Hibernate  数据事务 --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.Hibernat

SQL SERVER 9003错误解决方法 只适用于SQL2000

SQLSERVER 9003错误解决方法 只适用于SQL2000 (只适用于SQL2000) "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft SQL Server,错误: 9003)" 看是9003错误,就想到可能是由于日志文件的原因,再看数据库文件可能损坏,于是想到dbcc checkdb指令. 方法如下: 1.我们使用默认方式建立一个供恢复使用的数据库(如pos).可以在SQL Server Enterprise Manager里面建立