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_*意为某一用户所拥有的所有的对象。就是当前用户的。
"GRANT SELECT ON "APP_PAY_BUDGET" TO "SFZC""
IMP-00003: 遇到 ORACLE 错误 1917
ORA-01917: 用户或角色 'SFZC' 不存在
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' );
--红色注释是我用到的,别的都是网上查到的参考资料,仅供参考