http://blog.itpub.net/30430420/viewspace-1799925/


=============================


现象!!!!!!!!!!!!!!!!!

SQL> startup

ORACLE 例程已经启动。


Total System Global Area 3373858816 bytes

Fixed Size                  2180424 bytes

Variable Size            2415921848 bytes

Database Buffers          939524096 bytes

Redo Buffers               16232448 bytes

数据库装载完毕。

ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [4724],[43805], [43810], [], [], [], [], [], [], []


[1], [4724],[43805], [43810]

线程1,实例需要恢复日志序列号为4724的联机日志文件,需要恢复到编号为43810的日志块,而实际上只能恢复到第43805个日志块,所以库就启不来了


这可能是由于控制文件的缺失,或者在线日志文件在实例恢复时不完整


查看告警日志:

less alert_orcldata.log


Completed: ALTER DATABASE   MOUNT

Sun Feb 25 14:49:04 2018

ALTER DATABASE OPEN

Beginning crash recovery of 1 threads

 parallel recovery started with 3 processes

Started redo scan

Completed redo scan

 read 312 KB redo, 55 data blocks need recovery


Errors in file f:\app\asus\diag\rdbms\orcldata\orcldata\trace\orcldata_ora_2896.trc  (incident=465222):

ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [4724], [43805], [43810], [], [], [], [], [], [], []

Incident details in: f:\app\asus\diag\rdbms\orcldata\orcldata\incident\incdir_465222\orcldata_ora_2896_i465222.trc

Aborting crash recovery due to error 600


Errors in file f:\app\asus\diag\rdbms\orcldata\orcldata\trace\orcldata_ora_2896.trc:

ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [4724], [43805], [43810], [], [], [], [], [], [], []


Errors in file f:\app\asus\diag\rdbms\orcldata\orcldata\trace\orcldata_ora_2896.trc:

ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [4724], [43805], [43810], [], [], [], [], [], [], []


ORA-600 signalled during: ALTER DATABASE OPEN...

Trace dumping is performing id=[cdmp_20180225144908]

Sun Feb 25 14:50:04 2018

Sweep [inc][465222]: completed

Sweep [inc2][465222]: completed



查看相应的trace文件:

less orcldata_ora_2896.trc


Trace file f:\app\asus\diag\rdbms\orcldata\orcldata\trace\orcldata_ora_2896.trc

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Windows NT Version V6.1 Service Pack 1

CPU                 : 4 - type 8664, 4 Physical Cores

Process Affinity    : 0x0x0000000000000000

Memory (Avail/Total): Ph:1599M/8062M, Ph+PgF:6927M/16124M

Instance name: orcldata

Redo thread mounted by this instance: 1

Oracle process number: 20

Windows thread id: 2896, image: ORACLE.EXE (SHAD)



*** 2018-02-25 14:49:05.149

*** SESSION ID:(5.3) 2018-02-25 14:49:05.149

*** CLIENT ID:() 2018-02-25 14:49:05.149

*** SERVICE NAME:() 2018-02-25 14:49:05.149

*** MODULE NAME:(sqlplus.exe) 2018-02-25 14:49:05.149

*** ACTION NAME:() 2018-02-25 14:49:05.149

 

Successfully allocated 3 recovery slaves

Using 45 overflow buffers per recovery slave

Thread 1 checkpoint: logseq 4724, block 2, scn 144933326

  cache-low rba: logseq 4724, block 43181

    on-disk rba: logseq 4724, block 43810, scn 144958360

  start recovery at logseq 4724, block 43181, scn 0


*** 2018-02-25 14:49:05.307

Started writing zeroblks thread 1 seq 4724 blocks 43805-43812


*** 2018-02-25 14:49:05.308

Completed writing zeroblks thread 1 seq 4724


*** 2018-02-25 14:49:05.492

==== Redo read statistics for thread 1 ====

Total physical reads (from disk and memory): 4096Kb

-- Redo read_disk statistics --

Read rate (ASYNC): 312Kb in 0.30s => 1.02 Mb/sec

Longest record: 6Kb, moves: 0/595 (0%)

Change moves: 1/73 (1%), moved: 0Mb

Longest LWN: 6Kb, moves: 0/238 (0%), moved: 0Mb

Last redo scn: 0x0000.08a3e393 (144958355)

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

----- Recovery Hash Table Statistics ---------

Hash table buckets = 32768

Longest hash chain = 1

Average hash chain = 55/55 = 1.0

Max compares per lookup = 1

Avg compares per lookup = 1514/1663 = 0.9

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

WARNING! Crash recovery of thread 1 seq 4724 is

ending at redo block 43805 but should not have ended before

redo block 43810


*** 2018-02-25 14:49:06.969

Incident 465222 created, dump file: f:\app\asus\diag\rdbms\orcldata\orcldata\incident\incdir_465222\orcldata_ora_2896_i465222.trc

ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [4724], [43805], [43810], [], [], [], [], [], [], []


ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [4724], [43805], [43810], [], [], [], [], [], [], []

ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [4724], [43805], [43810], [], [], [], [], [], [], []



应该是由于我强制关闭电脑,导致LGWR写联机日志文件时失败,下次重新启动数据库时,需要做实例级恢复,而又无法从联机日志文件里获取到这些redo信息,因为上次关闭时,写日志失败了。


===================================


http://blog.itpub.net/28883355/viewspace-1080879/

oradebug help

SETMYPID Debug current process

===================================


http://blog.csdn.net/haibusuanyun/article/details/36868269

方法1:这个方法不行

RECOVER DATABASE;

RECOVER DATABASE UNTIL CANCEL;


方法2:最终通过重建控制文件、再进行不完全恢复来OPEN数据库。(前提是客户只要求OPEN库,是客户的测试库,丢些数据没关系,如果是生产库不允许丢数据,此方法就不适用了)

ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS'/home/oracle/a.txt';

Alter database recover database until cancel using backup controlfile;

Alter database open resetlogs;


===================================

下面这个方法有效

http://blog.itpub.net/30430420/viewspace-1799925/

Show parameter control_files;

oradebug setmypid;

Alter session set tracefile_identifier='controlfilerecreate';

Alter database backup controlfile to trace noresetlogs;

oradebug tracefile_name;

shutdown immediate;

startup nomount;

执行trace文件中的创建数据库脚本,orcldata_ora_2896_controlfilerecreate.trc

 

=====================================

最后验证一下相关表的数据

 

select uat.table_name from user_all_tables uat;

select object_name, created,last_ddl_time from user_objects;


SELECT

    uat.table_name AS 表名,

    (

        SELECT

            last_ddl_time

        FROM

            user_objects

        WHERE

            object_name = uat.table_name

    ) AS 最后修改日期

FROM

    user_all_tables uat;

 

 

 

==========================================================

windows启动dbconsole

C:\Windows\System32\drivers\etc\hosts修改这个文件添加主机名的解析

否则只能本地访问EM

F:\app\ASUS\product\11.2.0\dbhome_1\BIN>emctl start dbconsole

OC4J Configuration issue. F:\app\ASUS\product\11.2.0\dbhome_1/oc4j/j2ee/OC4J_DBConsole_ASUS-PC_orcldata not found.

复制该目录下的“OC4J_DBConsole_localhost_orcl”文件夹放在同一目录下,且把名称改成“OC4J_DBConsole_ASUS-PC_orcldata”。

F:\app\ASUS\product\11.2.0\dbhome_1\BIN>emctl start dbconsole

EM Configuration issue. F:\app\ASUS\product\11.2.0\dbhome_1/ASUS-PC_orcldata not found.

复制该目录下的“localhost_orcl”文件夹放在同一目录下,且把名称改成“ASUS-PC_orcldata”。

 

==========================================

windows登录EM问题

1、问题描述:

打开OEM页面发现这个错误:界面如下

ORA-28001: the password has expired (DBD ERROR: OCISessionBegin)

2问题原因

造成这个问题的主要原因是因为DBSNMP 、SYSMAN用户密码已经过期。

3解决办法

可以使用sys以管理员的身份登录数据库,然后执行select username,account_status from dba_users;语句查询用户状态,可以发现有如下两句:

DBSNMP EXPIRED

SYSMAN EXPIRED

把这俩用户、密码修改了就行。

本机使用sqlplus登陆

sqlplus / as sysdba

SQL> alter user sysman identified by sys123;

用户已更改。

SQL> alter user dbsnmp identified by sys123;

用户已更改。

重启em dbconsole 登陆

 

 

================================

三步走,重新创建EM

emctl stop dbconsole

emca -repos recreate

emca -config dbcontrol db

 

=================================

Wed Jul 31 18:13:51 2019

ORA-1652: unable to extend temp segment by 128 in tablespace KYC_TEMP

Wed Jul 31 18:14:04 2019

Active Session History (ASH) performed an emergency flush. This may mean that ASH is undersized. If emergency flushes are a recurring issue, you may consider increasing ASH size by setting the value of _ASH_SIZE to a sufficiently large v

alue. Currently, ASH size is 100663296 bytes. Both ASH size and the total number of emergency flushes since instance startup can be monitored by running the following query:

select total_size,awr_flush_emergency_count from v$ash_info;

Wed Jul 31 18:14:29 2019

ORA-1652: unable to extend temp segment by 128 in tablespace KYC_TEMP

 

更换临时表空间,数据不影响

create temporary tablespace kyc_temp1;

alter user kyc_loa temporary tablespace kyc_temp1;