怎么捕获表上的DML语句(不包括select)语句)?可以采用dml触发器,如CREATE OR REPLACE TRIGGER tr_capt_sql
[Q]怎样捕获表上的DML句子(不包括select)句子)?【51CTO修改引荐:数据库安全技能专题】
[A]能够选用dml触发器,如
CREATE OR REPLACE TRIGGER tr_capt_sql
BEFORE DELETE OR INSERT OR UPDATE
ON manager.test
DECLARE
sql_text ora_name_list_t;
state_sql capt$sql.sql_text%TYPE;
BEGIN
FOR i IN 1..ora_sql_txt(sql_text) LOOP
state_sql := state_sql sql_text(i);
END LOOP;
INSERT INTO capt$sql(login_user,capt_time,ip_address,audsid,owner,table_name,sql_text)
VALUES(ora_login_user,sysdate,sys_context('USERENV','IP_ADDRESS'),
userenv('SESSIONID'),'MANAGER','TEST',state_sql);
EXCEPTION
WHEN OTHERS THEN
sp_write_log('Capture DML Exception:' SQLERRM);
END tr_capt_sql;
在创立以上触发器时要注意几点
1、有必要创立一个capt$sql的表,用来记载ddl的记载
2、sp_write_log原本是一个写日志的进程,能够置换为自己的需求,如null越过。
[Q]怎样样生成日期格局的文件
[A]在LINUX/UNIX上,运用`date +%y%m%d` (`这个是键盘上~地点的那个键) 或$(date +%y%m%d),如:
touch exp_table_name_`date +%y%m%d`.dm
DATE=$(date +%y%m%d)
或许
DATE=$(date +%Y%m%d --date '1 days ago') #获取昨日或多天前的日期
Windows上,运用%date:~4,10%,其间4是开端字符,10是提取长度,表明从date生成的日期中,提取从4开端长度是10的串。你能够改成其它你需求的数字,如:
Echo %date:~4,10%
假如想得到更准确的时刻,win上面还能够运用time
[Q]测验磁盘与阵列功能
[A]用相似如下的办法测验写才能
time dd if=/dev/zero of=/oradata/biddb/testind/testfile.dbf bs=1024000 count=1000
期间体系IO 运用能够用(unix):
iostat -xnp 2 显现Busy程度
[Q]怎样装备SSH密匙
[A]能够避免"中间人"的进攻方法
1、ssh-keygen 或ssh-keygen -d(ssh 2.x)生成钥匙
2、然后复制公匙到你想登录的服务器,改名为authorized_keys,假如是3.0以下版别,需求改为authorized_keys2
3、还能够使用config文件进一步简化操作
如
Host *bj
HostName 机器名或IP
User 用户名
有了这个装备文件,你就能够使用ssh bj来访问指定的机器了,也就能够使用scp与sftp来传送文件了。
[Q]FTP怎样在脚本中主动上传/下载
[A]能够把FTP写到shell脚本中,如
ftp -n -i 主机IP
cd 方针目录
put file
get file
#查询文件
ls
#退出