用DNINMSV31账户登录数据库进行如下操作:

CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND
 DEFAULT TABLESPACE "TBS_DNINMSV31"
 TEMPORARY TABLESPACE "TEMP2"
 QUOTA UNLIMITED ON "TBS_DNINMSV31";

GRANT "CONNECT" TO NORTHBOUND;
ALTER USER NORTHBOUND DEFAULT ROLE NONE;

GRANT CREATE SESSION TO NORTHBOUND;

GRANT SELECT ON "DNINMSV31"."V_DNDEVICE" TO NORTHBOUND;
GRANT SELECT ON "DNINMSV31"."V_DNSUBNE" TO NORTHBOUND;
GRANT SELECT ON "DNINMSV31"."V_DNPACKAGE" TO NORTHBOUND;
GRANT SELECT ON "DNINMSV31"."V_DNPORT" TO NORTHBOUND;

【注】:在用NORTHBOUND登录后查询的时候要在视图前加上DNINMSV31,否则会报表或视图不存在。
        例如:
        select * from DNINMSV31.V_DNDEVICE;     --可以正常执行

select * from DNINMSV31.TB_DEVICE where rownum<5;   --执行的时候会报表或视图不存在

创建同义词供对方公司系统访问:

CREATE SYNONYM  V_DNDEVICE FOR  DNINMSV31.V_DNDEVICE;

CREATE SYNONYM  V_DNSUBNE  FOR  DNINMSV31.V_DNSUBNE;

CREATE SYNONYM  V_DNPACKAGE  FOR  DNINMSV31.V_DNPACKAGE;

CREATE SYNONYM V_DNPORT  FOR  DNINMSV31.V_DNPORT;

第三方的系统直接通过这个同义词就可以访问到用户DNINMSV31中的视图。这也是对系统安全的一种保护措施。第三方系统登录后,只能看到其同义词,其他的都不会访问得到。

最后还要对NORTHBOUND用户进行连接数的限制,以免第三方无限制的连接数据库,造成数据库SESSION暴涨:

conn / as sysdba

alter system set resource_limite=true scope=both sid='*';

新建profile, 初始限制为1 ,用于测试

create profile third_user limit SESSIONS_PER_USER 1 FAILED_LOGIN_ATTEMPTS unlimited;

alter user NORTHBOUND profile third_user;

将会话数调整到30

alter profile third_user limit SESSIONS_PER_USER 30;

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

跟第三方做接口程序时给对方开放只能查询某些视图用户的步骤如下:

我们有这样一个需求:在数据库中建立两个用户,用户A 用于创建一些视图,直接访问自己数据库中一个模式下的表,以及通过数据库链路访问其他数据库中的表;另一个用户B 能访问到这个用户A 中的视图,并且只能访问视图,且访问连接数有限制。

这个用户B 是用来给其他系统访问的,因此对权限和资源使用都需要有限制条件。

这种需求在很多行业的应用中都很常见。假如这是一道面试题,您该如何去回答呢?

我采用下面的方法来回答这个问题。

第一步,创建新用户A 和B 。

这里用户名称分别为ryd_interface_src  和ryd_interface ,对这两个用户都授予非常有限的权限。

drop user ryd_interface_src cascade;

create user ryd_interface_src identified by ryd_interface_src;

grant connect,create view to ryd_interface_src;

drop user ryd_interface cascade;

create user ryd_interface identified by ryd_interface;

grant connect,create synonym to ryd_interface;

第二步,登录数据库一个模式中,授权给用户A ,使得用户A 能创建视图

conn qlzqclient/qlzq+client8

grant select on INVEST_CLOCK  to ryd_interface_src with grant option;

grant select on INVEST_LOG   to ryd_interface_src with grant option;

这里授权方法加了一个with grant option ,请注意。

第三步,登录数据库用户A 中,创建视图

conn ryd_interface_src/ryd_interface_src

create or replace view run_views as

select id as doc_id, title,fbsj as upload_date,'' as branch_code from qlzq.runs_lantern@CLIENT_QLZQWEB

where EXT1='1' and sysdate >  START_TIME

and sysdate < SOLID_TIME

union

select a.doc_id,a.title,a.upload_date,a.branch_code  from qlzq.cms_doc_single_attr@CLIENT_QLZQWEB a

left   join qlzq.cms_doc_category_map@CLIENT_QLZQWEB b on a.doc_id=b.doc_id

where

a.state =1 and a.is_delete =0

and  a.upload_date> sysdate-90

and  b.cat_id=4;

create or replace view INVEST_CLOCK_VIEWS as

select  *  from  qlzqclient.INVEST_CLOCK;

create or replace view INVEST_LOG_VIEWS as

select  *  from  qlzqclient.INVEST_LOG;

第四步,在数据库用户A 中,将视图查询权限授予给用户B

因为在步骤二中,加了with grant option ,所以这里视图查询权限可以成功授予。

grant select on INVEST_CLOCK_views to ryd_interface;

grant select on INVEST_LOG_views to ryd_interface;

grant select on run_views to ryd_interface;

第五步,在数据库用户B 中,检查视图能否查询得到,再创建同义词。

conn ryd_interface/ryd_interface

select count(*) from ryd_interface_src.run_views;

select count(*) from ryd_interface_src.INVEST_CLOCK_views;

select count(*) from ryd_interface_src.INVEST_LOG_views;

create synonym  run_views for  ryd_interface_src.run_views;

create synonym  INVEST_CLOCK_views for  ryd_interface_src.INVEST_CLOCK_views;

create synonym  INVEST_log_views for  ryd_interface_src.INVEST_log_views;

第三方的系统直接通过这个同义词就可以访问到用户A 中的视图。这也是对系统安全的一种保护措施。第三方系统登录后,只能看到其同义词,其他的都不会访问得到。

第六步,限制资源使用

因为用户B 是给第三方系统使用,我们无法控制第三方应用的质量,为了防止在应用出现异常连接时数据库会话数暴涨导致数据库整体服务出现故障,所以我们对该用户的数据库会

话数做一个限制。

这里采用profile 的sessions_per_user 功能,实现单个用户会话数的限制。

conn / as sysdba

alter system set resource_limite=true scope=both sid='*';

新建profile, 初始限制为1 ,用于测试。

create profile third_user limit SESSIONS_PER_USER 1 FAILED_LOGIN_ATTEMPTS unlimited;

alter user ryd_interface profile third_user;

将会话数调整到30

alter profile third_user limit SESSIONS_PER_USER 30;

通过以上操作,我们就可以实现这个需求了。

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

GRANT debug any procedure, debug connect session TO hnckb;
grant select on sys.dba_pending_transactions to hnckb;
grant CREATE VIEW,CREATE JOB,CREATE SYNONYM to hnckb;
grant CONNECT,RESOURCE to hnckb;
1.标准角色
CONNECT
RESOURCE

2.系统权限
CREATE VIEW
CREATE DATABASE LINK
CREATE JOB
CREATE SYNONYM
UNLIMITED TABLESPACE
更改定额
命令:ALTER USER 名称 QUOTA 0 ON 表空间名
ALTER USER 名字 QUOTA (数值)K|M|UNLIMITED ON 表空间名;
使用方法:
A、控制用户数据增长
B、当用户拥有一定的数据,而管理员不想让他在增加新的数据的时候。
C、当将用户定额设为零的时候,用户不能创建新的数据,但原有数据仍可访问。

3.对象权限
DBA_PENDING_TRANSACTIONS (SELECT)  — XA事务支持

grant select on sys.dba_pending_transactions to user;
4.建议开放
DEBUG CONNECT SESSION                — 调试存储过程
例如:
GRANT debug any procedure, debug connect session TO hr;

Oracle创建表空间、创建用户、授权、授权对象的访问以及查看权限
1.创建临时表空间
oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结

果进行排序。
临时表空间的主要作用:
索引create或rebuild
Order by 或 group by
Distinct 操作
Union 或 intersect 或 minus
Sort-merge joins

CREATE TEMPORARY TABLESPACE “TEST_TEMP”
    TEMPFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\GIS\TEST_DATA.ora’
    SIZE 20M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

2.创建用户表空间
CREATE TABLESPACE “TEST_DATA”
    LOGGING
    DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\GIS\TEST_DATA.ora’
    SIZE 20M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

3.创建用户并设置其表空间
username:usertest
password:userpwd

CREATE USER usertest IDENTIFIED BY userpwd
DEFAULT TABLESPACE TEST_DATA
TEMPORARY TABLESPACE TEST_TEMP;

4.给用户授权
GRANT
  CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,
  ALTER ANY TABLE, ALTER ANY PROCEDURE,
  DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,
  SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
TO username;

首先授权用户testuser两个基本的角色权限

CONNECT角色:    –是授予最终用户的典型权利,最基本的      
   CREATE    SESSION    –建立会话

RESOURCE角色:    –是授予开发人员的     
   CREATE    CLUSTER         –建立聚簇  
   CREATE    PROCEDURE    –建立过程  
   CREATE    SEQUENCE      –建立序列  
   CREATE    TABLE              –建表  
   CREATE    TRIGGER          –建立触发器  
   CREATE    TYPE                –建立类型
   CREATE    OPERATOR       –创建操作者
   CREATE    INDEXTYPE      –创建索引类型
   CREATE    TABLE              –创建表

授权角色给用户的sql语句:
GRANT role TO username;

5.查看用户权限

查看所有用户
SELECT * FROM DBA_USERS;
SELECT * FROM ALL_USERS;
SELECT * FROM USER_USERS;

查看用户系统权限
SELECT * FROM DBA_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;

遇到no privileges on tablespace ‘tablespace ‘
alter user userquota 10M[unlimited] on tablespace;

转://Oracle A用户给B用户授权查询指定表或视图权限方案的更多相关文章

  1. Oracle创建用户并给用户授权查询指定表或视图的权限

    MSV31账户登录数据库进行如下操作: CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND  DEFAULT TABLESPACE "TBS_DN ...

  2. sqlserver给指定用户授权访问指定表

    一.   背景 外部公司的人授权访问我们公司的数据库,数据接口调用,要给他们建立查看指定的视图和授权的账号,因此要在数据库中,给指定用户授权访问指定表 二.sqlserver 脚本 ---创建视图CR ...

  3. Oracle新建用户、角色,授权,建表空间

    oracle数据库的权限系统分为系统权限与对象权限.系统权限( database system privilege )可以让用户执行特定的命令集.例如,create table权限允许用户创建表,gr ...

  4. Oracle创建用户、角色、授权、建表

    oracle数据库的权限系统分为系统权限与对象权限.系统权限( database system privilege )可以让用户执行特定的命令集.例如,create table权限允许用户创建表,gr ...

  5. [转载]Oracle创建用户、角色、授权、建表

    出处:https://www.cnblogs.com/roger112/p/7685307.html oracle数据库的权限系统分为系统权限与对象权限.系统权限( database system p ...

  6. Oracle创建用户、角色、授权、建表空间

    oracle数据库的权限系统分为系统权限与对象权限.系统权限( database system privilege )可以让用户执行特定的命令集.例如,create table权限允许用户创建表,gr ...

  7. oracle 11g数据库--创建表空间,创建用户,用户授权并指定表空间。

    使用环境:我们安装完数据库后,查看以下服务是否启动 需要建库.实质上我们是建立表空间,从而进行库的还原工作. 根据本例情况,是在下面目录下进行的操作. D:\app\Administrator\ora ...

  8. ORACLE中dba,user,v$等开头的常用表和视图

    一.Oracle表明细及说明1.dba_开头表    dba_users           数据库用户信息    dba_segments    表段信息    dba_extents        ...

  9. 在oracle中操作表及字段注释,查询一个表的所有字段名以及属性和约束

    1.查询表注释 SELECT * FROM USER_TAB_COMMENTS; 三列:TABLE_NAME,TABLE_TYPE,COMMENTS 2.查询字段注释 SELECT * FROM US ...

随机推荐

  1. java过滤器(过滤器排序)

    java过滤器(过滤器排序) 定义过滤器顺序是很简单的:匹配请求的过滤器将按照它们出现在部署描述符或者编程式配置中的顺序添加到过滤器链中(记住,如果同时再部署描述符或者编程式配置中设置了一些过滤器,那 ...

  2. C#设计模式之十一享元模式(Flyweight Pattern)【结构型】

    一.引言 今天我们要讲[结构型]设计模式的第六个模式,该模式是[享元模式],英文名称是:Flyweight Pattern.还是老套路,先从名字上来看看.“享元”是不是可以这样理解,共享“单元”,单元 ...

  3. Linux服务器配置

    配置ssh: 1. 查看22端口是否监听 netstat -antu | grep :22 2. 安装ssh服务 sudo apt-get install ssh 3. 再次查看22端口 安装apac ...

  4. JS中数组重排序方法

    在数组中有两个可以用来直接排序的方法,分别是reverse()和sort().下面通过本文给大家详细介绍,对js数组重排序相关知识感兴趣的朋友一起看看吧 1.数组中已存在两个可直接用来重排序的方法:r ...

  5. Html5 和 CSS的简单应用

    本文是利用几个简单的小例子,来实现html+css的简单应用. 菱形链接菜单 本例是采用html5+css3.0设置的菜单链接.其中主要用到了以下几个方面: CSS3.0中的2D变换,如:旋转tran ...

  6. Android 彩色Toast实现

    Android默认的Toast太丑了,我们来封装一个花里胡哨的Toast吧,就叫ColoredToast. Github:https://github.com/imcloudfloating/Desi ...

  7. AIDL基本使用

    1.概述 Binder能干什么?Binder可以提供系统中任何程序都可以访问的全局服务.这个功能当然是任何系统都应该提供的,下面我们简单看一下Android的Binder的框架 Android Bin ...

  8. 微信小程序中如何获取for循环的item相关值到JS页面的问题

    今天小程序开发过程中,遇到了这个棘手的问题.由于我没有前端基础,只是知道一点儿基本的HTML标签,所以卡了好久,特此分享,望后来的你,可以有所收获. measure  step 1  *.WXML: ...

  9. SAP 销售条件表增强栏位

    有时遇到一个比较特殊的业务,比如公司间免费订单,既要让价格为0,不读取VK11里创建的价格, 又要让公司间的价格读取VK11,这实际上是有矛盾的,也就是说一个订单里面的两行,物料一样,客户一样,就会出 ...

  10. telnet 测试网站是否开启长连接

    测试服务器是否开启keepalive(长连接) telnet 主机名(域名|IP) 80 #发起请求GET /index.html HTTP/1.1Host: www.cbnsc.com 如果请求完后 ...