创建与删除用户
创建用户语法:create user 用户名 identified by 密码 [default tablespace 默认表空间] [temporary tablespace 临时表空间] [PROFILE DEFAULT] [Quota integer/unlimited on 表空间][ACCOUNT UNLOCK|LOCK];
删除用户语法:SQL> drop user 用户名 [cascade];
若用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字cascade,可删除用户所有的对象,然后再删除用户。
--查看所有用户信息
select * from dba_users order by user_id desc;
--查询系统资源文件
select * from dba_profiles;
--创建用户
CREATE USER ETS IDENTIFIED BY ETS DEFAULT TABLESPACE LYTP temporary tablespace TEMP_LYTP PROFILE DEFAULT Quota 50M on LYTP ACCOUNT UNLOCK;
--赋予连接角色
grant connect to ETS;
--删除用户
drop user ETS cascade;
创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。
创建用户
CREATE USER ETS IDENTIFIED BY ETS DEFAULT TABLESPACE LYTP temporary tablespace TEMP_LYTP PROFILE DEFAULT Quota 50M on LYTP ACCOUNT UNLOCK;
1、PROFILE DEFAULT:使用系统默认的profile(如果不做特殊指定,每个用户的PROFILE都会默认的使用系统默认的PROFILE。)
2、Quota(配额):是为了限制用户对表空间的使用;比如你限制用户ETS在tablespace LYTP中的quota为50M,当用户ETS在tablespace LYTP中的数据量达到50M后,无论你的tablespace LYTP中有多少空间,ETS都无法再使用tablespace LYTP了。 默认情况下,用户对所有表空间都是没有配额的(都会对用户赋 unlimited tablespace 的权限),即不受空间的限制。
3、account lock:创建用户的时候锁定用户(默认account unlock:创建用户的时候解锁用户)
删除用户
当出现ORA-01940无法删除当前连接用户时执行以下操作:
--查询用户会话信息
select sid,serial# from v$session where username='&用户名';
--kill会话
alter system kill session '16,3468';
之后再进行删除
修改用户信息
1、修改用户密码:
--修改口令(密码)
Alter user ETS identified by "12345";
--强制用户修改口令字
Alter user ETS password expire;
2、修改用户默认表空间
--修改用户缺省表空间
Alter user ETS default tablespace users;
3、修改用户临时表空间
--修改用户临时表空间
Alter user ETS temporary tablespace temp;
4、修改用户资源文件
--修改用户资源文件
alter user ETS profile ETS_PROFILE;
5、修改用户配额
--查询配额信息(max_bytes 为-1,即不受限制。)如果用户具有unlimited tablespace权限可能不出现在这里
select * from dba_ts_quotas where username='ETS';
--显示指定用户所具有的系统权限
select * from dba_sys_privs where grantee='ETS';
--修改配额(全局)
grant unlimited tablespace to ETS;
--回收用户对表空间的配额(全局)
revoke unlimited tablespace from ETS;
--修改配额(针对某个特定的表空间)
alter user ETS quota unlimited on LYTP;
--回收用户对表空间的配额(针对某个特定的表空间)
alter user ETS quota 0 on LYTP;
6、用户解锁
--将用户加锁与解锁:
Alter user ETS account lock; // 加锁
Alter user ETS account unlock; // 解锁
当然也可以集中在一起修改:
--修改用户
alter user ETS IDENTIFIED BY ETS DEFAULT TABLESPACE LYTP temporary tablespace TEMP_LYTP PROFILE DEFAULT Quota 50M on LYTP ACCOUNT UNLOCK;
查询用户信息
ORACLE中数据字典视图分为3大类,用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。
USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息
ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息
DBA_*:有关整个数据库中对象的信息
(这里的*可以为TABLES, INDEXES, OBJECTS, USERS等。)
下面列出了相关SQL语句
--查看当前用户信息
select * from user_users;
--查看当前会话生效的角色。
select * from session_roles;
--查看当前用户的角色
select * from user_role_privs;
--显示当前会话所具有的权限
select * from session_privs;
--查看当前用户的系统权限
select * from user_sys_privs;
--查看当前用户的表级权限
select * from user_tab_privs;
--查询用户可以访问的视图文本
select * from dba_varrays;
--查询用户可以访问的表
select * from all_tables;
--查看用户对象
select * from user_objects;
--查看用户下所有的表
select * from user_tables;
--查看视图信息
select * from user_views;
--查询用户段信息
select * from user_segments;
--查看某表的大小
select sum(bytes)/(1024*1024) tablesize from user_segments where segment_name='&table_name'
--查看索引信息
select * from user_indexes order by table_name;
--查看索引被索引的字段信息
select * from user_ind_columns;
--查看同义词的名称
select * from user_synonyms;
--查询用户下字段信息
select * from col;
select * from user_tab_columns;
--查询某个表的字段
select * from col where tname='&Table_name';
select * from user_tab_columns where table_name='&Table_name';
用户操作
在实际运用中会遇到各种各样的问题,例如用户密码过期,用户被锁定等。
1、用户锁定与解锁
1)、查看用户的proifle是哪个,一般是default:
sql>SELECT username,PROFILE FROM dba_users where username='&username';
2)、查看指定概要文件(如default)的密码有效期设置:
sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='FAILED_LOGIN_ATTEMPTS';
3)、将尝试登录失败次数由默认的10次修改成“无限制”:
sql>ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
4)、修改后,还没有被提示ORA-28000警告的用户不会再碰到同样的提示;
如果出现ORA-28000 the account is locked.错误
alter user 用户名 account unlock;