oracle--17概要文件

我们创建了一个用户,为其授予权限,那么就可以该用户就可以使用。如果一个用户疯狂地使用资源,那么就会造成数据库资源的缺乏或者是一个不会法的使用者疯狂地对一个用户的密码进行破解,那么很可能会造成信息的泄露与丢失。
为些,我们可以在Oracle中使用概要文件(profile)来进行资源的限制与密码相关特性的设置。当我们创建一个用户时,如果不指定相应的概要文件,那么,Oracle将为其指定一个默认的概要文件。如下:
SQL> select profile
  2  from dba_users
  3  where username = upper('djp02')
  4  /

PROFILE
------------------------------------------------------------
DEFAULT

SQL>
说明:用户djp02所使用的概要文件为default。下面我们查看概要文件default的特性,如下:
SQL> select distinct resource_name,limit
  2  from dba_profiles
  3  where profile = upper('default')
  4  /

RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
PASSWORD_LOCK_TIME
1

CONNECT_TIME
UNLIMITED

IDLE_TIME
UNLIMITED


RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
PASSWORD_GRACE_TIME
7

PRIVATE_SGA
UNLIMITED

LOGICAL_READS_PER_SESSION
UNLIMITED


RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
LOGICAL_READS_PER_CALL
UNLIMITED

FAILED_LOGIN_ATTEMPTS
10

PASSWORD_VERIFY_FUNCTION
NULL


RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
CPU_PER_SESSION
UNLIMITED

SESSIONS_PER_USER
UNLIMITED

PASSWORD_LIFE_TIME
180


RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
PASSWORD_REUSE_MAX
UNLIMITED

PASSWORD_REUSE_TIME
UNLIMITED

CPU_PER_CALL
UNLIMITED


RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
COMPOSITE_LIMIT
UNLIMITED


16 rows selected.

SQL>
通过查看发现,概要文件default对大部分参数的值几乎都是unlimited。如果给用户指定默认的要件文件,最终可能会出现源源缺乏问题。下面我们总体看一个概要文件的创建与使用:
SQL> create profile miser
  2  limit
  3  connect_time 200
  4  idle_time 60
  5  sessions_per_user 2
  6  failed_login_attempts 3
  7  /

Profile created.

SQL>
说明:我们创建的概要文件为miser(中文翻译为“守财奴”,我时常看一些大师级写的书,他们对名字的取法很讲究,我这里也用一下),connect_time指出数据库允许最大连接120秒,idle_time指出如果用户空闲的时间超出60秒,那么用户将退出;
sessions_per_user指出限制用户只能有两个会话;failed_login_attempts指出如果用户登录三次没有成功,那么,该用户将被锁住。概要文件可以在用户创建时指定,也可以在用户创建后指定,例子如下:
SQL> create user djp01 identified by djp2012
  2  default tablespace imtabdata
  3  temporary tablespace temptbsgrp
  4  quota 100M on imtabdata
  5  profile miser
  6  /

User created.

SQL>
说明:我们在第4行使用profile关键字指定概要文件为miser。我们也可以用如下的试指定:
SQL> alter user djp01
  2  profile miser
  3  /

User altered.

SQL>
这时,用户djp01已经拥有了概要文件中的特性。下面我们简单的做个测试,如下:
SQL> conn djp01/aaa
ERROR:
ORA-01017: invalid username/password; logon denied

Warning: You are no longer connected to ORACLE.

SQL> conn djp01/bbb
ERROR:
ORA-01017: invalid username/password; logon denied

SQL> conn djp01/ccc
ERROR:
ORA-01017: invalid username/password; logon denied


SQL> conn djp01/ddd
ERROR:
ORA-28000: the account is locked

SQL> conn djp01/2012
ERROR:
ORA-28000: the account is locked

SQL>
我们发现当用户djp01登录三次不成功时,该用户将会被锁住。当用户被锁后,我们可以使用超级用户将其解锁,如下:
SQL> alter user djp01 account unlock
  2  /

User altered.

SQL> conn djp01/djp2012
Connected.
SQL>
解锁后,可以成功连接。
有关于概要文件的参数,可以分为两类,一类为资源类,另一类为密码类。下面我们分别进行介绍:
(1)资源类
connect_time:指定一个会话能保持连接到数据库的总时间
cpu_per_call:限制事务内每个调用使用CPU的时间。
cpu_per_sessin:限制每个会话内使用CPU的时间。
sessions_per_time:限制用户可以打开并发的最大会话数。
idle_time:限制用户的最大空闲时间。
logical_reads_per_session:限制数据块读取的总数目。
logical_reads_per_call:限制每个会话调用总的逻辑读取数。
private_sga:指定一个在SGA的共享池组件中分配的空间限额(仅适用于共享服务器)。
composite_limit:对资源设置使用一个总的限制。Oracle考虑用四个参数来计算加权的composite_limit。分别为:cpu_per_session,logical_reads_per_sessions,connect_time,private_sga。可以使用alter resource cost来设置.。
(2)密码类
failed_login_attempts:指用户被锁之前可以尝试的最大登录数。
password_life_time:指定使用特定密码的时间限制,如果超出此时间间隔,那么密码将过期。
password_grace_time:设置一个时间段,在此时间段内将发出一个密码过期警告。
password_lock_time:设置用户被锁定的天数,过了此天数,用户将自行解锁。
password_reuse_time:指定重新使用密码要经过多少天。
password_reuse_max:指定重新使用某个特定密码前,要经过多少次修改。
passwrod_verify_function:此参数允许指定Oracle提供的密码验证函数来建立自动密码验证。

参数稍多一些,对于这些参数,我建议不要去背,只要知道意义就可以了,如果有某个参数忘了,可以查看dba_profiles字典。
可以使用alter profile来更改概要文件,如下:
SQL> alter profile miser
  2  limit
  3  password_life_time 30
  4  password_grace_time 25
  5  /

Profile altered.

SQL>

如果在概要文件中使用资源的设置,那么,如是使其生效,必须更改初始化参数resource_limit为true,此参数的默认值为false。
可以使用drop profile进行删除,如下:
SQL> drop profile miser
  2  /
drop profile miser
*
ERROR at line 1:
ORA-02382: 概要文件 MISER 指定了用户, 不能没有 CASCADE 而删除


SQL>
提示删除出错,这是因为概要文件miser指定了用户,如果没有指定用户,可以使用该命令进行删除。如果指定了用户,要想删除,可以使用如下删除方式:
SQL> drop profile miser cascade
  2  /

Profile dropped.

SQL>
成功删除。
概要文件多数用来密码的管理,关于资源的管理,Oracle提供了一个更为高级的管理工具——Database Rsource Manager,在以后的文章我会介绍该工具的使用。

Oracle系统为了合理分配和使用系统的资源提出了概要文件的概念。所谓概要文件,就是一份描述如何使用系统的资源(主要是CPU资源)的配置文件。将概要文件赋予某个数据库用户,在用户连接并访问数据库服务器时,系统就按照概要文件给他分配资源。在有的书中将其翻译为配置文件,其作用包括:
1、管理数据库系统资源。
利用Profile来分配资源限额,必须把初始化参数resource_limit设置为true
ALTER SYSTEM SET resource_limit=TRUE SCOPE=BOTH;
2、管理数据库口令及验证方式。
默认给用户分配的是DEFAULT概要文件,将该文件赋予了每个创建的用户。但该文件对资源没有任何限制,因此管理员常常需要根据自己数据库系统的环境自行建立概要文件
通过数据字典查看缺省资源配置内容:
select * from dba_profiles order by profile;
范例:当一个用户连接到数据库上以后,如果在某一段时间内没有任何动作的话,该进程就会自己中断,这样在应用程序就会因为进程超时自动断开而不能正常执行。
分析原因,应该是该进程的用户的概要文件(profile)配置问题。发现用户所在的profile的IDLE_TIME为30。即30秒该进程没有任何操作,就会自动断开。
PROFILE的管理(资源文件)当需要设置资源限制时,必须设置数据库系统启动参数RESOURCE_LIMIT,此参数默认值为FALSE
可以使用如下命令来启动当前资源限制:
alter system set RESOURCE_LIMIT=true;
当需要以后启动时也启动限制,必须在init<SID>.ora中设置
RESOURCE_LIMIT=true
建立语法:
CREATE PROFILE profile LIMIT
{ resource_parameters | pas sword_parameters }
[ resource_parameters | password_parameters ]...;
{ { SESSIONS_PER_USER | CPU_PER_SESSION | CPU_PER_CALL | CONNECT_TIME | IDLE_TIME
| LOGICAL_READS_PER_SESSION | LOGICAL_READS_PER_CALL | COMPOSITE_LIMIT }
{ integer | UNLIMITED | DEFAULT }
| PRIVATE_SGA { integer [ K | M ] | UNLIMITED | DEFAULT }
}
{ { FAILED_LOGIN_ATTEMPTS | PASSWORD_LIFE_TIME | PASSWORD_REUSE_TIME
| PASSWORD_REUSE_MAX | PASSWORD_LOCK_TIME | PASSWORD_GRACE_TIME }
{ expr | UNLIMITED | DEFAULT }
| PASSWORD_VERIFY_FUNCTION { function | NULL | DEFAULT }
}
CREATE PROFILE new_profile
LIMIT PASSWORD_REUSE_MAX DEFAULT
PASSWORD_REUSE_TIME UNLIMITED;
CREATE PROFILE app_user LIMIT
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL 3000
CONNECT_TIME 45
LOGICAL_READS_PER_SESSION DEFAULT
LOGICAL_READS_PER_CALL 1000
PRIVATE_SGA 15K
COMPOSITE_LIMIT 5000000;
CREATE PROFILE app_user2 LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LIFE_TIME 60
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION verify_function
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 10;
一、PROFILE的管理内容:
1、CPU的时间
2、I/O的使用
3、IDLE TIME(空闲时间)
4、CONNECT TIME(连接时间)
5、并发会话数量
6、口令机制:
二、DEFAULT PROFILE:
1、所有的用户创建时都会被指定这个PROFILE
2、DEFAULT PROFILE的内容为空,无限制
三、PROFILE的划分:
If a user attempts to perform an operation that exceeds the limit for other session resources,
Oracle aborts the operation, rolls back the current statement, and immediately returns an error.
The user can thencommit or roll back the current transaction, and must then end the session.
that exceeds the limit(超过限制) for other session resources(范围之外的其他资源)
被理解为:连接控制资源范围之外的其他资源。
当一个用户试图操作超过限制的资源时,Oracle终止当前操作,取消正在执行的处理,并且返回一个错误,
用户可以提交或回滚当前事物,之后必须断开会话。
如果一个用户试图操作一个超出他限制的资源,Oracle将放弃这个操作,取消正在执行的处理,并立即返
回一个错误。这个用户然后提交或回滚当前的处理,之后必须终止这个会话。
如果是调用限制时,Oracle终止当前操作,取消正在执行的处理,并且返回一个错误,回滚整个事务。
1、CALL级LIMITE:
对象是语句:
当该语句资源使用溢出时:
A、该语句终止
B、事物回退
C、SESSION连接保持
2、SESSION级LIMITE:
对象是:整个会话过程
溢出时:连接终止
四、如何管理一个PROFILE
1、CREATE PROFILE
2、分配给一个用户
3、象开关一样打开限制。
五、如何创建一个PROFILE:
1、命令:
CREATE PROFILE 名称
LIMIT
SESSION_PER_USER 2
CPU_PER_SESSION 1000
IDLE_TIME 60 用户在数据库终止前,可以让连接空闲多长时间(分钟)
CONNECT_TIME 480
六、限制参数:
0、UNLIMITED 取消资源限制
DEFAULT 缺剩资源限制,即使用default资源限制
1、CONNECT_TIME :一个连接会话的最长连接时间(分钟)
当用户会话时间超过CONNECT_TIME指定的时间,Oracle将回滚当前事务,并且结束他的会话
IDLE_TIME :一个连接会话的最长连接时间
当用户空闲时间超过IDLE_TIME指定的时间,Oracle将回滚当前事务,并且结束他的会话
2、SESSIONS_PER_USER:一个用户允许同时(并发)会话的总数,超过后系统禁止该用户的后续会话,并返回错误:
ORA-02391 exceeded simultaneous SESSIONS_PER_USER limit
3、SESSION级LIMITE:
CPU_PER_SESSION:定义了一个SESSION占用的CPU的时间(1/100 秒),当达到这个限制用户不能在此会话中执行任何操作,
此时必须先断开连接,再连接才行。
CPU_PER_CALL :限制每次调用SQL语句期间(parse、execute、fetch)可用的CPU时间总量,单位是百分之一秒。达到限制时
语句以报错结束。不同于CPU_PER_SESSION的是,没达到CPU_PER_SESSION限制,还可以进行新的查询。
4、LOGICAL_READS_PER_SESSION: 一个会话允许读写的逻辑块的数量限制
5、CALL级LIMITE
CPU_PER_CALL:每个语句占用的CPU时间
LOGICAL_READS_PER_CALL:一次调用的SQL期间,允许读数据库块数限制
6、PRIVATE_SGA:一个会话允许分配的最大SGA大小,使用K/M定义
COMPOSITE_LIMIT:一个会话的资源成本限制,CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, and PRIVATE_SGA
七、分配给一个用户:
CREATE USER 名称。。。。。。
PROFILE 名称
ALTER USER 名称 PROFILE 名称
八、打开资源限制:
1、RESOURCE_LIMT:资源文件中含有
2、ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
3、默认不打开
九、修改PROFIE的内容:
1、ALTER PROFILE 名称参数 新值
2、对于当前连接修改不生效。
DROP一个PROFILE
1、DROP PROFILE 名称
删除一个新的尚未分配给用户的PROFILE,
2、DROP PROFILE 名称 CASCADE
3、注意事项
A、一旦PROFILE被删除,用户被自动加载DEFAULT PROFILE
B、对于当前连接无影响
C、DEFAULT PROFILE不可以被删除
十、信息获取:
1、DBA_USERS:
用户名,PROFILE
2、DBA_PROFILES:
PROFILE及各种限制参数的值
每个用户的限制:PROFILE(关键字段)
十一、PROFILE的口令机制限制
1、限制内容
A、限制连续多少次登录失败,用户被加锁
B、限制口令的生命周期
C、限制口令的使用间隔
2、限制生效的前提:
A、RESOURCE_LIMIT:=TRUE
B、ORACLE\RDBMS\ADMIN\UTLPWDMG.SQL
3、如何创建口令机制:
CREATE PROFILE 名称
SESSIONS_PER_USER
.....
password_life_time 30
failed_log_attempts 3
password_reuse_time 3
4、参数的含义:
A、FAILED_LOGIN_ATTEMPTS :当连续登陆失败次数达到该参数指定值时,用户被加锁;
经过DBA解锁(或PASSWORD_LOCK_TIME天)后可继续使用
B、PASSWORD_LIFE_TIME :口令的有效期(天),默认为UNLIMITED
C、PASSWORD_LOCK_TIME :帐户因FAILED_LOGIN_ATTEMPTS锁定时,加锁天数
D、PASSWORD_GRACE_TIME :口令修改的宽限期(天)
E、PASSWORD_REUSE_TIME :口令被修改后原有口令隔多少天被重新使用,默认为UNLIMITED
F、PASSWORD_REUSE_MAX :口令被修改后原有口令被修改多少次才允许被重新使用。
G、PASSWORD_VERIFY_FUNCTION:口令效验函数

下面是一个完整的创建概要文件的实例sql语句


CREATE PROFILE "TESTPROFILE"
    LIMIT CPU_PER_SESSION 1000
    CPU_PER_CALL 1000
    CONNECT_TIME 30
    IDLE_TIME DEFAULT
    SESSIONS_PER_USER 10
    LOGICAL_READS_PER_SESSION 1000
    LOGICAL_READS_PER_CALL 1000
    PRIVATE_SGA 16K
    COMPOSITE_LIMIT 1000000
    FAILED_LOGIN_ATTEMPTS 10
    PASSWORD_LOCK_TIME 10
    PASSWORD_GRACE_TIME 120
    PASSWORD_LIFE_TIME 60
    PASSWORD_REUSE_MAX UNLIMITED
    PASSWORD_REUSE_TIME 120
    PASSWORD_VERIFY_FUNCTION DEFAULT

更改参数实例:


alter profile "testprofile" limit LIMIT CPU_PER_SESSION 5000


删除概要文件:


drop profile testprofile

为一个具体用户分配 概要文件

alter user testuser profile testprofile


查看概要文件的信息,可以查询
SYS.DBA_PROFILES
SYS.USER_RESOURCE_LIMITS
SYS.USER_PASSWORD_LIMITS

 
1、使用create profile命令创建概要文件
语法格式如下:
 
Sql代码  
create profile profile_name limit  
resource_parameters | password_parameters;  
 
 
其中,resource_parameters用来指定资源限制的参数,password_parameters用来指定口令参数。
(1)resource_parameters的语法格式如下:
 
Sql代码  
[sessions_per_user integer | unlimited | default] --限制一个用户并发会话个数*/  
[cpu_per_session integer | unlimited | default] --限制一次会话的cpu时间,以s/100为单位*/  
[cpu_per_call integer | unlimited | default] --限制一次调用的cpu时间*/  
[connect_time integer | unlimited | default] --限制一次会话持续的时间,以min为单位*/  
[idle_time integer | unlimited | default] --限制一次会话的连续不活动时间,以min为单位*/  
[logical_reads_per_session integer | unlimited | default] --规定一次会话中读取数据块的数目,包括从内存和磁盘中读取的块数*/  
[logical_reads_per_call integer | unlimited | default] --规定处理一个SQL语句一次调用所读的数据块的数目*/  
[composite_limit integer | unlimited | default] --规定一次会话的资源开销,以服务单位表示该参数值*/  
[private_sga integer {K|M} | unlimited | default ] --规定一次会话在系统全局区的共享池可分配的私有空间的数目*/  
 
 
(2)password_parameters的语法格式如下:
 
Sql代码  
[failed_login_attempts expression | unlimited | default] --在锁定账户前允许登录失败的次数,默认是10次*/  
[password_life_time expression | unlimited | default] --设置口令的有效期,以天为单位,有效期过后将强制修改密码,默认180天*/  
[password_reuse_time expression | unlimited | default] --规定口令不被重复使用的天数,默认无限制*/  
[password_reuse_max expression | unlimited | default] --规定口令被重新使用前需要更改口令的次数,默认无限制*/  
[password_lock_time expression | unlimited | default] --指定由于多次登录失败而锁定账户的天数,默认1天*/  
[password_grace_time expression | unlimited | default] --设定口令的过期宽限时间,单位为天,默认7天*/  
[password_verify_function functionName | null | default] --使用function来校验口令的复杂度,null表示没有校验*/  
 
 
示例代码:
 
Sql代码  
create profile myprofile limit  
    password_login_attempts 5  
    password_lock_time 5;  
alter user hello profile myprofile;  
 
 
说明:
上述代码建立了一个名为myprofile的概要文件,并把它提供给用户hello使用,该文件指明如果用户hello连续5次登录失败,则用户hello将被锁定5天。
 
2、使用alter profile命令修改概要文件
语法格式如下:
 
Sql代码  
alter profile profile_name limit  
resource_parameters | password_parameters;  
 
示例代码:
修改概要文件myprofile,设定口令过期宽限时间为10天,设定每60天修改一次密码,代码如下:
 
Sql代码  
alter profile myprofile limit  
    password_grace_time 10  
    password_life_time 60;  
 
 
3、使用drop profile命令删除概要文件
语法格式如下:
 
Sql代码  
drop profile profile_name;  
 
例如,删除概要文件myprofile如下:
 
Sql代码  
drop profile myprofile;  

ORACLE初始化参数文件概述
在9i之前,参数文件只有一种,它是文本格式的,称为pfile,在9i及以后的版本中,新增了服务器参数文件,称为spfile,它是二进制格式的。这两种参数文件都是用来存储参数配置以供oracle读取的,但也有不同点,注意以下几点:
1)pfile是文本文件,spfile是二进制文件;
2)对于参数的配置,pfile可以直接以文本编辑器打开手工配置,而spfile不行,必须在数据库启动后,通过sql命令进行在线修改,当然spfile也可用文本编辑器打开,把里面文本的内容复制出来放在pfile中,但绝对不可以直接修改,直接修改后会使文件无法读取。
3)pfile配置改变后,要使用其生效,必须重新启动数据库,spfile的配置生效时限和作用域可以由修改参数的sql命令指定,可以立即生效,也可以不立即生效。当然有些参数的修改必须重启数据库才能生效;
4)可以用sql命令由pfile创建spfile,也可以由spfile创建pfile;
5)如果是手动创建数据库而不是通过DBCA,则开始创建数据库时,你只能定义pfile。因为它是文本格式的;
现在一般普通生产库都采用spfile启动数据库,pfile确实没有用的理由了,感觉只有以下情况才会使用pfile:
1)入门学习时,为了理解初始化参数
2)创建数据库时,因为这时还没spfile
3)恢复数据库时
4)采用RAC的生产库中如果要共用spfile,可以建一个初始的pfile,然后在pfile指定spfile为共享设备文件
...............
2.创建spfile和pfile语法
l  创建SPFILE(只能建在数据库所在的机器上)
CREATE SPFILE [= 'spfile_name'] FROM PFILE [= 'pfile_name'];
如果命令中未指定spfile的路径则会在缺省路径创建spfile文件(%ORACLE_HOME%/database/spfile<SID>.ora)
这个与spfile参数无关(rac中共享spfile时要注意)
l  创建PFILE
CREATE PFILE [= 'pfile_name'] FROM SPFILE [= 'spfile_name'];
如果命令中未指定spfile的路径则会从缺省路径(%ORACLE_HOME%/database/spfile<SID>.ora)创建pfile文件
注:语法中创建和指定的spfile和pfile都是服务器路径
注:不能创建已经由数据库实例启动的spfile(在nomount状态下也不行)
3.数据库启动时spfile和pfile的加载顺序
初始化参数是在数据库实例启动时(startup nomount)加载。
如果startup命令中未指定pfile参数,在windows系统中数据库启动时会按如下顺序查找启动参数文件:
%ORACLE_HOME%/database/SPFILE<SID>.ora
%ORACLE_HOME%/database/SPFILE.ora
%ORACLE_HOME%/database/init<SID>.ora
在unix或linux系统中数据库启动时会按如下顺序查找启动参数文件:
%ORACLE_HOME%/dbs/SPFILE<SID>.ora
%ORACLE_HOME%/dbs/SPFILE.ora
%ORACLE_HOME%/dbs/init<SID>.ora
也就是说先找spfile<sid>.ora文件,如果spfile<sid>.ora没有,则找spfile.ora文件,最后才会去找init<sid>.ora的pfile文件。
使用指定pfile启动数据库则数据库会使用指定的pfile来加载数据库参数:
命令如下:
startup pfile='<pfile>'
注:以pfile启动的实例,修改初始化参数时不能使用scope=spfile的语法。
如果参数文件(不管是pfile还是spfile)中指定了spfile的参数,则还会从指定的spfile中再读取配置的参数,这样数据库的参数就包括了两个文件的内容。
4.数据库启动参数的加载顺序
加载顺序按文件中顺序读取
如果文件中有两个相同的参数名则以最后出现的为准,以下例子说明了这个问题。
如有一个spfile文件(myspfile.ora),包括两个参数:
sessions=150
processes=200
另外有一个pfile文件(mypfile.ora),里面包括三个参数,其中指定了spfile为前面的spfile文件
processes=100
sessions=100
spfile='myspfile.ora'
processes=180
当使用mypfile.ora启动数据库时,会按如下顺序读取参数
1)processes=100
2) sessions=100
3) spfile='myspfile.ora'
3.1) sessions=150(重新加载)
3.2) processes=200(重新加载)
4)processes=180(再次重新加载)
最后加载的数据库参数为
sessions=150
spfile='myspfile.ora'
processes=180
5.关于show parameter spfile时显示的内容
如果是采用pfile指定了spfile参数,则显示指定的spfile
如果是采用缺省的spfile启动,则显示缺省的spfile文件名,不管spfile还有没有指定其它的spfile文件。
6.关于spfile递归调用
如果出现spfile递归调用,则ORACLE启动时会报错:
SQL> startup nomount;
ORA-03113: 通信通道的文件结束
SQL>
spfile递归调用就是指
spfile1.spfile='spfile2'
spfile2.spfile='spfile1'
这样的参数配置
7.初始化参数的修改方法
分为手动修改和在线修改。
手动修改用于修改pfile,直接用文本编辑打开pfile修改。要使用修改生效,须重启数据库。
在线修改是在数据库运行时,用alter system命令进行修改,命令如下(详细的命令 语句请参考oracle官方参考文档):
alter system set parameter_name = parameter_value [, parameter_value ]...
[ COMMENT 'text' ]
[ DEFERRED ]
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = { 'sid' | * } ]
注:
[ COMMENT 'text' ] :表示可以加注释,如 ALTER SYSTEM SET JOB_QUEUE_PROCESSES=50 SCOPE=BOTH DEFERRED COMMENT=" 2008-05-19"
[ DEFERRED ]:表示所作修改只适用于将来的会话,对当前已有的会话不影响,这个参数只对少数参数有用,具体可使用的参数可以查看v$parameter视图
select * from v$parameter where issys_modifiable='DEFERRED'
[ SCOPE = { MEMORY | SPFILE | BOTH } ]:
SPFILE:修改只对SPFILE有效,不影响当前实例,需要重启数据库才能生效;
MEMORY:修改只对内存有效,即只对当前实例有效,且立即生效,但不会保存到SPFILE, 数据库重启后此配置丢失;
BOTH:顾名思义,包含以上两种,立即生效,且永久生效。
所有的参数都可以使用spfile,部份参数可以使用memory,可以使用如下SQL查询不能使用memory方式修改的参数
select * from v$parameter where issys_modifiable='FALSE'
对于ALTER SYSTEM的参数修改命令,请注意以下几点:
1)如果当前实例使用的是pfile而非spfile,则scope=spfile或scope=both会产生错误;
2)如果实例以pfile启动,则scope的默认值为MEMORY,若以spfile启动,则默认值为BOTH;
[ SID = { 'sid' | * } ]
指定修改参数的作用实例号,如果为*则表示所有实例,这个选项用于RAC数据库
8.删除初始化参数:
alter system reset parameter_name
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = 'sid' ]
对于有些参数也可以使用 ALTER SYSTEM SET PARAMETER=''达到相同的效果;
9.初始化参数的相关系统视图
9.v$parameter
9.v$parameter2
9.v$system_parameter
9.v$system_parameter2
9.gv$parameter
9.gv$parameter2
9.gv$system_parameter
9.gv$system_parameter2
SQL> desc v$parameter;

Oracleprofile概要文件资源参数口令参数 
 
概要文件用于限制由用户使用的系统和数据库资源,并可以对口令进行管理。如果在创建用户时没有指定概要文件,
将使用默认的概要文件。
 
1、使用create profile命令创建概要文件
语法格式如下:
 
Sql代码  
create profile profile_name limit  
resource_parameters | password_parameters;  
 
 
其中,resource_parameters用来指定资源限制的参数,password_parameters用来指定口令参数。
(1)resource_parameters的语法格式如下:
 
Sql代码  
[sessions_per_user integer | unlimited | default] --限制一个用户并发会话个数*/  
[cpu_per_session integer | unlimited | default] --限制一次会话的cpu时间,以s/100为单位*/  
[cpu_per_call integer | unlimited | default] --限制一次调用的cpu时间*/  
[connect_time integer | unlimited | default] --限制一次会话持续的时间,以min为单位*/  
[idle_time integer | unlimited | default] --限制一次会话的连续不活动时间,以min为单位*/  
[logical_reads_per_session integer | unlimited | default] --规定一次会话中读取数据块的数目,包括从内存和磁盘中读取的块数*/  
[logical_reads_per_call integer | unlimited | default] --规定处理一个SQL语句一次调用所读的数据块的数目*/  
[composite_limit integer | unlimited | default] --规定一次会话的资源开销,以服务单位表示该参数值*/  
[private_sga integer {K|M} | unlimited | default ] --规定一次会话在系统全局区的共享池可分配的私有空间的数目*/  
 
 
(2)password_parameters的语法格式如下:
 
Sql代码  
[failed_login_attempts expression | unlimited | default] --在锁定账户前允许登录失败的次数,默认是10次*/  
[password_life_time expression | unlimited | default] --设置口令的有效期,以天为单位,有效期过后将强制修改密码,默认180天*/  
[password_reuse_time expression | unlimited | default] --规定口令不被重复使用的天数,默认无限制*/  
[password_reuse_max expression | unlimited | default] --规定口令被重新使用前需要更改口令的次数,默认无限制*/  
[password_lock_time expression | unlimited | default] --指定由于多次登录失败而锁定账户的天数,默认1天*/  
[password_grace_time expression | unlimited | default] --设定口令的过期宽限时间,单位为天,默认7天*/  
[password_verify_function functionName | null | default] --使用function来校验口令的复杂度,null表示没有校验*/  
 
 
示例代码:
 
Sql代码  
create profile myprofile limit  
    password_login_attempts 5  
    password_lock_time 5;  
alter user hello profile myprofile;  
 
 
说明:
上述代码建立了一个名为myprofile的概要文件,并把它提供给用户hello使用,该文件指明如果用户hello连续5次登录失败,则用户hello将被锁定5天。
 
2、使用alter profile命令修改概要文件
语法格式如下:
 
Sql代码  
alter profile profile_name limit  
resource_parameters | password_parameters;  
 
示例代码:
修改概要文件myprofile,设定口令过期宽限时间为10天,设定每60天修改一次密码,代码如下:
 
Sql代码  
alter profile myprofile limit  
    password_grace_time 10  
    password_life_time 60;  
 
 
3、使用drop profile命令删除概要文件
语法格式如下:
 
Sql代码  
drop profile profile_name;  
 
例如,删除概要文件myprofile如下:
 
Sql代码  
drop profile myprofile;  

猜你喜欢

转载自zhyp29.iteye.com/blog/2303031