oracle报错及解决方案

在做oracle12c+dataguard+broker的时候遇到的报错,以及其他报错,记录一下方便查看。

ORA-16136: Managed Standby Recovery not active

在物理备库取消日志应用时,出现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,ORA-01110处理

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;

 

 

ORA-01153: an incompatible media recovery is active

今天在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; 

 

ORA-10456: cannot open standby database; media recovery session may be in progress

备库取消重做日志

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.

 

ORA-16525: The Oracle Data Guard broker is not yet available.

没开启代理

 

SQL> alter system set dg_broker_start=true;

 

ORA-16631: operation requires shutdown of database or instance ""

DGMGRL> ENABLE DATABASE zfmm2;

Error: ORA-16631: operation requires shutdown of database or instance ""

dgmgrl开启zfmm2报错,手动到zfmm2里关闭数据库

 

ORA-16797: member is not using a server parameter file

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

 

ORA-16789: standby redo logs configured incorrectly

没有创建备用重做日志

.之前做dg的时候忘记创建了,重新创建添加即可

 

ORA-16854: apply lag could not be determined

如果出现以下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)

 

ORA-16814: duplicate name specified for observer

开启observer进程报错

DGMGRL> start observer

Error: ORA-16814: duplicate name specified for observer

 

Failed to start the observer.

原因

Data Guard代理检测到备用数据库的AlternateLocation属性的重做传输设置不正确。不正确的设置可能是以下之一:以下之一:
(1)AlternateLocation属性为空但日志传输到备用数据库数据库具有ALTERNATE设置; 
(2)AlternateLocation属性不为空,但是到备用数据库的日志传输没有ALTERNATE设置; 
(3)AlternateLocation属性与重做传输中的ALTERNATE设置不匹配。不匹配可能包括服务字符串,备用位置的目录规范或DB_UNIQUE_NAME属性;
(4)对应于备用位置的log_archive_dest_state_n参数未设置为ALTERNATE; 
(5)备用数据库正在使用闪存恢复区来存档日志,但重做到备用数据库的传输仍然具有AlternateLocation的ALTERNATE设置。Data Guard代理日志提供有关上述哪种情况导致错误的更多详细信息。

行动

 重新启用主数据库以清除错误。

 

ORA-16631: operation requires shutdown of database or instance

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>

ORA-1034、ORA-16625

这是TNSNAMESLISTENER文件中缺少的条目

两边分别添加监听

[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)))';

 

 

ORA-16859

主备切换中,等待即可

 

ORA-01017: 用户名/口令无效; 登录被拒绝

问题描述:

 

使用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

 

ORA-28040问题

在数据库服务器上的oracle/network/admin/sqlnet.ora文件添加一行

SQLNET.ALLOWED_LOGON_VERSION=8,

重启数据库,重新连接数据库,可以成功连接,问题解决。

你可能感兴趣的:(oracle)