Secrets of the Oracle Database筆記
9i開始,所有sysdba使用者的登入都將在adump下被審計記錄。
但存在一個安全隱患,就是審計記錄可能被知道oracle使用者密碼的人清除
那麼通過設定audit_syslog_level引數
可以降sysdba使用者的審計資料放入系統的日誌檔案中
如LINUX使用者:
[root@zhangqiaoc log]# ls -l /u01/app/oracle/admin/o11203/adump
total 0
[root@zhangqiaoc log]# tail -n 10 /var/log/messages
Dec 14 10:12:11 zhangqiaoc syslogd 1.4.1: restart.
Dec 14 10:47:17 zhangqiaoc Oracle Audit[13613]: LENGTH : '159' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '3958493542'
Dec 14 10:47:21 zhangqiaoc Oracle Audit[13618]: LENGTH : '159' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '3958493542'
Dec 14 10:48:03 zhangqiaoc Oracle Audit[13618]: LENGTH : '160' ACTION :[8] 'SHUTDOWN' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '3958493542'
Dec 14 10:51:31 zhangqiaoc Oracle Audit[13895]: LENGTH : '155' ACTION :[7] 'STARTUP' DATABASE USER:[1] '/' PRIVILEGE :[4] 'NONE' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[13] 'Not Available' STATUS:[1] '0' DBID:[0] ''
Dec 14 10:51:31 zhangqiaoc Oracle Audit[14037]: LENGTH : '148' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[0] ''
Dec 14 10:51:36 zhangqiaoc Oracle Audit[14101]: LENGTH : '159' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '3958493542'
Dec 14 10:51:55 zhangqiaoc Oracle Audit[14149]: LENGTH : '159' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '3958493542'
Dec 14 10:52:22 zhangqiaoc Oracle Audit[14232]: LENGTH : '159' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '3958493542'
Dec 14 10:52:27 zhangqiaoc Oracle Audit[14236]: LENGTH : '159' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '3958493542'
通過設定audit_sys_operations=true,sysdba使用者執行的語句也將記錄在OS日誌中
Dec 14 10:55:54 zhangqiaoc Oracle Audit[14419]: LENGTH : '424' ACTION :[281] 'SELECT DECODE(null,'','Total System Global Area','') NAME_COL_PLUS_SHOW_SGA, SUM(VALUE), DECODE (null,'', 'bytes','') units_col_plus_show_sga FROM V$SGA UNION ALL SELECT NAME NAME_COL_PLUS_SHOW_SGA , VALUE, DECODE (null,'', 'bytes','') units_col_plus_show_sga FROM V$SGA' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[0] ''
Dec 14 10:55:59 zhangqiaoc Oracle Audit[14419]: LENGTH : '175' ACTION :[22] 'ALTER DATABASE MOUNT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '3958493542'
Dec 14 10:55:59 zhangqiaoc Oracle Audit[14483]: LENGTH : '159' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '3958493542'
Dec 14 10:56:01 zhangqiaoc Oracle Audit[14483]: LENGTH : '172' ACTION :[19] 'ALTER DATABASE OPEN' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '3958493542'
但是注意,如果是啟動資料庫,會仍然在adump下審計許可權,但是其他動作都是在OS日誌中審計
如何和audit_trail配合?
只有在設定audit_trail為OS的情況下,才會在OS日誌中寫入審計資料
但是注意設定為OS是無法和EXTENDED配合使用的,也就是無法捕獲到SQL語句
另外,將審計資料放入OS日誌中,將無法通過一些ORACLE檢視來進行查詢。
EVENT 10027 控制死鎖TRC級別
當由於業務造成的死鎖無法及時修改程式以修正問題時,可以通過該EVENT控制TRC級別,降低過多的死鎖TRC造成的影響。
也可以通過提高死鎖TRC的級別,獲得更多的診斷死鎖的資訊
ALTER SYSTEM SET EVENTS '10027 trace name context forever, level 1';
EVENT="10027 trace name context forever, level 1"
Contents/Level Default Level 1 Level 2 Level 4
-------------------- ------- ------- ---------------- -------
Cached cursors yes no yes yes
Call stack trace no no no yes
Deadlock graph yes yes yes yes
Process state yes no yes yes
SQL statements yes yes yes,all sessions yes
Session wait history yes no yes,all sessions yes
System state no no yes no
EVENT 10079 dump Oracle Net traffic
Level Purpose
----- ----------------------------------------------
1 Trace network operations to/from client
2 In addition to level 1, dump data
4 Trace network operations to/from database link
8 In addition to level 4, dump data
ALTER SESSION SET EVENTS '10079 trace name context forever, level 2';
直接dump發出的網路包到TRC檔案中。相當於設定sqlnet.ora啟動TRC時,在support級別dump下來的包。
不過其只能DUMP包,無法跟蹤連線資訊等
注意,在11g下,如果想client跟蹤,在指定目錄下生成TRC檔案,必須在sqlnet.ora中設定DIAG_ADR_ENABLED=off。如果不設定,根本沒有任何TRC產生!!!
另外,在本節中提到了alter user identified by 和 password修改使用者密碼一個區別
alter user identified by 修改密碼時,密碼是通過明文進行網路傳輸
password修改密碼時,密碼加密後在網路傳輸
ALTER SESSION SET CURRENT_SCHEMA
經常用這個,但是從沒深入研究過,閱讀了該節後有了新的認識
1. Oracle資料庫中有兩種身份:schema user和privilege user
2. 預設的,這兩種身份指定的使用者是相同的,但不是必須相同
3. 如通過imp,使用SYSTEM匯入業務使用者資料時,會話的PARSING_USER_ID為SYSTEM,而PARSING_SCHEMA_ID為業務使用者
4. ALTER SESSION SET CURRENT_SCHEMA 其實就是修改schema user
ALTER SESSION SET CURRENT_SCHEMA的限制:
1. 對高階佇列物件無效,不能使用ALTER SESSION SET CURRENT_SCHEMA後操作業務使用者的高階佇列
2. Rename無效,但是用alter table rename to是可以的
3. 無法使用目標使用者的Private db link
DBMS_BACKUP_RESTORE 如何連線備份管理軟體
在使用dbms_backup_restore.deviceallocate分配通道時通過TYPE和PARAMS引數指定:
v_devtype := DBMS_BACKUP_RESTORE.deviceAllocate(
TYPE => 'SBT_TAPE',
IDENT => 'channel1',
PARAMS => 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)'
);
DBMS_IJOB匯出建立JOB的指令碼
variable job number
variable submit_call varchar2(4000)
variable instance_call varchar2(4000)
exec :job:=&job_number;
begin
dbms_ijob.full_export(:job, :submit_call, :instance_call);
end;
/
print submit_call
print instance_call
SQL> variable job number
SQL> variable submit_call varchar2(4000)
SQL> variable instance_call varchar2(4000)
SQL> exec :job:=&job_number;
Enter value for job_number: 4001
PL/SQL procedure successfully completed.
SQL> begin
2 dbms_ijob.full_export(:job, :submit_call, :instance_call);
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> print submit_call
SUBMIT_CALL
--------------------------------------------------------------------------------
sys.dbms_ijob.submit(job=>4001,luser=>'SYS',puser=>'APEX_030200',cuser=>'APEX_03
0200',next_date=>to_date('2012-12-14:17:25:43','YYYY-MM-DD:HH24:MI:SS'),interval
=>'sysdate + 8/24',broken=>FALSE,what=>'wwv_flow_cache.purge_sessions(p_purge_se
ss_older_then_hrs => 24);',nlsenv=>'NLS_LANGUAGE=''AMERICAN'' NLS_TERRITORY=''AM
ERICA'' NLS_CURRENCY=''$'' NLS_ISO_CURRENCY=''AMERICA'' NLS_NUMERIC_CHARACTERS='
'.,'' NLS_DATE_FORMAT=''DD-MON-RR'' NLS_DATE_LANGUAGE=''AMERICAN'' NLS_SORT=''BI
NARY''',env=>'0102000202000000');
SQL> print instance_call
INSTANCE_CALL
--------------------------------------------------------------------------------
null;
DBMS_SYSTEM
獲得環境變數配置
SET AUTOPRINT ON
VARIABLE val VARCHAR2(4000)
BEGIN
dbms_system.get_env('ORACLE_HOME', :val);
END;
/
清空V$SESSION_EVENT.MAX_WAIT / V$FILESTAT.MAXIORTM / V$FILESTAT.MAXIOWTM
EXEC DBMS_SYSTEM.KCFRMS;
向使用者的TRC檔案中寫入當前時間
EXEC DBMS_SYSTEM.KSDDDT;
將快取中的資料刷到ALERT/TRC中
EXEC DBMS_SYSTEM.KSDFLS;
向使用者的TRC中寫入N個:
EXEC DBMS_SYSTEM.KSDIND(3)
向TRC/ALERT寫日誌
1:TRC 2:ALERT 3:BOTH
EXEC DBMS_SYSTEM.KSDWRT(1, '1111111111')
讀取EVENT設定
VARIABLE lev number
SET AUTOPRINT ON
EXECUTE sys.dbms_system.read_ev(10046, :lev)
為其他會話設定回話級的引數
EXEC dbms_system.set_int_param_in_session(70, 43, 'sort_area_size', 1048576);
EXEC dbms_system.set_bool_param_in_session(12, 16, 'timed_statistics', TRUE); -- 對大部分引數無效
VARIABLE result NUMBER
VARIABLE VALUE NUMBER
VARIABLE dummy VARCHAR2(255)
BEGIN
:result:=dbms_utility.get_parameter_value(parnam=>'workarea_size_policy',
intval=>:VALUE, strval=>:dummy);
END;
/
PRINT VALUE
可以讀取引數配置。發現引數其實都是用數字表示的
但是通過dbms_system.set_int_param_in_session 是無法設定哪些非數字值的引數,只能設定INT型
LISTENER引數IP=FIRST
預設如果監聽設定的主機名,將繫結所有的IP地址
設定IP=FIRST的作用就是指繫結該名稱返回的第一個地址。
如果本來就指定的IP地址,那麼沒必要指定IP=FIRST
設定IP=FIRST,對於Loopback地址也不在監聽
只對主機名有效,如果設定的為非主機名的IP地址的名稱,則其本身就只監聽該IP地址
關閉節點上某個SERVICE的全部SESSION
RAC下可以用來在例項都恢復後,關閉本不應該在該節點上的SERVICE(其他例項FAILOVER過來的),使其從新FAILOVER會本身的節點
EXEC dbms_service.disconnect_session('TAF_INST_SVC')
下次重啟節點時可以測試下
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8242091/viewspace-751147/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- The Secrets of Oracle Bitmap IndexesOracleIndex
- CONCEPT筆記(一、Introduction to the Oracle Database)筆記OracleDatabase
- Duplicating a Database 筆記Database筆記
- rman 建 Standby Database 筆記Database筆記
- [RAC]ORACLE Database 10g RAC for Administrators學習筆記(五)OracleDatabase筆記
- [RAC]ORACLE Database 10g RAC for Administrators學習筆記(一)OracleDatabase筆記
- [RAC]ORACLE Database 10g RAC for Administrators學習筆記(二)OracleDatabase筆記
- [RAC]ORACLE Database 10g RAC for Administrators學習筆記(三)OracleDatabase筆記
- [RAC]ORACLE Database 10g RAC for Administrators學習筆記(四)OracleDatabase筆記
- oracle筆記Oracle筆記
- oracle 筆記Oracle筆記
- Secrets of Firefox 1.0Firefox
- Oracle OCP(39):Database 記憶體結構OracleDatabase記憶體
- oracle實驗記錄 手工 duplicate database(1)OracleDatabase
- oracle實驗記錄Rman duplicate database(1)OracleDatabase
- oracle實驗記錄Rman duplicate database 2OracleDatabase
- CUUG筆記 ORACLE索引學習筆記筆記Oracle索引
- oracle實驗記錄 (oracle 10G rman transport database)OracleDatabase
- Oracle Database 9i/10g/11g程式設計藝術 筆記OracleDatabase程式設計筆記
- Jive筆記6 --Database Package下面的暗黑世界 (轉)筆記DatabasePackage
- Oracle 10g FLASHBACK DATABASE 實驗記錄Oracle 10gDatabase
- oracle實驗記錄 (手動 duplicate database(3))OracleDatabase
- oracle 學習筆記 (ORACLE NET )Oracle筆記
- 閱讀CSS Secrets(四)CSS
- oracle 筆記(續1)Oracle筆記
- ORACLE dataguar 配置筆記Oracle筆記
- 【筆記】oracle xml (一)筆記OracleXML
- oracle學習筆記Oracle筆記
- oracle雜燴筆記Oracle筆記
- Oracle 常用SQL筆記OracleSQL筆記
- Oracle Database Cloud - Database as a Service Quick StartOracleDatabaseCloudUI
- Types of Oracle Database Users : Database Users (6)OracleDatabase
- Oracle clone databaseOracleDatabase
- ORACLE database vaultOracleDatabase
- Oracle Database HistoryOracleDatabase
- Oracle Database ReplayOracleDatabase
- alter database in OracleDatabaseOracle
- Oracle Database ScriptOracleDatabase