怎么捕获表上的DML语句(不包括select)语句)?可以采用dml触发器,如CREATE OR REPLACE TRIGGER tr_capt_sql

[Q]怎样捕获表上的DML句子(不包括select)句子)?51CTO修改引荐数据库安全技能专题

Oracle数据库网络与安全FAQ精粹聚集(三)(oracle数据库安全管理)  Oracle数据库 数据库安全 第1张

[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

#退出

转载请说明出处
知优网 » Oracle数据库网络与安全FAQ精粹聚集(三)(oracle数据库安全管理)

发表评论

您需要后才能发表评论