要查找誰刪除了數據,可以使用Oracle數據庫的審計功能來追蹤和記錄對數據庫的操作。以下是一些步驟可以幫助您查找誰刪除了數據:
1. 確保審計功能已啟用:在Oracle數據庫中,審計功能默認是禁用的。要啟用審計功能,您需要使用SYS用戶登錄到數據庫并執行以下命令:
```
ALTER SYSTEM SET audit_trail=db SCOPE=spfile;
```
這將啟用審計功能并將審計日志記錄到數據庫中。
2. 配置審計參數:您可以使用ALTER SYSTEM語句配置審計參數。以下是一些常用的審計參數:
- AUDIT_TRAIL: 指定審計日志的存儲位置。可以設置為'OS'(操作系統文件)或'DB'(數據庫表)。
- AUDIT_SYS_OPERATIONS: 是否審計SYS用戶執行的操作。
- AUDIT_OBJECT_SCHEMA: 指定要審計的對象所在的模式。
例如,要審計所有用戶的刪除操作,可以執行以下命令:
```
ALTER SYSTEM SET audit_trail=db SCOPE=spfile;
ALTER SYSTEM SET audit_sys_operations=TRUE SCOPE=spfile;
ALTER SYSTEM SET audit_object_schema='*' SCOPE=spfile;
```
3. 重啟數據庫實例:為了使審計參數生效,您需要重啟數據庫實例。您可以使用以下命令重啟數據庫:
```
SHUTDOWN IMMEDIATE;
STARTUP;
```
4. 查詢審計日志:一旦審計功能啟用并且數據庫重啟,您可以查詢審計日志表來查找刪除操作的記錄。審計日志表的名稱是AUD$。
以下是一個示例查詢,用于查找最近刪除操作的用戶和對象信息:
```
SELECT username, obj_name, action_name, timestamp
FROM dba_audit_trail
WHERE action_name = 'DELETE'
ORDER BY timestamp DESC;
```
這將返回最近的刪除操作的用戶名、對象名稱、操作類型和時間戳等信息。
請注意,審計日志可能會占用大量存儲空間,因此在啟用審計功能之前,請確保有足夠的可用空間。此外,審計日志表中的記錄可能會隨著時間的推移而增加,所以定期清理審計日志是一個好習慣。