以下的文章主要介绍的是Oracle delete的执行过程 我们大家都知道Oracle delete与Commit的实际操作的相关流程的具体分析 以下就是对其实际的操作流程的介绍 望你在浏览之后会有所收获
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了邛崃免费建站欢迎大家使用!
( )删除(delete)流程
Oracle读Block(数据块)到Buffer Cache(缓冲区)(如果该Block在Buffer中不存在)
在Redo Log Buffer(重做日志缓冲区)中记录Oracledelete操作的细节
在相应回滚段段头的事物表中创建一个Undo(回滚)条目
把将要删除的记录创建前镜像 存放到Undo Block(回滚块)中
在Buffer Cache中的相应数据块上删除记录 并且标记相应的数据块为Dirty(脏)
( )提交(Commit)流程
Oracle产生一个SCN
在回滚段事物表中标记该事物状态为Commited
LGWR(日志读写进程)Flush Log Buffer到日志文件
如果此时数据块仍然在Buffer Cache中 那么SCN将被记录到Block Header上 这被称为快速提交
lishixinzhi/Article/program/Oracle/201311/18643
sqlplus或者pl/sql
sql窗口
输入(单独调用存储过程):
无参数
exec
过程名;
或者
begin
过程名
end;
in
参数
exec
过程名(入参数..);
或者
begin
过程名(入参数...)
end;
out参数,in
out参数
variable
绑定变量名
数据类型;
//定义一个变量接收出参数的值;
exec
过程名(:绑定变量名);
用job
oracle定时器调用存储过程
1、创建一个表,为了能清楚看到定时器的运行情况我们创建一个带有日期字段的表
Sql代码
create table job_table(run_time date);
create table job_table(run_time date);
2、创建存储过程
Sql代码
create or replace procedure job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
create or replace procedure job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
3、创建job,并且指定为一分钟执行一次
Sql代码
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
4.创建之后自动处于运行状态,我们查询job表,看看我们创建的job
Sql代码
select job,broken,what,interval,t.* from user_jobs t;
select job,broken,what,interval,t.* from user_jobs t;
job broken what interval ...
81 N job_proc; TRUNC(sysdate,'mi') + 1 / (24*60) ...
用job
oracle定时器调用存储过程
创建一个表,为了能清楚看到定时器的运行情况我们创建一个带有日期字段的表
Sql代码
create table job_table(run_time date);
create table job_table(run_time date);
2.创建存储过程
Sql代码
create or replace procedure job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
create or replace procedure job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
3.创建job,并且指定为一分钟执行一次
Sql代码
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
4.创建之后自动处于运行状态,我们查询job表,看看我们创建的job
Sql代码
select job,broken,what,interval,t.* from user_jobs t;
select job,broken,what,interval,t.* from user_jobs t;
job broken what interval ...
81 N job_proc; TRUNC(sysdate,'mi') + 1 / (24*60) ...