美文网首页程序园程序员
oracle创建对象为什么需要加表空间和schema

oracle创建对象为什么需要加表空间和schema

作者: 极微 | 来源:发表于2019-04-26 17:36 被阅读4次

    权限管理

    首先需要说一下oracle的权限管理,oracle权限分为系统权限和对象权限:
    系统权限:操作数据库系统的权限。主要有建立会话,用户管理,角色管理,数据库对象的整体操作权限。
    对象权限:对某个或某些具体数据库对象的操作权限。

    也可以按照角色粗分成以下三类:
    DBA:拥有全部权限,是系统最高权限,包括创建角色,对所有数据库对象的操作权限等。
    RESOURCE:拥有Resource角色的用户主要权限是对自己的数据库对象的操作权限。
    CONNECT:拥有Connect角色的用户主要权限是建立会话,登录oracle的权限。

    一般新建用户都会被赋予RESOURCE和CONNECT角色。
    操作实例

    • 新建角色:
      create role role_test;
    • 角色授予系统权限:
      grant create any table,create procedure to role_test;
    • 角色授予对象权限:
      grant select on par_user_info to role_test;
    • 新建用户:
      create user test identified by test;
    • 给用户test授予connnect,resource,role_test角色,当然也可以直接授权给用户
      grant connect, resource,role_test to test;
    • 查看当前用户所有系统权限
      select * from session_privs;
    • 查看对象权限---上英文
      https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_4151.htm#REFRN23282
      --
      select * from user_tab_privs;
      user_tab_privs describes the object grants for which the current user is the object owner, grantor, or grantee.
      --
      select * from all_tab_privs;
      ALL_TAB_PRIVS describes the following types of grants:
      Object grants for which the current user is the object owner, grantor, or grantee
      Object grants for which an enabled role or PUBLIC is the grantee
      --查看所有授权详情
      select * from dba_tab_privs;
    • 查看当前用户的所有角色
      select * from session_roles;
    • 查看某个角色拥有的系统权限
      select * from role_sys_privs where role='role_name';

    一、为什么要加schema

    schema与用户是一一对应的,Oracle数据库中要想创建一个schema,仅仅能通过创建一个用户的方法解决,且默认的schema名称和用户名保持一致。
    一个schema相当于数据库对象按照用户区分的一个集合,每个用户建立的对象隶属于用户所在的schema,如果操作时不指定schema,那么会默认使用当前用户的schema。比如select * from user,其实是select * from schema.user。
    如果创建对象时不加schema,比如在新建表T时,如果是使用A用户登录,那么该表的默认schema为A,我们建立了A.T表。再用B用户登录时,如果B用户没有DBA权限,那么B用户是没有A集合的A.T表对象的权限的,它只有自己的名为B的schema集合的对象权限,也就是B用户根本看不到A.T表。

    二、为什么要加表空间

    很多系统使用的表空间和索引使用的表空间是分开设计的,如果不指定表空间,索引可能会建错表空间。

    相关文章

      网友评论

        本文标题:oracle创建对象为什么需要加表空间和schema

        本文链接:https://www.haomeiwen.com/subject/qhmngqtx.html