以下是在后台更新易拓ERP数据库时遇到的一个问题:
1.在DB14数据库中将料件号P44开头,并且品名为"塑料袋"的料件改为消耗性料件.
这个简单: UPDATE DB14.ima_file SET ima70 = ‘Y’ WHERE ima01 like ‘P44%’ AND ima02 = ‘塑料袋’;
2.在以B021开头的工单中,相应的下介料件的消耗性状态也作相应变更. 这个麻烦涉及bmb表和ima表才能确定要更改的记录(因为限定了品名).不能直接用UPDATE,最后写了一个存储过程如下:
DECLARE CURSOR my_table IS (SELECT bmb01,bmb03
from DB14.bmb_file,DB14.ima_file
WHERE bmb03 = ima01
AND bmb01 LIKE 'B021%'
AND bmb03 LIKE 'P44%' AND ima02 = '塑料袋');
BEGIN
FOR tab IN my_table LOOP
UPDATE DB14.bmb_file
SET bmb15 = 'Y'
&nbs ......
首先来复习一下行级锁的机制。当一个事务开始时必选先申请一个TX锁(保护回滚段、回滚数据块),只有先申请到回滚段资源后才能开始一个事务,才能进行DML操作。这个动作完成后,事务就可以开始修改数据了。当修改数据表的记录时,遵循以下的操作顺序。
1.获得表的TM锁(保护事务执行过程中其它用户不能修改表结构)
2.在要修改的数据块头部的ITL表中申请一个空闲表项,记录事务号,实际记录的是这个事务要使用的回滚段地址。
3.修改数据块的某条记录时,设置该记录头部的ITL索引指向第2步申请的表项,然后再修改记录内容。修改前需要在回滚段对记录修改前的记录状态做一个copy。
4.当其它用户想并发修改这条记录时,会根据记录头的ITL索引读取数据块头部ITL表项的内容,查看这个事务是否已经提交。
5.如果没有提交,这个用户会等待前一个用户的TX锁的释放。
从上面的工作机制可以看出,无论一个事务修改多少个表的多少记录,该事务真正需要的只是一个TX锁和每个表的TM锁,内存开销非常小。所谓的行级锁只是数据块头、数据记录头的一些字段。所以ORACLE的行级锁虽然有锁的功能,但是没有锁的开销。
举例证明一下:
会话1:
SQL> select * from test;
  ......
今天看到一篇关于ORA_ROWSCN的文章,虽然简短,没有什么实例,但是已经把ORA_ROWSCN大概是怎么回事介绍清楚了。记录一下。
=================================================================================
默认的情况下,每个块中所有的记录的ORA_ROWSCN都是相同的,当块中任意一条记录发生改变的情况下,块中所有记录的ORA_ROWSCN都会变化为最新值,ORA_ROWSCN的最小粒度是块。
当我们使用create table …… rowdependencies;建表的时候,每条记录会有自己的ORA_ROWSCN段,在这种情况下块内的一条记录的更改仅仅会影响该记录的ORA_ROWSCN,不会对块内其他记录的ORA_ROWSCN产生影响。这个时候,ORA_ROWSCN的最小粒度是记录。
这个功能比较适合那些需要做增量刷新的操作,通过ORA_ROWSCN来迅速的找到那些发生变化的块,忽略那些没有发生变化的块,提高了刷新的效率。
写到这的时候,不知道大家有没有想另外的一个问题,那就是ORA_ROWSCN是怎么实现的,使用ORA_ROWSCN有什么注意的事项么?这是我们大家共同的一个问题,仅仅注意到一个功能积极的部分,很少想这个功能是否适合我,使用这个功能会给系统带来什么样子的风险,而往往风险才是我们需要更多 ......
Oracle 10G 数据库文件目录结构
在Oracle Database 10g中,Oracle的目录结构是由Oracle_Base及其子目录Oracle_Home、admin、flash_recovery_area和oradata目录构成的。为方便讨论,用Oracle_Base代表Oracle目录树的根,用Oracle_Home表示根目录下的主目录。
1.Oracle_Base目录
Oracle_Base代表Oracle目录树的根。如果使用Oracle Universal Installer进行安装,则Oracle_Base是指system_drive:\oracle\product\10.2.0。
2.Oracle_Home目录
Oracle_Home主目录位于system_drive:\Oracle_Base之下,它包含与Oracle软件运行有关的子目录和网络文件以及选定的组件等;若在主机上第一次且只安装了Oracle数据库,没有其他Oracle产品,则使用默认的主目录\db_1;如果在同一台主机的同一个根目录下安装多个产品或安装了第2次,则Oracle_Home主目录会以db_n的形式出现,即db_2、db_3等。这也是为什么在Oracle_Base目录可以有多个Oracle_Home目录的缘故。
Oracle_Home目录中包括的主要子目录有:
?\BIN——主要包含用于数据库管理的各种命令等。
?\css——与Oracle Cluster Synchronization服务有关的文件。
?\dbs——存放数据库服务器端 ......
今天用ajax的post方式传值时,遇到一个问题,始终没有找到问题原因。后来把传的值中单引号去掉后,js正常了。
经过搜索,也没有找到具体原因。最后通过隐藏域来中转该字符串。最后解决这个问题!无语了!备忘!
js部份:
////异步调用服务器信息
function CallServiceInsert()
{
var url="";
var param = "";
var sql = document.getElementById("hidSQL").value; //sql语句中有单引号,如果直接传参会报错。
url = "../ajax/ajaxDelOrInsert.ashx";
param = "strsql=" + sql;
sendRequestPost(url, param,0);
}
前台部份:
<asp:HiddenField ID="hidSQL" runat="server" />
<div class="LoadingMsg" id="LoadingMsg" style="display: none; z-index: 110; height: 20px; position: absolute;top: 10px;">
<img src="../images/ico/trans-done.png" mce_src="images/ico/trans-done.png" style="vertical-align: middle;" mce_style="vertical-align: middle;"> <span id="ShowMsg"></span>
</div>
后台部份:
sql = "此处放置sql语句";
h ......
Ajax Slideshow
http://drupal.org/project/ajax_slideshow
View
CVS instructions
Modules · Content display
udig - October 17, 2009 - 12:05
Sequential presentation of any of your site nodes, using fade effect based on ajax asynchronous calls.
Why?
Indeed there are plenty of slideshow modules out there. So why creating one more?
We had to provide a good answer for the following requirements:
Show a series of content items using the fade effect.
Allow the content manager (non admin role) to fully control the contents & layout of each slide.
Allow the content manager to easily publish / unpublish the slides and set their order of appearance.
Allow the content manager to set the slides intervals.
Ensure the performance is content-agnostic i.e. allow the slideshow content to grow (number of slides and their weight) without impacting the slideshow page load time.
We could not find a module which fully suffice the above requirements (see comparison). Hence Ajax Slideshow was born.
......