1. --创建用户
  2. CREATE USER MMS_T5_ANALYSIS IDENTIFIED BY 123456;
  3. --修改用户密码
  4. alter user MMS_T5_ANALYSIS identified by MMS_T5_ANALYSIS
  5. --解锁用户
  6. ALTER USER MMS_T5_ANALYSIS account unlock;
  7. --赋予角色权限
  8. GRANT CONNECT TO MMS_T5_ANALYSIS;
  9. GRANT RESOURCE TO MMS_T5_ANALYSIS;
  10. --查看当前用户所拥有的表
  11. SELECT * FROM USER_TABLES;
  12. --查询指定用户拥有的所有表(会自动判断身份可以查询到的表,建议使用管理员查看)
  13. select * from all_tables where owner='user'
  14. --授权存储过程的执行权限
  15. grant execute on grant_all_table_sel_privs to user
  16. --调用其他用户授权的存储过程需添加用户名前缀,如
  17. exec USER.grant_all_table_sel_privs('SWITCH_ANALYSIS');

批量将当前用户所拥有的表的查询权限授权给指定用户

一开始准备在存储过程里面里面直接执行授权语句,但是就算是当前用户有时也会存在授权失败的情况,所以改成打印出所有的授权语句然后手动执行

  1. 以管理员身份创建存储过程,该存储过程会打印出所有的授权语句,因为只有管理员才有所有用户的表查询权限 ```plsql

create or replace procedure grant_all_table_sel_privs(v_from in varchar2, v_to in varchar2) is

v_sql varchar2(1000); cursor v_cur is select * from all_tables where owner = v_from;

begin for v_row in v_cur loop v_sql := ‘grant select on ‘ || v_from || ‘.’ || v_row.table_name || ‘ to ‘ || v_to || ‘;’; dbms_output.put_line(v_sql); end loop; end grant_all_table_sel_privs;

  1. 2. 调用存储过程
  2. ```plsql
  3. --plsql段调用
  4. begin
  5. grant_all_table_sel_privs('MMS_T5_ANALYSIS','SWITCH_ANALYSIS');
  6. end;
  7. --sql命令调用
  8. --1.打开控制台输出
  9. set serveroutput on;
  10. --2.调用存储过程
  11. exec grant_all_table_sel_privs('MMS_T5_ANALYSIS','SWITCH_ANALYSIS');
  1. 复制控制台的授权语句进行手动执行即可

c盘格式化,恢复oracle数据

点击前往
恢复后数据库没有数据,检查是否使用管理员账户登录,只有管理员账户具有查看其它用户数据的权限