Oracle查看当前用户的角色和查看当前用户的系统权限和表级权限
oracle 查看当前数据库信息
select * from user_tab_privs;--当前用户的表级权限
select * from dba_sys_privs;--查询某个用户所拥有的系统权限
select * from role_sys_privs;--查看角色(只能查看登陆用户拥有的角色)所包含的权限
查看当前用户的角色
SQL>select * from user_role_privs;
SQL>select * from session_privs
查看当前用户的系统权限和表级权限
SQL>select * from user_sys_privs;
SQL>select * from user_tab_privs;
2.查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
3.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
2.查看所有用户:
select * from dba_users;
select * from all_users;
select * from user_users;
三、查看权限:
1.基本权限查询:
selec拥有的全部权限
union
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='DATAUSER' );
oracle数据库用户之间授权
oracle数据库⽤户之间授权 今天遇到⼀个数据库的问题: 系统数据库⽤户下创建了⼏个视图⽤于外部系统开发报表使⽤,当外部系统提取视图数据时,需要通过⼀个只能访问需要视图权限的⽤户,于是想到给他创建⼀个新的⽤户,并给这个⽤户分配只能访问这⼏个视图的权限。
1. 使⽤ oracle sql developer 客户端登陆数据库。
2. 查看当前数据库⽤户拥有的⾓⾊: select * from USER_ROLE_PRIVS; 查看⽤户系统权限:select * from dba_sys_privs; 查看⽤户系统权限:select * from user_sys_privs; 3、因为系统数据库⽤户拥有dba权限,所以,使⽤数据库系统⽤户创建⽤户: create user BI identified by 123; 4、给BI⽤户授权连接权限: grant connect to BI; 5、给BI⽤户授权 grant RESOURCE to BI; 6、给BI⽤户授权select 某视图的权限: 7、使⽤BI⽤户连接数据库: 查询视图发现提⽰表或视图不存在:SELECT * FROM VW_MONTHLY_BUDGET_ANALYSI; 在视图前加上视图所有者⽤户名称则可以查询成功。
eg:SELECT * FROM FSSC.VW_MONTHLY_BUDGET_ANALYSI; 7、给BI⽤户授权同义词权限: 8、使⽤BI⽤户连接数据库: 此时查询发现还是不可以 9、在BI⽤户下创建同义词视图: 10、BI⽤户下直接查询视图名称则可以查询 11、但是登陆BI⽤户,则在视图列表⾥看不到任何视图,如何能够查询并且登陆⽤户也能看到该视图? 。
如何查看oracle用户具有的权限和角色
如何查看oracle⽤户具有的权限和⾓⾊1.查看所有⽤户:select*from dba_users;select*from all_users;select*from user_users;2.查看⽤户或⾓⾊系统权限(直接赋值给⽤户或⾓⾊的系统权限):select*from dba_sys_privs;select*from user_sys_privs;3.查看⾓⾊(只能查看登陆⽤户拥有的⾓⾊)所包含的权限sql>select*from role_sys_privs;4.查看⽤户对象权限:select*from dba_tab_privs;select*from all_tab_privs;select*from user_tab_privs;5.查看所有⾓⾊:select*from dba_roles;6.查看⽤户或⾓⾊所拥有的⾓⾊:select*from dba_role_privs;select*from user_role_privs;7.查看哪些⽤户有sysdba或sysoper系统权限(查询时需要相应权限)select*from V$PWFILE_USERS⽐如我要查看⽤户 wzsb的拥有的权限:SQL>select*from dba_sys_privs where grantee='WZSB';GRANTEE PRIVILEGE ADMIN_OPTION------------------------------ ---------------------------------------- ------------WZSB CREATE TRIGGER NOWZSB UNLIMITED TABLESPACE NO⽐如我要查看⽤户 wzsb的拥有的⾓⾊:SQL>select*from dba_role_privs where grantee='WZSB';GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE------------------------------ ------------------------------ ------------ ------------WZSB DBA NO YES查看⼀个⽤户所有的权限及⾓⾊select privilege from dba_sys_privs where grantee='WZSB'unionselect privilege from dba_sys_privs where grantee in(select granted_role from dba_role_privs where grantee='WZSB' );。
Oracle常用命令大全(很有用,做笔记)
Oracle常⽤命令⼤全(很有⽤,做笔记)⼀、ORACLE的启动和关闭1、在单机环境下要想启动或关闭ORACLE系统必须⾸先切换到ORACLE⽤户,如下su - oraclea、启动ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quitb、关闭ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>shutdownSVRMGR>quit启动oracle9i数据库命令:$ sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.SQL> connect / as sysdbaConnected to an idle instance.SQL> startup^CSQL> startupORACLE instance started.2、在双机环境下要想启动或关闭ORACLE系统必须⾸先切换到root⽤户,如下su - roota、启动ORACLE系统hareg -y oracleb、关闭ORACLE系统hareg -n oracleOracle数据库有哪⼏种启动⽅式说明:有以下⼏种启动⽅式:1、startup nomount⾮安装启动,这种⽅式启动下可执⾏:重建控制⽂件、重建数据库读取init.ora⽂件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora⽂件。
2、startup mount dbname安装启动,这种⽅式启动下可执⾏:数据库⽇志归档、数据库介质恢复、使数据⽂件联机或脱机,重新定位数据⽂件、重做⽇志⽂件。
Oracle用户、对象权限、系统权限
--Oracle用户、对象权限、系统权限--================================一、用户与模式用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作SYS用户,缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象SYSTEM用户,缺省始终创建,且未被锁定,可以访问数据库内的所有对象模式(schema):是某个用户拥有所有对象的集合。
具有创建对象权限并创建了对象的用户称为拥有某个模式注意:创建数据库对象(视图,表等)的任一用户都拥有一个以该用户名称开头的模式,且被视为模式用户二、创建及修改用户条件:需要具有创建用户的权限,如sys,system,sysdba,dba role等语法:CREATEUSER userIDENTIF IED {BY passwor d | EXTERNA LLY | GLOBALL Y AS externa l name } [DEFAULT TABLESP ACE tablesp ace_na me][TEMPORA RY TABLESP ACE tablesp ace_na me][QUOTA {n {[K|M] | UNLIMIT ED } ON tablesp ace_na meQUOTA {n {[k|M] | UNLIMIT ED } ON tablesp ace_na me ... ][PASSWOR D EXPIRE][ACCOUNT { LOCK | UNLOCK}][PROFILE { profile_name| DEFAULT }]eg:CREATEUSER robinso n IDENTIF IED BY tiger;--省略了DEFAULT TABLESP ACE和TE MPORAR Y TABLESP ACE 时,则由database_pr operti es中对应的参数确定SQL>SELECTpropert y_name,propert y_valu e FROMdatabas e_prop erties WHERE propert y_name LIKE'DEFAULT%';PROPERT Y_NAME PROPERT Y_VALU E--------------------------------------------------------------------------------DEFAULT_TEMP_TABLES PACE TEMPDEFAULT_PERMA NENT_T ABLESP ACE USERSDEFAULT_TBS_T YPE SMALLFI LE更多关于表空间的请参考:Oracle表空间与数据文件1.修改用户修改用户的语法同创建用户,仅仅讲关键字c reate替换为alter,alter user可以修改除用户名之外的任一属性ALTER USER robinso n ACCOUNT LOCK;2.修改密码DBA 可以创建用户和修改密码用户本人可以使用ALTER USER 语句修改密码SQL>ALTER robinso n IDENTIF IED BY newpass word;3.删除用户:DROP USER usernam e [CASCADE]CASECAD E 连同用户创建的对象一并删除,如果该用户创建了对象,要加CASCADE删除,否则删除不掉另外,不能删除当前正在与ORAC LE服务器相连的用户。
Oracle数据库管理与开发第9章 系统安全管理
INSERT
SELECT
UPDATE
创建用户角色
创建用户角色的语法:
create role role_name [ not identified | identified by [password] | [exeternally] | [globally]]
试一试
创建一个名为designer的角色,该角色的口令为123456
创建用户
试一试
创建一个mr用户,口令为mrsoft,并设置默认的表空间为users,临时表 空间为temp的用户。
SQL> create user mr identified by mrsoft default tablespace users temporary tablespace temp;
安全特性
3.过程安全 过程方案的对象权限(其中包括独立的过程、函数和包)只有EXECUTE权限,将这个权限 授予需要执行的过程或需要编译另一个需要调用它的过程。 (1)过程对象。具有某个过程的EXECUTE对象权限的用户可以执行该过程,也可以编译引 用该过程的程序单元。过程调用时不会检查权限。具有EXECUTE ANY PROCEDURE系统权限的 用户可以执行数据库中的任何过程。当用户需要创建过程时,必须拥有CREATE PROCEDURE 系统权限或者是CREATE ANY PROCEDURE系统权限。当需要修改过程时,需要ALTER ANY PROCEDURE系统权限。 拥有过程的用户必须拥有在过程体中引用的方案对象的权限。为了创建过程,必须为过程 引用的所有对象授予用户必要的权限。 (2)包对象。拥有包的EXECUTE对象权限的用户,可以执行包中的任何公共过程和函数, 能够访问和修改任何公共包变量的值。对于包不能授予EXECUTE权限,当为数据库应用开发 过程、函数和包时,要考虑建立安全性。
Oracle用户角色与权限控制
alter user system identified by abc123;
12.2 权限
权限(Privilege)的最终作用对象是用户。即所有用 户在数据库内的操作对象和可执行的动作都是受到限制的。 Oracle中共有两种权限:系统权限和对象权限。
select * from system.t_employees order by employee_id;
12.3.2 继承角色
角色继承是指一个角色可以继承其他角色的权限信息, 从而减少自身使用grant的机会。
create role role_hr;
grant role_employee to role_hr;
grant update, insert on t_employees to role_hr;
select table_name, grantee, grantor, privilege from dba_tab_privs where table_name = 'T_EMPLOYEES';
create user cat identified by abc;
grant create session to cat;
grant role_hr to cat;
update system.t_employees set status = 'CXL' where employee_id = 13;
12.3.3 禁用和启用角色
每个用户登录数据库时,都可以获得其默认角色。可以 通过查询视图session_roles来获得当前会话下该用户的默 认角色。管理员可以禁用用户的默认角色,一旦禁用,则用 户从该角色获得的权限将不再有效。
oracle19c之用户、权限、表空间
oracle19c之⽤户、权限、表空间 ⼀、⽤户相关操作 1、查询⽤户select * from dba_users; --查询全库所有的⽤户select * from all_users; --查询当前⽤户可看到的⽤户select * from user_users; --查询当前登录的⽤户 2、创建⽤户(创建者需要有dba权限,⽤户名必须以c##开头,默认的表空间是users,新⽤户没有任何权限。
)create user c##sl IDENTIFIED BY 123456; 3、删除⽤户drop user c##sl2 cascade; --删除⽤户不会删除其表空间 注意:⽆法删除⽤户C##SL3,报错“[Err] ORA-01940: ⽆法删除当前连接“的⽤户解决⽅法:select username,sid,serial#,paddr from v$session where username='C##SL3';alter system kill session '17,55857'; 4、修改密码alter user c##sl3 identified by 1234; ⼆、权限相关操作 a、系统权限:⽤户在系统层⾯的权限,如CREATE SESSION、SELECT ANY TABLE等不依赖于对象的权限 b、对象权限:⽤户关于某个具体对象的权限,如SELECT、UPDATE、INSERT等依赖于表、视图、存储过程的权限 c、⾓⾊:⼀组权限的集合 注意:PUBLIC⽤户具有的权限,其他⽤户都会有,即修改PUBLIC⽤户的权限,其他⽤户也会对应得改变权限 1、查看权限、⾓⾊select * from user_tab_privs; --当前⽤户具有的对象权限select * from dba_tab_privs WHERE grantee='C##SL' OR grantor='C##SL'; --全部⽤户具有的对象权限,查询C##SL⽤户的select * from user_sys_privs; --当前⽤户具有的系统权限select * from dba_sys_privs WHERE grantee='C##SL'; --全部⽤户具有的系统权限,查询C##SL⽤户的SELECT * FROM user_role_privs; --当前⽤户具有的⾓⾊SELECT * FROM dba_role_privs where grantee='C##SL'; --全部⽤户具有的⾓⾊,查询C##SL⽤户的 注意:上⾯每⼀对查询出的结果应该⼀样,因为全部⽤户中肯定也包含当前⽤户,普通⽤户没有查询全部⽤户⾓⾊、权限表的权限 2、常⽤权限、⾓⾊dba 管理员⾓⾊connect 连接数据库⾓⾊,能修改、删除表及数据,不能创建表resource 能创建表create session 连接数据库权限create table 建表权限unlimited tablespace 操作表空间权限select any table 查询任何表的权限select on c##test.book 查询c##test⽤户的book表的权限 说明: a、⼀般来说,新建的普通⽤户后授予connect和resource⾓⾊就好了、如果是管理员需要再授予dba⾓⾊。
oracle增删改表空间和用户授权及权限
oracle创建表空间、用户如果是在Windows系统下,请先点击“开始”,然后点“运行”,输入cmd并点击“确定”,打开命令行窗口如果是在Linux的图形窗口,请右键点击桌面并点击“打开终端”,然后输入su - oracl 做好上述准备工作以后,输入以下命令:sqlplus /nolog回车后,将出现提示符SQL>这时输入conn / as sysdba一般即可登录,如果失败的话,可以试一下用conn sys/sys用户的密码as sysdba来重试一下接下来,我们看看您当前的数据库文件一般都是放在哪里的:select name from v$datafile;windows下可能看到的结果如下:SQL> select name from v$datafile;NAME--------------------------------------------------------------------------------D:\oracle\oradata\orcl\system01.dbfD:\oracle\oradata\orcl\undotbs01.dbfD:\oracle\oradata\orcl\cwmlite01.dbfD:\oracle\oradata\orcl\drsys01.dbfD:\oracle\oradata\orcl\indx01.dbfD:\oracle\oradata\orcl\tools01.dbf说明您的数据文件是放在D:\oracle\/oradata\orcl\ 这个目录下的Linux下可能看到的结果如下:SQL> select name from v$datafile;NAME--------------------------------------------------------------------------------/oracle/oradata/orcl/system01.dbf/oracle/oradata/orcl/undotbs01.dbf/oracle/oradata/orcl/cwmlite01.dbf/oracle/oradata/orcl/drsys01.dbf/oracle/oradata/orcl/indx01.dbf/oracle/oradata/orcl/tools01.dbf说明您的数据文件是放在/oracle/oradata/orcl/ 这个目录下的好,我们可以开始创建数据库表空间了,创建数据库表空间的命令格式如下:create tablespace 表空间名datafile '对应的文件名' size 大小;举例如下:对于上述的windows情况:create tablespace wbppcs datafile 'D:\oracle\oradata\orcl\wbppcs.dbf' size 3000m;3000m指的是3000MB对于上述的Linux的情况:create tablespace wbppcs datafile '/oracle/oradata/orcl/wbppcs.dbf' size 3000m;至此,所需的表空间已建立接下来我们开始创建用户,创建用户的命令格式如下:create user 用户名identified by 密码default tablespace 用户默认使用哪一个表空间;修改用户的权限:grant 角色1,角色2 to 用户名;举例如下:create user wbppcs identified by wbppcs123 default tablespace wbppcs;给用户授权:grant dba, connect to wbppcs;=============================================================================== ==============================================================oracle创建表空间和用户授权SYS用户在CMD下以DBA身份登录:在CMD中打sqlplus/nolog //匿名登录然后再conn/as sysdba //以dba身份登录//创建临时表空间create temporary tablespace bigoa_temptempfile 'E:\oracle\product\10.2.0\oradata\orcl\bigoa_temp.dbf'size 50mautoextend onnext 50m maxsize 2048mextent management local;//创建数据表空间create tablespace bigoaloggingdatafile'E:\oracle\product\10.1.0\oradata\orcl\bigoa.dbf'size 50mautoextend onnext 50m maxsize 2048mextent management local;//查看数据表空间select tablespace_name from dba_data_files;//创建用户并指定表空间create user swoa identified by oadefault tablespace bigoatemporary tablespace temp;//给用户授予权限grant connect,resource,dba,CTXAPP,create view to swoa;以后以该用户登录,创建的任何数据库对象都属于user_temp和user_data表空间,这就不用在每创建一个对象给其指定表空间了//修改用户口令alter user user_name identified by password;撤权:revoke 权限... from 用户名;删除用户命令drop user swoa cascade;//删除表空间drop tablespace bigoa_temp including contents and datafiles cascade constraints;//including contents 删除表空间的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉//cascade constraints 同时删除tablespace中表的外键参照//数据导出注:退出到cmd命令下再运行下列命令1、将数据库TEST完全导出,用户名system密码manager,导出到D:daochu.dmp中exp pobaoa/oa@orcl file=d:/zyoa0809.dmp full=y //不用加full=y,加上的意思是连同系统表一起导出exp sjsoa/oa@orcl file=d:/sjsoa1224.dmp full=y //不用加full=y,加上的意思是连同系统表一起导出2、将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)3、将数据库中的表inner_notify notify_staff_relat导出exp aichannel/aichannel@TESTDB2 file=d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)exp swoa/oa@orcl file=f:/swoa11.dmp tables=(OA_CALENDAR)exp bigoa/bigoa@orcl file=f:/bigoatemp.dmp tables=(OA_CALENDAR)4、将数据库中的表table1中的字段field1以“00”开头的数据导出exp system/manager@TEST file=d:daochu.dmp tables=(table1) query="where filed1 like '00%'"//数据导入注:退出到cmd命令下再运行下列命令1、将D:daochu.dmp中的数据导入TEST数据库中imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y有的表已经存在,所以会报错,加上ignore=y就可以了imp pobaoa/oa@orcl file=f:\zyoa0916.dmp full=y ignore=yimp sjsoa/oa@orcl file=f:/bigoatemp.dmp full=y2、将d:daochu.dmp中的表table1导入imp system/manager@TEST file=d:daochu.dmp tables=(table1)select INSTANCEID,NID,TITLE,NODENAME,ASSIGNER,NODEBEGIN,initiatorname,'办理状态'As blzt from view_wf_todo where actor='%USERID%' order by nodebegin descsqlplus / as sysdba。
oracle 最常用的命令
select member from v$logfile;
6、查看表空间的使用情况
select sum(bytes)/(1024*1024) as free_space,tablespace_name
from dba_free_space
group by tablespace_name;
查看某表的创建时间
SQL>select object_name,created from user_objects where
object_name=upper('&table_name');
查看某表的大小
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
3、查看回滚段名称及大小
selectsegment_name, tablespace_name, r.status,
(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
SQL>select * from user_tab_privs;
2.表
查看用户下所有的表
SQL>select * from user_tables;
查看名称包含log 字符的表
SQL>select object_name,object_id from user_objects
