以下是Oracle管理员高级操作的详细步骤说明,涵盖性能优化、安全管理、高可用性配置等核心内容:
CREATE TABLE sales (
id VARCHAR2(36),
sale_date DATE,
amount NUMBER
)
PARTITION BY RANGE (sale_date)
INTERVAL (NUMTOYMINTERVAL(1, 'MONTH')) -- 按月自动分区
(
PARTITION p_init VALUES LESS THAN (TO_DATE('2025-01-01', 'YYYY-MM-DD'))
);
关键点:
INTERVAL
实现自动分区扩展ALTER TABLE sales ADD PARTITION p_202502
VALUES LESS THAN (TO_DATE('2025-03-01', 'YYYY-MM-DD'));
SELECT * FROM sales PARTITION (p_202502);
CREATE ROLE audit_admin;
GRANT SELECT ANY TABLE, UPDATE ON hr.employees TO audit_admin;
GRANT EXECUTE ON dbms_crypto TO audit_admin;
GRANT UPDATE (salary, job_id) ON employees TO hr_manager;
AUDIT SELECT TABLE, UPDATE TABLE BY ACCESS WHENEVER SUCCESSFUL;
ALTER INDEX idx_emp_name REBUILD TABLESPACE idx_ts
PARALLEL 4 NOLOGGING;
EXEC DBMS_STATS.GATHER_TABLE_STATS(
ownname => 'HR',
tabname => 'EMPLOYEES',
estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
degree => 8
);
EXPLAIN PLAN FOR
SELECT /*+ INDEX(emp idx_emp_dept) */ *
FROM employees emp
WHERE department_id = 50;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
rman target /
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
BACKUP AS COMPRESSED BACKUPSET DATABASE
PLUS ARCHIVELOG
FORMAT '/backup/full_%d_%T_%U';
}
BACKUP INCREMENTAL LEVEL 1 DATABASE;
RECOVER DATABASE UNTIL TIME "TO_DATE('2025-02-25 15:00:00', 'YYYY-MM-DD HH24:MI:SS')";
ALTER DATABASE OPEN RESETLOGS;
-- 主库配置
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/redo/std_redo04.log') SIZE 200M;
ADD EXTRACT ext_hr, TRANLOG, BEGIN NOW
ADD EXTTRAIL /ggs/dirdat/rt, EXTRACT ext_hr
ADD REPLICAT rep_hr, EXTTRAIL /ggs/dirdat/rt
SELECT sid, serial#, username, status,
TO_CHAR(logon_time, 'YYYY-MM-DD HH24:MI') logon_time
FROM v$session WHERE status = 'ACTIVE';
SELECT * FROM v$locked_object;
ALTER SYSTEM KILL SESSION '123,4567'; -- 终止指定会话
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/wallet' IDENTIFIED BY "WalletPass123";
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "WalletPass123";
BEGIN
DBMS_RLS.ADD_POLICY(
object_schema => 'HR',
object_name => 'SALARY_DATA',
policy_name => 'secure_salary',
function_schema => 'sec_admin',
policy_function => 'hide_salary'
);
END;