说说如何做oracle database 的sql审核:
1. 如何做到预先的语法检查呢
首先要熟悉繁杂的oracle语法规范,并能提前报错(这不是问题)
2. DDL 语句列的检查,索引的检查这些是直接执行才会发现的,难道要把表的结构全部导出来,操作检查一遍吗
(貌似可行) 那么要准备一个存储其他库表结构的 oracle database
3.DML 语句如何检查数据冲突呢?
可以使用不提交事物的方式检查,但如果碰到大量数据的操作呢?会造成锁的
4. 如何记录回滚语句?
能否解析日志呢,日志先写入redo,logminer 会降低oracle性能
可不去回滚DDL 语句,和insert ,delete 语句,
主要预防update 语句,那么提前把update前 语句的数据select 备份起来,而不直接生成回滚update.
5. 这个工作流程是什么样子的呢?
a. 目标库的元数据备份到审核库
b. 外部传参给 审核程序,参数包括(ip,port,username,password,sql, backip,backport, backuser,backpass)
c. 审核程序先在审核库预执行,看看是否有语法错误,对于DDL 语句就直接更新了,对于insert 语句就直接执行了,
d. 对于delete语句检查句法,因此,delete 之前要先备份 导入到审核库,无法检查数据是否存在,
e. 对于update语句,先要导入到备份库,只能检查语法,因为对于多表依赖的update 无法导出多表。
检查完之后就代表通过了,就操作线上库