• Oracle11g温习-第十六章:用户管理


    2013年4月27日 星期六

    10:50

     

    1、概念

     (1)schema user.object    就是用户创建的对象

     (2)用户认证方式:

                                                os 认证

                                                database 认证

    2、建立 database认证的用户

     SQL @ prod > create user rose

             identified by oracle

             default tablespace users

             temporary tablespace temp

             quota 10m on users           【用户配额限制】

             password expire;               ——【用户一登录密码就过期,需要重新设定】

    User created.

     

    SQL @ prod > grant create session to rose;

    Grant succeeded.

     

    SQL @ prod > conn rose/oracle

    ERROR:

    ORA-28001: the password has expired

     

    Changing password for rose    ….

    New password:    ...

    Retype new password:    ...

    Password changed 

    Connected. 

     

    3、建立OS认证(操作系统认证)用户(sys 用户属于os 认证)

    SQL @ prod > show parameter auth                                                                                                        

     

    NAME                                 TYPE        VALUE

    ------------------------------------ ----------- ------------------------------

    os_authent_prefix                    string      ops$         【——创建OS认证的用户名前面一定要加上这个参数】

    remote_os_authent                    boolean     FALSE

     

    SQL @ prod >   create user ops$oracle        ——创建用户,不要加双引号

                  identified externally

                   profile default

                   default tablespace users

                   temporary tablespace temp

                   quota 10m on users

     

    SQL @ prod > select username,account_status from dba_users;

     

    USERNAME        ACCOUNT_STATUS

    --------------- -------------------------

    OUTLN           OPEN

    SYS             OPEN

    SYSTEM          OPEN

    ROSE            OPEN

    SCOTT           OPEN

    ops$oracle      OPEN

    TOM             OPEN

    DBSNMP          EXPIRED & LOCKED

    TSMSYS          EXPIRED & LOCKED

    DIP             EXPIRED & LOCKED

    SQL @ prod > select username ,password ,PROFILE,DEFAULT_TABLESPACe,TEMPORARY_TABLESPACE from dba_users;

     

    USERNAME        PASSWORD             PROFILE         DEFAULT_TABLESP TEMPORARY_TABLE

    --------------- -------------------- --------------- --------------- ---------------

    OUTLN           4A3BA55E08595C81     DEFAULT         SYSTEM          TEMP

    SYS             8A8F025737A9097A     DEFAULT         SYSTEM          TEMP

    SYSTEM          2D594E86F93B17A1     DEFAULT         SYSTEM          TEMP

    ROSE            1166A1F535AF6EFB     DEFAULT         USERS           TEMP

    SCOTT           F894844C34402B67     DEFAULT         USERS           TEMP

    ops$oracle      EXTERNAL             DEFAULT         USERS           TEMP

    TOM             0473A0A9140BFBD7     DEFAULT         USERS           TEMP

    DBSNMP          E066D214D5421CCC     DEFAULT         SYSAUX          TEMP

    TSMSYS          3DF26A8B17D0F29F     DEFAULT         USERS           TEMP

    DIP             CE4A36B8E06CA59C     DEFAULT         USERS           TEMP

     

    SQL @ prod > grant create session to ops$oracle;

    Grant succeeded.

     

    SQL @ prod > exit

     

    Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production

    With the Partitioning, OLAP and Data Mining options

     

    [oracle@solaris10 ~]$   id

    uid=100(oracle) gid=100(oinstall)

     

    [oracle@solaris10 ~]$    sqlplus /          ——【登录不需要提供用户名和密码(oracle用户必须属于os    oinstall      )】

     

    SQL*Plus: Release 10.2.0.2.0 - Production on Wed Mar 14 16:07:43 2012

    Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.

    Connected to:

    Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production

    With the Partitioning, OLAP and Data Mining options

     

    SQL @ prod > show user

    USER is "OPS$ORACLE"

    4quota 管理:(对象的最大存储空间,用户在表空间上建立对象,必须在相应的tablespace 上获得quota)

    SQL @ prod > select TABLESPACE_NAME,USERNAME,BYTES/1024,MAX_BYTES/1024/1024 from dba_ts_quotas;

     

    TABLESPACE_NAME      USERNAME        BYTES/1024     MAX_BYTES/1024/1024

    -------------------- --------------- ---------- -------------------

    USERS                ROSE                     0                  10

    USERS                OPS$ORACLE               0                  10

     

    ——BYTES 已经使用过的配额,MAX_BYTES所分配的配额】

     

    SQL @ prod > grant create table to rose;

    Grant succeeded.

     

    SQL @ prod > grant select on scott.emp to rose;

    Grant succeeded.

     

    SQL @ prod > conn rose/rose

    Connected.

     

    SQL @ prod > create table emp1 as select * from scott.emp;

    Table created.

     

    SQL @ prod > conn /as sysdba

    Connected.

     

    SQL @ prod > select TABLESPACE_NAME,USERNAME,BYTES/1024,MAX_BYTES/1024/1024 from dba_ts_quotas

        where username='ROSE';

     

    TABLESPACE_NAME      USERNAME        BYTES/1024 MAX_BYTES/1024/1024

    -------------------- --------------- ---------- -------------------

    USERS                ROSE                    64                  10

     

    ——回收quota【只能回收用户未使用的磁盘配额】

    SQL @ prod > alter user rose quota 0 on users;                                                                                          

     

    User altered.

     

    SQL @ prod > select TABLESPACE_NAME,USERNAME,bytes/1024,max_bytes/1024/1024 from dba_ts_quotas           where username='ROSE';                                                                                                   

     

    no rows selected   【——已经回收,但仍然可以插入数据,因为之前已经使用的磁盘配额没用完】

     

    SQL @ prod > conn rose/rose

    Connected.

     

    ROSE @ prod > insert into emp1 select * from emp1;

     

    14 rows created.

     

    ROSE @ prod > /

     

    28 rows created.

     

    ROSE @ prod > /

     

    56 rows created.

     

     

    ROSE @ prod >  insert into emp1 select * from emp1

    *

    ERROR at line 1:

    ORA-01536: space quota exceeded for tablespace 'USERS'

     

    ROSE @ prod > analyze table emp1 compute statistics;  ——没磁盘配额了                                                                                  

     

    Table analyzed.

     

    ROSE @ prod > select table_name,num_rows ,blocks,empty_blocks from user_tables;                                                         

     

    TABLE_NAME                       NUM_ROWS     BLOCKS EMPTY_BLOCKS

    ------------------------------ ---------- ---------- ------------

    EMP1                                  448          8            0

    5、删除用户【会话中的用户不能被删除】

    SYS @ prod > select username,sid,serial# from v$session

        where username is not null;

     

    USERNAME          SID    SERIAL#

    ---------- ---------- ----------

    SYS                31         84

    ROSE               39         31

     

    SYS @ prod > drop user rose;——会话中的用户不能被删除

    drop user rose

    *

    ERROR at line 1:

    ORA-01940: cannot drop a user that is currently connected

     

    ——强制关闭用户会话

    SYS @ prod > alter system kill session '39,31';——‘SID,SERIAL#’

    System altered.

    SYS @ prod > select * from emp1;                                                                                                       

    select * from emp1

    *

    ERROR at line 1:

    ORA-00028: your session has been killed

    SYS @ prod > drop user rose cascade; ——将用户所有的对象都一起删除                

                                                                                      

    User dropped.

     磁盘配额

     

    create  user  xxx  quota  50m  on  system   指定用户在system 上50M 的磁盘空间。

      alter system  kill session 'sid,serial#'   杀掉用户进程

    desc  v$process   查找 ADDR  SPID  

     desc   session_privs  用户权限。

     desc   session_roles  

    set  role  develogment  , manager 

    desc  dba_role_privs;  

    alter  user  xxxx default role

     

  • 相关阅读:
    【SQL-自动生成编号】按规则自动生成单据编号 以及并发问题_使用触发器、函数 等
    【C#-枚举】枚举的使用
    问题_VS2008和VS2012未能加载包.....以及破解VS2008方法
    【C#-算法】根据生日自动计算年龄_DataTime 的 DateDiff 方法
    【SQL-分组合并字符串】把相同分组的某个字段合并为同一个字符串(使用函数)
    【Winform-GataGridView】根据DataGridView中的数据内容设置行的文字颜色、背景色 — 根据状态变色
    【Winform-右下角弹窗】实现右下角弹窗,提示信息
    【WinForm-无边框窗体】实现Panel移动窗体,没有边框的窗体
    【Winfrom-适配窗体】 WinForm窗体及其控件的自适应,控件随着窗体变化
    【Winfrom-无边框窗体】Winform如何拖动无边框窗体?
  • 原文地址:https://www.cnblogs.com/iyoume2008/p/7526494.html
Copyright © 2020-2023  润新知