“ ORA-03113: สิ้นสุดไฟล์ในช่องทางการสื่อสาร” เมื่อเริ่มต้น


22

ฉันได้อ่านโพสต์ที่นี่ในการสนับสนุน Oracle และที่อื่นฉันสามารถค้นหาในสามวันที่ผ่านมาและฉันได้รับในปัญหานี้ ...

ฐานข้อมูล Oracle หยุดทำงาน การปิดฐานข้อมูลนั่งสองสามชั่วโมงจากนั้นจะปิด มันจะไม่รีสตาร์ท เซิร์ฟเวอร์เริ่มต้นใหม่ Oracle ถูกรีสตาร์ท ไปทีละขั้นตอน: งานเริ่มต้นทำงานชื่อ, แก้ไขงานติดตั้งฐานข้อมูล, เปิดฐานข้อมูลการเปลี่ยนแปลงผลตอบแทน ORA-03113 นี่คือทั้งหมดใน localhost - ไม่ผ่านเครือข่าย เครื่องไม่มีไฟร์วอลล์ชนิดใดทำงาน

มีความคิดว่าจะแก้ไขข้อผิดพลาด ORA-03113 นี้ได้อย่างไร ฉันใช้โทรศัพท์พร้อมการสนับสนุนในอินเดียในช่วง 4.5 ชั่วโมงที่ผ่านมาและฉันยังไม่พบใครที่มีประโยชน์


1
โพสต์ข้อความที่ตัดตอนมาจากบันทึกการแจ้งเตือนด้วยALTER DATABASE OPENและข้อผิดพลาดหลังจากนั้น
Mindaugas Riauba

1
ค้นหา (grep) บันทึกการแจ้งเตือนทั้งหมดระหว่างการเริ่มต้นสำเร็จครั้งล่าสุดและการเริ่มต้นไม่สำเร็จในปัจจุบันและค้นหา ALTER SYSTEM SET ในช่วงเวลานี้ทั้งหมด อาจมีบางคนที่เปลี่ยนแปลงพารามิเตอร์อินสแตนซ์ในแบบที่ไม่ได้มาตรฐาน
kubanczyk

คำตอบ:


35

หลังจากชั่วโมงแห่งความผิดพลาดจากการสนับสนุนอย่างเป็นทางการของ Oracle ฉันได้ทำสิ่งนี้ด้วยตัวเองและแก้ไขมัน ฉันกำลังบันทึกไว้ที่นี่ในกรณีที่คนอื่นมีปัญหานี้

ในการทำสิ่งนี้คุณต้องเป็นผู้ใช้ oracle:

$ su - oracle

ขั้นตอนที่ 1: คุณต้องดูบันทึกการแจ้งเตือน มันไม่ได้อยู่ใน / var / log ตามที่คาดไว้ คุณต้องเรียกใช้โปรแกรมอ่านบันทึกของ Oracle:

$ adrci
ADRCI: Release 11.2.0.1.0 - Production on Wed Sep 11 18:27:56 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
ADR base = "/u01/app/oracle"
adrci>

สังเกตว่า ADR base นั่นไม่ใช่การติดตั้ง คุณต้องเห็นบ้านเพื่อให้คุณสามารถเชื่อมต่อกับบ้านที่คุณใช้

adrci> show homes
ADR Homes:
diag/rdbms/cci/CCI
diag/tnslsnr/cci/listener
diag/tnslsnr/cci/start
diag/tnslsnr/cci/reload

CCI เป็นบ้าน ตั้งว่า

adrci> set home diag/rdbms/cci/CCI
adrci>

ตอนนี้คุณสามารถดูบันทึกการแจ้งเตือน มันจะดีมากถ้าพวกเขาอยู่ใน / var / log เพื่อให้คุณสามารถแยกบันทึกได้อย่างง่ายดาย เพียงแค่หยุดต้องการและจัดการกับอินเทอร์เฟซนี้ อย่างน้อยคุณก็สามารถปรับ (และฉันหวังว่าคุณจะมีบัฟเฟอร์เลื่อน):

adrci> show alert -tail 100

เลื่อนกลับจนกว่าคุณจะเห็นข้อผิดพลาด คุณต้องการข้อผิดพลาดครั้งแรก ข้อผิดพลาดใด ๆ หลังจากข้อผิดพลาดแรกน่าจะเกิดจากข้อผิดพลาดแรก ในกรณีของฉันข้อผิดพลาดแรกคือ:

ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 100.00% used, and has 0 remaining bytes available.

นี่คือสาเหตุที่เกิดจากการทำธุรกรรม Oracle ไม่ได้ถูกออกแบบมาให้ใช้ หากคุณส่งข้อมูลจำนวนมากเข้ามามันจะบันทึกบันทึกธุรกรรม สิ่งเหล่านั้นจะเข้าไปในพื้นที่ไฟล์กู้คืน เมื่อเต็มแล้ว (เต็ม 50GB ในกรณีนี้) จากนั้น Oracle ก็ตาย จากการออกแบบหากมีสิ่งใดเกิดความสับสน Oracle จะตอบสนองโดยการปิดระบบ

มีวิธีแก้ปัญหาสองแบบวิธีที่เหมาะสมและแบบรวดเร็วและสกปรก สิ่งที่รวดเร็วและสกปรกคือการเพิ่ม db_recovery_file_dest_size ก่อนอื่นให้ออกจาก adrci

adrci> exit

ตอนนี้ไปที่ sqlplus โดยไม่ต้องเปิดฐานข้อมูลเพียงแค่ติดตั้ง (คุณสามารถทำได้โดยไม่ต้องติดตั้งฐานข้อมูล แต่ฉันติดตั้งอยู่ดี)

$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 11 18:40:25 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> startup mount

ตอนนี้คุณสามารถเพิ่ม db_recovery_file_dest_size ปัจจุบันของคุณเพิ่มเป็น 75G ในกรณีของฉัน:

SQL> alter system set db_recovery_file_dest_size = 75G scope=both

ตอนนี้คุณสามารถปิดและเริ่มต้นอีกครั้งและข้อผิดพลาดก่อนหน้านี้ควรจะหายไป

การแก้ไขที่เหมาะสมคือการกำจัดไฟล์กู้คืน คุณทำเช่นนั้นโดยใช้ RMAN ไม่ใช่ SQLPLUS หรือ ADRCI

$ rman
Recovery Manager: Release 11.2.0.1.0 - Production on Wed Sep 11 18:45:11 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
RMAN> backup archivelog all delete input;

หากคุณมีRMAN-06171: not connected to target databaseลองใช้rman target /แทนที่จะเป็นเพียงแค่rman

รอเป็นเวลานานและ archivelog ของคุณ (ที่ใช้พื้นที่ทั้งหมด) จะหายไป ดังนั้นคุณสามารถปิด / เปิดฐานข้อมูลของคุณและกลับมาทำธุรกิจได้


ฉันไม่พบคำสั่ง adrci ในเซิร์ฟเวอร์ oracle linux ของฉัน ฉันจะติดตั้งได้อย่างไร ขอบคุณ

3
ขอบคุณ! มันได้ผล. แต่คำสั่งที่ถูกต้องสำหรับ rman คือ: export ORACLE_SID=my_oracle//rman target /

ในการเพิ่ม 2 เซนต์ของฉัน - คุณสามารถตรวจสอบบทความนี้ที่นี่ซึ่งมีคำสั่งที่คุณสามารถใช้กับRMANเพื่อล้างพื้นที่เก็บถาวรรวมถึงสิ่งอื่น ๆ ระวังเพราะมันจะล้างจุดคืนค่าถ้าฐานข้อมูลเปิดด้วยเหตุผลบางอย่าง (บิตสุดท้าย): the1403.github.io/RMAN-cleanup-logs
g00dy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.