壹、oracle跟蹤文件
Oracle跟蹤文件分為三種類型。
1. 壹種是後臺報警日誌文件,記錄數據庫在啟動、關閉和運行期間後臺進程的活動情況,如表空間創建、回滾段創建、某些alter命令、日誌切換、錯誤消息等。
在數據庫出現故障時,應首先查看該文件,但文件中的信息與任何錯誤狀態沒有必然的聯系。後臺報警日誌文件保存BACKGROUND_DUMP_DEST參數指定的目錄中,文件格式為SIDALRT.LOG。
2. 另壹種類型是DBWR、LGWR、SMON等後臺進程創建的後臺跟蹤文件。
後臺跟蹤文件根據後臺進程運行情況產生,後臺跟蹤文件也保存在BACKGROUND_DUMP_DEST參數指定的目錄中,文件格式為siddbwr.trc、sidsmon.trc等。
3. 還有壹種類型是由連接到Oracle的用戶進程(Server Processes)生成的用戶跟蹤文件。
這些文件僅在用戶會話期間遇到錯誤時產生。此外,用戶可以通過執行oracle跟蹤事件(見後面)來生成該類文件,用戶跟蹤文件保存在USER_DUMP_DEST參數指定的目錄中,文件格式為oraxxxxx.trc,xxxxx為創建文件的進程號(或線程號)。
二、Oracle跟蹤事件
Oracle提供了壹類命令,可以將Oracle各類內部結構中所包含的信息轉儲(dump)到跟蹤文件中,以便用戶能根據文件內容來解決各種故障。
設置跟蹤事件有兩種方法,壹種是在init.ora文件中設置事件,這樣open數據庫後,將影響到所有的會話。設置格式如下:
EVENT=”eventnumber trace name eventname [forever,] [level levelnumber] : ……” 通過:符號,可以連續設置多個事件,也可以通過連續使用event來設置多個事件。
另壹種方法是在會話過程中使用alter session set events命令,只對當前會話有影響。設置格式如下:
alter session set events ‘[eventnumber|immediate] trace name eventname [forever] [, level levelnumber] : ……’
通過:符號,可以連續設置多個事件,也可以通過連續使用alter session set events 來設置多個事件。
格式說明:eventnumber指觸發dump的事件號,事件號可以是Oracle錯誤號(出現相應錯誤時跟蹤指定的事件)或oralce內部事件號,內部事件號在10000到10999之間,不能與immediate關鍵字同用。
immediate關鍵字表示命令發出後,立即將指定的結構dump到跟蹤文件中,這個關鍵字只用在alter session語句中,並且不能與 eventnumber、forever關鍵字同用。
trace name 是關鍵字。
eventname指事件名稱(見後面),即要進行dump的實際結構名。若eventname為context,則指根據內部事件號進行跟蹤。
forever關鍵字表示事件在實例或會話的周期內保持有效狀態,不能與immediate同用。
levelnumber表示事件級別號,壹般從1到10,1表示只dump結構頭部信息,10表示dump結構的所有信息。
跟蹤事件說明:
1、buffers事件:dump SGA緩沖區中的db buffer結構
alter session set events ‘immediate trace name buffers level 1’; –表示dump緩沖區的頭部。
2、blockdump事件:dump數據文件、索引文件、回滾段文件結構
alter session set events ‘immediate trace name blockdump level 66666’; –表示dump塊地址為6666的數據塊。
在Oracle 8i以後該命令已改為:
alter system dump datafile 11 block 9; –表示dump數據文件號為11中的第9個數據塊。
3、controlf事件:dump控制文件結構
alter session set events ‘immediate trace name controlf level 10’; –表示dump控制文件的所有內容。
4、locks事件:dump LCK進程的鎖信息
alter session set events ‘immediate trace name locks level 5’;
5、redohdr事件:dump redo日誌的頭部信息
alter session set events ‘immediate trace name redohdr level 1’; –表示dump redo日誌頭部的控制文件項。
alter session set events ‘immediate trace name redohdr level 2’; –表示dump redo日誌的通用文件頭。
alter session set events ‘immediate trace name redohdr level 10’; –表示dump redo日誌的完整文件頭。
註意:redo日誌的內容dump可以采用下面的語句:
alter system dump logfile ‘logfilename’;
6、loghist事件:dump控制文件中的日誌歷史項
alter session set events ‘immediate trace name loghist level 1’; –表示只dump最早和最遲的日誌歷史項。
levelnumber大於等於2時,表示2的levelnumber次方個日誌歷史項。
alter session set events ‘immediate trace name loghist level 4’; –表示dump 16個日誌歷史項。
7、file_hdrs事件:dump 所有數據文件的頭部信息
alter session set events ‘immediate trace name file_hdrs level 1’; –表示dump 所有數據文件頭部的控制文件項。
alter session set events ‘immediate trace name file_hdrs level 2’; –表示dump 所有數據文件的通用文件頭。
alter session set events ‘immediate trace name file_hdrs level 10’; –表示dump 所有數據文件的完整文件頭。
8、errorstack事件:dump 錯誤棧信息,通常Oracle發生錯誤時前臺進程將得到壹條錯誤信息,但某些情況下得不到錯誤信息,可以采用這種方式得到Oracle錯誤。
alter session set events ‘604 trace name errorstack forever’; –表示當出現604錯誤時,dump 錯誤棧和進程棧。
9、systemstate事件:dump所有系統狀態和進程狀態
alter session set events ‘immediate trace name systemstate level 10’; –表示dump 所有系統狀態和進程狀態。
10、coalesec事件:dump指定表空間中的自由區間
levelnumber以十六進制表示時,兩個高位字節表示自由區間數目,兩個低位字節表示表空間號,如0x00050000表示dump系統表空間中的5個自由區間,轉換成十進制就是327680,即:
alter session set events ‘immediate trace name coalesec level 327680’;
11、processsate事件:dump進程狀態
alter session set events ‘immediate trace name processsate level 10’;
12、library_cache事件:dump library cache信息
alter session set events ‘immediate trace name library_cache level 10’;
13、heapdump事件:dump PGA、SGA、UGA中的信息
alter session set events ‘immediate trace name heapdump level 1’;
14、row_cache事件:dump數據字典緩沖區中的信息
alter session set events ‘immediate trace name row_cache level 1’;
標籤: Oracle
Oracle 通過alter table增刪改列的語法
alter table tablename add (column datatype [default value][null/not null],…);
alter table tablename modify (column datatype [default value][null/not null],…);
alter table tablename drop (column);
這裏分別是使用alter table 來增加、刪除和修改壹個列。
下面是具體的例子:
create table test1
(id varchar2(20) not null);
alter table test1
add (name varchar2(30) default ‘無名氏’ not null);
alter table test1
modify (name varchar2(16) default ‘unknown’);
alter table test1
drop column name;
以上分別建立壹個表,增加,更改,刪除壹個列。其中需要註意的是如果某壹列中已經存在值,如果妳要修改的為比這些值還要窄的列寬這樣將會出現壹個錯誤。
例如前面如果我們插入壹個值
insert into test1
values (’1′,’我們很愛妳’);
然後曾修改列: alter table test1
modify (name varchar2(8));
將會得到以下錯誤:
ERROR 位於第 2 行:
ORA-01441: 無法減小列長度, 因為壹些值過大
PS:改變已存在的表的列名
alter table table_name rename column col_old to col_new
Oracle密碼文件的使用和維護
概要:Oracle關系數據庫系統以其卓越的性能獲得了廣泛的應用,而保證數據庫的安全性是數據庫管理工作的重要內容。本文是筆者在總結Oracle數據庫安全管理工作的基礎上,對Oracle數據庫系統密碼文件的創建、使用和維護作了詳細的介紹,供大家參考。
在Oracle數據庫系統中,用戶如果要以特權用戶身份(INTERNAL/SYSDBA/SYSOPER)登錄Oracle數據庫可以有兩種身份驗證的方法:即使用與操作系統集成的身份驗證或使用Oracle數據庫的密碼文件進行身份驗證。因此,管理好密碼文件,對於控制授權用戶從遠端或本機登錄Oracle數據庫系統,執行數據庫管理工作,具有重要的意義。
Oracle數據庫的密碼文件存放有超級用戶INTERNAL/SYS的口令及其他特權用戶的用戶名/口令,它壹般存放在ORACLE_HOME\DATABASE目錄下。
壹、密碼文件的創建:
在使用Oracle Instance Manager創建壹數據庫實例的時侯,在ORACLE_HOME\DATABASE目錄下還自動創建了壹個與之對應的密碼文件,文件名為PWDSID.ORA,其中SID代表相應的Oracle數據庫系統標識符。此密碼文件是進行初始數據庫管理工作的基礎。在此之後,管理員也可以根據需要,使用工具ORAPWD.EXE手工創建密碼文件,命令格式如下:
C:\ >ORAPWD FILE=< FILENAME > PASSWORD
=< PASSWORD > ENTRIES=< MAX_USERS >
各命令參數的含義為:
FILENAME:密碼文件名;
PASSWORD:設置INTERNAL/SYS帳號的口令;
MAX_USERS:密碼文件中可以存放的最大用戶數,對應於允許以SYSDBA/SYSOPER權限登錄數據庫的最大用戶數。由於在以後的維護中,若用戶數超出了此限制,則需要重建密碼文件,所以此參數可以根據需要設置得大壹些。
有了密碼文件之後,需要設置初始化參數REMOTE_LOGIN_PASSWORDFILE來控制密碼文件的使用狀態。[page] 二、設置初始化參數REMOTE_LOGIN_PASSWORDFILE:
在Oracle數據庫實例的初始化參數文件中,此參數控制著密碼文件的使用及其狀態。它可以有以下幾個選項:
NONE:指示Oracle系統不使用密碼文件,特權用戶的登錄通過操作系統進行身份驗證;
EXCLUSIVE:指示只有壹個數據庫實例可以使用此密碼文件。只有在此設置下的密碼文件可以包含有除INTERNAL/SYS以外的用戶信息,即允許將系統權限SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用戶。
SHARED:指示可有多個數據庫實例可以使用此密碼文件。在此設置下只有INTERNAL/SYS帳號能被密碼文件識別,即使文件中存有其他用戶的信息,也不允許他們以SYSOPER/SYSDBA的權限登錄。此設置為缺省值。
在REMOTE_LOGIN_PASSWORDFILE參數設置為EXCLUSIVE、SHARED情況下,Oracle系統搜索密碼文件的次序為:在系統註冊庫中查找ORA_SID_PWFILE參數值(它為密碼文件的全路徑名);若未找到,則查找ORA_PWFILE參數值;若仍未找到,則使用缺省值ORACLE_HOME\DATABASE\PWDSID.ORA;其中的SID代表相應的Oracle數據庫系統標識符。
三、向密碼文件中增加、刪除用戶:
當初始化參數REMOTE_LOGIN_PASSWORDFILE設置為EXCLUSIVE時,系統允許除INTERNAL/SYS以外的其他用戶以管理員身份從遠端或本機登錄到Oracle數據庫系統,執行數據庫管理工作;這些用戶名必須存在於密碼文件中,系統才能識別他們。由於不管是在創建數據庫實例時自動創建的密碼文件,還是使用工具ORAPWD.EXE手工創建的密碼文件,都只包含INTERNAL/SYS用戶的信息;為此,在實際操作中,可能需要向密碼文件添加或刪除其他用戶帳號。
由於僅被授予SYSOPER/SYSDBA系統權限的用戶才存在於密碼文件中,所以當向某壹用戶授予或收回SYSOPER/SYSDBA系統權限時,他們的帳號也將相應地被加入到密碼文件或從密碼文件中刪除。由此,向密碼文件中增加或刪除某壹用戶,實際上也就是對某壹用戶授予或收回SYSOPER/SYSDBA系統權限。
要進行此項授權操作,需使用SYSDBA權限(或INTERNAL帳號)連入數據庫,且初始化參數REMOTE_LOGIN_PASSWORDFILE的設置必須為EXCLUSIVE。具體操作步驟如下:
創建相應的密碼文件;
設置初始化參數REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;
使用SYSDBA權限登錄:
CONNECT SYS/internal_user_passsword AS SYSDBA;
啟動數據庫實例並打開數據庫;
創建相應用戶帳號,對其授權(包括SYSOPER和SYSDBA):
授予權限:GRANT SYSDBA TO user_name;
收回權限:REVOKE SYSDBA FROM user_name;
現在這些用戶可以以管理員身份登錄數據庫系統了; [page]