Oracle 用户

1.关于创建用户;
2.用户配置文件;
3.创建用户;
4.更改用户;
5.删除用户;

1.关于创建用户:
1.1 用户名:创建数据库用户必须具有 Create user 系统权限,必须指定用户名和密码;用户名字母大小写不受限制,除非指定用户名时使用了双引号(如"tS"),这种形式创建的用户使用时必须严格区分大小写;
1.2 表空间:在未指定默认表空间时默认是:USERS表空间,表空间空间的使用默认是不允许写入(我的理解是quota=0m);用户创建的对象、DDL在未指定表空间时都会存储在用户默认表空间下;
1.3 临时表空间: 在未指定临时表空间时默认是:TEMP,当用户执行的sql语句需要排序(sort)和join时需要使用临时表空间;
1.4用户配置文件(PROFILE):  PROFILE是控制和管理系统资源和密码配置的系统文件,当数据库用户连接到数据库时,数据库加载用户对应的配置文件参数值管理数据库用户资源使用和密码参数配置情况,默认配置文件为:DEFAULT,有一定限制(如登录错误次数,有效期),用户可以根据业务需求创建用户配置文件管理进程的资源使用和密码参数配置,当一个进程所使用的资源超过配置文件设定值时,系统终止该进程,由 Process Monitor(PMON)后台进程清理该进程所使用的系统资源并返回给系统;

2.用户配置文件:
2.1 查询'DEFAULT' 用户配置文件: 

   1:  OPS$SYWU@sydb>select profile,resource_name,resource_type,limit from dba_profiles where profile='DEFAULT';
   2:   
   3:  PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT
   4:  ------------------------------ -------------------------------- -------- ----------------------------------------
   5:  DEFAULT                        COMPOSITE_LIMIT                  KERNEL   UNLIMITED
   6:  DEFAULT                        SESSIONS_PER_USER                KERNEL   UNLIMITED
   7:  DEFAULT                        CPU_PER_SESSION                  KERNEL   UNLIMITED
   8:  DEFAULT                        CPU_PER_CALL                     KERNEL   UNLIMITED
   9:  DEFAULT                        LOGICAL_READS_PER_SESSION        KERNEL   UNLIMITED
  10:  DEFAULT                        LOGICAL_READS_PER_CALL           KERNEL   UNLIMITED
  11:  DEFAULT                        IDLE_TIME                        KERNEL   UNLIMITED
  12:  DEFAULT                        CONNECT_TIME                     KERNEL   UNLIMITED
  13:  DEFAULT                        PRIVATE_SGA                      KERNEL   UNLIMITED
  14:  DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD 10
  15:  DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD 180
  16:  DEFAULT                        PASSWORD_REUSE_TIME              PASSWORD UNLIMITED
  17:  DEFAULT                        PASSWORD_REUSE_MAX               PASSWORD UNLIMITED
  18:  DEFAULT                        PASSWORD_VERIFY_FUNCTION         PASSWORD NULL
  19:  DEFAULT                        PASSWORD_LOCK_TIME               PASSWORD 1
  20:  DEFAULT                        PASSWORD_GRACE_TIME              PASSWORD 7
 
   

可以根据系统业务情况自己创建用户配置文件(要具有Create profile 系统权限):

   1:  OPS$SYWU@sydb>create profile test_profile limit
   2:    2  failed_login_attempts 3
   3:    3  logical_reads_per_session 1
   4:    4  /
   5:   
   6:  Profile created.
   7:   
   8:  OPS$SYWU@sydb>create profile general_profile limit 
   9:    2       COMPOSITE_LIMIT UNLIMITED
  10:    3       SESSIONS_PER_USER UNLIMITED
  11:    4       CPU_PER_SESSION UNLIMITED
  12:    5       CPU_PER_CALL UNLIMITED
  13:    6       LOGICAL_READS_PER_SESSION UNLIMITED
  14:    7       LOGICAL_READS_PER_CALL UNLIMITED
  15:    8       IDLE_TIME UNLIMITED
  16:    9       CONNECT_TIME UNLIMITED
  17:   10       PRIVATE_SGA UNLIMITED
  18:   11       FAILED_LOGIN_ATTEMPTS UNLIMITED
  19:   12       PASSWORD_LIFE_TIME UNLIMITED
  20:   13       PASSWORD_REUSE_TIME UNLIMITED
  21:   14      PASSWORD_REUSE_MAX UNLIMITED
  22:   15      PASSWORD_VERIFY_FUNCTION NULL
  23:   16       PASSWORD_LOCK_TIME UNLIMITED
  24:   17      PASSWORD_GRACE_TIME UNLIMITED 
  25:   18  /
  26:   
  27:  Profile created.


2.2 修改用户配置文件参数(要具有 Alert Profile 系统权限):

   1:  OPS$SYWU@sydb>alter profile test_profile limit LOGICAL_READS_PER_SESSION unlimited;
   2:   
   3:  Profile altered.


2.3 删除用户配置文件(要具有 Drop Profile 系统权限),不能删除默认配置文件'DEFAULT',当删除已经分配给用户的配置文件时,要加cascade子句,系统删除配置文件并将关联该配置文件的用户配置文件修改为系统默认配置文件'DEFAULT':

   1:  SYS@sydb>select username,profile from dba_users where username='OPS$SYWU';
   2:   
   3:  USERNAME                       PROFILE
   4:  ------------------------------ ------------------------------
   5:  OPS$SYWU                       TEST_PROFILE
   6:   
   7:  SYS@sydb>drop profile test_profile cascade;
   8:   
   9:  Profile dropped.
  10:   
  11:  SYS@sydb>select username,profile from dba_users where username='OPS$SYWU';
  12:   
  13:  USERNAME                       PROFILE
  14:  ------------------------------ ------------------------------
  15:  OPS$SYWU                       DEFAULT

2.4 查询当前Session 用户配置文件系统参数的设置值:

   1:  OPS$SYWU@sydb>select resource_name,limit from user_resource_limits;
   2:   
   3:  RESOURCE_NAME                    LIMIT
   4:  -------------------------------- ----------------------------------------
   5:  COMPOSITE_LIMIT                  UNLIMITED
   6:  SESSIONS_PER_USER                UNLIMITED
   7:  CPU_PER_SESSION                  UNLIMITED
   8:  CPU_PER_CALL                     UNLIMITED
   9:  LOGICAL_READS_PER_SESSION        UNLIMITED
  10:  LOGICAL_READS_PER_CALL           UNLIMITED
  11:  IDLE_TIME                        UNLIMITED
  12:  CONNECT_TIME                     UNLIMITED
  13:  PRIVATE_SGA                      UNLIMITED

2.5 查询当前Session 用户配置文件密码参数的设置值:

   1:  OPS$SYWU@sydb>select resource_name,limit from user_password_limits;
   2:   
   3:  RESOURCE_NAME                    LIMIT
   4:  -------------------------------- ----------------------------------------
   5:  FAILED_LOGIN_ATTEMPTS            10
   6:  PASSWORD_LIFE_TIME               180
   7:  PASSWORD_REUSE_TIME              UNLIMITED
   8:  PASSWORD_REUSE_MAX               UNLIMITED
   9:  PASSWORD_VERIFY_FUNCTION         NULL
  10:  PASSWORD_LOCK_TIME               1
  11:  PASSWORD_GRACE_TIME              7


3.创建用户:
3.1 创建一个缺省用户(要具有 Create User 系统权限):

   1:   OPS$SYWU@sydb>create user test 
   2:    2  identified by test
   3:    3  /
   4:   
   5:  User created.
   6:  OPS$SYWU@sydb>grant create session,resource to test;
   7:   
   8:  Grant succeeded.

系统使用缺省的默认表空间:Users(对该表空间的空间没有使用权限),默认临时表空间:temp,默认的用户配置文件:DEFAULT,缺省用户不具有任何权限,需要赋于权限后才能使用;

   1:  OPS$SYWU@sydb>select username,default_tablespace,temporary_tablespace,profile,account_status from dba_users where username='TEST';
   2:   
   3:  USERNAME                       DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE           PROFILE                        ACCOUNT_STATUS
   4:  ------------------------------ ------------------------------ ------------------------------ ------------------------------ -----------------
   5:  TEST                           USERS                          TEMP                           DEFAULT                        OPEN

3.2 创建一个自定义非缺省用户:

   1:  OPS$SYWU@sydb>create user test1
   2:    2  identified by test1
   3:    3  default tablespace tbs01
   4:    4  temporary tablespace temp
   5:    5  quota unlimited on tbs01
   6:    6  quota 100m on tbs02
   7:    7  profile general_profile
   8:    8  /
   9:   
  10:  User created.
  11:  OPS$SYWU@sydb>grant create session,resource to test1;
  12:   
  13:  Grant succeeded.

3.3 用户表空间空间使用情况:

 

   1:  OPS$SYWU@sydb>conn test1/test1
   2:  TEST1@sydb>select tablespace_name,bytes,max_bytes,blocks,max_blocks from user_ts_quotas;
   3:   
   4:  TABLESPACE_NAME                     BYTES  MAX_BYTES     BLOCKS MAX_BLOCKS
   5:  ------------------------------ ---------- ---------- ---------- ----------
   6:  TBS02                                   0  104857600          0      12800
   7:  TBS01                                   0         -1          0         -1

MAX_BYTES =-1 表示unlimited;非-1表示用户在该表空间上可以使用的空间最大值;

4.更改用户:
可以在用户创建后更改默认表空间、临时表空间、空间限额、用户配置文件、密码,必须具有 Alter User 系统权限:
4.1 更改用户默认表空间:

   1:  OPS$SYWU@sydb>alter user test1 default tablespace tbs02;
   2:   
   3:  User altered.

更改默认表空间同时更改空间限额:

   1:  OPS$SYWU@sydb>alter user test1 default tablespace tbs02 quota unlimited on tbs02;
   2:   
   3:  User altered.

4.2 更改用户临时表空间:

   1:  OPS$SYWU@sydb>alter user test1 temporary tablespace temp;
   2:   
   3:  User altered.

不能在临时表空间上设置空间限额,临时表空间的使用情况可以查询v$tempfile和dba_temp_files 视图:

   1:  OPS$SYWU@sydb>select file_name,tablespace_name,bytes,blocks,status,maxbytes,maxblocks,user_bytes,user_blocks from dba_temp_files;
   2:   
   3:  FILE_NAME     TABLESPACE_NAME                     BYTES     BLOCKS STATUS    MAXBYTES  MAXBLOCKS USER_BYTES USER_BLOCKS
   4:  ------------- ------------------------------ ---------- ---------- ------- ---------- ---------- ---------- -----------
   5:  /u01/app/orad TEMP                            378535936      46208 ONLINE  3.4360E+10    4194302  377487360       46080
   6:  ata/sydb/temp
   7:  01.dbf

4.3 更改用户配置文件(要具有Alter Profile系统权限):

   1:  OPS$SYWU@sydb>alter user test1 profile default;
   2:   
   3:  User altered.

4.4 更改用户密码(要具有Alter User系统权限):

   1:  OPS$SYWU@sydb>alter user test1 identified by test1;
   2:   
   3:  User altered.

也可以通过password 命令修改:

   1:  OPS$SYWU@sydb>password test1
   2:  Changing password for test1
   3:  New password: 
   4:  Retype new password: 
   5:  Password changed

sys 用户密码也可以像这样修改,但通常情况下sys密码丢失或忘记,并且没有其它用户具有Alter User 系统权限时不得不通过在DBA用户组下通过ORAPWD重新建立密码文件;

   1:  [sywu@wusuyuan dbs]$ orapwd file=/u01/app/product/11.2.0/db_1/dbs/orapwsydb entries=10 force=y
   2:   
   3:  Enter password for SYS: 

Windows 下密码文件在ORACLE_HOME/database/ ,密码文件名称格式为:pwdsid.ora;SO,Alter User 系统权限很大,应避免生成库上使用;

以上更改用户命令也可以这样:

   1:  OPS$SYWU@sydb>alter user test1
   2:    2    identified by test1
   3:    3    default tablespace tbs01
   4:    4    quota unlimited on tbs01
   5:    5    quota 10m on users
   6:    6    temporary tablespace temp
   7:    7    profile test_profile 
   8:    8    /
   9:   
  10:  User altered.


5.删除用户:
删除用户必须具有Drop User系统权限,如果有主外键或其它用户对象关联时原则上应先检查这些数据确认是否有用,确认后删除对象关联关系;也可以在删除用户时使用CASCADE语句删除对象关联关系并删除用户;可以通过检查系统视图确认关联对象;

   1:   OPS$SYWU@sydb>SELECT OBJECT_NAME,SUBOBJECT_NAME,DATA_OBJECT_ID,OBJECT_TYPE,STATUS FROM DBA_OBJECTS WHERE OWNER LIKE 'OPS$SYWU';

当有会话连接该用户时,必须先断开连接才能删除用户;

   1:  OPS$SYWU@sydb>drop user test1;
   2:  drop user test1
   3:  *
   4:  ERROR at line 1:
   5:  ORA-01940: cannot drop a user that is currently connected

可以这样处理,先查询出用户会话信息:

   1:   OPS$SYWU@sydb>select sid,serial# ,username from v$session where username='TEST1';
   2:   
   3:         SID    SERIAL# USERNAME
   4:  ---------- ---------- ------------------------------
   5:          16         41 TEST1

在数据库系统上杀死该会话进程:

   1:  OPS$SYWU@sydb>alter system kill session '16,41';
   2:   
   3:  System altered.

如果这样杀不死,可以先查询出进程信息,然后在操作系统上杀死进程:

   1:  OPS$SYWU@sydb>select spid, osuser,s.sid,s.username,s.program from
   2:  v$process p, v$session s where p.addr=s.paddr and s.username='TEST1';

linux 下用 kill杀死进程:

   1:  [sywu@wusuyuan ~]$ kill -s 9 2310

Windows 下用 oraKill(注:要在数据库端操作):
orakill sid spid;
sid 是:实例名,spid 是进程ID(注意中间不要加逗号);
最后在删除用户:
OPS$SYWU@sydb>drop user test1 cascade;

 

你可能感兴趣的:(oracle)