zoukankan      html  css  js  c++  java
  • Oracle 遇到的问题:dos命令下imp导入数据时出错

    赋予用户dba权限:很多情况下会遇到没有权限需要输入用户名及密码才能导入

    --已知被赋予权限的用户名为:batch

    --第一步 登陆

    sqlplus /nolog

    sql>conn /as sysdba;

    --第二步 查询所有用户名,可以找到batch用户

    sql>select  username from dba_users;

    --第三步 赋予权限

    sql>grant dba to batch;---------------我是在pl/sql中执行授权的

    --另外解除权限是:

    sql>revoke dba from batch;

    --解释以上:
    sqlplus /nolog

    --运行sqlplus命令,进入sqlplus环境,nolog参数表示不登录。这种登陆方式比较安全;

    sql>conn /as sysdba
    --以系统管理员(sysdba)的身份连接数据库;如果需要对数据库进行管理操作,那么需要以这种方式登录数据库,或者connect   sys@service_name as sysdba,其中你配置的客户tnsname服务名
    --操作系统身份认证登陆。oracle在登录时,有三种身份认证方式:操作系统身份认证、密码文件认证、数据库认证。而conn /as sysdba是属于操作系统认证。 为什么这样说呢?你当前电脑开机时登录的用户,也就是进入操作系统的用户,例如是gooooal,它在你电脑的ora_dba组中。
    可以在“我的电脑”单击右键,找到“管理”,选择“本地用户和组”,发现有一个组叫“ora_dba”,双击它,看到成员列表中有“gooooal”。
    也就是在conn /as sysdba,oracle会进行操作系统验证,发现你当前登录的用户就属于ora_dba组,因此才可以登录成功。

    sql>select username from dba_users;
    --查询oracle中所有用户名


    sql>grant dba to batch;
    --给用户赋予dba权限,dba是一个角色,该角色具有数据库所有的权限


    sql>revoke dba from username;

    --解除权限

    -------------------------------------------------------------------------------

    oracle数据库中涉及到用户权限的三个表,dba_users,all_users,user_users有什么区别?
    答:DBA_*意为DBA拥有的或可以访问的所有的对象。就是是查全库所有的;
    ALL_*意为某一用户拥有的或可以访问的所有的对象。就是当前用户可以看到的;
    USER_*意为某一用户所拥有的所有的对象。就是当前用户的。

    cmd 执行 Imp 用户名/密码@ORCL  file=文件路径.dmp fromuser=BssAdmin9 touser=admin rows=y commit=y feedback=10000 buffer=10240000
     
    如果导入时出现如下错误是正常的, 不需要管,这个报错是授权;会正常导入表
    IMP-00017: 由于 ORACLE 错误 1917, 以下语句失败:
     "GRANT SELECT ON "APP_PAY_BUDGET" TO "SFZC""
    IMP-00003: 遇到 ORACLE 错误 1917
    ORA-01917: 用户或角色 'SFZC' 不存在
     
    以下sql可以自己练习查看:
     1 1.查看所有用户:
     2   select * from dba_users;
     3   select * from all_users;
     4   select * from user_users;
     5 
     6 2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
     7   select * from dba_sys_privs;
     8   select * from user_sys_privs;
     9  
    10 3.查看角色(只能查看登陆用户拥有的角色)所包含的权限
    11 sql>select * from role_sys_privs;
    12 
    13 4.查看用户对象权限:
    14   select * from dba_tab_privs;
    15   select * from all_tab_privs;
    16   select * from user_tab_privs;
    17 
    18 5.查看所有角色:
    19   select * from dba_roles;
    20 
    21 6.查看用户或角色所拥有的角色:
    22   select * from dba_role_privs;
    23   select * from user_role_privs;
    24  
    25 7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
    26 select * from V$PWFILE_USERS
    27  
    28 比如我要查看用户 wzsb的拥有的权限:
    29 SQL> select * from dba_sys_privs where grantee='WZSB';
    30  
    31 GRANTEE                        PRIVILEGE                                ADMIN_OPTION
    32 ------------------------------ ---------------------------------------- ------------
    33 WZSB                           CREATE TRIGGER                           NO
    34 WZSB                           UNLIMITED TABLESPACE                     NO
    35 
    36 比如我要查看用户 wzsb的拥有的角色:
    37 SQL> select * from dba_role_privs where grantee='WZSB';
    38  
    39 GRANTEE   GRANTED_ROLE   ADMIN_OPTION  DEFAULT_ROLE
    40 ------------------------------ ------------------------------ ------------ ------------
    41 WZSB                           DBA                         NO              YES
    42 
    43 查看一个用户所有的权限及角色
    44 select privilege from dba_sys_privs where grantee='WZSB'
    45 union
    46 select privilege from dba_sys_privs where grantee in 
    47 (select granted_role from dba_role_privs where grantee='WZSB' ); 
    View Code

    --红色注释是我用到的,别的都是网上查到的参考资料,仅供参考

  • 相关阅读:
    面向对象的设计原则
    在VC中Debug下是运行结果正确的,但是在Release下却有错,总算找到原因
    聚合和组合
    痛苦呀,代码
    MSDN和VS98
    阅读代码的难度
    好香,方便面
    人的重要性
    FIT For .NET(1)
    ASP.NET Microsoft .NET Pet Shop 3.x(二)
  • 原文地址:https://www.cnblogs.com/ln-qiqi/p/10727798.html
Copyright © 2011-2022 走看看