zoukankan      html  css  js  c++  java
  • oracle权限

    ORACLE里面的权限有系统权限和对象权限两种

    权限查询

    select distinct p.privilege from user_sys_privs p order by p.privilege asc;--查询所有系统权限

    select distinct t.privilege from user_tab_privs t;--查询所有的对象权限

    常用的系统权限有 :

    CREATE SESSION 创建会话 登录数据库
    CREATE SEQUENCE 创建序列
    CREATE SYNONYM 创建同名对象
    CREATE TABLE 在用户模式中创建表
    CREATE ANY TABLE 在任何模式中创建表
    DROP ANY TABLE 在任何模式中删除表
    CREATE PROCEDURE 创建存储过程
    EXECUTE ANY PROCEDURE 执行任何模式的存储过程
    CREATE USER 创建用户
    DROP USER 删除用户
    CREATE VIEW 创建视图

    常用对象权限:

    FLASHBACK,EXECUTE,ON COMMIT REFRESH,ALTER,DEQUEUE,UPDATE,DELETE,DEBUG,UNDER,QUERY REWRITE,SELECT,READ,INSERT,INDEX,WRITE,REFERENCES,MERGE VIEW
    1.create user usertestxxx identified by passwordtestxxx;--创建用户 usertestxxx 密码是passwordtestxxx
    drop user usertestxxx;--只是删除用户usertestxxx
    drop user usertestxxx cascade;--会删除此用户名下(usertestxxx)的所有表和视图
    2.grant CONNECT to usertestxxx;--授权连接权限(系统权限)
    grant create procedure to usertestxxx;--授权创建存储过程权限(系统权限)
    grant execute any procedure to usertestxxx;--授权执行任何用户的存储过程权限(系统权限)
    grant create job to usertestxxx;--授权创建job权限(系统权限)
    grant manage scheduler to usertestxxx;--授权管理job权限(系统权限)
    GRANT SELECT, INSERT ,UPDATE,DELETE ON user2.tablexxx TO usertestxxx;--将用户user2下的tablexxx表的查询,插入,更新,删除权限 授权给usertestxxx
    GRANT ALTER ON user2.tablexxx TO usertestxxx;--将用户user2下的tablexxx表的修改权限(alter 有 truncate 权限)权限 授权给usertestxxx
    3.查看job运行日志(output中保存错误信息或者dbms_output.put_line写的内容)
    SELECT OWNER, JOB_NAME, STATUS, ACTUAL_START_DATE,OUTPUT FROM DBA_SCHEDULER_JOB_RUN_DETAILS WHERE JOB_NAME = 'JOB_NAME' ORDER BY LOG_DATE DESC;
    4.创建角色
    create role userxxx;--创建角色
    grant select on user2.tablexxx to userxxx;--将用户user2下的tablexxx表的select权限 授权给角色userxxx
    grant userxxx to usertestxxx;--将角色userxxx的权限授权给用户usertestxxx(这样授权usertestxxx就拥有了角色userxxx的全部权限。角色userxxx也可以将权限授权给其他用户。如果多个用户的一部分权限相同,可以利用角色授权。)

    例子:
    --system账户下执行
    create user NEWUSER identified by test1234;--创建用户NEWUSER 密码test1234
    GRANT CREATE SESSION TO NEWUSER; 授权连接权限
    GRANT CREATE PROCEDURE TO NEWUSER --授权创建存储过程权限
    GRANT CREATE JOB TO NEWUSER;--授权创建job权限

    --USER1账号下执行

    GRANT SELECT, DELETE ON USER1.TT_TABLE1 TO NEWUSER;//将USER1下表TT_TABLE1的查询删除权限赋给NEWUSER
    GRANT SELECT, DELETE,INSERT,UPDATE ON USER1.TT_TABLE2 TO NEWUSER;//将USER1下表TT_TABLE2的查询删除插入更新权限赋给NEWUSER

    要注意关闭两台计算机上的Windows的防火墙,否则,会出现能ping通,但Oracle连接不通的情况。

    首先查询当前用户是否有创建dblink的权限,如果没有,需要赋权

    select * from user_sys_privs t where t.privilege like upper('%link%');

    赋权语句:

    grant create public database link to newuser;--赋权公共dblink,public表示所创建的dblink所有用户都可以使用
    grant create database link to newuser;--赋权公共dblink ,所创建的dblink只能是创建者能使用,别的用户使用不了

    查看创建的dblink(sys用户)

    select * from dba_db_links;

    CREATE [PUBLIC] DATABASE LINK link
    CONNECT TO username IDENTIFIED BY password
    USING 'connectstring'

    如果是用sid连接
    create database link "dblink"
    connect to user
    identified by "password"
    using 'ip:port:sid'
    或者
    CREATE DATABASE LINK "dblink"
    CONNECT TO user
    IDENTIFIED BY "password"
    USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = port)))(CONNECT_DATA = (SID = sid)))';
    如果用服务名连接
    create database link "dblink"
    connect to user
    identified by "password"
    using 'ip:port/servicename'
    或者
    CREATE DATABASE LINK "dblink"
    CONNECT TO user
    IDENTIFIED BY "password"
    USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = port)))(CONNECT_DATA = (SERVERNAME = servicename)))';
    

    查看dblink连接是否成功

    select * from dual@link名

    DROP DATABASE LINK "[name]";
    --或
    DROP PUBLIC DATABASE LINK "[name]";

    数据库链接的引用

    ①直接将其放到调用的表名或视图名称后面,中间使用一个 @ 作为分割符
    SELECT * FROM table@link;
    ②对于经常使用的数据库链接,可以建立一个本地的同义词,方便使用:
    CREATE SYNONYM syn FOR table@link;
    ③还可以建立一个本地的远程视图,方便使用:
    CREATE VIEW view AS SELECT * FROM table@link where… ;
    ④访问的表不在数据库链接中指定的远程帐户下,但该帐户有访问该表的权限,那么我们在表名前要加上该表的用户名:
    SELECT * FROM 库名.table@link ;

    查看参数

    select * from v$option

    select * from v$option WHERE parameter='global_name';--true代表在本地建立的DBLINK的名称必须和远程的Global_name一致才行
    select * from v$option where PARAMETER='Advanced replication'--true代表支持高级复制功能
    

    查看数据库全局名称global_names

    SELECT * FROM GLOBAL_NAME;

    所有博客均为自己学习的笔记。如有错误敬请理解。
  • 相关阅读:
    [转载]Python爬虫之xpath使用技巧
    手机自动化脚本
    英镑像素转换
    小程序路径存入数据库
    avalonia项目在银河麒麟操作系统arm架构上运行报错:default font family is not be null or empty
    http 301、304状态码
    一文完全理解IP
    TCP是如何保证可靠传输的?
    一文弄懂TCP常见面试题
    一文弄懂HTTP常见面试题
  • 原文地址:https://www.cnblogs.com/tangtang-benben/p/14712978.html
Copyright © 2011-2022 走看看