安装 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
配置文件
我创建了一个修改后的密码验证函数,该函数使用顶点字典表 (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;
应用登录
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;
标准架构所有者帐户的特权
CREATE CLUSTER
CREATE TYPE
CREATE TABLE
CREATE VIEW
CREATE PROCEDURE
CREATE JOB
CREATE MATERIALIZED VIEW
CREATE SEQUENCE
CREATE SYNONYM
CREATE TRIGGER
这是我曾经遇到过的事情,这是其他人在旧版 Oracle 上的最佳实践示例:
http://www.akadia.com/services/ora_linux_install_10g.html
审计——除非客户要求启用它,否则关闭。
代码模式与数据模式的分离:不,但绝对将代码和数据模式与用户隔离,他们通过角色或授权访问基础表/代码。