安装 Oracle 数据库时,您通常会应用(或考虑应用)哪些非默认设置?
我并不追求硬件相关设置(例如内存分配)或文件位置,而是更一般的项目。同样,任何针对特定应用程序的特殊要求而不是普遍适用的东西都不是真正有用的。
您是否将代码/API 模式(PL/SQL 所有者)与数据模式(表所有者)分开?您是否使用默认或非默认角色,如果是后者,您是否使用密码保护该角色?
我还想知道是否有任何地方可以撤销默认安装的 GRANT。这可能与版本有关,因为 11g 似乎对其默认安装更加严格。
这些是我在最近的设置中使用的。我想知道我是否遗漏了什么,或者您不同意的地方(以及原因)。
数据库参数
- 审计(AUDIT_TRAIL 为 DB 且 AUDIT_SYS_OPERATIONS 为 YES)
- DB_BLOCK_CHECKSUM 和 DB_BLOCK_CHECKING (均设为 FULL)
- GLOBAL_NAMES 为 true
- 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;
应用程序登录
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
答案1
这是我曾经遇到过的事情,这是其他人在旧版本 Oracle 上最佳实践的一个例子:
答案2
审计—— 关闭,除非客户要求启用它。
代码模式与数据模式分离:不,但一定要将代码和数据模式与用户隔离,用户可以通过角色或授权访问底层表/代码。