6_Oracle_Admin_Oracle的診斷文件(根據alert.log創建pfile、調整sql_trace)

wKioL1QZ1n_R-0HYAAE7zLNK6RE003.jpg

 

後臺的server(數據庫,tomcatserver),通常通過文本來記錄日誌,對於Oracle這樣重量級的數據庫,日誌文件非常詳細,當出現了故障需要排查時,就可以分析查看日誌文件。Diagnosticfiles的作用就在於此。

wKiom1QZ1nnjwYpdAAKqhUcImCc677.png

日誌文件分爲兩類:

1. Alter file

wKiom1QZ1pPDggaHAAG1x4ulpi4808.jpg

 

Trace File (每個進程一個,在該進程生命週期內創建)不同,AlertFile 只有一個,它隨着時間的推移體積逐漸增大,它存放的地址可以通過BACKGROUND_DUMP_DESTUSER_DUMP_DEST來確定。它記錄了數據庫運行中的各種動作和啓動參數,因此可以通過複製alertfile中的參數來構建一個pfile

 

 

/*==================演示構建pfile的過程====================*/

 

SQL> showparameter dump

 

NAME                                 TYPE        VALUE

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

background_core_dump                 string      partial

background_dump_dest                 string      /oracle/diag/rdbms/orcl/orcl/trace

core_dump_dest                       string      /oracle/diag/rdbms/orcl/orcl/cdump

max_dump_file_size                   string      unlimited

shadow_core_dump                     string      partial

user_dump_dest                       string      /oracle/diag/rdbms/orcl/orcl/trace

 

 

[oracle@localhost ~]$ cd /oracle/diag/rdbms/orcl/orcl/trace

[oracle@localhost trace]$ ls

alert_orcl.log      orcl_j002_2553.trc  orcl_ora_1708.trc
# alert file
cdmp_20140903174944 orcl_j002_2553.trm  orcl_ora_1708.trm
orcl_cjq0_1743.trc  orcl_j002_27675.trc orcl_ora_1709.trc
orcl_cjq0_1743.trm  orcl_j002_27675.trm orcl_ora_1709.trm
orcl_cjq0_1833.trc  orcl_j002_8505.trc  orcl_ora_1727.trc

 

 

[oracle@localhost trace]$ vim alert_orcl.log

 
Tue Aug 05 18:25:23 2014
Starting ORACLE instance (normal)
...
  control_files            = "/oracle/oradata/orcl/control01.ctl"
  control_files            ="/oracle/flash_recovery_area/orcl/control02.ctl"
  db_block_size            = 8192
  compatible               = "11.2.0.0.0"
 db_recovery_file_dest    ="/oracle/flash_recovery_area"

 

=======alter_orcl.log中的參數複製到一個新文件mickey_orcl.ora=========

 

[oracle@localhost ~]$ cd /oracle/11g/dbs

 

[oracle@localhost dbs]$ vim mickey_orcl.ora

  processes                = 150
  memory_target            = 404M
  control_files            ="/oracle/oradata/orcl/control01.ctl"
  control_files            ="/oracle/flash_recovery_area/orcl/control02.ctl"
  db_block_size            = 8192
  compatible               = "11.2.0.0.0"
 db_recovery_file_dest    ="/oracle/flash_recovery_area"
 db_recovery_file_dest_size= 3852M
  undo_tablespace          = "UNDOTBS1"
 remote_login_passwordfile= "EXCLUSIVE"
  db_domain                = ""
  dispatchers              = "(PROTOCOL=TCP)(SERVICE=orclXDB)"
  audit_file_dest          ="/oracle/admin/orcl/adump"
  audit_trail              = "DB"
  db_name                  = "orcl"
  open_cursors             = 300
  diagnostic_dest          = "/oracle"

 

==========Shut Down數據庫,然後用mickey_orcl.ora作爲PFILE來啓動數據庫======

 

SQL> shutdownimmediate

Database closed.
Database dismounted.
ORACLE instance shut down.
--關閉數據庫

 

SQL> startuppfile=$ORACLE_HOME/dbs/mickey_orcl.ora

ORACLE instance started.
 
Total System Global Area 422670336 bytes
Fixed Size                 1336960 bytes
Variable Size            260049280 bytes
Database Buffers         155189248 bytes
Redo Buffers               6094848 bytes
Database mounted.
Database opened.
-- 能夠用通過alert_orcl.log創建的pfile來正常啓動數據庫


 

2.Trace file

a)        Backgroun Trace Files

wKioL1QZ1r-zP9R9AAGo0JMISow860.jpg

b)       User Trace Files

 

wKiom1QZ1rXxk7LDAAIYYnM8mt8272.jpg

 

Background Trace File記錄的是數據庫本身的信息,而UserTrace File記錄的則是單個用戶操作數據庫時發生的事。它不止記錄用戶會話中發生的錯誤,也可以主動記錄所有操作:

 

wKioL1QZ1tvyHRrlAAGfbvMvCpo431.jpg

1.sessionlevel上使用alter命令來記錄

2.Instancelevel上設置啓動參數,但是不建議這樣做,因爲數據庫連接的用戶數量可能是巨大的,每個操作都記錄會加重數據庫的負擔。

 

/*========演示使用alter方式更改sesssion level trace file的記錄狀況========*/

 

[oracle@localhost dbs]$ ps -ef | grep oracle

oracle   11437     1  001:37 ?        00:00:02/oracle/11g/bin/tnslsnr LISTENER -inherit
root     14314  1372  005:57 ?        00:00:00 sshd: oracle[priv]
oracle   1433214314  0 05:57 ?        00:00:00 sshd: oracle@pts/0
oracle   1436514364  0 05:57 pts/1    00:00:00 -bash
oracle   1492214333  0 06:59 pts/0    00:00:00 sqlplus      
oracle   15498     1  007:46 ?        00:00:00 ora_pmon_orcl
...
oracle   15559 14922 0 07:46 ?        00:00:00oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
# 當前登陸的用戶
oracle   1558714365  2 07:47 pts/1    00:00:00 ps -ef
oracle   1558814365  0 07:47 pts/1    00:00:00 grep oracle
# 啓動數據庫中當前的進程


 

==========再開啓一個終端以system用戶登陸數據庫============

[oracle@localhost ~]$ sqlplus /nolog

 
SQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 9 07:49:452014
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL> conn system

Enter password:
Connected.

 

=======再次查看進程========

 

[oracle@localhost dbs]$ ps -ef | grep oracle

oracle   11437     1  001:37 ?        00:00:02/oracle/11g/bin/tnslsnr LISTENER -inherit
...
oracle   15498     1  007:46 ?        00:00:00 ora_pmon_orcl
oracle   15532     1  007:46 ?        00:00:00 ora_s000_orcl
oracle   1555914922  0 07:46 ?        00:00:00 oracleorcl(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
# 原來登陸的用戶
oracle   15561     1  007:46 ?        00:00:00 ora_qmnc_orcl
...
oracle   1560515604  0 07:49 pts/2    00:00:00 -bash
oracle   1563115605  0 07:49 pts/2    00:00:00 sqlplus      
oracle   15805 15803  0 08:08 ?        00:00:00 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
# 新增的登錄用戶
oracle   15648     1  007:51 ?        00:00:00 ora_smco_orcl
oracle   1565614365  4 07:52 pts/1    00:00:00 ps -ef
oracle   1565714365  0 07:52 pts/1    00:00:00 grep oracle

 

===========SYS查看當前的sql_trace=============

SQL> showparameter sql_trace

 
NAME                                 TYPE        VALUE
------------------------------------ ----------------------------------
sql_trace                            boolean     FALSE
-- false 說明不記錄


 

=========system用戶更改sql_trace的參數=============

 

SQL> altersession set sql_trace = true;

Session altered.

 

SQL> showparameter sql_trace;

 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sql_trace                            boolean     TRUE

 

========system用戶執行一條sql語句=============

 

SQL> select *from dual;

 
D
-
X

 

=========查看進程號爲15805trace file ======

 

[oracle@localhost dbs]$ cd /oracle/diag/rdbms/orcl/orcl/trace

[oracle@localhost trace]$ ls

...
orcl_ora_15293.trc orcl_ora_15405.trm  orcl_ora_15805.trc
orcl_ora_15293.trm orcl_ora_15451.trc orcl_ora_15805.trm
orcl_ora_15395.trc orcl_ora_15451.trm orcl_ora_1594.trc
...
orcl_ora_15395.trm orcl_ora_15559.trc  orcl_ora_1594.trm
orcl_ora_15405.trc orcl_ora_15559.trm

 

[oracle@localhost trace]$ tail -f orcl_ora_15805.trc

*** CLIENT ID:() 2014-09-09 08:08:44.925
...
alter session set sql_trace=true
...
select * from dual
# 記錄下了system用戶執行的查詢語句過程
END OF STMT
FETCH #3:c=0,e=3,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,plh=272002086,tim=1410264754691221


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章