Oracle 数据库创建设置的最佳实践

Gar*_*ary 11 oracle best-practices

安装 Oracle 数据库时,您通常会应用(或考虑应用)哪些非默认设置?

我不是在追求硬件相关设置(例如内存分配)或文件位置,而是更一般的项目。类似地,任何对特定应用程序有特殊要求而不是普遍适用的东西都没有真正的用处。

您是否将代码/API 模式(PL/SQL 所有者)与数据方案(表所有者)分开?您使用默认角色还是非默认角色,如果是后者,您是否使用密码保护角色?

我也对是否有任何地方可以对默认安装的 GRANT 进行撤销。这可能取决于版本,因为 11g 的默认安装似乎更加锁定。

这些是我在最近的设置中使用的。我想知道我是否遗漏了什么或您不同意的地方(以及为什么)。

数据库参数

  • 审计(AUDIT_TRAIL 到 DB 和 AUDIT_SYS_OPERATIONS 到 YES)
  • DB_BLOCK_CHECKSUM 和 DB_BLOCK_CHECKING(都为 FULL)
  • GLOBAL_NAMES 为真
  • OPEN_LINKS 为 0(没想到它们会在这种环境中使用)

字符集- AL32UTF8

配置文件
我创建了一个修改后的密码验证函数,该函数使用 apex 字典表 (FLOWS_030000.wwv_flow_dictionary$) 作为防止简单密码的额外检查。

开发者登录

CREATE PROFILE profile_dev LIMIT FAILED_LOGIN_ATTEMPTS 8 
PASSWORD_LIFE_TIME 32 PASSWORD_REUSE_TIME 366 PASSWORD_REUSE_MAX 12
PASSWORD_LOCK_TIME 6 PASSWORD_GRACE_TIME 8
PASSWORD_VERIFY_FUNCTION verify_function_11g
SESSIONS_PER_USER unlimited CPU_PER_SESSION   unlimited
CPU_PER_CALL      unlimited PRIVATE_SGA  unlimited
CONNECT_TIME 1080 IDLE_TIME 180
LOGICAL_READS_PER_SESSION unlimited LOGICAL_READS_PER_CALL unlimited;
Run Code Online (Sandbox Code Playgroud)

应用登录

CREATE PROFILE profile_app LIMIT FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 999 PASSWORD_REUSE_TIME 999 PASSWORD_REUSE_MAX 1
PASSWORD_LOCK_TIME 999 PASSWORD_GRACE_TIME 999
PASSWORD_VERIFY_FUNCTION verify_function_11g
SESSIONS_PER_USER unlimited CPU_PER_SESSION   unlimited
CPU_PER_CALL      unlimited PRIVATE_SGA  unlimited
CONNECT_TIME      unlimited IDLE_TIME  unlimited
LOGICAL_READS_PER_SESSION unlimited LOGICAL_READS_PER_CALL unlimited;
Run Code Online (Sandbox Code Playgroud)

标准架构所有者帐户的权限

CREATE CLUSTER  
CREATE TYPE  
CREATE TABLE   
CREATE VIEW   
CREATE PROCEDURE   
CREATE JOB  
CREATE MATERIALIZED VIEW   
CREATE SEQUENCE  
CREATE SYNONYM  
CREATE TRIGGER  
Run Code Online (Sandbox Code Playgroud)