oracle-dba-事务,角色管理

事务
DBMS使用事务协调用户的并发行为,减少用户访问资源的冲突

提交4方式
Commit显示提交
Ddl语句隐式提交。
正常结束程序,oracle数据库应用程序正常结束,如sqlplus更改数据正常退出,提交
Set autocommit on/off;执行DML操作,update,delete,insert自动提交

回滚2方式
Rollback回滚
非正常结束,回滚,隐式回滚

事务4特性(ACID)
原子性:事务要么执行成功,要么什么也不执行。如果执行了一部分出现系统崩溃或者异常,则回滚。此时oracle使用还原段管理更改数据的原始值用户事务回滚
一致性:数据库必须保证。如用户1删除了一条部门,而用户表中有绑定了要删除的部门的职员。就拒绝这样请求
隔离性:隔离性使得多个用户隔离执行实现数据库的并发访问,这样的隔离性要求一个事务修改的数据在未提交前,其他事务看不到他所做的更改。Oracle使用并发控制机制实现事务的隔离性。
持久性:保证提交的事务永久保存数据库中。Oracle中并不是立即写入数据文件中,而是先保存到数据库高速缓存中,为了防止实例崩溃,使用日志优先的方法,首先将提交的数据更改到重做日志文件中。即使实例崩溃也可以在实例恢复。保证事务持久性。

事务控制
用户控制事务的行为,有显示和隐式
Commit提交前,数据库内部发生
1:非系统还原段中生成要更改的数据的备份
2:重做日志缓冲区创建重做日志选项
3:数据库高速缓冲区修改数据(删除|更新)
Commit提交后
1. 重做记录的事务表中标记已提交事务的SCN,说明该事务以提交
2. LGWR将事务的重做日志信息和已提交事务的SCN号写入重做日志文件,此时认为提交完成
3. 释放oracle持有对象的对更改的数据对象的锁,标记事务完成。

角色管理
角色可以理解为权限的集合。
给10个用户授予10个相同的权限,需要100次操作,使用角色授予10个权限,然后角色授予10个用户,只需要11次操作。减少数据库操作,以及提高DBA管理数据库效率,减少出错机会
角色特点
Grant授权,revoke回收
可以授权任何用户或角色,但是不能赋予角色自己或循环授予
角色包含系统权限和对象权限
允许启动或关闭赋予用户的角色
允许使用密码启动一个角色
角色名唯一
不被任何人拥有,不属于任何模式

查看角色描述
Select * from dba_roles;

创建角色
CREATE ROLE role_name [NOT IDENTIFIED|IDENTIFIED{ BY password |EXTERNALLY |GLOBALLY |USING package}]
role_name:角色名
NOT IDENTIFIED:激活角色时不需要密码验证
IDENTIFIED:激活角色时需要密码验证
BY password:密码
EXTERNALLY:激活前,必须通过外部服务如操作系统或第三方服务授权
GLOBALLY:使用set role 激活角色时,用户必须通过企业路径服务授权来使用角色
USING package:创建应用角色,该角色只能由应用通过授权的package激活

创建角色,不需要任何口令
Create role mk_clerk;
创建角色,需要激活时使用口令
Create role at_clerk identified by rmb;
创建角色,使用外部服务来标识
Create role manager identified by externally;
查看角色信息
select * from dba_roles where role in(‘MK_CLERK’,’AT_CLERK’,’MANAGER’);

修改角色
只能修改验证方法
ALTER ROLE role { NOT IDENTIFIED | IDENTIFIED {BY password |USING package |EXTERNALLY |GLOBALLY}}
验证方法设置为外部标识
Alter role mk_clerk identified by externally;
不需要标识
Alter role at_clerk not identified;
需要密码标识
Alter role manager identified by rmb;

赋予角色权限

GRANT 权限|角色 TO 角色名
授权
Grant create session,select any table,create view to at_clerk

验证角色的权限信息
Select * from role_sys_privs where role =’AT_CLERK’;
ADMIN_:no表示该角色不能再将拥有的权限赋予给其他按用户|角色

将权限和角色授予角色
Grant create any table,at_clerk to manager;
验证,无法查看授予角色权限
Select * from role_sys_privs where role =’MANAGER’;

查看角色授予给了那些角色, ADMIN_表示不能授权角色给其他角色
Select * from dba_role_privs where granted_role=’AT_CLERK’;

授予用户角色
GRANT role [, role] ……
TO {user | role | public } | [,{yser | role | public }]…..
[WITH ADMIN OPTION]
Role:赋予的角色名,多个角色逗号隔开
User:被赋予的用户,多个用户逗号隔开
Pubic:角色赋予给所有用户
WITH ADMIN OPTION:被授予该角色的用户或角色可以继续将该角色赋予其他用户或角色

创建用户
Create user clerk identified by my123456;
Create user a_clerk identified by my123456;

尝试登陆,失败缺少创建session权限
connect clerk/my123456;
将角色赋予给用户,并with admin option可以继续将该角色赋予给其他用户
Grant at_clerk to clerk with admin option;
验证授权用户信息
Select * from dba_role_privs where granted_role=’AT_CLERK’;
可以看出,该用户具有继续将角色MANAGER继续授权的能力,因为ADM为yes,角色manager为clerk的默认角色,因为def为yes;
测试连接成功
connect clerk/my123456;
查看用户的会话级权限
select * from session_privs;
在clerk用户模式再将角色at_clerk赋予给用户a_clerk;
Grant at_clerk to a_clerk;
使用a_clerk角色登录
connect a_clerk/my123456;
查看当前用户角色信息
select * from user_role_privs;
该操作不是操作系统验证,因为os_为no。
查看权限
select * from session_privs;

默认角色
查看用户角色,default选项为yes,说明都为默认角色
Select * from dba_role_privs where grantee=’CLERK’;
更改为非默认角色
alter user clerk default role all except manager;
将用户的所有角色设置为非默认
Alter user clerk default role none;
为用户设置默认角色
Alter user clerk default role at_clerk;
将赋予的所有角色设置为默认角色
Alter user clerk default role all;
再将某个角色设置为默认时,如果该角色时通过其他角色授予该角色的,则角色不能再default子句中使用。

禁止和激活角色
查看用户权限
Select * from session_privs;
禁止所有角色
Set role none;
激活用户角色
Set role AT_CLERK;
激活设置密码验证的角色
Set role manager identified by rmb;

回收和删除角色
查看角色赋予用户的信息
Select * from dba_role_privs where granted_role in (‘AT_CLERK’,’MANAGER’);
因为角色是在system下授权的,所以该用户自动授予该角色
回收角色时可以同时回收多个,多个角色名逗号隔开。用户也同理。
Revoke at_clerk from clerk;
删除角色
Drop role at_clerk;
将角色赋予给所有用户,public表示所有用户
Grant manager to public;
查看赋予情况
Select * from dba_role_privs where granted_role in (‘MANAGER’);
回收授予的public的manager角色
revoke manager from public;

ORACKE预定义的角色
 AQ_ADMINISTRATOR_ROLE:管理queue权限的角色
 Connect:连接数据库权限
 Dba:数据库管理员权限
 EXP_PULL_DATABASE:导出数据库
 IMP_FULL_DATABASE:导入数据库
 JAVADEBUGPRIV:调试java程序
 MGMT_USER:创建会话和创建触发器权限
 OEM_ADVISOR:执行OEM顾问权限
 OEM_MONITOR:执行OEM监视权限
 OLAP_USER:执行联机事务处理时的USER权限
 OLAP_DBA:执行联机事务处理时的DBA权限
 RECOVERY_CATALOG_OWNER:恢复数据库字典
 RESOURCE:创建一系列数据库对象权限
 SCHEDULER_ADMIN:管理各种调度的权限,如创建任务,执行程序等
查看预定义角色,以及权限
Select * from role_sys_privs;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深入浅出Oracle-DBA入门、进阶与诊断案例是面向初学者和有一定基础的Oracle数据库管理员的一本教材。本书从基础概念出发,系统地介绍了Oracle数据库管理员的基本职责和技能要求,并详细讲解了Oracle数据库的体系结构、安装步骤,以及基本的管理和维护操作。 在入门部分,本书首先介绍了Oracle数据库管理员的职责和角色,并解释了Oracle数据库的概念和体系结构。随后,本书详细讲解了Oracle数据库的安装过程,包括软件和实例的安装与配置,为读者提供了全面的安装指导。 在进阶部分,本书将深入介绍Oracle数据库的管理和维护技术。读者将学习到如何创建和管理数据库对象,如表、索引和视图等。此外,本书还讲解了备份和恢复技术,包括在线备份和恢复、全备份和增量备份等。此外,本书还介绍了性能优化和故障诊断技术,包括SQL优化和性能监控等内容。 在诊断案例部分,本书将通过实际案例来讲解Oracle数据库的故障诊断和解决方法。通过详细的故障案例分析,读者将深入了解Oracle数据库的常见问题和解决方案,提升自己的故障处理能力。 总之,通过深入浅出Oracle-DBA入门、进阶与诊断案例,读者将掌握Oracle数据库管理员所需的基础知识和技能,能够独立完成Oracle数据库的管理和维护工作,并能解决常见的故障问题。这本书是初学者入门的好教材,也是有一定基础的DBA进阶和提高的重要参考书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值