oracle profile参数设置

本文详细介绍了如何使用Oracle的profile功能对用户数据库资源和密码进行限制,包括创建、查看、修改、删除profile,以及资源限制参数的解释与设置生效时间。重点突出Oracle对密码安全的重视及资源限制的灵活配置。

 Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该profile的限制之内。

 
一、创建profile必须要有CREATE PROFILE的系统权限。
为用户指定资源限制,必须:
1.动态地使用alter system或使用初始化参数resource_limit使资源限制生效。该改变对密码资源无效,密码资源总是可用。
SQL> show parameter resource_limit
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------
resource_limit                       boolean     FALSE
 
SQL> alter system set resource_limit=true;
 
系统已更改。
 
SQL> show parameter resource_limit;
 NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------
resource_limit                       boolean     TRUE
 
SQL> select distinct profile from dba_profiles;
PROFILE
--------------------
MONITORING_PROFILE
DEFAULT
 
二 查看所有的PROFILE
SQL> select * from dba_profiles order by PROFILE;
PROFILE              RESOURCE_NAME                  RESOURCE LIMIT
-------------------- ------------------------------ -------- ----------
DEFAULT              COMPOSITE_LIMIT                KERNEL   UNLIMITED
DEFAULT              PASSWORD_LOCK_TIME             PASSWORD 1
DEFAULT              PASSWORD_VERIFY_FUNCTION       PASSWORD NULL
DEFAULT              PASSWORD_REUSE_MAX             PASSWORD UNLIMITED
DEFAULT              PASSWORD_REUSE_TIME            PASSWORD UNLIMITED
DEFAULT              PASSWORD_LIFE_TIME             PASSWORD 180
DEFAULT              FAILED_LOGIN_ATTEMPTS          PASSWORD UNLIMITED
DEFAULT              PRIVATE_SGA                    KERNEL   UNLIMITED
DEFAULT              CONNECT_TIME                   KERNEL   UNLIMITED
DEFAULT              IDLE_TIME                      KERNEL   UNLIMITED
DEFAULT              LOGICAL_READS_PER_CALL         KERNEL   UNLIMITED
DEFAULT              LOGICAL_READS_PER_SESSION      KERNEL   UNLIMITED
DEFAULT              CPU_PER_CALL                   KERNEL   UNLIMITED
DEFAULT              CPU_PER_SESSION                KERNEL   UNLIMITED
DEFAULT              SESSIONS_PER_USER              KERNEL   UNLIMITED
DEFAULT              PASSWORD_GRACE_TIME            PASSWORD 7
 
参数解释
1、对数据库资源做限制
{ { SESSIONS_PER_USER 每个用户名所允许的并行会话数
  | CPU_PER_SESSION   一个会话一共可以使用的CPU时间,单位是百分之一秒
  | CPU_PER_CALL      一次SQL调用(解析、执行和获取)允许使用的CPU时间
  | CONNECT_TIME      限制会话连接时间,单位是分钟
  | IDLE_TIME         允许空闲会话的时间,单位是分钟
  | LOGICAL_READS_PER_SESSION 限制会话对数据块的读取,单位是块
  | LOGICAL_READS_PER_CALL    限制SQL调用对数据块的读取,单位是块
  | COMPOSITE_LIMIT   “组合打法”
  }   { integer | UNLIMITED | DEFAULT }
  | PRIVATE_SGA   限制会话在SGA中Shared Pool中私有空间的分配  { size_clause | UNLIMITED | DEFAULT}
}
2、对密码做限制
{ { FAILED_LOGIN_ATTEMPTS 帐户被锁定之前可以错误尝试的次数
  | PASSWORD_LIFE_TIME    密码可以被使用的天数,单位是天,默认值180天
  | PASSWORD_REUSE_TIME   密码可重用的间隔时间(结合PASSWORD_REUSE_MAX)
  | PASSWORD_REUSE_MAX    密码的最大改变次数(结合PASSWORD_REUSE_TIME)
  | PASSWORD_LOCK_TIME    超过错误尝试次数后,用户被锁定的天数,默认1天
  | PASSWORD_GRACE_TIME   当密码过期之后还有多少天可以使用原密码
  }  { expr | UNLIMITED | DEFAULT }
  | PASSWORD_VERIFY_FUNCTION  { function | NULL | DEFAULT }
}
 
修改profile:alter profile [资源文件名] limit [资源名] unlimited;
如:alter profile default limit failed_login_attempts 100;
 
删除PROFILE:drop profile [资源文件名] [CASCADE] ;
若创建的PROFILE已经授权给了某个用户,使用CASCADE级联收回相应的限制,收回限制信息后将以系统默认的PROFILE对该用户进行限制。
 
设置PROFILE参数的生效时间
1、用户所有拥有的PROFILE中有关密码的限制立即生效,不受限制。从这个可看出Oracle对用户密码的重视程度。
2、用户所有拥有的PROFILE中有关资源的限制与resource_limit参数的设置有关,当为TRUE时生效,当为FALSE时(默认值)设置任何值都无效。
SQL> show parameter resource_limit
NAME                 TYPE        VALUE
-------------------- ----------- -------
resource_limit       boolean     FALSE

本文出自 “无双城” 博客,请务必保留此出处http://929044991.blog.51cto.com/1758347/1165210

<think>首先,理解用户的问题:用户想了解Oracle数据库中的Profile,包括概念、使用方法、配置等。我需要基于提供的引用内容来回答,同时遵循系统指令。 从引用中: - [1]: Profile是用于限制数据库用户在系统资源和密码参数上的命名集合。每个用户被分配一个Profile,定义资源限制。Profile控制资源访问,确保稳定性和安全。如果超出限制,数据库会限制或拒绝操作。 - [2]: 展示了如何查询特定profile的内容,比如密码资源限制。 - [3]: 提到如果没有指定,Oracle使用默认值,所有参数默认是unlimited;如果设为default,Oracle使用profile中的默认值。 我的回答需要结构清晰,逐步解释: 1. **概念:** 介绍Profile是什么,它的作用和重要性。 2. **参数详解:** 解释Profile中的不同参数类型(资源和密码参数),并举一些常见参数。 3. **使用方法:** 如何创建、修改、分配Profile。 4. **实际操作:** 包括SQL语句示例,如创建、查询和修改Profile。 5. **最佳实践:** 基于知识,提供一些建议,如设置安全的Profile值。 6. **生成相关问题:** 在最后添加相关问题,符合系统指令。 结构化回答: ### 概念介绍(基于[1]) Oracle Profile是数据库中的对象,用于管理用户的资源和密码策略。每个用户关联一个Profile,通过定义各种限制来确保数据库的安全性和资源公平使用。 ### 参数类型 - **资源限制:** 包括CPU时间、连接时间、并发会话数等。 - **密码策略:** 包括密码过期周期、失败登录次数限制、密码复杂度等。 从[3],如果未指定,参数默认为unlimited;如果不指定为default,Oracle使用profile中定义的默认值。 ### 使用方法 1. **创建profile:** 使用`CREATE PROFILE`语句。 2. 修改profile:`ALTER PROFILE`。 3. 分配给用户:`ALTER USER ... PROFILE ...`。 4. 查询profile:如引用[2]所示。 ### SQL示例 - 创建profile:`CREATE PROFILE new_profile LIMIT some_parameters;` - 查询密码参数:`SELECT ... FROM dba_profiles WHERE ...` 引用[2]给了查询密码参数的示例:`select profile,resource_type,resource_name,limit from dba_profiles where resource_type='PASSWORD' and profile='USER_PROFILE';` ### 最佳实践 - 设置合理的限制以防止滥用:例如,限制CPU时间或会话数。 - 监控profile使用情况。 ### 生成相关问题 至少三个相关问题: 1. Oracle Profile的常见参数有哪些? 2. 如何优化Oracle Profile的设置? 3. Oracle Profile的局限性是什么?什么时候应该避免使用? 结尾添加引用标识:[1]的位置在概念部分,将[^1]添加到相关描述的末尾。 确保所有数学公式或表达式用正确的LaTeX格式,但由于这是数据库主题,可能没有数学公式。如果有任何方程,比如在说明参数时,要用$...$或$$...$$,但这里可能不涉及。 最终回答结构: - 开头简要解释Profile。 - 分节介绍:概念、参数、使用方法、操作示例。 - 结束时自然添加相关问题。 </think> 以下是针对Oracle Profile的详细解释和使用方法说明。我将基于您提供的引用信息和相关知识,结构化地介绍Profile的概念、参数、配置和使用方法。回答内容包括核心描述、参数详解、实际操作步骤、SQL命令示例和相关建议。 ### Oracle Profile的概念 Oracle Profile是数据库中用于限制用户资源消耗和密码策略的命名配置集合[^1]。每个用户必须关联一个Profile,它定义了用户连接到数据库时可使用的系统资源(如CPU时间、会话数)和密码规则(如密码有效期)。目的是确保数据库资源公平分配、防止滥用,并提升安全性。当用户操作超出Profile定义的限额时,Oracle会自动终止会话或拒绝请求[^1]。 ### Profile的关键参数详解 Profile分为两类参数:资源限制参数和密码策略参数。以下是常见参数示例(默认情况下,参数值通常为`UNLIMITED`,即无限制;通过修改Profile可设置具体值)[^3]: 1. **资源限制参数(`RESOURCE_TYPE = 'KERNEL'`)**: - `CPU_PER_SESSION`: 用户会话的CPU时间上限(秒)。 - `SESSIONS_PER_USER`: 并发会话数量上限。 - `IDLE_TIME`: 连接空闲超时(自动终止的分钟数)[^1]。 2. **密码策略参数(`RESOURCE_TYPE = 'PASSWORD'`)**: - `FAILED_LOGIN_ATTEMPTS`:允许的逻辑尝试次数,超过则用户被锁定。 - `PASSWORD_LIFE_TIME`:密码有效期(天数)。 - `PASSWORD_REUSE_MAX`:密码重复使用的间隔次数[^2]。 ### Profile的使用方法和配置步骤 以下是Profile的创建、修改和分配流程。具体操作需以数据库管理员(DBA)账号登录执行。 #### 1. **创建Profile** 使用`CREATE PROFILE`语句定义新Profile: ```sql -- 创建名为"user_profile"的Profile,设置资源与密码参数 CREATE PROFILE user_profile LIMIT SESSIONS_PER_USER 10 -- 并发会话上限10个 IDLE_TIME 30 -- 30分钟空闲后断开 FAILED_LOGIN_ATTEMPTS 5 -- 5次登录失败锁定账户 PASSWORD_LIFE_TIME 90; -- 密码有效期90天 ``` 如果未指定参数Oracle默认使用`UNLIMITED`(无限制)[^3]。 #### 2. **修改现有Profile** 通过`ALTER PROFILE`语句调整参数: ```sql -- 修改"user_profile"的CPU时间限制和密码策略 ALTER PROFILE user_profile LIMIT CPU_PER_SESSION 1000 -- CPU时间设为1000秒 PASSWORD_REUSE_MAX 10; -- 密码重复使用需间隔10次变更 ``` #### 3. **为用户分配Profile** 使用`ALTER USER`将Profile关联到用户: ```sql -- 为用户"test_user"分配Profile"user_profile" ALTER USER test_user PROFILE user_profile; ``` #### 4. **查询Profile配置** 从系统视图`DBA_PROFILES`中查询详细信息: ```sql -- 查看所有Profile的资源限制 SELECT profile, resource_name, LIMIT FROM DBA_PROFILES WHERE RESOURCE_TYPE = 'KERNEL'; -- 查询特定Profile的密码参数(引用[2]示例) SELECT profile, resource_type, resource_name, LIMIT FROM DBA_PROFILES WHERE RESOURCE_TYPE = 'PASSWORD' AND PROFILE = 'USER_PROFILE'; ``` 查询结果示例: | PROFILE | RESOURCE_TYPE | RESOURCE_NAME | LIMIT | |----------------|--------------|---------------------------|-----------| | USER_PROFILE | PASSWORD | PASSWORD_LIFE_TIME | 90 | ### 最佳实践建议 - **安全配置**: 为关键用户设置密码策略,如`FAILED_LOGIN_ATTEMPTS 3`以减少暴破风险[^1]。 - **资源优化**: 限制`SESSIONS_PER_USER`防止单用户独占资源。 - **监控和默认处理**: 所有用户默认关联`DEFAULT` Profile,可通过`ALTER PROFILE DEFAULT ...`修改全局设置[^3]。未显式分配的参数保持`UNLIMITED`。 ### 注意事项 - Profile影响只在用户会话创建时生效。 - 若参数值设为`UNLIMITED`(默认),相当于无限制。 - 在OLTP系统中,建议分场景定制Profile(如开发环境资源放松,生产环境严格限制)[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值