--添加修改删除时触发
CREATE OR REPLACE TRIGGER iudTagFun
after insert or update or delete
ON usertest FOR EACH ROW --触发的表
BEGIN
if inserting then -- 触发insert
INSERT INTO usertestinfo
(id,
login_name,
full_name,
dept_id,
state,
type,
sys_update_time)
VALUES
(:new.cn,
:new.login_name,
:new.full_name,
:new.dept_code,
1,
1,
sysdate);
end if;
if updating then
update usertestinfoset login_name=:new.login_name,full_name=:new.full_name,dept_id=:new.dept_code where id=:old.cn;
end if;
if deleting then --触发delete然后做一件事
delete from portal_um_user where id=:old.cn;
end if;
END;
dblink+merge双机热备实例
--查询是否已经存在权限
select * from user_sys_privs where privilege like upper('%DATABASE LINK%');
--没有权限创建选权限用dba创建 ydc=用户名
grant CREATE PUBLIC DATABASE LINK,
DROP PUBLIC DATABASE LINK to ydc;
--创建DBlink连接
create public database link dblink02
connect to scott identified by admin
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)
(HOST = 192.168.18.128)
(PORT = 1521)))
(CONNECT_DATA =(SERVICE_NAME = orcl)))';
--查询连接是否成功
select * from T_CLOB@dblink01
select * from Test01@dblink02
--删除DBlink
drop public database link dblink01
--建表语句
create table Test01
(
id VARCHAR2(100),
name varchar2(100),
password varchar2(100)
)
insert into Test01 values('1','王总','admin');
insert into Test01 values('2','王总','admin');
insert into Test01 values('3','王总','admin');
select * from Test01
--Merger数据备份
--第一行 命名目标表并给别名T1
MERGE INTO Test01@dblink02 T1
--第二行 using子句提供merge操作的数据源,命名T
USING (select id,name,password from test01) T
--第三行 on子句指定合并的条件
ON ( T1.ID = T.ID)
--第四行 when matched then 子句判定条件符合则对表T1做什么改变(或删除)
WHEN MATCHED THEN UPDATE SET T1.NAME = T.NAME --更新字段
--第五行 when not matched then 子句判断条件不符合则插入的操作
WHEN NOT MATCHED THEN INSERT VALUES (T.ID, T.name, T.password); -- 添加新字段
--创建一个存储过程
create or replace procedure p_test as
begin
--第一行 命名目标表并给别名T1
MERGE INTO Test01@dblink02 T1
--第二行 using子句提供merge操作的数据源,命名T
USING (select id,name,password from test01) T
--第三行 on子句指定合并的条件
ON ( T1.ID = T.ID)
--第四行 when matched then 子句判定条件符合则对表T1做什么改变(或删除)
WHEN MATCHED THEN UPDATE SET T1.NAME = T.NAME --更新字段
--第五行 when not matched then 子句判断条件不符合则插入的操作
WHEN NOT MATCHED THEN INSERT VALUES (T.ID, T.name, T.password); -- 添加新字段
end;
--开启定时任务
Declare
i Integer;
Begin
dbms_job.submit(i,'p_test;',Sysdate,'sysdate+1/24');
end;
-- 4.运行执行计划
Declare
jobno Integer;
Begin
-- 查找计划号
Select t.JOB into jobno From User_Jobs t ;
-- 运行制定的执行计划
dbms_job.run(jobno);
end;
-- 5.查看任务队列情况
select job,next_date,next_sec,failures,broken from user_jobs;
--6.查看任务执行情况
select id,name from test01 order By id;
-- 7.停止执行计划
Declare
jobno Integer;
Begin
-- 查找计划号
Select t.JOB into jobno From User_Jobs t ;
-- 停止计划,不再继续执行
--dbms_job.broken(jobno,True);
-- 停止计划,并在两分钟后继续执行
dbms_job.broken(jobno,True,Sysdate+(2/24/60));
end;
--8.删除执行计划
Declare
jobno Integer;
Begin
-- 查找计划号
Select t.JOB into jobno From User_Jobs t ;
dbms_job.remove(jobno);
end;