转:http://hi.baidu.com/mcj0127/blog/item/111a900777db06c87b89473c.html
SELECT FOR UPDATE 相关的知识
一个邮件发送的应用会每过一定的时间片去数据库中取未发的邮件然后发送邮件,成功后将数据库中邮件标识未发改为已发。
这个应用部署在websphere上,websphere采用是垂直克隆,有4个server,当4个server都开启的时候,就出现同时发4封相同的邮件给同一个用户。
这时,for update锁就可以解决这个问题!
1:状态解释
statement: 一个SQL语句。
session: 一个由ORACLE用户产生的连接,一个用户可以产生多个SESSION ,但相互之间是独立的。
transaction:所有的改变都可以划分到transaction里,一个transaction包含一个或多个SQL。当一个SESSION建立的时候就是一个TRANSACTION开始的时刻,此后 transaction的开始和结束由DCL控制,也就是每个COMMIT/ROLLBACK都标示着一个transaction的结束。
consistency:是对于statement级别而不是transaction级别来说的。sql statement 得到的数据都是以sql statement开始的IMAGE。
2:sql解释
LOCK的基本情况: update, insert ,delete, select ... for update会LOCK相应的ROW 。
只有一个TRANS ......
Oracle 无监听程序
近日本地的Oracle数据库无法连接,抛出无监听程序错误,baigoogledu一下,总结了如下解决方案:
First:
一、运行监听器
在CMD中输入以下内容:
C:>lsnrctl
LSNRCTL for 32-bit Windows: Version 8.1.6.0.0 - Production on 14-3月 -2003 14:17
:51(c) Copyright 1998, 1999, Oracle Corporation. All rights reserved.
欢迎来到LSNRCTL,请键入"help"以获得信息。
LSNRCTL> status
连接至(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=robust)(PORT=1521)))
TNS-01103: 地址的协议专用组件指定不正确
TNS-12541: TNS:无监听器
TNS-12560: TNS:协议适配器出现错误
TNS-00511: 无监听器
32-bit Windows Error: 61: Unknown error
LSNRCTL> start
启动tnslsnr:请稍候...
Failed to start service, error 3.
TNS-12536: TNS:可能会阻碍*作
TNS-12560: TNS:协议适配器出现错误
TNS-00506: *作可能阻塞
32-bit Windows Error: 997: Unknown error
二、解决
修改 listerner.ora(..ora92networkadmin),文件,确 ......
Tkprof是一个用于分析Oracle跟踪文件并且产生一个更加清晰合理的输出结果的可执行工具。如果一个系统的执行效率比较低,一个比较好的方法是通过跟踪用户的会话并且使用Tkprof工具使用排序功能格式化输出,从而找出有问题的SQL语句。
一. TKPROF 命令语法:
TKPROF filename1, filename2 [ SORT = [ opion][,option] ]
[ PRINT = integer ]
[ AGGREGATE = [ YES | NO ] ]
[ INSERT = filename3 ]
[ SYS = [ YES | NO ] ]
[ [ TABLE = schema.table ] | [ EXPLAIN = user/password ] ]
[ RECORD = filename ]
相关说明:
filename1 指定的输入文件,可以是多个文件联起来。
Filename2 格式化输出文件。
SORT 在 ......
今天初次接触Ajax那么我将我的学习记录下来,最近记性不太好。备忘吧
1、首先从网路上下载Ajax扩展包,VS2008只是带着最基础的三个Ajax控件。那么我们下载AjaxControlToolkit控件,将下载后的压缩包解压。找出AjaxControlToolkit.dll所在位置。
2、在VS2008中,随意找一个选项卡,或者,新建一个选项卡来放入我们所加入的组件。 选择选项卡点击右键,在弹出的菜单中选择“选择项”条目。如下
3、在弹出的窗体中选择.net Framework选项卡,点击浏览。选中上面AjaxControlToolkit.dll,选择上面两项,点击确定。你选择的选项卡中就会多出一系列Ajax控件。
4、使用:
将工具栏中的控件拖入代码编辑器中(直接拖入界面你会发现他娘的根本拖不进去,起初以为控件安装有问题,后来发现根本不是那么回事)
5、现在你可以使用了。补充说明下,根本不需要什么配置。
在你拖入Ajax控件的同时,程序会自动加入如下。你要做的就是直接使用了
......
1:Ajax可以通过JavaScript的XMLHttpRequest对象与服务器进行通信,通过XMLHttpRequest,JavaScript可以在不重载页面的情况下与服务器进行通信。
2:XMLHttpRequest 浏览器支持
<script type="text/javascript">
function ajaxFunction()
{
var xmlHttp;
try
{
xmlHttp=new XMLHttpRequest();
//尝试Firefox浏览器
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
//尝试IE6.0
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
//尝试IE5.5
}
catch (e)
{
alert("您的浏览器不支持AJAX!");
return false;
}
}
}
}
</script>
3: onreadystatechange 属性 指定服务器处理完请求后需要调用的回调函数
4:readyState存放服务器相应的状态,4代表请求已经完成
......
AJAX的分页,实现思路是:
1.利用$.fn.extend在JQuery框架下扩展pager类
2.将获取记录总数与相应页记录的后台方法,写在继承自IHttpHandler类的Handler.ashx.cs类,当然实际上用aspx.cs文件写后台方法也没问题,但由于.ashx.cs文件无需处理页面诸多事件因而效率更高。
3.在呈现页面上加载pager类
以下是实现的代码:
1.扩展pager类:extend.js
(function($){ $.fn.extend({ pager: function(totalCount,options) { var opts = jQuery.extend({ pageSize:10, callback:function(){} }, options); return this.each(function(){ var panel = $(this); function pageCount(){ return Math.ceil(totalCount/opts.pageSize); } function selectPage(type){ return function(){ var page = parseInt($('#currentPage').val()); if(type=='first') $('#currentPage').val('1'); ......
AJAX的分页,实现思路是:
1.利用$.fn.extend在JQuery框架下扩展pager类
2.将获取记录总数与相应页记录的后台方法,写在继承自IHttpHandler类的Handler.ashx.cs类,当然实际上用aspx.cs文件写后台方法也没问题,但由于.ashx.cs文件无需处理页面诸多事件因而效率更高。
3.在呈现页面上加载pager类
以下是实现的代码:
1.扩展pager类:extend.js
(function($){ $.fn.extend({ pager: function(totalCount,options) { var opts = jQuery.extend({ pageSize:10, callback:function(){} }, options); return this.each(function(){ var panel = $(this); function pageCount(){ return Math.ceil(totalCount/opts.pageSize); } function selectPage(type){ return function(){ var page = parseInt($('#currentPage').val()); if(type=='first') $('#currentPage').val('1'); ......