插入,删除log 请问Oracle 的 数据操作写到那个log里面。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CREATE OR REPLACE PROCEDURE "PROC_WRITE_LOG" (filecontent varchar2, filename varchar2) is ifle_write_handle utl_file.file_type; status_failure VARCHAR2(2000);begin ifle_write_handle := utl_file.fopen('DATA_PUMP_DIR', to_char(sysdate,'yyyymm')||filename, 'a'); utl_file.put(ifle_write_handle, to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') ||' '|| filecontent); utl_file.fclose(ifle_write_handle);EXCEPTION WHEN OTHERS THEN status_failure := TO_CHAR(SQLCODE) || ': ' || SUBSTR(SQLERRM, 1, 980); insert into system_proc_write_log values (filename, filecontent, status_failure, sysdate);end; 我的意思,对数据库操作,比如 新增数据,删除数据之类。Oracle 会自动去写log,这些log在什么地方。 REDO01.LOGREDO02.LOGREDO03.LOG是这个吗 oracle进行增删改时会写UNDO和REDO,和编辑器中的UNDO和REDO类似。UNDO记录在UNDO表空间(以前叫回滚段),用于事务处理的ROLLBACK等。REDO记录在在线重做日志文件中(文件名类似:REDOxxx.LOG),主要用于数据库恢复。在线REDO日志文件是重复使用的,只有开启了归档模式,才能在在线日志文件被覆盖之前归档保存。 /*我们对数据库的insert,delete,update这三个操作会生成undo和redooracle redo:oracle重做日志文件,分为两类:在线(online)和归档(archived)重做日志文件‘万一实例或者介质失败,这两种日志都是用于恢复;redo用于在失败时重放事物;oracle undo:在你对数据库进行修改时,数据库会生成undo信息,如果你执行的事物或者语句失败了,或你在执行语句之后rollback了,生成的undo信息用来就可以帮助你将数据库恢复到修改之前的样子。undo用于取消一条语句或者一组语句的作用。undo信息存储在undo segment中。关于undo,其实就是将你修改的对象恢复到修改之前的状态:对于insert,oracle会完成相应的delete,对于delete,oracle会执行相应的insert,对于update,oracle会执行一个反update,或者另一个update。redo和undo协同工作:insertinsert into当你向表中写入数据是,也一并生成了undo和redo,undo保存在undo segment中,redo保存在重做日志缓冲区中。如果commit了,那么重做日志缓冲区中的redo会全部写入磁盘中,而且是永久的。但是undo segment中的undo信息并不会被刷新或者生成什么永久的文件,当下一个事物重用这些undo segment时,上一次写入undo的信息就被刷新了。update与insert相比,update生成的undo量更大,因为undo肩负着如果事物语句失败,恢复数据的操作。我们都知道,update其实是delete和insert两个操作组合而成的,所以,如果一旦事物失败,undo信息将会非常有用。这就是update生成的undo比较大的原因。update生成的redo在重做日志缓存区写满后也会写入磁盘。deletedelete也会生成undo和redo,redo记录了操作过程和信息,undo用于如果用户操作完成后执行rollback。commitcommit操作,将会把我们上面三个操作产生的redo写入重做日志文件里面,而undo则存在undo segment中,直到下一个事物刷新这个undo segment*/ 一个查询语句。解决马上结贴。 问个SQL语句的问题,百思不得其解 80ORA-12571:TNS:包写入程序失败如何解决 求助高手oracle的包中怎么使用cursor最好详细点谢谢!!! 解释一下日期处理大全里这段话的意思? select z1,z2,z3,z4 from t order by decode(z3,null,0,1) 两个DB中数据同步的问题 在创建并启动ORACLE例程的时候出现:ORA-12638 身份证明检索失败 初学者的问题` 数据库存储过程 新人求助!触发器的问题! 数据备份介绍点经验
filename varchar2) is
ifle_write_handle utl_file.file_type;
status_failure VARCHAR2(2000);
begin
ifle_write_handle := utl_file.fopen('DATA_PUMP_DIR', to_char(sysdate,'yyyymm')||filename, 'a');
utl_file.put(ifle_write_handle,
to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') ||' '|| filecontent);
utl_file.fclose(ifle_write_handle);
EXCEPTION
WHEN OTHERS THEN
status_failure := TO_CHAR(SQLCODE) || ': ' || SUBSTR(SQLERRM, 1, 980);
insert into system_proc_write_log
values
(filename, filecontent, status_failure, sysdate);
end;
REDO02.LOG
REDO03.LOG
是这个吗
UNDO记录在UNDO表空间(以前叫回滚段),用于事务处理的ROLLBACK等。
REDO记录在在线重做日志文件中(文件名类似:REDOxxx.LOG),主要用于数据库恢复。
在线REDO日志文件是重复使用的,只有开启了归档模式,才能在在线日志文件被覆盖之前归档保存。
/*
我们对数据库的insert,delete,update这三个操作会生成undo和redo
oracle redo:
oracle重做日志文件,分为两类:在线(online)和归档(archived)重做日志文件‘
万一实例或者介质失败,这两种日志都是用于恢复;
redo用于在失败时重放事物;
oracle undo:
在你对数据库进行修改时,数据库会生成undo信息,如果你执行的事物或者语句失败了,
或你在执行语句之后rollback了,生成的undo信息用来就可以帮助你将数据库恢复到修改
之前的样子。undo用于取消一条语句或者一组语句的作用。undo信息存储在undo segment中。
关于undo,其实就是将你修改的对象恢复到修改之前的状态:
对于insert,oracle会完成相应的delete,
对于delete,oracle会执行相应的insert,
对于update,oracle会执行一个反update,或者另一个update。redo和undo协同工作:
insert
insert into当你向表中写入数据是,也一并生成了undo和redo,undo保存在undo segment中,
redo保存在重做日志缓冲区中。如果commit了,那么重做日志缓冲区中的redo会全部写入磁盘中,
而且是永久的。但是undo segment中的undo信息并不会被刷新或者生成什么永久的文件,
当下一个事物重用这些undo segment时,上一次写入undo的信息就被刷新了。
update
与insert相比,update生成的undo量更大,因为undo肩负着如果事物语句失败,恢复数据的操作。
我们都知道,update其实是delete和insert两个操作组合而成的,所以,如果一旦事物失败,
undo信息将会非常有用。这就是update生成的undo比较大的原因。
update生成的redo在重做日志缓存区写满后也会写入磁盘。
delete
delete也会生成undo和redo,redo记录了操作过程和信息,undo用于如果用户操作完成后执行rollback。
commit
commit操作,将会把我们上面三个操作产生的redo写入重做日志文件里面,而undo则存在undo segment中,
直到下一个事物刷新这个undo segment
*/