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