正式环境:windows 2008 r2-32bit/ Oracle: Release 11.2.0.1.0
目标环境:windows 2012 Standard-64bit / Oracle: Release 11.2.0.1.0
备份工具:EMC Avamar 7.5.1-RMAM全备sql
Avamar自动配置RMAN脚本,全备数据库,自动脚本日志内容以下(图形界面配置的,自动生成以下脚本,也能够手工写脚本备份):数据库
1> RMAN> @@ORCL-24081.tmp 2> connect target *; 3> **文件结尾** 4> run { 5> configure controlfile autobackup on; 6> set controlfile autobackup format for device type sbt to 'CONTROLFILE.ORCL.%F'; 7> allocate channel c0 type sbt PARMS="SBT_LIBRARY=C:\PROGRA~1\avs\bin\LIBOBK~1.DLL" format '%d_%U'; 8> send channel 'c0' '"--libport=55154" "--force-expires" "--ctlusessl=false" "--cacheprefix=ORCL_c0" "--sysdir=C:\Program Files\avs\etc" "--bindir=C:\Program Files\avs\bin" "--vardir=C:\Program Files\avs\var\clientlogs" "--logfile=C:\Program Files\avs\var\clientlogs\yongyouLV0-yongyouLV0-1553436000010-3002-OracleORCL-avtar0.log" "--ctlcallport=55152"'; 9> backup filesperset = 1 incremental level = 0 database plus archivelog delete input; 10> } 11>
采用了Avamar恢复数据库的方式,实际上也是RMAN脚本,按照要求使用dbca命令创建好相同实例名称等,并备份相关控制文件(此步骤在Linux上能够手工创建)开始还原。其中须要注意的问题包含了恢复段的SCN号。开始没注意,致使完报错以下:windows
归档日志文件名=E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2019_03_21\O1_MF_1_29360_G97XBTPZ_.ARC 线程=1 序列=29360 通道 default: 正在删除归档日志 归档日志文件名=E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2019_03_21\O1_MF_1_29360_G97XBTPZ_.ARC RECID=8674 STAMP=1003498474 没法找到归档日志 归档日志线程=1 序列=29361 释放的通道: c0 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: recover 命令 (在 03/21/2019 13:34:38 上) 失败 RMAN-06054: 介质恢复正在请求未知的线程 1 序列 29361 的归档日志以及起始 SCN 983751610
再次使用SCN号参数恢复后,Avamar中显示恢复正常,但使用rman target / nocatalog 访问恢复后的数据库时,忽然发现数据库没法启动,报错以下:oracle
RMAN-00571: ==================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ======== RMAN-00571: ==================================================== RMAN-00554: 内部恢复管理器程序包初始化失败 RMAN-04005: 目标数据库中存在错误: ORA-12432: LBAC 错误: zllesesinit:OCIStmtExecute
使用 sqlplus / as sysdba能够登录数据库,但没法执行SQL语句,报错以下:工具
ORA-01012: not logged on
在网上找了下相同状况的问题,其中在oracle官网找到了相似问题,以下图:
网站
同时其余网站上大部分给出的解决方式为:this
--Oracle给出的解决方案 --To solve this situation the LBAC option has to be disabled: Step 1 cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk lbac_off ioracle -- Author : Robinson Cheng -- Blog : http://blog.csdn.net/robinson_0612 -- DB Forum : http://bbs.dbsupport.cn Step 2 $ sqlplus "/ as sysdba" SQL> startup migrate SQL> @?/rdbms/admin/catnools.sql SQL> shutdown immediate SQL> startup SQL> select * from v$version where rownum<2;
但因为这次的环境为windows,尝试了使用step2的方式仍是不行,又在网上找了下,发现别人的一片文章,连接以下:Fix ORA-12432: LBAC error: zllesesinit:OCIStmtExecute when you cannot logon - General Database Discussions。其中根据做者所述:
.net
给了我解决思路。因而我采用此方式。sqlplus / as sysdba后先abort数据库,在尝试使用Step2的步骤线程
SQL>shutdown abort SQL> startup migrate
此时数据库居然起来了,继续执行Step2的步骤日志
SQL> @?/rdbms/admin/catnools.sql
发生报错ORA-06553: PLS-801: 内部错误 [56327]。尝试解决以下:
SQL>shutdown abort SQL> startup upgrade SQL> @?/rdbms/admin/utlirp SQL> shutdown immediate
此时,又发生了报错ORA-12432: LBAC 错误: zllesesinit:OCIStmtExecute。继续尝试执行:
SQL>shutdown abort SQL> startup upgrade SQL> @?/rdbms/admin/utlrp
此后在此步骤一直卡住不动了,尝试开启了新的窗口,从新执行:
SQL> shutdown abort SQL> startup migrate SQL> @?/rdbms/admin/catnools.sql
此时数据库居然没报错,再次使用如下命令后,数据库正常启动。
SQL> shutdown immediate SQL> startup SQL> select * from v$version where rownum<2;
实际上本次迁移主要遇到的问题是: