Oracle创建⽤户并给⽤户授权查询指定表或视图的权限
⽤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 s_doc_single_attr@CLIENT_QLZQWEB a
left s_doc_category_map@CLIENT_QLZQWEB b on a.doc_id=b.doc_id
where
a.state =1and 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\a’
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\a’
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 –创建索引类型
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论