當Oracle系統(tǒng)hang住 ,無法使用一切方法登錄時 (包括 sqlplus -prelim / as sysdba),我們可以使用gdb調(diào)試工具來對 Oracle做系統(tǒng) dump ,通過 系統(tǒng) dump信息 判斷 具體hang的原因 。 若直接 將 進程 kill 掉,則將失去現(xiàn)場 無法幫助今后避免 這樣的hang情況。
創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、鄆城網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場景定制、商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為鄆城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
要使用gdb 外部工具, 就需要知道目前實例中后臺進程的進程號。
我們一般通過 以下命令列出 Oracle 進程:ps -ef|grep SID
[oracle@rh2 ~]$ ps -ef|grep oraclewebmoney
oracle 16996 16995 0 21:55 ? 00:00:00 oraclewebmoney (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
然后啟動gdb ,指定Oracle軟件中二進制文件 oracle的位置和 進程id
[oracle@rh2 udump]$ gdb $ORACLE_HOME/bin/oracle 16996
GNU gdb Red Hat Linux (6.3.0.0-1.159.el4rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB. Type “show warranty” for details.
This GDB was configured as “x86_64-redhat-linux-gnu”…
(no debugging symbols found)
Using host libthread_db library “/lib64/tls/libthread_db.so.1″.
Attaching to program: /u01/oracle/product/10.2.0/db_1/bin/oracle, process 14594
可以熱備份:\x0d\x0aSQL alter database begin backup\x0d\x0a然后退出SQL,將Oracle軟件和數(shù)據(jù)文件直接拷貝\x0d\x0a等都拷貝完了,再進sqlplus 執(zhí)行:\x0d\x0aSQLalter database end backup\x0d\x0a然后將begin時刻到end時刻產(chǎn)生的歸檔也拷貝出來,\x0d\x0a這就完成了全備\x0d\x0a\x0d\x0a如果你要在oracle下備份整個數(shù)據(jù)庫:可以用expdp方便的進行\(zhòng)x0d\x0aexpdp sys/XXX dumpfile=XXXX.dmp directory=XXXX\x0d\x0a其中directory是在oracle下建立的文件夾對象名\x0d\x0a假如你沒建立過\x0d\x0a那么首先執(zhí)行create directory dpdata1 as 'd:\test\dump';\x0d\x0a然后把expdp這樣寫directory=dpdata1
實際應(yīng)用:
例:shutdown immdiate關(guān)閉數(shù)據(jù)庫,然后在mount狀態(tài)轉(zhuǎn)儲獲得控制文件內(nèi)容:
1、
SQLshutdown immediate;
SQLstarup mount;
SQLalter session set events 'immediate trace name CONTROLF level 12';
2、get trc name:
SELECT a.VALUE
|| b.symbol
|| c.instance_name
|| '_ora_'
|| d.spid
|| '.trc' trace_file
FROM (SELECT VALUE
FROM v$parameter
WHERE NAME = 'user_dump_dest') a,
(SELECT SUBSTR (VALUE, -6, 1) symbol
FROM v$parameter
WHERE NAME = 'user_dump_dest') b,
(SELECT instance_name
FROM v$instance) c,
(SELECT spid
FROM v$session s, v$process p, v$mystat m
WHERE s.paddr = p.addr AND s.SID = m.SID AND m.statistic# = 0) d
/
、導(dǎo)入
imp username/passwd@orcl file=D:\oracle\oradata\bak.dmp full=y ignore=y
2、導(dǎo)出
exp username/passwd@orcl file=D:\oracle\oradata\bak.dmp full=y
3、ip導(dǎo)出方式:
exp username/passwd@ip:1521/orcl file=D:\oracle\oradata\bak.dmpfull=y
注:D:\oracle\oradata\bak.dmp寫你的文件存放路徑
1、DUMP出控制文件
alter system (session) set events 'immediate trace name controlf level 10'
2、DUMP出日志文件分析
alter system dump logfile logfilename;
3、DUMP出日志文件頭分析
alter session set events 'immediate trace name REDOHDR level 10'
4、DUMP出LIBRARY CACHE
轉(zhuǎn)載,僅供參考。