在数据库限制模式下做版本部署的介绍
来源:互联网 发布:java 树形结构工具类 编辑:程序博客网 时间:2024/06/05 14:36
【什么是数据库受限】
版本里面,涉及到数据库现有对象变更,如表、视图等,以及包头的变更,会采用限制模式;它们的重编译会引发关联对象失效,重新编译经常会遇到锁。仅有包体下发,则一般不用限制模式。受限是根据一个受限用户清单,把清单里面的用户进程kill掉,并限制它重新登录;不用重启DB。
【进入DB受限模式】
exec prc_enb_restrict;
1 取消除DBA用户外所有用户的RESTRICTEDSESSION权限,再根据一个用户清单(restrict_allow_user)授予RESTRICTED SESSION权限
2 如当前系统未受限,则altersystemenablerestrictedsession,进入限制模式,无RESTRICTED SESSION权限用户将不被允许登录
3 kill除'SYS','SYSTEM','DBMGR','DEPLOYOP'和用户清单之外用户的session,记录日志到killuser_log中
【取消DB受限模式】
exec prc_dis_restrict;
如当前系统受限,则取消限制模式,无RESTRICTED SESSION权限的用户可以正常使用
【指定用户进入限制模式】
exec prc_grn_rvk_restrict
取消或授予某用户的RESTRICTEDSESSION权限
【关于RESTRICTEDSESSION】(源于YANGTK的博客)
当数据库以RESTRICT状态启动,或者进入到RESTRICT状态,则Oracle禁止普通用户连接数据库。
而拥有DBA角色的用户,或者拥有RESTRICTEDSESSION权限的用户可以登陆数据库。
虽然数据库处于RESTRICTEDSESSION状态,但是数据库中已经登陆的会话可以继续执行任何操作,直到会话断开连接。
是否拥有RESTRICTED SESSION权限可在dba_sys_privs中查看。
如果希望数据库处于RESTRICTED SESSION状态,且此时不希望普通用户登陆数据库,可以用STARTUP RESTRICT的方式来启动数据库,这样可以确保没有普通用户登陆。而ALTERSYSTEM ENABLE RESTRICTED SESSION的方式虽然可以使得数据库进入RESTRICT状态,但是不能保证现有的连接用户都是具有RESTRICTED SESSION权限的。即使是在STARTUP之后,马上发出ENABLE RESTRICTED SESSION命令也是不可靠的,因为这个时间差可能使得后台JOB运行了。
但我们是不希望部署版本时总是重启数据库的,因此使用ENABLE RESTRINCTED SESSION方式,还需要通过ALTER SYSTEM KILL SESSION的方式清除掉所有的普通用户连接。
【部署平台基于sqlplus】
平安的部署平台是基于oracle自带的sqlplus,意味着部署平台仅保证通过sqlplus测试的脚本成功运行。我们移交的脚本可能通过了plsql developer,toad等工具测试,但sql plus报错,部署无法在测试,生产环境执行,就会产生BUG和发布异常。常见的是编码格式的兼容问题。因此,新增脚本一定要在sqlplus下测试通过,最好是复制之前的脚本在里面修改。
- 在数据库限制模式下做版本部署的介绍
- 将数据库设置为运行在限制模式下
- [Oracle数据库] 急!关于在AIX4.3.3版本下导8.0.5数据库DMP文件大小的限制!
- 在multiline模式下限制textbox 的长度
- Mono在Full AOT模式下的限制
- Mono在Full AOT模式下的限制
- Mono在Full AOT模式下的限制
- Unity在iOS平台下的Mono在Full AOT模式下的限制
- NoSql数据库Redis的在ubuntu下的部署使用
- ArcSDE同一版本的数据库如何在不同的机器上部署
- fastdb 共享内存模式下的限制
- SYS模式下测试的限制
- ActiveMQ在windows版本的安装部署
- 在同一IIS6下如何部署不同版本的ASP.Net程序
- 在同一IIS6下如何部署不同版本的ASP.Net程序
- 在java EE版本eclipse下如何查看tomcat部署的位置
- ArcGIS API for Javascript在tomcat下的离线部署--基于3.9版本
- ArcGIS API for Javascript在tomcat下的离线部署--基于3.9版本
- BodyTagSupport类使用说明
- hot positions' skill
- 短址服务实现的一些算法
- Coredata第二课 实体间的关系
- JAVA 可变参数方法
- 在数据库限制模式下做版本部署的介绍
- webdriver判断元素是否存在
- 乘法表
- 菜鸟进阶之Android Touch事件传递(三)
- 敏捷Scrum项目管理汇总(思维导图)
- 文件的遍历
- Python3 用Pillow代替PIL
- Obj-C的多态性、动态类型和动态绑定
- 关于android sdk开发注意点