weblogic相关日志介绍

对于一个系统,数据库维护人员来说,对系统/数据库的运行日志都会比较感兴趣。很多情况下在出现故障前,我们可以通过日志发现预兆,把故障扼杀在摇篮中;有些问题发生我们不能及时发现或者当时分析问题不够全面,我们需要结合日志进一步分析问题,寻找原因,提出解决方案,避免类此问题再次出现。对于weblogic系统的维护也不例外,我们也需要关注起日志情况。
一、日志汇总

[oracle@xifenfei logs]$ pwd
/u01/weblogic/user_projects/xff/xifenfei/servers/AdminServer/logs
--其中user_projects/xff/xifenfei需要根据你的实际情况决定

[oracle@xifenfei logs]$ ll *.log
-rw-r-----  1 oracle oinstall  32557 Mar 18 00:01 access.log
-rw-r-----  1 oracle oinstall  49055 Mar 17 19:22 AdminServer-diagnostic.log
-rw-r-----  1 oracle oinstall 741595 Mar 18 00:22 AdminServer.log
-rw-r-----  1 oracle oinstall 306831 Mar 18 00:01 xifenfei.log
--access.log HTTP访问日志
--AdminServer-diagnostic.log weblogic的诊断日志(开发模式下)
--AdminServer.log WebLogic SERVER运行日志
--xifenfei.log DOMAIN运行日志(名称和你的域相同)

二、日志详细介绍
1.access.log
在WebLogic中可以对用HTTP,HTTPS协议访问的服务器上的文件都做记录,该LOG文件默认的名字为Access.log,内容如下,该文件具体记录在某个时间,某个IP地址的客户端访问了服务器上的那个文件。
格式如:

192.168.1.1 - - [17/Mar/2012:16:23:05 +0800] "GET /css/fmw.css HTTP/1.1" 200 3250 
192.168.1.1 - - [17/Mar/2012:16:23:05 +0800] "GET /css/fmw_bottom_area.css HTTP/1.1" 200 2689 
192.168.1.1 - - [17/Mar/2012:16:23:05 +0800] "GET /JSLibrary/educational_text.js HTTP/1.1" 200 39124 
192.168.1.1 - - [17/Mar/2012:16:23:05 +0800] "GET /JSLibrary/coneEventHandeler.js HTTP/1.1" 200 7689 
192.168.1.1 - - [17/Mar/2012:16:23:05 +0800] "GET /JSLibrary/getIllustration.js HTTP/1.1" 200 1802 
192.168.1.1 - - [17/Mar/2012:16:23:05 +0800] "GET /JSLibrary/GeneratePopup.js HTTP/1.1" 200 32682 
192.168.1.1 - - [17/Mar/2012:16:23:05 +0800] "GET /images/oracle_logo_red.png HTTP/1.1" 200 7202 

2.AdminServer-diagnostic.log
该日志在生产环境中没有,主要是记录程序运行中的一些错误的详细信息(程序员最关注的东西)
格式如:

MDS-01329: unable to load element "persistence-config"
MDS-01370: MetadataStore configuration for metadata-store-usage "OWSM_TargetRepos" is invalid.    
ORA-06550: line 1, column 12:
PLS-00201: identifier 'MDS_INTERNAL_SHREDDED.GETREPOSITORYVERSION' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

3.AdminServer.log
假如WebLogic SERVER在启动或运行过程中有错误发生,错误信息会显示在屏幕上,并且会记录在一个LOG文件中,该文件默认名为AdminServer.log。该文件也记录WebLogic的启动及关闭等其他运行信息。可在Gernal属性页中设置该文件的路径及名字,错误的输出的等级等

4.xifenfei.log
记录一个DOMIAN的运行情况,一个DOMAIN中的各个WebLogic SERVER可以把它们的一些运行信息(比如:很严重的错误)发送给一个DOMAIN的ADMINISTRATOR SERVER上,ADMINISTRATOR SERVER把这些信息些到DOMAIN 日志中。默认名为:domain_name.log

三、图形界面操作
登录weblogic后台进行相关操作
1.日志相关参数设置
左侧菜单:环境–>服务器
右侧菜单:服务器–>日志记录
只找到AdminServer.log、access.log,进行一些操作
如:设置日志文件的回滚,设置日志文件名等

2.日志查看
左侧菜单:环境–>服务器
右侧菜单:点击服务器名称
左侧菜单:诊断–>日志文件
右侧菜单:选中相关日志点击查看

通过修改col$.col#改变列展示顺序

有网友提出在表中新增加一列,然后让这个列在中间(大家都知道默认情况下,增加一列,这列会在其他列之后),通过修改col$基表可以实现改变列的显示顺序(增加一个新列是小儿科的事情不再研究)。我这里通过建立一个表,有id和name列,现在要改变这两列的默认展示顺序
1.创建模拟表

SQL> create table chf.t_xff (id number,name varchar2(100));

Table created.

SQL> insert into chf.t_xff values(1,'xifenfei');

1 row created.

SQL> insert into chf.t_xff values(2,'www.orasos.com');

1 row created.

SQL> commit;

Commit complete.

SQL> desc chf.t_xff;
 Name                                      Null?    Type
 ----------------------------------------- -------- -------------------
 ID                                                 NUMBER
 NAME                                               VARCHAR2(100)

SQL> col name for a30
SQL> select * from chf.t_xff;

        ID NAME
---------- ------------------------------
         1 xifenfei
         2 www.orasos.com

2.修改col$.col#

SQL> select COLUMN_ID,COLUMN_NAME from dba_tab_cols
2    where table_name='T_XFF' AND OWNER='CHF';

 COLUMN_ID COLUMN_NAME
---------- ------------------------------------------------------------
         2 NAME
         1 ID

SQL> SELECT OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME='T_XFF';

 OBJECT_ID
----------
     75598

SQL> SELECT NAME,COL# FROM COL$ WHERE OBJ#=75598;

NAME                                 COL#
------------------------------ ----------
NAME                                    2
ID                                      1

SQL> UPDATE COL$ SET COL#=2 WHERE OBJ#=75598 AND NAME='ID';

1 row updated.

SQL> SELECT NAME,COL# FROM COL$ WHERE OBJ#=75598;

NAME                                 COL#
------------------------------ ----------
NAME                                    2
ID                                      2

SQL> UPDATE COL$ SET COL#=1 WHERE OBJ#=75598 AND NAME='NAME';

1 row updated.

SQL> SELECT NAME,COL# FROM COL$ WHERE OBJ#=75598;

NAME                                 COL#
------------------------------ ----------
NAME                                    1
ID                                      2

SQL> COMMIT;

Commit complete.

3.验证结果

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  368263168 bytes
Fixed Size                  1345016 bytes
Variable Size             306186760 bytes
Database Buffers           54525952 bytes
Redo Buffers                6205440 bytes
Database mounted.
Database opened.
SQL> select * from chf.t_xff;

NAME                                   ID
------------------------------ ----------
xifenfei                                1
www.orasos.com                        2

SQL> desc chf.t_xff
 Name                                      Null?    Type
 ----------------------------------------- -------- ---------------
 NAME                                               VARCHAR2(100)
 ID                                                 NUMBER

_allow_resetlogs_corruption和adjust_scn解决ORA-01190

一、模拟offline文件然后resetlogs操作

1.设置datafile 5数据文件offline
2.rman备份数据库
3.关闭原数据库,删除数据文件/当前日志和部分归档日志
4.执行不完全恢复,resetlogs打开数据库(如下面操作)
[oracle@xifenfei ora11g]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 15 07:36:59 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> recover database until cancel;
ORA-00279: change 868870 generated at 03/15/2012 03:32:11 needed for thread 1
ORA-00289: suggestion :
/u01/oracle/oradata/archivelog/ora11g/1_29_777766629.dbf
ORA-00280: change 868870 for thread 1 is in sequence #29


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


SQL> alter database open resetlogs;

Database altered.

SQL> select file#,online_status,to_char(change#,'999999999999') from v$recover_file;

     FILE# ONLINE_STATUS  TO_CHAR(CHANGE#,'999999999
---------- -------------- --------------------------
         5 OFFLINE               868810

SQL> alter database datafile 5 online;
alter database datafile 5 online
*
ERROR at line 1:
ORA-01190: control file or data file 5 is from before the last RESETLOGS
ORA-01110: data file 5: '/u01/oracle/oradata/ora11g/xifenfei01.dbf'


SQL> select file#,to_char(checkpoint_change#,'999999999999'),
  2  to_char(last_change#,'999999999999') from v$datafile;

     FILE# TO_CHAR(CHECKPOINT_CHANGE# TO_CHAR(LAST_CHANGE#,'9999
---------- -------------------------- --------------------------
         1        868874
         2        868874
         3        868874
         4        868874
         5        868810                     868874

--可以看到offline的数据文件,没有因为resetlogs操作而改变
--CHECKPOINT_CHANGE#和RESETLOGS_CHANGE#信息
SQL> select file#,to_char(checkpoint_change#,'999999999999'),
  2  to_char(RESETLOGS_CHANGE#,'999999999999')
  3  from v$datafile_header;

     FILE# TO_CHAR(CHECKPOINT_CHANGE# TO_CHAR(RESETLOGS_CHANGE#,
---------- -------------------------- --------------------------
         1        868874                     868871
         2        868874                     868871
         3        868874                     868871
         4        868874                     868871
         5        868810                     787897

二、隐含参数设置

SQL> create pfile='/tmp/pfile' from spfile;

File created.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

在pfile中增加
_allow_resetlogs_corruption=true
_allow_error_simulation=TRUE(10g及其以上版本需要)

三、打开数据库,online离线文件

SQL> startup pfile='/tmp/pfile' mount;
ORACLE instance started.

Total System Global Area  368263168 bytes
Fixed Size                  1345016 bytes
Variable Size             293603848 bytes
Database Buffers           67108864 bytes
Redo Buffers                6205440 bytes
Database mounted.
--在mount状态下执行
SQL> alter session set events '10015 trace name adjust_scn level 2';

Session altered.

SQL> recover database until cancel;
ORA-00279: change 868810 generated at 03/13/2012 22:19:37 needed for thread 1
ORA-00289: suggestion :
/u01/oracle/oradata/archivelog/ora11g/1_27_777766629.dbf
ORA-00280: change 868810 for thread 1 is in sequence #27


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01190: control file or data file 1 is from before the last RESETLOGS
ORA-01110: data file 1: '/u01/oracle/oradata/ora11g/system01.dbf'


ORA-01112: media recovery not started


--[一定要]在mount状态下执行online操作
SQL> alter database datafile 5 online;

Database altered.

SQL> alter database open resetlogs;

Database altered.

SQL> select file#,online_status,to_char(change#,'999999999999') from v$recover_file;

no rows selected

姊妹篇:bbed解决ORA-01190

bbed解决ORA-01190

当我们使用resetlogs方式打开数据库后,发现有数据文件处于offline状态,这个时候很可能就是悲剧降临的时候,很有可能这个文件文件在resetlogs之前就处于offline状态,然后你resetlogs之后,这个文件使用常规方法很难再online,会出现ORA-01190或者ORA-01189之类的错误。
一、模拟offline文件然后resetlogs操作

1.设置datafile 5数据文件offline
2.rman备份数据库
3.关闭原数据库,删除数据文件/当前日志和部分归档日志
4.执行不完全恢复,resetlogs打开数据库(如下面操作)
[oracle@xifenfei ora11g]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 15 07:36:59 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> recover database until cancel;
ORA-00279: change 868870 generated at 03/15/2012 03:32:11 needed for thread 1
ORA-00289: suggestion :
/u01/oracle/oradata/archivelog/ora11g/1_29_777766629.dbf
ORA-00280: change 868870 for thread 1 is in sequence #29


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database open resetlogs;

Database altered.

SQL> select file#,online_status,to_char(change#,'999999999999') from v$recover_file;

     FILE# ONLINE_STATUS  TO_CHAR(CHANGE#,'999999999
---------- -------------- --------------------------
         5 OFFLINE               868810

SQL> alter database datafile 5 online;
alter database datafile 5 online
*
ERROR at line 1:
ORA-01190: control file or data file 5 is from before the last RESETLOGS
ORA-01110: data file 5: '/u01/oracle/oradata/ora11g/xifenfei01.dbf'


SQL> select file#,to_char(checkpoint_change#,'999999999999'),
  2  to_char(last_change#,'999999999999') from v$datafile;

     FILE# TO_CHAR(CHECKPOINT_CHANGE# TO_CHAR(LAST_CHANGE#,'9999
---------- -------------------------- --------------------------
         1        868874
         2        868874
         3        868874
         4        868874
         5        868810                     868874

--可以看到offline的数据文件,没有因为resetlogs操作而改变
--CHECKPOINT_CHANGE#和RESETLOGS_CHANGE#信息
SQL> select file#,to_char(checkpoint_change#,'999999999999'),
  2  to_char(RESETLOGS_CHANGE#,'999999999999')
  3  from v$datafile_header;

     FILE# TO_CHAR(CHECKPOINT_CHANGE# TO_CHAR(RESETLOGS_CHANGE#,
---------- -------------------------- --------------------------
         1        868874                     868871
         2        868874                     868871
         3        868874                     868871
         4        868874                     868871
         5        868810                     787897

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

二、bbed修改相关项

下面两项与resetlogs相关
kcvfhrlc表示 reset logs count
kcvfhrls表示 resetlogs scn
下面四项与数据库文件scn相关
kscnbas (at offset 140) – SCN of last change to the datafile.
kcvcptim (at offset 148) - Time of the last change to the datafile.
kcvfhcpc (at offset 176) – Checkpoint count.
kcvfhccc (at offset 184) – Unknown, but is always 1 less than thecheckpoint point count.


BBED> set filename '/u01/oracle/oradata/ora11g/system01.dbf'
        FILENAME        /u01/oracle/oradata/ora11g/system01.dbf

BBED> p kcvfhrlc
ub4 kcvfhrlc                                @112      0x2e5eed37

BBED> p kcvfhrls
struct kcvfhrls, 8 bytes                    @116     
   ub4 kscnbas                              @116      0x000d4207
   ub2 kscnwrp                              @120      0x0000

       

BBED>  p kcvcpscn
struct kcvcpscn, 8 bytes                 @484 
   ub4 kscnbas                           @484      0x000d4495
   ub2 kscnwrp                           @488      0x0000
   
BBED> p kcvfhcpc
ub4 kcvfhcpc                                @140      0x00000078

BBED> p kcvfhccc
ub4 kcvfhccc                                @148      0x00000077

BBED> set filename '/u01/oracle/oradata/ora11g/xifenfei01.dbf'
        FILENAME        /u01/oracle/oradata/ora11g/xifenfei01.dbf

BBED> p kcvfhrlc
ub4 kcvfhrlc                                @112      0x2e5bc6e5

BBED> set mode edit
        MODE            Edit

BBED> m /x 37ed5e2e
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y

BBED> p kcvfhrlc
ub4 kcvfhrlc                                @112      0x2e5eed37

BBED> p kcvfhrls
struct kcvfhrls, 8 bytes                    @116     
   ub4 kscnbas                              @116      0x000c05b9
   ub2 kscnwrp                              @120      0x0000

BBED> m /x 07420d00

BBED> p kcvfhrls
struct kcvfhrls, 8 bytes                    @116     
   ub4 kscnbas                              @116      0x000d4207
   ub2 kscnwrp                              @120      0x0000

BBED>  p kcvcpscn
struct kcvcpscn, 8 bytes                 @484 
   ub4 kscnbas                           @484      0x000d41ca
   ub2 kscnwrp                           @488      0x0000
 
BBED> set offset 484
        OFFSET          484

BBED> m /x 95440d00
BBED-00209: invalid number (95440d00)

BBED> m /x 9544

BBED> set offset +2
        OFFSET          486

BBED> m /x 0d00

BBED> p kcvfhcpc
ub4 kcvfhcpc                                @140      0x00000003

BBED> m /x 78000000

BBED> p kcvfhcpc
ub4 kcvfhcpc                                @140      0x00000078

BBED> p kcvfhccc
ub4 kcvfhccc                                @148      0x00000002

BBED> m /x 77000000

BBED> p kcvfhccc
ub4 kcvfhccc                                @148      0x00000077

BBED> sum
Check value for File 0, Block 1:
current = 0xe079, required = 0x5940

BBED> sum apply
Check value for File 0, Block 1:
current = 0x5940, required = 0x5940
1

三、数据文件online

[oracle@xifenfei ora11g]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 15 07:48:48 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  368263168 bytes
Fixed Size                  1345016 bytes
Variable Size             301992456 bytes
Database Buffers           58720256 bytes
Redo Buffers                6205440 bytes
Database mounted.
Database opened.
SQL> select file#,to_char(checkpoint_change#,'999999999999'),
  2  to_char(RESETLOGS_CHANGE#,'999999999999')
  3  from v$datafile_header;

     FILE# TO_CHAR(CHECKPOINT_CHANGE# TO_CHAR(RESETLOGS_CHANGE#,
---------- -------------------------- --------------------------
         1        869528                     868871
         2        869528                     868871
         3        869528                     868871
         4        869528                     868871
         5        869525                     868871

SQL> recover datafile 5;
Media recovery complete.
SQL> alter database datafile 5 online;

Database altered.

姊妹篇:_allow_resetlogs_corruption和adjust_scn解决ORA-01190