在做oracle12c+dataguard+broker的时候遇到的报错,以及其他报错,记录一下方便查看。
在物理备库取消日志应用时,出现ORA-16136的错误
SQL> alter database recover managed standby database cancel;
alter database recover managed standby database cancel
*
0
ERROR at line 1:
ORA-16136: Managed Standby Recovery not active
由错误提示看来,就是备库本没有启用应用日志的功能的,所以发出取消命令的话就出现了ORA-16136错误了。现在的问题是,备库的应用日志功能一直
都是启用的,现在怎么变成了没有启用了呢?
检查备库告警日志文件内容
[oracle@lonion bdump]$ cat alert_standby.log
Tue Sep 18 15:01:16 2012
RFS[1]: Successfully opened standby log 4: '/u01/app/oracle/oradata/standby/standbyredo01.log'
Tue Sep 18 15:01:20 2012
Media Recovery Log /u01/app/oracle/archivelog/1_38_760823283.arc
File #6 added to control file as 'UNNAMED00006' because
the parameter STANDBY_FILE_MANAGEMENT is set to MANUAL
The file should be manually created to continue.
MRP0: Background Media Recovery terminated with error 1274
Tue Sep 18 15:01:23 2012
Errors in file /u01/app/oracle/admin/standby/bdump/standby_mrp0_5715.trc:
ORA-01274: cannot add datafile '/u01/app/oracle/oradata/lonion/test01.dbf' - file could not be created
Some recovered datafiles maybe left media fuzzy
Media recovery may continue but open resetlogs may fail
Tue Sep 18 15:01:23 2012
Errors in file /u01/app/oracle/admin/standby/bdump/standby_mrp0_5715.trc:
ORA-01274: cannot add datafile '/u01/app/oracle/oradata/lonion/test01.dbf' - file could not be created
Tue Sep 18 15:01:23 2012
MRP0: Background Media Recovery process shutdown (standby)
Tue Sep 18 15:02:29 2012
alter database recover managed standby database cancel
Tue Sep 18 15:02:29 2012
ORA-16136 signalled during: alter database recover managed standby database cancel...
由上述日志内容发现,主库新创建了表空间或添加了新的数据文件,在备库应用日志的时候,由于初始化参数standby_file_management设置为了manual
使得应用日志失败,中断MRP0进程(MRP0: Background Media Recovery terminated with error 1274)。
知道了问题出现的原因,解决问题就比较简单了。
首先,在主库中查询数据文件路径
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/lonion/system01.dbf
/u01/app/oracle/oradata/lonion/undotbs01.dbf
/u01/app/oracle/oradata/lonion/sysaux01.dbf
/u01/app/oracle/oradata/lonion/users01.dbf
/u01/app/oracle/oradata/lonion/lonion01.dbf
/u01/app/oracle/oradata/lonion/test01.dbf
6 rows selected.
在备库中查询数据文件路径
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/standby/system01.dbf
/u01/app/oracle/oradata/standby/undotbs01.dbf
/u01/app/oracle/oradata/standby/sysaux01.dbf
/u01/app/oracle/oradata/standby/users01.dbf
/u01/app/oracle/oradata/standby/lonion01.dbf
/u01/app/oracle/product/10.2.0/db_1/dbs/UNNAMED00006
6 rows selected.
重新设置备库不能识别的数据文件的路径
在备库中执行
SQL> alter database create datafile '/u01/app/oracle/product/10.2.0/db_1/dbs/UNNAMED00006' as
'/u01/app/oracle/oradata/standby/test01.dbf’
Database altered.
再次在备库中查询数据文件路径
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/standby/system01.dbf
/u01/app/oracle/oradata/standby/undotbs01.dbf
/u01/app/oracle/oradata/standby/sysaux01.dbf
/u01/app/oracle/oradata/standby/users01.dbf
/u01/app/oracle/oradata/standby/lonion01.dbf
/u01/app/oracle/oradata/standby/test01.dbf
6 rows selected.
此时,备库数据文件路径正确更正过来,重新应用日志
SQL> alter database recover managed standby database disconnect from session;
Database altered.
尝试取消应用日志,没有再出现ORA-16136错误了
SQL> alter database recover managed standby database cancel;
Database altered.
BTW:一般说来,在设置初始参数standby_file_management的时候,我们都是将其设置为auto。
ORA-10458:备用数据库需要恢复
ORA-01196:由于介质恢复会话失败,文件1不一致
ORA-01110:数据文件1:' / u01 / app / oracle /oradata / rong / system01.dbf '
解决方法:
从库启动到mount状态:
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP MOUNT;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USEING CURRENT LOGFILE DISCONNECT FROM SESSION;
到主库上操作:
SQL>ALTER SYSTEM SWITCH LOGFILE;
多操作几次,操作之后,稍等一段时间,时间视网速而定,过一段时间后,在主库上查询一下规定情况:
SQL>SELECT NAME,SEQUENCE#,ARCHIVED,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
如果返回结果"APPLIED"都是“YES”或者只有最后一个是“NO”的话,说明全部归档日志全部已经归档完了,此时到备库上上操作:
备库操作:
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCLE;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
今天在standby 数据库上执行
alter database recover managed standby database using current logfile disconnect from session;
报如下错误:
ERROR at line 1:
ORA-01153: an incompatible media recovery is active
从字面意思理解应该是“存在一个不兼容的介质恢复”。
仔细检查发现上面已经执行过一次
alter database recover managed standby database disconnect from session;
猜想应该是重复启用日志应用所致。故取消应用
alter database recover managed standby database cancel;
重新开启应用
alter database recover managed standby database using current logfile disconnect from session;
备库取消重做日志
SQL> alter database recover managed standby database cancel;
Database altered.
开启open模式
SQL> alter database open;
Database altered.
开启重做日志
SQL> alter database recover managed standby database using current logfile disconnect ;
Database altered.
没开启代理
SQL> alter system set dg_broker_start=true;
DGMGRL> ENABLE DATABASE zfmm2;
Error: ORA-16631: operation requires shutdown of database or instance ""
dgmgrl开启zfmm2报错,手动到zfmm2里关闭数据库
SQL> show parameter pfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
SQL> alter database recover managed standby database cancel;
SQL> shut immediate
SQL> exit
[oracle@fcdbdb_stby dbs]$ sqlplus "/as sysdba"
SQL> create spfile from pfile;
SQL> exit
[oracle@fcdbdb_stby dbs]$ sqlplus "/as sysdba"
SQL> startup mount
SQL> alter database recover managed standby database using current logfile disconnect from session;
SQL> show parameter pfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
.3/db_1/dbs/spfileFCDBSTND.ora
没有创建备用重做日志
.之前做dg的时候忘记创建了,重新创建添加即可
如果出现以下WARNING,可以在主端手动切换redo
DGMGRL> show configuration;
Configuration - dg_newcdb
Protection Mode: MaxPerformance
Members:
newcdb - Primary database
newcdbdg - Physical standby database
Warning: ORA-16854: apply lag could not be determined
Fast-Start Failover: DISABLED
Configuration Status:
WARNING (status updated 5 seconds ago)
SQL> alter system switch logfile;
System altered.
DGMGRL> show configuration;
Configuration - dg_newcdb
Protection Mode: MaxPerformance
Members:
newcdb - Primary database
newcdbdg - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 4 seconds ago)
开启observer进程报错
DGMGRL> start observer
Error: ORA-16814: duplicate name specified for observer
Failed to start the observer.
原因 |
Data Guard代理检测到备用数据库的AlternateLocation属性的重做传输设置不正确。不正确的设置可能是以下之一:以下之一: |
行动 |
重新启用主数据库以清除错误。 |
DGMGRL> show configuration
Configuration - DG_CONFIG
Protection Mode: MaxPerformance
Databases:
DB_PRI- Primary database
DB_STANDBY - Physical standby database (disabled)
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
启动备库
DGMGRL> enable database 'DB_STANDBY'
Error: ORA-16631: operation requires shutdown of database or instance ""
Failed.
DGMGRL> edit database 'DB_STANDBY' set state='ONLINE';
Error: ORA-16635: network connection failed during transmission
Failed.
DGMGRL> show configuration
Configuration - DG_CONFIG
Protection Mode: MaxPerformance
Databases:
DB_PRI - Primary database
DB_STANDBY - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL>
这是TNSNAMES和LISTENER文件中缺少的条目
两边分别添加监听
[oracle@node1]$ dgmgrl sys/oracle@ZFMM
DGMGRL>edit database ZFMM set property StaticConnectIdentifier= '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ZFMM)(INSTANCE_NAME=ZFMM)(SERVER=DEDICATED)))';
DGMGRL>edit database ZFMM2 set property StaticConnectIdentifier ='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ZFMM2)(INSTANCE_NAME=ZFMM2)(SERVER=DEDICATED)))';
[oracle@node2]$ dgmgrl sys/oracle@ZFMM2
DGMGRL>edit database ZFMM set property StaticConnectIdentifier= '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ZFMM)(INSTANCE_NAME=ZFMM)(SERVER=DEDICATED)))';
DGMGRL>edit database ZFMM2 set property StaticConnectIdentifier ='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ZFMM2)(INSTANCE_NAME=ZFMM2)(SERVER=DEDICATED)))';
主备切换中,等待即可
问题描述:
使用sqlplus 和 sql developer可以登录,但是使用navicat或程序连接时总是提示ORA-01017: 用户名/口令无效; 登录被拒绝,反复确认输入的用户名和密码,但是仍然提示以上错误。
处理过程:
通过大量网上查找,没找到可行的结果,无意中看到oracle设置密码大小写不敏感,于是怀疑可能和我设置的密码中有字母的缘故
修改密码: alter user bsdbank identified by 123456;
将原密码设置成123456,再使用navicat可以连接,然后再改回原密码,使用navicat也可以连接。可能初次创建用户时会出现这样的问题。至于出现这种问题后直接设置大小写不敏感是否能直接解决问题,暂未尝试
补充:oracle设置大小写不敏感步骤
SQL> show parameter sec_case_sensitive_logon
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
sec_case_sensitive_logon boolean
TRUE
SQL> alter system set sec_case_sensitive_logon = false;
系统已更改。
SQL> show parameter sec_case_sensitive_logon
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
sec_case_sensitive_logon boolean
FALSE
在数据库服务器上的oracle/network/admin/sqlnet.ora文件添加一行
SQLNET.ALLOWED_LOGON_VERSION=8,
重启数据库,重新连接数据库,可以成功连接,问题解决。