资讯专栏INFORMATION COLUMN

一体机PDB处于受限模式(Restricted)应用账号无法连接故障处理

IT那活儿 / 1637人阅读
一体机PDB处于受限模式(Restricted)应用账号无法连接故障处理

心得整理:


现象描述:早上一个现场出现业务故障,经现场定位发现DB主机hang,然后就没有然后了。后来项目经理按照既定的应急预案,紧急重启主机,切应急,5分钟业务恢复,因为9:30业务高峰期前,业务无感知。

问题思考:如果早上项目经理没在现场,或者项目经理请假,等到9:30之后,业务高峰期来临,影响面扩大,最后就是鸡飞狗跳,各种总结会,分析会。。。。。。这里面根本的问题是日常的应急演练不充分,基本没有练,更谈不上“演”,当故障真的来临的时候,即便有各种预案,也仅仅是预案罢了。

改进措施:需要把预案变成行为规范,通过演练及演练总结印在每个人的脑子里,当遇到问题,就像下雨本能打伞一样的根据预案来进行故障性能处理。

后续延伸:将应急预案的场景全部工具化,出现问题,根据场景平台点击对应预案处理自动完成,减少人工介入处理的琐碎时间浪费。




下面是另一个故障分享,上下无关联,请勿想入非非




技术总结:

环境:LINUX 6.9 ORACLE一体机

数据库版本:12.2.0.1

是否RAC:是

节点数:7

一体机型号:X7


现象:

所有节点实例全停全启之后,发现数据库所有PDB均处于RESTRICTED模式,所有应用用户无法连接,除了SYS/SYSTEM。

SQL> show pdbs;


CON_ID CON_NAME                       OPEN MODE  RESTRICTED

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

         2 PDB$SEED                       READ ONLY  YES

         3 SHOWDBPDB                      READ WRITE YES

         4 GISPDB                         READ WRITE YES


分析:

一、当发现所有PDB处于受限模式下,我们尝试将其open成正常模式,但是open之后还是受限模式

alter pluggable database  SHOWDBPDB close immediate instance=all;

alter pluggable database  SHOWDBPDB open read write instance=all;


二、根据以往经验,受限模式一般是打完patch,更新数据字典失败或者未更新,重新打开PDB才会出现的模式。

尝试重新更新数据字典报ORA-01918: user DVSYS does not exist

SQL> show pdbs;


CON_ID CON_NAME                       OPEN MODE  RESTRICTED

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

         2 PDB$SEED                       READ ONLY  YES

         3 SHOWDBPDB                      READ WRITE YES

         4 GISPDB                         READ WRITE YES


cd $ORACLE_HOME/OPatch


./datapatch -verbose

.......................

ORA-01918: user DVSYS does not exist

.......................


三、对比其他库发现这个库CDB及所有PDB都没有DVSYS用户

select USERNAME,CREATED from dba_users where username=DVSYS;


四、在CDB依次运行如下命令创建DVSYS用户

1、如果OLS元数据未安装,先enable OLS

sqlplus / as sysdba

@?/rdbms/admin/catols.sql

exec lbacsys.configure_ols

exec lbacsys.ols_enforcement.enable_ols


2、运行catmac.sql脚本创建DVSYS及相关对象

sqlplus / as sysdba

@?/rdbms/admin/catmac.sql system temp

注:system是DVSYS的默认表空间,temp是临时表空间


3、如果失效对象较多,运行如下脚本重编译

sqlplus / as sysdba

@? dbmsadminutlrp.sql

较少的话单个编译就行


五、在所有PDB(包括模板库)运行步骤四

sqlplus / as sysdba

alter session set container=SHOWDBPDB;

继续运行步骤四命令。


**************遇到的问题***************

提前运行catmac.sql,忘记enable OLS了,发现DVSYS用户没创建成果

后面enable之前重新运行catmac.sql发现报DV开头的对象已存在。


解决方法:

select role from dba_roles where role like DV%;

select USERNAME,CREATED from dba_users where username like DVSYS;

删除查询出来的DV开头的角色

例如:

alter session set "_oracle_script"=true;

drop role DV_SECANALYST;


六、重新更新数据字典,脚本显示运行成功了,但是PDB还是处于受限模式

cd $ORACLE_HOME/OPatch

./datapatch -verbose


七、查询registry$sqlpatch发现存在之前运行数据字典更新的记录,但是状态是WITH ERRORS的

SQL> select ACTION,ACTION_TIME,DESCRIPTION,status from registry$sqlpatch_org;


ACTION          ACTION_TIME                       DESCRIPTION                                           STATUS

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

APPLY           09-MAR-18 01.43.22.087140 PM      OJVM RELEASE UPDATE: 12.2.0.1.180116 (27001739)       SUCCESS

APPLY           09-MAR-18 01.43.23.054917 PM      DATABASE RELEASE UPDATE 12.2.0.1.180116               SUCCESS

APPLY           14-SEP-18 11.57.04.980461 PM      DATABASE JUL 2018 RELEASE UPDATE 12.2.0.1.180717      WITH ERRORS


八、继续解决这个PDB受限模式问题,运行如下命令

1、连接至CDB

sqlplus / as sysdba

show con_name;


2、备份registry$sqlpatch

create table registry$sqlpatch_org as select * from registry$sqlpatch;


3、删除表registry$sqlpatch

exec dbms_pdb.exec_as_oracle_script(drop table registry$sqlpatch);


4、运行如下脚本重建registry$sqlpatch表

@$ORACLE_HOME/rdbms/admin/catsqlreg.sql


5、连到PDB

alter session set container= ;

show con_name;


6、备份PDB的registry$sqlpatch表

create table registry$sqlpatch_PDB as select * from registry$sqlpatch;


7、删除PDB下的registry$sqlpatch表

exec dbms_pdb.exec_as_oracle_script(drop table registry$sqlpatch);


8、重建PDB下的registry$sqlpatch表

@$ORACLE_HOME/rdbms/admin/catsqlreg.sql


9、当所有PDB都重建完registry$sqlpatch表之后,运行脚本

sqlplus / as sysdba

alter pluggable database all close immediate;

alter pluggable database all open upgrade;

exit

cd $ORACLE_HOME/OPatch

./datapatch -verbose;

或者指定PDB进行字典更新

./datapatch -verbose -pdbs PDB1,PDB2


sqlplus / as sysdba

alter pluggable database all close immediate;

alter pluggable database all open;


注:模板库有点特殊,使用如下命令更新

alter pluggable database PDB$SEED close immediate;

alter pluggable database PDB$SEED open read write upgrade;

alter session set container=PDB$SEED;

./datapatch -verbose -pdbs PDB$SEED

alter pluggable database PDB$SEED open read only;


10、当前运行脚本的实例在PDB重启之后,会发现已经变成正常状态了,但其他节点实例还是受限模式,

重启其他节点实例即可,至此故障恢复完成。

srvctl stop instance -d db_unique_name -i

srvctl start instance -d db_unique_name -i


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130249.html

相关文章

  • 大数据分布式存储的部署模式:分离式or超融合

    ...计算存储融 合产品或解决方案。按照这个概念,数据库体机和大数据体机都 不能为超融合的范畴,因为RAC/Hadoop等应用并非运行在虚拟机 之上。此外,超融合架构中最根本的变化是存储,由原先的集中共享 式存储(SAN/NAS)转...

    gnehc 评论0 收藏0
  • 内网基础-内网初探与信息收集

    ...能运行” cmdlet命令查询当前的执行策略 Get-ExecutionPolicy Restricted 脚本不能运行 RemoteSigned 本地创建的脚本可以运行,网上下载脚本不能运行(拥有数字证书的签名除外) AllSigned 仅当脚本由受信任的发布者签名时才能运行 Unrest...

    用户84 评论0 收藏0
  • 深度学习助力实现智能行为分析和事件识别

    ...新的有监督概率图模型:类相关受限玻尔兹曼机(Relevance Restricted Boltzmann Machine, ReRBM),学习一种低维的隐语义表达用于复杂行为和事件分析。提出的模型在受限玻尔兹曼机(RBM)的基础上进行了一些关键性扩展:1)将稀疏贝叶斯...

    未东兴 评论0 收藏0
  • 经典利用永恒之蓝漏洞对Windows操作系统进行攻击

    ...入ipconfig查看本机IP 搭建靶机Windows 7 本次搭建的靶机都处于同一个局域网,其实保证网络能通信就好。假设我们拿下某台web服务器打进内网了,现在要拿下这台局域网内其他主机的管理权限。 【信息收集】 按照正常攻击流...

    不知名网友 评论0 收藏0
  • [译] 设计一个容错的微服务架构

    ...系统实现,该系统会监视实例运行状况,并在较长时间内处于故障状态时重新启动它们。自我修复在大多数情况下是非常有用的。但是在某些情况下,持续地重启应用程序可能会导致麻烦。 当您的应用程序由于超负荷或其数据...

    raledong 评论0 收藏0
  • 阿里云产品头条(2017年12月刊)

    ...持服务器镜像,文件和应用等不同保护粒度。混合云灾备体机和云上容灾服务相结合,可以保障高效可靠的本地备份恢复和云上故障转移,确保数据安全性和业务连续性。适用于有云容灾需求的各类企业,比如制造行业,酒店...

    sixleaves 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<