- 浏览: 154426 次
- 性别:
- 来自: 北京
最新评论
-
zizhi9999:
坑姐吧……这个 解压不了
java.lang.UnsatisfiedLinkError: /tmp/install.dir.4394/Linux/resource/jre/lib/i38 -
david_je:
db2look –d dbname -l –e –i us ...
DB2 备份及跨平台迁移 -
凤凰山:
很 好!
DB2 备份及跨平台迁移 -
rain2005:
...
linux 下修改时间的方法 -
zhou2008gang:
学习学习了
tcpdump 抓包命令 简例
open_cursors
指定一个会话一次可以打开的游标 (环境区域) 的最大数量, 并且限制 PL/SQL 使用的 PL/SQL 游标高速缓存的大小, 以避免用户再次执行语句时重新进行语法分析。请将该值设置得足够高, 这样才能防止应用程序耗尽打开的游标。
值范围: 1 - 操作系统限制值。
默认值: 64
默认值: 64
open_cursors & session_cached_cursors 关系
SQL> select distinct sid from v$mystat;
SID
----------
12
SQL> show parameter session_cached_cursors
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
session_cached_cursors integer 0
这是设置session_cached_cursors为0,禁止了cache cursor的功能
我们另开一个sqlplus来看v$open_cursor
SQL> select * from v$open_cursor where sid=12;
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99DA7F20 745629022 select distinct sid from v$mystat
能在v$open_cursor里看到这条sql
执行下一条语句
SQL> select owner from test where rownum=1;
OWNER
------------------------------
SYS
在来看v$open_cursor有什么变化
SQL> /
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99C9AEF8 608211958 select owner from test where rownum=1
可以看到语句变了,来看看current open cursor和session cached cursor的数目
SQL> select sid,n.name,s.value used
2 from
3 sys.v_$statname n,
4 sys.v_$sesstat s
5 where
6 n.name in ('opened cursors current', 'session cursor cache count') and
7 s.statistic# = n.statistic#
8 and sid=12;
SID NAME USED
---------- ---------------------------------------------------------------- ----------
12 opened cursors current 1
12 session cursor cache count 0
我们来把session_cached_cursors修改成1
SQL> alter session set session_cached_cursors=1;
Session altered.
再执行上面的语句
SQL> select owner from test where rownum=1;
OWNER
------------------------------
SYS
看看v$open_cursor
SQL> select * from v$open_cursor where sid=12;
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99C9AEF8 608211958 select owner from test where rownum=1
此处执行3次 select * from v$open_cursor where sid=12,oracle进行了3次soft parse
SQL> select owner from test where rownum=1;
OWNER
------------------------------
SYS
SQL> select owner from test where rownum=1;
OWNER
------------------------------
SYS
然后再执行
SQL> select distinct sid from v$mystat;
SID
----------
12
再来看看v$open_cursor有什么变化
SQL> /
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99C9AEF8 608211958 select owner from test where rownum=1
95D5AFCC 12 TAOBAO 99DA7F20 745629022 select distinct sid from v$mystat
v$open_cursor有了两条记录,再看一下current open cursor和session cached cursor的数目
SQL> select sid,n.name,s.value used
2 from
3 sys.v_$statname n,
4 sys.v_$sesstat s
5 where
6 n.name in ('opened cursors current', 'session cursor cache count') and
7 s.statistic# = n.statistic#
8 and sid=12;
SID NAME USED
---------- ---------------------------------------------------------------- ----------
12 opened cursors current 1
12 session cursor cache count 1
果然有一句sql进了session cursor cache,"select owner from test where rownum=1"这个sql相关的cursor就被cache起来了.
再执行一条新的语句
SQL> select owner from test where rownum<2;
OWNER
------------------------------
SYS
看一下v$open_cursor
SQL> select * from v$open_cursor where sid=12;
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99CA4FFC 2584499260 select owner from test where rownum<2
95D5AFCC 12 TAOBAO 99C9AEF8 608211958 select owner from test where rownum=1
可以看到上一次的"select distinct sid from v$mystat"已经被关闭,在v$open_cursor中不可见,但是cached cursor "select owner from test where rownum=1"还能看到
这时候运行3次select distinct sid from v$mystat
SQL> select distinct sid from v$mystat;
SID
----------
12
SQL> select distinct sid from v$mystat;
SID
----------
12
SQL> select distinct sid from v$mystat;
SID
----------
12
然后再运行select owner from test where rownum<2
SQL> select owner from test where rownum<2;
OWNER
------------------------------
SYS
再去查看v$open_cursor
SQL> select * from v$open_cursor where sid=12;
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99C6C628 1755089113 select owner from test where rownum<2
95D5AFCC 12 TAOBAO 99DA7F20 745629022 select distinct sid from v$mystat
发现原来cached cursor"select owner from test where rownum=1"已经被替换出了session cursor cache,而变成了"select distinct sid from v$mystat"
我们再修改session_cached_cursors
alter session set session_cached_cursors=2;
再重复一下上面的过程,再去看v$open_cursor
SQL> /
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99CA4FFC 2584499260 select owner from test where rownum<2
95D5AFCC 12 TAOBAO 99C9AEF8 608211958 select owner from test where rownum=1
95D5AFCC 12 TAOBAO 99DA7F20 745629022 select distinct sid from v$mystat
可以看到现在有3个cursor,看一下current open cursor和session cached cursor的数目
SQL> select sid,n.name,s.value used
2 from
3 sys.v_$statname n,
4 sys.v_$sesstat s
5 where
6 n.name in ('opened cursors current', 'session cursor cache count') and
7 s.statistic# = n.statistic#
8 and sid=12;
SID NAME USED
---------- ---------------------------------------------------------------- ----------
12 opened cursors current 1
12 session cursor cache count 2
这下有2个cached cursor,一个current open cursor.
从这个实验我们可以清楚得看到v$open_cursor视图和session_cached_cursors参数的作用.
SID
----------
12
SQL> show parameter session_cached_cursors
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
session_cached_cursors integer 0
这是设置session_cached_cursors为0,禁止了cache cursor的功能
我们另开一个sqlplus来看v$open_cursor
SQL> select * from v$open_cursor where sid=12;
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99DA7F20 745629022 select distinct sid from v$mystat
能在v$open_cursor里看到这条sql
执行下一条语句
SQL> select owner from test where rownum=1;
OWNER
------------------------------
SYS
在来看v$open_cursor有什么变化
SQL> /
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99C9AEF8 608211958 select owner from test where rownum=1
可以看到语句变了,来看看current open cursor和session cached cursor的数目
SQL> select sid,n.name,s.value used
2 from
3 sys.v_$statname n,
4 sys.v_$sesstat s
5 where
6 n.name in ('opened cursors current', 'session cursor cache count') and
7 s.statistic# = n.statistic#
8 and sid=12;
SID NAME USED
---------- ---------------------------------------------------------------- ----------
12 opened cursors current 1
12 session cursor cache count 0
我们来把session_cached_cursors修改成1
SQL> alter session set session_cached_cursors=1;
Session altered.
再执行上面的语句
SQL> select owner from test where rownum=1;
OWNER
------------------------------
SYS
看看v$open_cursor
SQL> select * from v$open_cursor where sid=12;
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99C9AEF8 608211958 select owner from test where rownum=1
此处执行3次 select * from v$open_cursor where sid=12,oracle进行了3次soft parse
SQL> select owner from test where rownum=1;
OWNER
------------------------------
SYS
SQL> select owner from test where rownum=1;
OWNER
------------------------------
SYS
然后再执行
SQL> select distinct sid from v$mystat;
SID
----------
12
再来看看v$open_cursor有什么变化
SQL> /
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99C9AEF8 608211958 select owner from test where rownum=1
95D5AFCC 12 TAOBAO 99DA7F20 745629022 select distinct sid from v$mystat
v$open_cursor有了两条记录,再看一下current open cursor和session cached cursor的数目
SQL> select sid,n.name,s.value used
2 from
3 sys.v_$statname n,
4 sys.v_$sesstat s
5 where
6 n.name in ('opened cursors current', 'session cursor cache count') and
7 s.statistic# = n.statistic#
8 and sid=12;
SID NAME USED
---------- ---------------------------------------------------------------- ----------
12 opened cursors current 1
12 session cursor cache count 1
果然有一句sql进了session cursor cache,"select owner from test where rownum=1"这个sql相关的cursor就被cache起来了.
再执行一条新的语句
SQL> select owner from test where rownum<2;
OWNER
------------------------------
SYS
看一下v$open_cursor
SQL> select * from v$open_cursor where sid=12;
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99CA4FFC 2584499260 select owner from test where rownum<2
95D5AFCC 12 TAOBAO 99C9AEF8 608211958 select owner from test where rownum=1
可以看到上一次的"select distinct sid from v$mystat"已经被关闭,在v$open_cursor中不可见,但是cached cursor "select owner from test where rownum=1"还能看到
这时候运行3次select distinct sid from v$mystat
SQL> select distinct sid from v$mystat;
SID
----------
12
SQL> select distinct sid from v$mystat;
SID
----------
12
SQL> select distinct sid from v$mystat;
SID
----------
12
然后再运行select owner from test where rownum<2
SQL> select owner from test where rownum<2;
OWNER
------------------------------
SYS
再去查看v$open_cursor
SQL> select * from v$open_cursor where sid=12;
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99C6C628 1755089113 select owner from test where rownum<2
95D5AFCC 12 TAOBAO 99DA7F20 745629022 select distinct sid from v$mystat
发现原来cached cursor"select owner from test where rownum=1"已经被替换出了session cursor cache,而变成了"select distinct sid from v$mystat"
我们再修改session_cached_cursors
alter session set session_cached_cursors=2;
再重复一下上面的过程,再去看v$open_cursor
SQL> /
SADDR SID USER_NAME ADDRESS HASH_VALUE SQL_TEXT
-------- ---------- ------------------------------ -------- ---------- ------------------------------------------------------------
95D5AFCC 12 TAOBAO 99CA4FFC 2584499260 select owner from test where rownum<2
95D5AFCC 12 TAOBAO 99C9AEF8 608211958 select owner from test where rownum=1
95D5AFCC 12 TAOBAO 99DA7F20 745629022 select distinct sid from v$mystat
可以看到现在有3个cursor,看一下current open cursor和session cached cursor的数目
SQL> select sid,n.name,s.value used
2 from
3 sys.v_$statname n,
4 sys.v_$sesstat s
5 where
6 n.name in ('opened cursors current', 'session cursor cache count') and
7 s.statistic# = n.statistic#
8 and sid=12;
SID NAME USED
---------- ---------------------------------------------------------------- ----------
12 opened cursors current 1
12 session cursor cache count 2
这下有2个cached cursor,一个current open cursor.
从这个实验我们可以清楚得看到v$open_cursor视图和session_cached_cursors参数的作用.
发表评论
-
博客搬家了
2012-11-24 17:25 685欢迎大家到我的新博客去做客 www ... -
获得表和索引DDL语句的方法
2011-12-24 16:45 1395获得单个表和索引DDL语句的方法 set hea ... -
对大表中数据去重的一种方法
2011-12-21 15:12 1116为了情节重现,先创建一个表为test01 ,很简单的两列 ... -
oracle exp出现ORA-06550 必须说明SET_NO_OUTLINES 组件 解决方法
2011-05-03 15:00 5264oracle 10.2G 在导出是出现: exp: Relea ... -
AWR报告生成
2011-02-22 10:32 1483一.生成AWR报告 [ractest@sun880-1 ... -
分布式事务故障处理
2011-02-17 15:46 1361分布式事务,简单来说,是指一个事务在本地和远程执行,本 ... -
ORA-14133: ALTER TABLE MOVE cannot be combined with other operations
2010-12-01 14:07 3689SQL> select tablespace_name ... -
ORACLE表批量迁移表空间
2010-12-01 13:14 1349第一步:将表迁移到 ... -
如何处理Oracle中TEMP表空间满的问题?
2010-10-29 15:13 1097转贴:from ORACLE技术中国用户讨论组 如何处理Or ... -
ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
2010-10-14 09:41 1221archive log 日志已满ORA-00257: arch ... -
oracle权限全集
2010-10-12 15:23 764alter any cluster 修改任意簇的权限 al ... -
oracle 中处理杀不掉的进程
2010-09-16 19:43 1790一些ORACLE中的进程被杀掉后,状态被置为"kil ... -
Oracle中创建同义词
2010-09-07 10:49 1239如果要为本用户创建同义词,必须具有“CREATE SYNONY ... -
ORA-27061: skgfospo: waiting for async I/Os failed
2010-07-30 13:32 2113刚刚IMP了大约60多万的 ... -
报ora-01144
2010-07-29 16:35 1260今天在solaris sparc10上安装单节点oracle1 ... -
如何生成Oracle AWR报告
2010-07-22 15:37 1919Oracle性能分析入门学习中,遇到Oracle数据库的性能问 ... -
恢复oracle中用pl sql误删除drop掉的表
2010-07-07 16:18 850查看回收站中表 select object_name,o ... -
Oracle用户被锁原因及办法
2010-07-05 10:35 1821Oracle用户被锁原因及办法 在登陆时被告知test用 ... -
如何在Oracle10g中启动和关闭OEM
2010-06-28 11:11 1258从Oracle10g开始,Oracle极大的增强了OEM工具, ... -
session_cached_cursors的详细解释
2010-06-28 10:44 1389SESSION_CACHED_CURSORS,就是 ...
相关推荐
Oracle 参数 open_cursors 与 session_cached_cursors 详解 Oracle 数据库中,open_cursors 和 session_cached_cursors 是两个重要的参数,它们对 Oracle 的运行性能产生了直接的影响。本文将详细解释这两个参数的...
oracle数据库忽然连不上了,一查是游标数量超了。 1.查看游标数 show parameter open_cursors 2.修改游标数 alter system set open_cursors = 10000; 3.获取打开的游标数 select o.sid, osuser, machine, count...
- OPEN_CURSORS设置每个用户可打开的游标最大数,影响并发处理能力。 - PROCESSES定义并发操作系统进程的总数。 在创建数据库时,部分参数需要在创建前确定且不可修改,例如DB_NAME。而其他参数如LOG_ARCHIVE_...
查看processes和sessions参数 第一步,在cmd命令行,输入sqlplus 第二步,根据提示输入用户名与密码
每个会话可以打开多个游标,但存在一个限制,即 OPEN_CURSORS 参数指定的最大游标数。如果应用程序打开的游标数超过这个限制,会引发 ORA-01000: maximum open cursors exceeded 异常。下面将探讨超出打开游标的最大...
- `OPEN_CURSORS`: 设定并发打开游标的最大数量,避免过多的游标占用资源。 7. **实例恢复参数** - `FAST_START_MTTR_TARGET`: 设置目标快速启动实例恢复时间,用于快速恢复数据库。 - `DB_RECOVERY_FILE_DEST`:...
- OPEN_CURSORS: 系统允许的最大打开游标数,过高会消耗内存,过低可能导致游标溢出错误。 - ...其他参数(略) 5. 参数设置原则 - SGA系统全局区: 包括数据缓冲区、共享池、日志缓冲区等的设置,应根据系统负载和...
- sessions: currently open sessions - stack <os_pid> get process stack using oradebug - cursors [all] <match_str>: [all] parsed cursors - sharing <sql_id>: print why cursors are not shared - ...
- `OPEN_CURSORS`: 允许打开的游标最大数量,控制并发查询能力。 4. **日志管理参数** - `LOG_FILE_SIZE`: 重做日志文件的大小,影响日志切换频率。 - `LOG_ARCHIVE_FORMAT`: 归档日志的格式和路径,确保数据...
执行该命令后,Oracle数据库将进行实例的启动,系统会加载初始化参数,并打开数据库使用户可以进行连接和操作。 接下来,我们讨论如何查看和修改Oracle数据库的最大连接数。连接数决定了可以同时连接到数据库的用户...
- `OPEN_CURSORS`:允许同时打开的游标数量,直接影响并发性能。 5. 重做日志管理: - `LOG_FILE_SIZE`:重做日志文件的大小。 - `LOG_BUFFER`:重做日志缓冲区的大小,影响日志写入速度。 6. 安全性与权限: ...
- 使用 `ALTER SYSTEM SET` 语句可以动态修改参数值,例如 `ALTER SYSTEM SET OPEN_CURSORS=300 SCOPE=MEMORY` 设置了 `open_cursors` 参数为 300,但这个设置仅在当前会话中生效,重启数据库后会恢复原值。...
- `open_links` 和 `open_cursors`:分别表示同时打开的链接数和游标数,需要根据应用的并发特性进行调整。 2. **数据库归档模式**: - 归档模式是数据库运行的一种状态,允许在主日志文件满时将旧的日志信息移动...
- `open_cursors`: 控制系统同时打开的游标数量,建议值为300或根据实际负载调整。 完成修改后,需通过`shutdown immediate`命令关闭数据库,然后使用`startup pfile='...'`命令以新的PFILE启动数据库,确保新参数...
- `OPEN_CURSORS`: 打开游标的最大数量。 - `PROCESSES`: 允许的最大进程数。 8. **故障恢复相关配置** - `DB_RECOVERY_FILE_DEST`: 快闪恢复区域的目录。 - `DB_RECOVERY_FILE_SIZE`: 快闪恢复区域的大小。 ...
- `open_cursors`:设置数据库可同时打开的游标数量,影响并发能力。 - `LOCK_SGA`:锁定SGA(System Global Area)在物理内存中,防止交换到磁盘。 - `db-block-size`和`db-block-buffers`:分别定义数据缓存块...
- `open_cursors=300`: 打开游标最大值。 - `pga_aggregate_target=94371840`: 程序全局区(PGA)的总目标大小。 - `processes=150`: 最大进程数。 - `remote_login_passwordfile=EXCLUSIVE`: 密码文件模式。 - `...
- `OPEN_CURSORS=300`: 打开游标的最大数量设置为300。 - **诊断与统计**: - `BACKGROUND_DUMP_DEST='/LCdisk/oradata/bill/admin/bdump'`: 背景转储文件的存放路径。 - `CORE_DUMP_DEST=/LCdisk/oradata/bill/...
7. **HS_OPEN_CURSORS**:这个参数定义了一个连接到非Oracle系统实例的最大游标数,它的值不会超过Oracle数据库的OPEN_CURSORS参数。适当的设置有助于平衡并发连接的资源使用和性能。 配置这些初始化参数对于优化...