当前位置:文档之家› 使用链路实现数据实时自动远程传输

使用链路实现数据实时自动远程传输

SQL> select * from global_name; #查看全局数据名SQL> grant create database link to hr10; #授权HR10用户建立链路权限SQL〉create database link shilei connect to hr10 identified by hr10 using ''; 在HR10用户下建立远程链路SQL> select * from tab@;链路远程查询SQL〉create table y_dept as select * from dept@; 远程复制一张表SQL> select * from user_db_links;查询链路数据字典SQL> drop database link 数据库链路名#####删除链路在SYS/SYSTEM用户下授权建立公共链路:SQL〉CREATE PUBLIC DATABASE LINK CONNECT TO hr10 IDENTIFIED BY hr10 USING'shilei';另一种写法:SQL〉CREATE PUBLIC DATABASE LINK USING 'shilei'; #操作两个同名用户中的任意实体查询公共链路信息:SYSTEMSQL〉SELECT * FROM DBA_DB_LINKS;与SQL〉SELECT * FROM USER_DB_LINKS;删除公共链路:SQL〉DROP PUBLIC DATABASE LINK 公共链路名;二、使用链路实现数据实时自动远程传输创建数据触发器:INSERDEPT(触发器名称)、EACH ROW(行级)1、数据插入触发器:SQL〉CREATE OR REPLACE TRIGGER INSERDEPT AFTER INSERT ON DEPT FOR EACH ROW BEGIN INSERT INTO DEPT@ VALUES(:NEW.DEPTNO,:NEW.DNAME,:NEW.LOC);END INSERDEPT;插入数据:SQL> INSERT INTO DEPT VALUES(60,'WWWWW','SONGYUAN');提交完成:SQL> COMMIT;显示错误:SQL〉SHOW ERRORS查询触发器数据字典:SQL〉select triggter_name from user_triggters;查询触发器代码:SQL>select triggter_body from user_triggters where triggter_name='inserdept' ;2、创建更新触发器:SQL>create or replace triggterupddept after update on dept for each row begin update dept@ setdeptno=:new.deptno,dname=:new.dname,loc=:new.loc where deptno=:old.deptno and dname=:old.dname and loc=:old.loc; end updept;SQL>/ #触发生成执行3、删除触发器:SQL〉DROP TRIGGER触发器名字;4、数据删除触发器:SQL>create or replace triggterdeldeptafter delete on dept for each rowbegin delete from dept@wheredeptno=:old.deptno;enddeldept;sql>delete from dept where deptno=40;sql>commit;5、触发器三合一:SQL>create or replace triggterchangdeptafter insert or update or delete on dept for each rowbeginifinserting then insert into dept@VALUES(:NEW.DEPTNO,:NEW.DNAME,:NEW.LOC);update dept@setdeptno=:new.deptno,dname=:new.dname,loc=:new.loc where deptno=:old.deptno and dname=:old.dname and loc=:old.loc;elsif deleting thendelete from dept@wheredeptno=:old.deptno;end if;endchangdept;SQL〉/6、查看触发器有效状态SQL〉Selecttrigger_name,table_name,status from user_triggers;7、用户审计:建立表:SQL>create table audit_info (name varchar2(30),op varchar(30),ttime date,s1int,s2int,s3 varchar2(30),s4 varchar2(30));本机创建触发器:(必须在sys/sysem下建立链路并生成触发器)SQL>create or replace trigger sys_a1after logon on databasebegininsert into audit_info@(name,op,ttime) values(user,'进入系统',sysdate);end;SQL〉/SQL>create or replace trigger sys_a2after logoff on databasebegininsert into audit_info@(name,op,ttime) values(user,'离开系统',sysdate);end;SQL〉/监控操作:create or replace triggeraudit_opafter insert or updata or delete on deptfor each rowbeginif inserting theninsert into audit_info@ values(user,'插入数据',sysdate,:new.deptno,:new.dname,:new.loc,null);insert into audit_info@@ values(user,'删除数据',sysdate,:old.deptno,:old.dname,:old.loc,null);end;三、定时自动传输快照(snapshots)主节点(master)辅节点(snapshots)语法:1、授权(辅节点)Sys/systemSQL〉Grant create snapshots to 用户名;2、创建快照(辅节点)SQL〉create snapshot 快照名;Refresh 刷新方式—complete,fast,forceNext 时间间隔With primary key(表有主键)As select 字句语法说明:Complete—完全刷新Fast—增量刷新Force—Sysdata+1(每天传一次)、sysdata+1/24(每小时传一次)、sysdata+1/1440(每分钟传一次)固定时间刷新:next_day(trunk(sysdata),’星期日’)+22/243、创建快照日志(主节点)SQL〉create snapshot log on 表名;Refresh 刷新方式—complete,fast,forceNext 时间间隔With primary key(表有主键)As select 字句##############Drop table dept cascade constraints 删除表和关联SQL〉create snapshot deptRefresh forceNext sysdate+1/1440With primary key(表有主键)As select * from dept@;创建快照日志:SQL>CREATE SNAPSHOT LOG ON DEPT;查询快照信息:SQL〉select name,master_owner,master,type,next,master_link from user_snapshots;Name :快照名Master_owner:主节点用户名Master:主节点表名Type:刷新方式Next:时间间隔Master_link:链路名删除快照:SQL〉drop snapshots 快照名;三、数据库闪回概念:数据闪回(flashback)可以实现对于过去某指定时间点数据库中数据的浏览、可以使用基表返回到过去某一时间点,实现逻辑操作错误后,数据库的自我恢复。

(一)查询闪回(查询闪回)查询过去某指定时间点节点基表中数据,恢复错误的删除,更新等SQL〉select * from emp as of timestamp to_timestamp(‘2011.09.22 09:40:00’,’yyyy.mm.ddhh24:mi:ss’);查询到结果后执行数据插入操作:SQL>Insert into empSQL〉select * from emp as of timestamp to_timestamp('2011.09.22 09:40:00','yyyy.mm.dd hh24:mi:ss');SQL〉commit;(二)基表返回指部分数据改动案例:一不小心把工资清零了。

Update emp基表返回A、设置基表允许进行行移动SQL>alter table emp enable row movement;B、实施基表返回SQL〉flashback table emp enable row timestamp to_timestamp('2011.09.22 09:40:00','yyyy.mm.dd hh24:mi:ss');(三)删除闪回显示回收站信息:showrecyclebin闪回drop删除的表:SQL〉flashback table emp to before drop;或SQL〉flashback table “回收站实体名”to before drop;或SQL〉flashback table emp to before drop rename to emp11;注意:表结构更改不能闪回建立与emp一样的emp1表:SQL〉create table emp1 as select * from emp;SQL〉Delete from emp where comm is null;---删除部分数据,不会受自由空间、可以回退SANPSHOT TOO OLD---说明回滚段太小,要删除的数据太多Set autocommit 3SQL>TRUNCATE TABLE EMP;---将删除全部数据保留表结构,回收自由空间、不可回退SQL〉drop table emp;---删除数据及表结构、回收全部空间,不可回退彻底删除表,不在保留:SQL〉dorp table emp1 purge;清除回收站:SQl〉purge recyclebin;关于数据闪回的几点说明:●系统表空间数据不能闪回(管理员所做的系统操作不能闪回)●实体在回收站保留时间不可保证,保留时间取决于系统运行状况,可能保留几秒、也可能保留几个月—---undo表空间里●闪回时建立在基表上的约束不可保证四、数据分区存储(partition);(一)数据分区:把一个表划分成多个存储区域,在创建表结构是考虑分区存储方案,在基表中选取一个或多个列作为分区关键字,该关键字决定哪些数据存储在哪个分区。

相关主题