oracle创建第三方数据接口表,指定特定用户访问某张表

/*****创建用户并指定操作哪张表开始******/
--1.创建用户并设置默认表空间
CREATE USER CHENGDWY IDENTIFIED BY CHENGDWY DEFAULT TABLESPACE CFWL QUOTA UNLIMITED ON CFWL;
--DROP USER CHENGDWY CASCADE; --删除用户
--2.授予CHENGDWY用户创建session的权限,即登陆权限
GRANT CONNECT TO CHENGDWY;
ALTER USER CHENGDWY DEFAULT ROLE NONE;
GRANT CREATE SESSION TO CHENGDWY;
--3.授予CHENGDWY用户使用表空间的权限
GRANT UNLIMITED TABLESPACE TO CHENGDWY;
--4.给用户授权可以查看、插入、更新某张表的数据
GRANT
  SELECT ON QICHSJ TO CHENGDWY; --授予查看表QICHSJ的权限
GRANT INSERT ON QICHSJ TO CHENGDWY; --授予插入表QICHSJ的权限
GRANT UPDATE ON QICHSJ TO CHENGDWY; --授予修改表QICHSJ的权限
GRANT
  SELECT ON GUIDHSJ TO CHENGDWY; --授予查看表guidhsj的权限
GRANT INSERT ON GUIDHSJ TO CHENGDWY; --授予插入表guidhsj的权限
GRANT UPDATE ON GUIDHSJ TO CHENGDWY; --授予修改表guidhsj的权限
--5.登录新创建的用户,查看授权是否成功
SELECT * FROM CFWL.QICHSJ Q; --成功
SELECT * FROM QICHSJ Q; --失败,报:表或视图不存在!
SELECT * FROM CFWL.GUIDHSJ G; --成功
SELECT * FROM GUIDHSJ G; --失败,报:表或视图不存在!
--6.给新创建的用户授权可以创建同义词
GRANT CREATE SYNONYM TO CHENGDWY;
--7.使用新创建的用户创建同义词供对方公司访问,解决上面报的错
CREATE SYNONYM TB_QICHSJ FOR CFWL.QICHSJ;--CFWL是创建用户的账号,须根据实际进行修改
CREATE SYNONYM TB_GUIDHSJ FOR CFWL.GUIDHSJ;
--SELECT * FROM USER_SYNONYMS; --查看当前用户下的同义词
--8.在此登录新创建的用户查询授权是否成功
SELECT * FROM CFWL.TB_QICHSJ Q; --成功
SELECT * FROM TB_GUIDHSJ G; --成功
--9.限制第三方连接数据库的连接数
SHOW PARAMETER RESOURCE; --查看数据库连接数限制是否打开,此语句需在SQL*Plus下执行
ALTER SYSTEM SET RESOURCE_LIMIT = TRUE; --修改数据库连接数限制为打开状态,此语句选在SQL*Plus下执行
--新建profile, 初始限制为1 ,用于测试。
CREATE PROFILE CHENGDWY_PROFILE LIMIT SESSIONS_PER_USER 1 FAILED_LOGIN_ATTEMPTS UNLIMITED;
--将创建的数据库连接数限制赋给用户
ALTER USER CHENGDWY PROFILE CHENGDWY_PROFILE;
--将会话数调整到30
ALTER PROFILE CHENGDWY_PROFILE LIMIT SESSIONS_PER_USER 30; 
--DROP PROFILE CHENGDWY_PROFILE CASCADE; --删除用户连接数据库限制
/*****创建用户并指定操作哪张表结束******/

相关SQL语句

--查看所有用户会话信息
SELECT * FROM V$SESSION;
SELECT SID, LOGON_TIME, USERNAME, MACHINE FROM V$SESSION;
--查看所有用户连接信息
SELECT S.USERNAME,
       S.OSUSER,
       S.PROGRAM,
       S.MACHINE,
       S.SID,
       S.SERIAL#,
       P.SPID,
       'alter system kill session ' || '''' || TRIM(S.SID) || ',' ||
       TRIM(S.SERIAL#) || ''';'
  FROM V$SESSION S, V$PROCESS P
 WHERE S.PADDR = P.ADDR
   AND S.USERNAME IS NOT NULL;
--断开已连接的用户
SELECT SID, SERIAL# FROM V$SESSION WHERE USERNAME = 'CHENGDWY';
ALTER SYSTEM KILL SESSION '152, 189';

SQL*Plus执行结果:

参考文档:

http://blog.csdn.net/lixi292/article/details/7029915

http://blog.sina.com.cn/s/blog_5695d9a901013ji7.html

http://database.51cto.com/art/201010/231887.htm

http://www.cnblogs.com/liuyou/archive/2011/10/20/2219624.html

posted @ 2015-03-30 17:23  尐sんΙ頭  阅读(1153)  评论(0编辑  收藏  举报