用户管理
创建用户操作的核对清单
1.确定用户需要在其中存储对象的表空间。
2.确定每个表空间的限额。
3.指定一个缺省表空间与临时表空间。
4.创建用户。
5.向用户授予权限与角色
查看表空间
1 SQL> desc dba_tablespaces 2 Name Null? Type 3 ----------------------------------------- -------- ---------------------------- 4 TABLESPACE_NAME NOT NULL VARCHAR2(30) 5 BLOCK_SIZE NOT NULL NUMBER 6 INITIAL_EXTENT NUMBER 7 NEXT_EXTENT NUMBER 8 MIN_EXTENTS NOT NULL NUMBER 9 MAX_EXTENTS NUMBER 10 PCT_INCREASE NUMBER 11 MIN_EXTLEN NUMBER 12 STATUS VARCHAR2(9) 13 CONTENTS VARCHAR2(9) 14 LOGGING VARCHAR2(9) 15 FORCE_LOGGING VARCHAR2(3) 16 EXTENT_MANAGEMENT VARCHAR2(10) 17 ALLOCATION_TYPE VARCHAR2(9) 18 PLUGGED_IN VARCHAR2(3) 19 SEGMENT_SPACE_MANAGEMENT VARCHAR2(6) 20 DEF_TAB_COMPRESSION VARCHAR2(8) 21 RETENTION VARCHAR2(11) 22 BIGFILE VARCHAR2(3) 23 24 SQL> select tablespace_name,contents,extent_management(区管理方式) from dba_tablespaces; 25 26 TABLESPACE_NAME CONTENTS EXTENT_MAN 27 ------------------------------ --------- ---------- 28 SYSTEM PERMANENT LOCAL 29 UNDOTBS1 UNDO LOCAL 30 SYSAUX PERMANENT LOCAL 31 TEMP TEMPORARY LOCAL 32 USERS PERMANENT LOCAL 33 USERDATA PERMANENT LOCAL 34 WF1 PERMANENT LOCAL 35 WF2 PERMANENT LOCAL
获取用户信息
可以通过查询以下视图来获取有关用户的信息:
1.DBA_USERS
2.DBA_TS_QUOTAS
使用以下查询查找用于所有用户的default_tablespace。
1 SQL> COL USERNAME FOR A10; 2 SQL> COL DEFAULT_TABLESPACE FOR A20; 3 SQL> COL TEMPORARY_TABLESPACE FOR A20; 4 SQL> SELECT USERNAME,DEFAULT_TABLESPACE,PROFILE FROM DBA_USERS; 5 6 USERNAME DEFAULT_TABLESPACE PROFILE 7 ---------- -------------------- ------------------------------ 8 MGMT_VIEW SYSTEM DEFAULT 9 SYS SYSTEM DEFAULT 10 SYSTEM SYSTEM DEFAULT 11 DBSNMP SYSAUX MONITORING_PROFILE 12 SYSMAN SYSAUX DEFAULT 13 BOOBOOKE USERS DEFAULT 14 OUTLN SYSTEM DEFAULT 15 MDSYS SYSAUX DEFAULT 16 ORDSYS SYSAUX DEFAULT 17 CTXSYS SYSAUX DEFAULT 18 ANONYMOUS SYSAUX DEFAULT
删除用户
如果方案中含有对象,请使用 CASCADE 子句删除该方案中的所有对象。DROP USER aaron CASCADE;不能删除当前与 Oracle 服务器连接的用户。
原则:
1.在删除用户前,CASCADE 选项将删除方案中的所有对象。如果方案中包含任何对象,则必须指定该选项。
2.不能删除当前与Oracle 服务器连接的用户
1 删除BOOBOOKE: 2 SQL> show user 3 USER is "SYS" 4 SQL> drop user boobooke cascade; 5 6 User dropped.
创建新用户:数据库验证
1 设置初始口令 2 CREATE USER aaron 3 IDENTIFIED BY soccer 4 DEFAULT TABLESPACE data 5 DEFAULT TEMPORARY TABLESPACE temp 6 QUOTA 15M ON data 7 QUOTA 10M ON users 8 PASSWORD EXPIRE; 9 10 CREATE USER user 11 IDENTIFIED {BY password | EXTERNALLY} 12 [ DEFAULT TABLESPACE tablespace ] 13 [ TEMPORARY TABLESPACE tablespace ] 14 [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace 15 [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace 16 ]...] 17 [ PASSWORD EXPIRE ] 18 [ ACCOUNT { LOCK | UNLOCK }] 19 [ PROFILE { profile | DEFAULT }]
其中:
User:是用户名
IDENTIFIED BY password:指定用户在登录时需通过数据库验证,还必须提供口令
EXTERNALLY:指定用户需通过操作系统验证
DEFAULT 或 TEMPORARY TABLESPACE:为用户标识缺省或临时表空间
QUOTA:定义表空间中允许用户拥有对象所具有的最大空间(可将限额定义为整数字节或千字节/兆字节。关键字UNLIMITED用于指定用户拥有的对象可使用表空 间内的全部可用空间。缺省情况下,用户在任何表空间上都没有限额。)
PASSWORD EXPIRE:强制用户在使用SQL*Plus 登录到数据库时重置口令(该选项仅在用户通过数据库进行验证时有效)。
ACCOUNT LOCK/UNLOCK:可用于显式锁定或解除锁定用户帐户(UNLOCK为缺省设置)
PROFILE:用于控制资源使用和指定用户的口令控制机制。
创建用户BOOBOOKE
要求:
1.使用profile为默认;
2.默认表空 users,限额 10M;
3.临时表空间默认 temp;
4.强制用户在使用SQL*Plus 登录到数据库时重置口令
注:未分配角色
1 SQL> show user 2 USER is "SYS" 3 SQL> CREATE USER BOOBOOKE IDENTIFIED BY oracle_123 4 2 DEFAULT TABLESPACE users 5 3 quota 10M on users 6 4 password expire; 7 8 User created. 9 10 SQL>
创建新用户:操作系统验证
1.OS_AUTHENT_PREFIX 初始化参数用于指定用户名的格式
2.缺省为 OPS$
1 设置初始口令: 2 CREATE USER aaron 3 IDENTIFIED EXTERNALLY 4 DEFAULT TABLESPACE USERS 5 TEMPORARY TABLESPACE temp 6 QUOTA 15m ON data 7 PASSWORD EXPIRE;
操作系统验证:
用 CREATE USER命令的 IDENTIFIED EXTERNALLY子句指定用户必须通过操作系统进行验证。当用户直接登录到运行Oracle 服务器的计算机上时,该选项通常很有用。
操作系统验证的用户名:
OS_AUTHENT_PREFIX 初始化参数用来指定操作系统验证的用户名的格式。该参数的缺省值为 OPS$,以便与 Oracle 服务器的早期版本向后兼容。要将前缀设置为NULL值,请将该初始化参数指定为:OS_AUTHENT_PREFIX =" "。此处指定允许操作系统用户aaron无需经过Oracle 服务器验证即可访问数据库。因此,若要使用SQL*Plus 登录到系统,则UNIX 用户 aaron必须从该操作系统输入下列命令:$ sqlplus /
注:使用 OS_AUTHENT_PREFIX=OPS$ 时:提供了灵活的用户验证方式,既可通过操作系统进行验证,也可通过Oracle 服务器进行验证。在这种情况下,DBA 可通过输入下列格式的命令创建用户:
1 CREATE USER ops$user 2 IDENTIFIED BY password ...
1.登录到运行 Oracle 服务器的计算机上的用户无需提供口令。如果用户从远程客户机连接,则可提供口令以实现连接。
2.设置另一个初始化参数 REMOTE_OS_AUTHENT=TRUE,指定用户可通过远程操作系统进行验证。缺省值 FALSE表示用户只能通过运行 Oracle 服务器的计算
机进行验证。应小心使用该参数,因为可能存在安全隐患。
3.如果数据库中的某些用户通过操作系统进行验证,则更改 OS_AUTHENT_PREFIX 可防止这些用户登录到数据库。
在操作系统上添加用户:bbker
1 oracle$ useradd bbker 2 usermod: cannot lock /etc/passwd; try again later. 3 注:网络上大多提示 删除/etc/目录下的passwd.lock文件,我在本机上并未发现此文件。google提示用sudo命令 4 oracle$ sudo useradd bbker 5 [sudo] password for oracle: oracle 6 oracle$ sudo passwd bbker 7 输入新的 UNIX 密码: bbker123 8 重新输入新的 bbker123 9 passwd:已成功更新
1 SQL> create user ops$bbker 2 2 IDENTIFIED EXTERNALLY 3 3 default tablespace users; 4 5 User created. 6 7 SQL> Grant create session to OPS$bbker; 8 9 Grant succeeded. 10 11 oracle$ su - bbker 12 bbker$ export PATH=$ORACLE_HOME/bin:$PATH 13 bbker$ sqlplus / 14 注:一直提示权限错误。oracle数据库是在oracle用户下安装的,当切换到bbker用户时,bbker对oracle数据库的访问权限做了限制,此次实验为达到目标。换个思路,在oracle用户下实现:操作系统验证
删除用户ops$bbker:
1 SQL> drop user ops$bbker cascade; 2 User dropped.
添加用户ops$oracle:
1 SQL> create user ops$oracle 2 2 identified externally 3 3 default tablespace users; 4 5 User created. 6 7 SQL> Grant create session to OPS$oracle; 8 9 Grant succeeded. 10 11 SQL> select username from dba_users; 12 13 USERNAME 14 ------------------------------ 15 MGMT_VIEW 16 SYS 17 SYSTEM 18 DBSNMP 19 SYSMAN 20 OPS$ORACLE 21 BOOBOOKE 22 OUTLN 23 MDSYS 24 ORDSYS 25 CTXSYS 26 27 SQL> ! 28 oracle$ sqlplus / 29 30 SQL*Plus: Release 10.2.0.1.0 - Production on Sat May 12 19:03:58 2012 31 32 Copyright (c) 1982, 2005, Oracle. All rights reserved. 33 34 35 Connected to: 36 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 37 With the Partitioning, OLAP and Data Mining options 38 39 40 SQL> show user 41 USER is "OPS$ORACLE" 42 SQL> 43 --创建新用户 操作系统验证 成功
更改用户的表空间限额
在下列情况下需要修改用户的表空间限额:
1.当用户所拥有表的增长速度异常快时。
2.当应用程序得到增强而要求额外的表或索引时。
3.当重新安排对象并将其置入不同的表空间时。
修改用户的表空间限额:ALTER USER aaron QUOTA 0 ON USERS;
使用下列命令修改表空间限额或重新分配表空间:
1 ALTER USER user 2 [ DEFAULT TABLESPACE tablespace] 3 [ TEMPORARY TABLESPACE tablespace] 4 [ QUOTA {integer [K | M] | UNLIMITED } ON tablespace 5 [ QUOTA {integer [K | M] | UNLIMITED } ON tablespace ] 6 ...]
如果分配的限额为0,用户拥有的对象仍保留在撤消的表空间内,但不能给它们分配新的空间。例如,如果表空间 USERS内有一个10 MB 的表,若将该表空间的限额改为 0,则不能再为该表分配新区。任何未更改的选项保持不变。
注:对于UNLIMITED TABLESPACE权限应格外注意,因为它优先于限额设置。