zoukankan      html  css  js  c++  java
  • Oracle 用户概念与基本操作

    目录

    Oracle的用户

    用户:User,通俗的讲就是访问oracle数据库的账号。
    在oracle中,可以对用户的各种安全参数进行控制,以维护数据库的安全性,这些概念包括模式(schema)、权限、角色、存储设置、空间限额、存取资源限制、数据库审计等。每个用户都有一个口令,使用正确的username/password才能登录到数据库进行数据存取。

    Oracle 成功安装后默认拥有下面几个系统用户

    • sys/system:管理员账户,sys的权限为最高,必须以管理员的身份(sysdba|sysoper)登陆这用户
    • sysman:也是管理员级别的用户,用于操作企业管理器
    • Scott:默认是被锁定的,我们需要去解锁他,才可以被登陆
      注意:前三个用户使用统一密码,而scott用户的默认密码为tiger

    通过系统用户来登陆SQLPlus

    Example1

    [oracle@jmilk ~]$ sqlplus
    
    SQL*Plus:Release 10.2.0.1.0 - Production on Thu May 26 00:13:57 2016
    
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    
    Enter user-name: system/fanguiju
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options

    Example2

    SQL> connect sys/fanguijuERROR:
    ORA-28009: connection as SYS should be as SYSDBA or SYSOPER          #表示sys不能以普通的身份登陆,必须指定以管理员sysdba的身份登陆
    
    
    Warning: You are no longer connected to ORACLE.
    SQL> connect sys/fanguiju as sysdba

    Example3

    connect sys/fanguiju@Server as sysdba            
    #当数据库和数据库服务没有安装在同一台服务器时,需要指定登陆的@ServerName来指定登陆到的服务器。

    system和sys的区别

    【system】用户可以使用normal身份登陆。
    【sys】用户需要使用“SYSDBA”或者“SYSOPER”的身份登陆。

    查看登陆的用户

    Example1:Show user指令,查看登陆的当前用户

    SQL> conn /as sysdba
    Connected.
    SQL> show user
    USER is "SYS"

    Example2:使用数据字典dba_users
    数据字典是数据库提供的内建二维表,用于查看数据库信息。
    dba_users 数据字典的字段,可以查看Oracle RDBMS中DEMO数据库中的管理员账户信息。

    SQL> desc dba_users;                    #显示数据字典dba_users的表结构
     Name                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     USERNAME 用户名称                     NOT NULL VARCHAR2(30)
     USER_ID  用户的编号            NOT NULL NUMBER
     PASSWORD   用户的密码                       VARCHAR2(30)
     ACCOUNT_STATUS  账户状态              NOT NULL VARCHAR2(32)
     LOCK_DATE  锁定的日期                   DATE
     EXPIRY_DATE                        DATE
     DEFAULT_TABLESPACE            NOT NULL VARCHAR2(30)
     TEMPORARY_TABLESPACE              NOT NULL VARCHAR2(30)
     CREATED                   NOT NULL DATE
     PROFILE                   NOT NULL VARCHAR2(30)
     INITIAL_RSRC_CONSUMER_GROUP                VARCHAR2(30)
     EXTERNAL_NAME                      VARCHAR2(4000)
    
    
    SQL> select username from dba_users;
    
    USERNAME
    ------------------------------
    MGMT_VIEW
    SYS
    SYSTEM
    DBSNMP
    SYSMAN
    SCOTT
    OUTLN
    MDSYS
    ORDSYS
    EXFSYS
    DMSYS
    
    USERNAME
    ------------------------------
    WMSYS
    CTXSYS
    ANONYMOUS
    XDB
    ORDPLUGINS
    SI_INFORMTN_SCHEMA
    OLAPSYS
    TSMSYS
    BI
    PM
    MDDATA
    
    USERNAME
    ------------------------------
    IX
    SH
    DIP
    OE
    HR
    
    27 rows selected.

    启用和锁定一个用户

    启用用户

    一个用户要登陆的前提条件就是这个用户不能被锁定
    ALTER USER username ACCOUNT unlock
    Example

    SQL> alter user scott account unlock;
    
    User altered.

    锁定用户

    ALTER USER username ACCOUNT LOCK

    创建用户

    基本语法

    CREATE USER username IDENTIFIED BY password  DEFAULT TABLESPACE tablespace TEMPORARY TABLESPACE tablespace PROFILE profile QUOTA integer|UNLIMITED ON tablespace

    各选项含义如下

    • IDENTIFIED BY password:指定用户密码;
    • DEFAULT TABLESPACE tablespace:默认表空间;
    • TEMPORARY TABLESPACE tablespace:临时表空间;
    • PROFILE profile|DEFAULT:用户资源文件;
    • QUOTA integer[K|M]|UNLIMITED ON tablespace:用户在表空间上的空间使用限额,可以指定多个表空间的限额。
      Example
    CREATE USER us1 IDENTITIED BY abc123
    DEFAULT TABLESPACE user01
    TEMPORARY TABLESPACE temp
    PROFILE DEFAULT
    QUOTA 1000M ON user01; 

    创建新用户后登陆出现错误:ORA-01045
    原因:A connect was attempted to a userid which does not have create session privilege. 用户没有创建会话的权限。
    解决方法:为没有权限的用户赋予权限:

    Grant create session to USERNAME;

    修改用户

    修改用户的语法是与创建用户的语法类似的,主要是 CREATE USER 变成 ALTER USER。
    基本语法

    ALTER USER username IDENTIFIED BY password  DEFAULT TABLESPACE tablespace TEMPORARY TABLESPACE tablespace PROFILE profile QUOTA integer|UNLIMITED ON tablespace

    删除用户

    删除用户,是将用户及用户所创建的schema对象从数据库删除。
    Example

    SQL>DROP USER us1;
    #若用户us1含有schema对象,则无上述语句将执行失败,须加入关键字CASCADE才能删除,意思是连并其对象一起删除,如下:
    SQL>DROP USER us1 CASCADE;

    角色权限

    • SYSOPER角色的权限(公司的运营主管),即数据库操作员权限,权限包括:

      • 打开数据库服务器
      • 关闭数据库服务器
      • 备份数据库
      • 恢复数据库
      • 日志归档
      • 会话限制
    • SYSDBA角色的权限(看成公司的CEO)权限包括:

      • 打开数据库服务器
      • 关闭数据库服务器
      • 备份数据库
      • 恢复数据库
      • 日志归档
      • 会话限制
      • 管理功能
      • 创建数据库
    • NORMAL权限类似企业的普通员工,如:SCOTT

    注意:sys和system是Oracle Database的系统用户,而SYSDBA、SYSOPER、NORMAL为登陆的方式,即用户以什么角色来登陆到数据库服务器。

    常用的用户相关数据字典

    ORACLE中数据字典视图分为3大类,用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。

    • USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息
    • ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息
    • DBA_*:有关整个数据库中对象的信息

    这里的*可以为TABLES, INDEXES, OBJECTS, USERS等。

    查看所有用户

    select * from dba_users;       #查看所有的系统用户
    select * from all_users;
    select * from user_users;      #查看所有的普通用户

    查看用户系统权限

    select * from dba_sys_privs;
    select * from all_sys_privs;
    select * from user_sys_privs;

    查看用户对象权限

    select * from dba_tab_privs;
    select * from all_tab_privs;
    select * from user_tab_privs;

    查看所有角色

    select * from dba_roles;

    查看用户所拥有的角色

    select * from dba_role_privs;
    select * from user_role_privs;

    查看当前用户的缺省表空间

    select username,default_tablespace from user_users;

    查看某个角色的具体权限:

    grant connect,resource,create session,create view to TEST;

    查看RESOURCE具有那些权限

    SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';

    Example:限制user1用户只允许100个并发连接

    SQL> alter systemset resource_limit=true;
    System altered
    SQL> create profile profile_user1 limit sessions_per_user 100;
    Profile created
    SQL> ALTER USER user1 profile profile_user1;
    User altered

    相关阅读:

  • 相关阅读:
    mysql数据库函数 concat 字段类型转化、字段拼接
    SSH2中的No result defined for action的问题
    导致表单重复提交(两次)的原因--css{url()}与a标签
    详解jar命令打包生成双击即可运行的Java程序
    21IO流 和缓冲流 和处理流
    20File
    19(1)hashmap,hashtable
    IntelliJ IDEA注册码激活
    19映射
    18泛型
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13310837.html
Copyright © 2011-2022 走看看