[Q]怎么捕獲表上的DML語句(不包括select)語句)?
[A]可以采用dml觸發(fā)器,如
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;
在創(chuàng)建以上觸發(fā)器時要注意幾點
1、必須創(chuàng)建一個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的串。你可以改成其它你需要的數(shù)字,如:
Echo %date:~4,10%
如果想得到更精確的時間,win上面還可以使用time
[Q]測試磁盤與陣列性能
[A]用類似如下的方法測試寫能力
time dd if=/dev/zero of=/oradata/biddb/testind/testfile.dbf bs=1024000 count=1000
期間系統(tǒng)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
#退出