从数据库中恢复数据

挑战! 工作人员的记录已被错误地删除,可能被恶意删除了,我们希望找到执行该记录的用户,他们在什么时间进行记录,还可以将数据恢复到执行该记录之前,以便我们可以比较同一数据的前后版本。

这就是删除器所做的。 他们以其他用户身份连接。

CONN SCOTT /老虎;

SELECT * FROM emp;

EMPNO ENAME职位MGR雇用SAL COMM DEPTNO

7499艾伦推销员7698 20-FEB-81 1600 300 30

7521沃德推销员7698 22-FEB-81 1250 500 30

7566琼斯经理7839 02-APR-81 2975 20

7654马丁推销员7698 28-SEP-81 1250 1400 30

7698刹车管理器7839 01-MAY-81 2850 30

7782克拉克经理7839 81年6月9日2450 10

7788斯科特分析仪7566 19-APR-87 3000 20

7839国王总统(11月17日)5000 10

7844特纳销售员7698 08-SEP-81 1500 0 30

7876亚当斯秘书7788 23-MAY-87 1100 20

7900詹姆斯文员7698 03-DEC-81 950 30

7902福特ANALYST 7566 03-DEC-81 3000 20

7934米勒秘书7782年1月23日1300 10

从EMPNO = 7499的EMP删除;

DBA安全人员在发出此查询时会发现问题。

SELECT * FROM emp; -雇员已从emp表中消失。

EMPNO ENAME职位MGR雇用SAL COMM DEPTNO

7521沃德推销员7698 22-FEB-81 1250 500 30

7566琼斯经理7839 02-APR-81 2975 20

7654马丁推销员7698 28-SEP-81 1250 1400 30

7698刹车管理器7839 01-MAY-81 2850 30

7782克拉克经理7839 81年6月9日2450 10

7788斯科特分析仪7566 19-APR-87 3000 20

7839国王总统(11月17日)5000 10

7844特纳销售员7698 08-SEP-81 1500 0 30

7876亚当斯秘书7788 23-MAY-87 1100 20

7900詹姆斯文员7698 03-DEC-81 950 30

7902福特ANALYST 7566 03-DEC-81 3000 20

7934米勒秘书7782年1月23日1300 10

鉴于数据库很长一段时间都没有重新启动,因此DBA很有可能能够收集证据,使他们能够查找发生了什么以及是否存在恶意活动。

DBA安全人员需要知道记录了哪些审核。

SELECT NAME,值来自v $ parameter WHERE NAME,如'audit%'

SQL> SELECT NAME,值FROM v $ parameter WHERE NAME LIKE'audit%';

名称

-------------------------------------------------- --------------------

-------------------------------------------------- --------------------

audit_sys_operations

audit_file_dest

E:\ ORACLE \ PRODUCT \ 10.2.0 \ ADMIN \ XP10R2JAN \ ADUMP

audit_trail

D B

正在对数据库进行审核

SQL> desc dba_audit_trail;

名称为空? 类型

----------------------------------------- --------- --------------------------

OS_USERNAME VARCHAR2(255)

用户名VARCHAR2(30)

USERHOST VARCHAR2(128)

终端VARCHAR2(255)

时间戳不是空日期

所有者VARCHAR2(30)

OBJ_NAME VARCHAR2(128)

动作非空数

ACTION_NAME VARCHAR2(27)

NEW_OWNER VARCHAR2(30)

NEW_NAME VARCHAR2(128)

OBJ_PRIVILEGE VARCHAR2(16)

SYS_PRIVILEGE VARCHAR2(40)

ADMIN_OPTION VARCHAR2(1)

格兰特·VARCHAR2(30)

AUDIT_OPTION VARCHAR2(40)

SES_ACTIONS VARCHAR2(19)

LOGOFF_TIME DATE

LOGOFF_LREAD NUMBER

LOGOFF_PREAD NUMBER

LOGOFF_LWRITE NUMBER

LOGOFF_DLOCK VARCHAR2(40)

COMMENT_TEXT VARCHAR2(4000)

SESSIONID不能为空

ENTRYID不能为空

STATEMENTID不能为空

RETURNCODE NOT NULL NUMBER

PRIV_USED VARCHAR2(40)

CLIENT_ID VARCHAR2(64)

SESSION_CPU NUMBER

分析师一直在阅读这本书,因此他们知道VIEW可能是root kitt的,因此更合理地从基础表SYS.AUD $中获取数据。

从sys.aud $中选择userid,action#,STATEMENT,OBJ $ NAME,To_Char(时间戳#,'mm / dd / yyyy hh24:mi:ss');按时间戳#asc排序;

来自数据库审核的时间表:

USERID ACTION#STATE OBJ $ NAME TIMESTAMP

斯科特101 1 04/30/2006 09:11:36

斯科特3 2 X $ NLS_PARAMETERS 04/30/2006 09:29:07

斯科特3 2 GV $ NLS_PARAMETERS 04/30/2006 09:29:07

斯科特3 2 V $ NLS_PARAMETERS 04/30/2006 09:29:07

斯科特3 2 NLS_SESSION_PARAMETERS 04/30/2006 09:29:07

斯科特3 5双2006年4月30日09:29:07

斯科特100 1 04/30/2006 09:29:41

SCOTT 3 22 OBJ $ 2006年4月30日09:31:07

斯科特3 22 USER_OBJECTS 2006年4月30日09:31:07

斯科特3 28 EMP 04/30/2006 09:32:01

斯科特3 31 EMP 04/30/2006 09:32:20

斯科特7 37 EMP 04/30/2006 09:33:28

斯科特3 46 EMP 04/30/2006 09:35:24

斯科特7 52 EMP 04/30/2006 09:37:04

斯科特7 55 EMP 04/30/2006 09:37:13

斯科特3 61 EMP 2006年4月30日09:37:28

需要手动阅读动作和声明。

SELECT * FROM AUDIT_ACTIONS;

动作7是删除操作,因此我们可以看到SCOTT已从9.3点的emp中删除。 因此,我们想在此之前闪回,因此必须获取记录的时间戳。 Oracle实际上并没有记录完整的时间表。 使用相关SCN仅每5分钟花费时间。 每5分钟添加一次新的SCN,将旧的SCN移走,以使用时间戳记将5天的滚动数字最多精确到5分钟。

SELECT To_Char(TIME_DP,'dd / mm / yyyy hh24:mi:ss'),SCN_BAS FROM SYS.SMON_SCN_TIME;

30/04/2006 10:07:00 9637921

30/04/2006 10:01:53 9637140

30/04/2006 09:56:46 9636359

30/04/2006 09:51:39 9635645

30/04/2006 09:46:31 9634864

30/04/2006 09:41:24 9634083

30/04/2006 09:36:17 9633367

30/04/2006 09:31:10 9632579

30/04/2006 09:26:03 9631772

30/04/2006 09:20:55 9631059

30/04/2006 09:15:48 9630277

30/04/2006 09:10:41 9629478

30/04/2006 09:05:34 9628692

从SELECT *从SCOTT.EMP到TIMESTAMP创建表EMPRECOVER作为选择(TO_TIMESTAMP('30 / 04/2006 09:31:10','DD-MM-YYYY:HH24:MI:SS'));

SELECT * FROM EMPRECOVER;

EMPNO ENAME职位MGR雇用SAL COMM DEPTNO

7499艾伦推销员7698 20-FEB-81 1600 300 30

7521沃德推销员7698 22-FEB-81 1250 500 30

7566琼斯经理7839 02-APR-81 2975 20

7654马丁推销员7698 28-SEP-81 1250 1400 30

7698刹车管理器7839 01-MAY-81 2850 30

7782克拉克经理7839 81年6月9日2450 10

7788斯科特分析仪7566 19-APR-87 3000 20

7839国王总统(11月17日)5000 10

7844特纳销售员7698 08-SEP-81 1500 0 30

7876亚当斯秘书7788 23-MAY-87 1100 20

7900詹姆斯文员7698 03-DEC-81 950 30

7902福特ANALYST 7566 03-DEC-81 3000 20

7934米勒秘书7782年1月23日1300 10

因此,DBA安全人员已经找到了删除,时间和用户,并恢复了数据。 做得好! ? 但是还没有完成,因为仅仅假设SCOTT是罪魁祸首是简单的,因为SCOTT必须非常笨拙才能简单地删除emp表中的对手行。 也许另一个用户冒充了SCOTT冒犯了这种恶意行为,以使他们陷入困境? 因此,下面还将从SYS.AUD $中查询审计跟踪的OS用户名和计算机终端列。

从sys.aud $中选择USERID,USERHOST,TERMINAL,SPARE1,Action#,STATEMENT,OBJ $ NAME,To_Char(timestamp#,'mm / dd / yyyy hh24:mi:ss');

此附加数据表明SCOTT来自与正常工作站不同的工作站,另外SPARE1列表明Windows用户名实际上是GEORGE而不是SCOTT。

该调查将传递给Windows和网络管理员,以验证该帐户是否也被欺诈使用。 这突出了安全人员对跨平台知识的要求。

From: https://bytes.com/topic/web-applications/insights/930821-recover-data-database

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值