详解oracle用户创建(create user)(中)
更改用户的密码:
除了使用alter user命令修改用户的密码以后,可以在sql*plus中使用password关键字修改
密码。
SQL> conn hr/hr
已连接。
SQL> password
更改 HR 的口令
旧口令:
新口令:
重新键入新口令:
口令已更改
SQL> conn system as sysdba
输入口令:
已连接。
SQL> password scott //DBA可以使用password+username修改其他用户的密码。
更改 scott 的口令
新口令:
重新键入新口令:
口令已更改
在pl/sql等其他工具中该命令是无法使用的。
给用户授予create session特权,以创建会话:
SQL> conn system as sysdba
输入口令:
已连接。
SQL> grant create session to oracleusr;
授权成功。
SQL> conn oracleusr
输入口令:
已连接。
这样用户就可以创建会话登录到oracle数据库中了.
锁定用户账号,当用户登录的时候会报ORA-28000的错误:
SQL> alter user oracleusr account lock;
用户已更改。
SQL> conn oracleusr
输入口令:
ERROR:
ORA-28000: 帐户已被锁定
设置用户密码的状态:
密码过期以后用户登录的时候会提示修改密码,并报ORA-28001错误。
SQL> alter user oracleusr password expire;
用户已更改。
SQL> conn oracleusr
输入口令:
ERROR:
ORA-28001: 口令已经失效
更改 oracleusr 的口令
新口令:
重新键入新口令:
口令已更改
已连接。
删除用户账户:
SQL> create user testuser identified by oracle11g;
用户已创建。
SQL> drop user testuser;
用户已删除。
请谨慎删除用户,删除用户的同时用户对应的schema中的对象也将被删除.
用户信息的查询:
很多时候只靠查询dba_users数据字典,用户的相关信息还可以查询:
dba_ts_quotas查询用户所在永久表空的配额等信息。
其实数据库中的很多用户都不需要磁盘配额,因为他们只需要其他schema中对象的访问与操作
特权。
SQL> select tablespace_name,bytes,max_bytes
2 from dba_ts_quotas
3 where username='ORACLEUSR';
TABLESPACE_NAME BYTES MAX_BYTES
------------------------------ ---------- ----------
USERS 0 10485760
database_properties查询有关默认临时表空间,永久表空间的设置情况。
max_bytes如果值是-1表示在对应的表空间中的磁盘配额是unlimited。
关于profile:
profile用于设置一系列的数据库资源使用限制。把profile分配给用户,用户的资源使用
被设置在profile的限制之内。使用create profile 创建profile.使用create user或
alter user给用户分配profile.
profile中的限制又分为两种:
resource_parameters:
sessions_per_user:指定用户并发的会话数。
cpu_per_session:以百分之一秒为单位,指定用户的CPU占用时间。
cpu_per_call:以百分之一秒,指定一次调用的的CPU占用时间。
connect_time:以分为单位,指定会话的持续时间。
idle_time:以分为单位,指定会话的空闲时间。
logical_reads_per_session:指定允许的logical reads 块数量。
logical_reads_per_call:指定一次调用允许的logical reads块数量。
private_sga:一个会话在SGA共享池中分配的私有会话空间的大小。
该参数只有在共享服务器模式下才有效。
composite_limit:以服务单元指定一个会话总的资源开销。oracle会根据cpu_per_session,
connect_time,logical_reads_per_session,private_sga的加权值来计算service units。
SQL> create profile new_profile1 limit //profile名称new_profile1
2 sessions_per_user 5 //用户的同时并发会话数5
3 cpu_per_session unlimited //会话的CPU占用时间无限制
4 cpu_per_call 6000 //一次调用不能占用CPU的时间不能超过60秒
5 connect_time 60 //单个会话持续的时间不能超过60分钟
6 logical_reads_per_session 1500 //单个会话所能允许的逻辑读块数:1500
7 logical_reads_per_call default //一次调用的所能允许的逻辑读块数使用默认值
8 private_sga 10k //单个会话可以占用的sga的内存空间:10kb
9 composite_limit 5000000; //复合资源限制的数量500万服务单元。
配置文件已创建
此处没有指定idle_time,password_parameters的参数,所有点那个把new_profile1分配给用户
的时候,这些限制将使用default profile中的默认值。
给用户分配profile:
SQL> alter user oracleusr profile new_profile1;
用户已更改。
如果用户在创建的时候不指定profile,oracle会自动把default profile分配给用户.
password_parameters:
failed_login_attempts:用户账户被锁定前,用户登录的尝试次数,默认值是10次。
password_life_time:指定密码过期的时间,默认值是180天。
password_reuse_time:当前密码可以重用以前必须经过的时间间隔。
password_reuse_max:当前密码可以被重用前需要修改的次数。
以上两个参数需要一同使用。
password_lock_time:当超过failed_login_attempts指定的值时,账户被锁定的天数。默认是一天。
password_grace_time:在password_life_time到期以后宽限用户使用原密码登录的天数
如果,在password_grace_time指定的天数内,旧密码仍有效,但是会提高用户更改密码。默认是7天。
password_verify_function:指定密码复杂度验证的PL/SQL函数,或第三方运用程序。不使用
密码验证函数,password_verify_function设置为null。
SQL> create profile new_profile2 limit
2 failed_login_attempts 3
3 password_life_time 90
4 password_reuse_time 180
5 password_reuse_max 3
6 password_verify_function null
7 password_lock_time 1
8 password_grace_time 5;
配置文件已创建
SQL> alter user oracleusr profile new_profile2;
用户已更改。
注意此时前面分配给用户的new_profile1就被new_profile2取代了。
在new_profile中未指定的resource_parameters会自动使用default profile中的默认值。
所有应该把所有的资源限制写在同一个profile中。
补充上节内容:
上节中提到了oracle的预置账户:sys,system
sys与system都具有很高的权限,都被授予了dba角色。但是sys的权限要高于system,sys用户
可以执行system用户无法执行的:数据库升级、数据库备份与恢复。system用户主要用于执行
数据库的日常管理工作。
注:数据库中数据库字典包含的所有的基表与视图都存储在sys schema中。这些基表与视图
对数据库的运行十分的关键,为了保证数据字典的完整性,在sys schema中的基表只能被数据库
操作。system schema额外的用于数据库管理的表与视图。