oracle 查询每天写入的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 查询每天写入的数据相关的知识,希望对你有一定的参考价值。

现在有一个oracle库,每天往数据库里写入2000多条数据,但是没有时间列 也不能添加时间列
现在要求对这每天新写入的2000条数据单独查询出来应该怎么做?
听说做数据比较好像可以,但是要如何实现呢?而且有一部分数据是用户修改以后重新写入数据库的 这里要对数据做判断,老数据修改不记录,只记录新写入的数据
联系我 RMB求助

解决方案如下:
创建已将日志表log,用于记录当天记录,log中有时间列,有id列,用于定位数据库中对应的表中的主键。
然后建立insert触发器,每次插入数据时,生成log表。

查询数据时,使用log表关联被查询表,通过log中的时间列进行过滤,从而实现按指定日期查询的目的。

不建议使用比较,使用比较是需要参照表的,你现在应该是做不到。而且比较的性能并不高。追问

按照你说的似乎很好实现,能不能排除修改的数据呢?也就是只搞定当天写入的新数据 不包含对老数据的修改记录

追答

可以的。之前的回答说过了。建立insert触发器,只在插入操作是触发。

参考技术A 只是想处理当天新写入的2000条吗?
如果只是查询当天新写入的,简单得很
参考技术B 如果2000多条的数据量,你可以在你所关注的表上面建个insert触发器来得最快,将数据主键和插入时间存到一张日志表中,每天两千条的数据量 ,对一个普通的oracle数据库来说加上触发器毫无压力,要不嫌麻烦你可以做个细粒度审计。 参考技术C 用触发器单放一个表吧。新表你应该可以加上你想要的时间字段吧。到时候你再把这个表作为范围框定你的查询范围。 参考技术D 可以建个触发器,把写入变化情况记录下来,这样就可以根据时间查询了。 第5个回答  2012-11-29 触发器

oracle数据库如何每天自动执行脚本完成正式数据库到备份数据库的备份

楼主:供参考
利用任务计划、批处理文件和ORACLE的EXP导出功能,可以根据日期自动生成ORACLE备份文件,大大方便了ORACLE数据备份。
建议一(做周备份并压缩为RAR)以下为ORACLE 自动备份批处理文件内容,请配合任务计划实现 :
例:
@ECHO OFF
SET BACKPATH=d:\
ECHO 准备备份数据库
REM 7天一个循环
IF EXIST %BACKPATH%\ONE GOTO ONE
IF EXIST %BACKPATH%\TWO GOTO TWO
IF EXIST %BACKPATH%\THREE GOTO THREE
IF EXIST %BACKPATH%\FOUR GOTO FOUR
IF EXIST %BACKPATH%\FIVE GOTO FIVE
IF EXIST %BACKPATH%\SIX GOTO SIX
IF EXIST %BACKPATH%\SEVEN GOTO SEVEN
ECHO E > %BACKPATH%\ONE
:ONE
SET BACKPATH_FULL=%BACKPATH%\ONE
REN %BACKPATH%\ONE TWO
GOTO BACK
:TWO
SET BACKPATH_FULL=%BACKPATH%\TWO
REN %BACKPATH%\TWO THREE
GOTO BACK
:THREE
SET BACKPATH_FULL=%BACKPATH%\THREE
REN %BACKPATH%\THREE FOUR
GOTO BACK
:FOUR
SET BACKPATH_FULL=%BACKPATH%\FOUR
REN %BACKPATH%\FOUR FIVE
GOTO BACK
:FIVE
SET BACKPATH_FULL=%BACKPATH%\FIVE
REN %BACKPATH%\FIVE SIX
GOTO BACK
:SIX
SET BACKPATH_FULL=%BACKPATH%\SIX
REN %BACKPATH%\SIX SEVEN
GOTO BACK
:SEVEN
SET BACKPATH_FULL=%BACKPATH%\SEVEN
REN %BACKPATH%\SEVEN ONE
GOTO BACK
:BACK
EXP ccense/ccense FILE=%BACKPATH_FULL%.DMP
RAR a %BACKPATH_FULL%.rar %BACKPATH_FULL%.DMP
DEL %BACKPATH_FULL%.DMP
SET BACKPATH=
SET BACKPATH_FULL=
EXIT
说明:
文件名以星期来命名
备份后调用rar进行压缩
这样可以保存一个星期的历史数据
注意:需要把program files/winrar目录下的rar.exe拷贝到系统system32目录下
建议二:
1,批处理文件backup.bat\.
exp system/manager file=d:\backup\oracle\oracle%date:~0,10%.dmp owner=system log=d:\backup\oracle\oracle%date:~0,10%.log
将生成oracle2006-01-09.dmp文件
exp system/manager file=d:\backup\oracle\oracle%date:~11,3%.dmp owner=system log=d:\backup\oracle\oracle%date:~11,3%.log
将生成oracle星期一.dmp文件,则每周循环保留一个备份文件,共7个备份文件循环 $date$日期参数可灵活运用。
参考技术A 我不知道你用的是什么工具,如果是PL/SQL的话,看左边的菜单栏,有个jobs ,或者有一个dbms_job 好像,在那里面配置一些参数就可以让脚本每天到时间自动执行。追问

我使用的是PLSQL,但没用过jobs,能麻烦告诉我详细步骤吗?另外,脚本是直接写的表备份语句吗?

参考技术B 写个脚本完成正式数据库到备份数据库的备份
再设定Task Schedule 每天某个时间自动执行这个脚本
参考技术C 写个脚本定时调用存储过程就好了。

以上是关于oracle 查询每天写入的数据的主要内容,如果未能解决你的问题,请参考以下文章

oracle查询每天两个时间点间的数据

oracle查询每天某个时间段的数据

Oracle 查询一个月内每天指定时间段内的数据量

python查询数据库并将结果写入Excel,保存至本地

Oracle 查询每天执行慢的SQL

Oracle 查询每天执行慢的SQL