用户管理

创建用户操作的核对清单

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权限应格外注意,因为它优先于限额设置。

 

 

 

 

 

posted @ 2012-05-14 10:44  PoleStar  阅读(558)  评论(0编辑  收藏  举报