`
tianshibaijia
  • 浏览: 1126749 次
文章分类
社区版块
存档分类
最新评论

Oracle 下 unpin 的cursor 才能被移除

 
阅读更多

最近南方的雨下的很烦人。暴雨,一下就是一天,不过平时我也不怎么出门,所以也就无所谓了。在家看看电影,做做测试,在补补觉,周末2天也就过去了。


刚才owind让我做了个测试。正在使用的cursor能否被移除。关于cursor的东西,几个星期前就准备整理一下的,可是看了一下官方文档,东西太多了。一时也没不知道从哪下手。就放那了。今天这个测试也算对cursor知识的一个开始。

测试就为证明以下两句话:

cursor is pined ,can't be age out. only freeable cursor can be flush.

The buffer is now unpinned and is a candidate for immediate aging out。

--创建测试表

SQL>create table td as select * from user_tables;

--在session A修改表,注意没有commit

SYS@anqing2(rac2)> update td set tablespace_name='users';

719 rows updated.

--在Session B修改表,同样不commit

SYS@anqing2(rac2)> update td set tablespace_name='users';

--在session A没有commit的情况下,这里是hang住的,验证一下

--查看session A的SID:

SYS@anqing2(rac2)> select sid from v$mystat where rownum=1;

SID

----------

130

--查看Lock信息

SYS@anqing2(rac2)> select sid,lmode,request from v$lock where type in ('TX','TM');

SIDLMODEREQUEST

---------- ---------- ----------

12406

13030

12430

13060

DML操作一般要加两个锁,一个是对表加模式为3的TM锁,一个是对数据行的模式为6的TX锁。只要操作的不是同一行数据,是互不阻塞的。

根据查询结果,我们看到,Session B已经拿到了3级别的TM锁,现在在等待6级别的TX锁。但6级的TX锁在session A(130)持有,所以session B(124)处于等待状态。

-- Flush shared pool

SYS@anqing2(rac2)> alter system flush shared_pool;

System altered.

--查看v$sql里,对应的cursor是否存在

SYS@anqing2(rac2)> select sql_text from v$sql where sql_text like 'update%';

SQL_TEXT

--------------------------------------------------------------------------------

update td set tablespace_name=:"SYS_B_0"

我们的cursor还存在v$sql里。

--在session A提交

SYS@anqing2(rac2)> commit;

Commit complete.

--提交之后,session A对应的Lock就释放了。

SYS@anqing2(rac2)> select sid,lmode,request from v$lock where type in ('TX','TM');

SIDLMODEREQUEST

---------- ---------- ----------

12430

12460

--session B结束hang状态后在commit

SYS@anqing2(rac2)> update td set tablespace_name='users';

719 rows updated.

SYS@anqing2(rac2)> commit;

Commit complete.

--全部commit之后,我们不flush,查看

SYS@anqing2(rac2)> select sql_text from v$sql where sql_text like 'update%';

SQL_TEXT

--------------------------------------------------------------------------------

update td set tablespace_name=:"SYS_B_0"

对应的cursor还存在

--我们flush一下

SYS@anqing2(rac2)> alter system flush shared_pool;

System altered.

--查看cursor

SYS@anqing2(rac2)>select sql_text from v$sql where sql_text like 'update%';

刚才的cursor已经不存在了。

以上测试只为证明一句话:

正在被pin住的cursor不能从shared pool里移除,只有unpin的cursor才能被移除。

-------------------------------------------------------------------------------------------------------

分享到:
评论

相关推荐

    pin-unpin-es6

    目标元素固定在页面加载中,当scrollY位置被选中(监视)的元素传递时,目标元素被取消固定 安装 npm安装 浏览器支持 10 :check_mark: | 最新的 :check_mark: | 最新的 :check_mark: | 最新的 :check_mark: | 最新...

    pin-unpin-tab:Firefox插件以更有效的方式固定或取消固定当前选项卡

    pin-unpin-tab:Firefox插件以更有效的方式固定或取消固定当前选项卡

    Unpin-crx插件

    加载扩展时,所有项目都已被缓存。 1.0.5.2版中的更改-更新的清单版本格式1.0.5版中的更改-添加了未读计数指示器1.0.4版中的更改-链接在后台选项卡中打开,以便可以快速打开多个页面。 -打开链接时应用可读性-由于...

    Pin Unpin All-crx插件

    语言:English 一个按钮以引脚或取消窗口中的所有选项卡。 ***新图标颜色与黑暗主题一起使用! **** 切换当前窗口中所有选项卡的固定或取消。 按按钮基于活动选项卡的状态切换。

    frida-xamarin-unpin:Frida脚本绕过Xamarin证书固定实现

    在应用程序启动后,只需运行frida -U -l dist/xamarin-unpin.js com.your.app 。 技术细节 在Mono运行时的最新版本(Xamarin> = 10.x,Mono> = 6.0)上,该脚本通过创建默认的HttpClientHandler并钩住HttpClient基类...

    取消固定「Unpin」-crx插件

    一旦API支持,我们将支持标记项目被读取。 版本1.0.5.6中的更改 - 停止使用用户/密码进行身份验证,以支持新的API令牌。 版本1.0.5.5中的更改 - 改进的错误处理。 版本1.0.5.4中的更改 - 修复了几个错误 版本1.0....

    指定共享驱动盘或者文件夹的网络代码-精品源代码

    指定共享驱动盘或者文件夹的网络代码-精品源代码

    mac0S_brew慢的问题.zip brew使用国内镜像解决下载慢的问题

    Mac下使用国内镜像安装Homebrew,解决brew在mac下安装软件下载慢的问题,zip包内已经替换了国内镜像文件, Mac OS 安装 brew 已经替换国内源,直接使用即可 1.把 brew_install 复制到 /users目录 2.安装 ruby ./...

    Treely: Tree Style Tab Manager-crx插件

    缺省情况下,从当前选项卡打开的任何新选项卡都被组织为当前分支的“Child”,并在菜单中的当前选项卡下显示。 可以通过切换分支选项卡前面的箭头符号来显示分支的子项。 在您在浏览Internet时,它对于在类似主题上...

    RegexBuddy3.6.0最新注册版

    Windows 8: Uninstall shortcut is no longer pinned to the start screen by the installer (but it won't unpin any shortcuts that were previously pinned). Bug fixes: GREP: Trying to open a RegexBuddy ...

    StackOverflow - Order Answers by Votes-crx插件

    在其他情况下,请求者过于友善,并且将接受的答案授予给出半开端答案的第一个人。这些问题已在https://meta.stackoverflow.com/questions/326095/please-unpin-the-accepted-answer-from-the-top中进行了讨论,但是...

    vscode-docs-view:VS Code扩展,在侧边栏或面板中显示悬停文档

    默认情况下,“文档”视图显示在面板中。 只需拖动即可移至其他视图或面板。 在docs视图中支持语法突出显示和markdown渲染。配置docsView.documentationView.updateMode —控制光标移动时如何更新文档视图。 可能的...

    Hot Tab 2.0-crx插件

    默认情况下,热键如此: 向左移动:cmd / ctrl + shift + left 移动右:cmd / ctrl + shift +右 PIN / UNPIN选项卡:CMD / CTRL + SHIFT + DOWN 关闭其他选项卡:CMD / CTRL + SHIFT + K 如果您有任何问题/想法,请...

    Chrome:trade_mark:键盘控制「Keyboard Control for Chrome:trade_mark:」-crx插件

    --焦点---焦点第一文本输入模糊焦点焦点下一个可编辑元素焦点上一个可编辑元素---关闭/恢复-关闭当前标签页关闭左侧标签页关闭右侧标签页关闭其他标签页关闭当前窗口恢复关闭的标签页--- pin / unpin --- pin / ...

    StackOverflow - 通过投票来回答问题「StackOverflow - Order Answers by Votes」-crx插件

    在其他情况下,请求者过于友善,并且将接受的答案授予给出半开端答案的第一个人。 这些问题已在https://meta.stackoverflow.com/questions/326095/please-unpin-the-accepted-answer-from-the-top中进行了讨论,但是...

    nodebb-plugin-topic-events:NodeBB插件,显示内联主题事件

    nodebb-plugin-topic-events NodeBB插件,显示内联主题事件。安装转到您的nodeBB安装: cd /var/nodebb/ 将插件克隆到./node_modules/文件夹中...raw=true)* pin / unpin ![](assets/pinned.png?raw=true) ![](assets/u

    点击“自制”公式:“自制”公式的集合

    贾里·萧(Jarry Shaw)的作品和收藏品的自制啤酒用法使用以下命令将此分接头添加到本地Homebrew安装中。 $ brew tap jarryshaw/tap$ brew tap-pin jarryshaw/tap# to install ... $ brew tap-unpin jarryshaw/tap公式

    tophat:Rust 中的一个小型、实用且灵活的异步 HTTP 服务器库

    大礼帽 ... 目前处于测试阶段。 货物.toml: tophat = "0.3.0" ... where W: AsyncRead + AsyncWrite + Clone + Send + Sync + Unpin + 'static, { // Default `send` is 200 OK let done = resp_wtr. send ()?;

    Keepin' Tabs – tabs manager-crx插件

    功能: - 按标题和URL搜索(刚开始键入 - 无需单击“搜索”) - 打开扩展的键盘快捷键(见下文) - 域名 - 拖动手动重新订购 - 重新加载 - PIN / UNPIN- 关闭 - 使用向上,向下,然后输入键以导航您的选项卡列表 - ...

    pin-it-bot:Discord漫游器,允许用户将其邮件固定在附件中。 对于人们可以张贴艺术品的渠道很有用

    会员可以使用pin>unpin取消其最新的图钉。 Mod命令 pin>prefix [prefix] 更改前缀。 pin>channel add/remove 在使用机器人的通道列表中添加或删除使用此命令的通道。 pin>role [role] 将未来限制为具有特定...

Global site tag (gtag.js) - Google Analytics