업데이트 실패 문제 해결

업데이트 작업은 여러 가지 이유로 실패할 수 있습니다. 일반적으로 데이터베이스 노드의 작동이 중지되었거나, 파일 시스템에 공간이 부족하거나, 데이터베이스 호스트가 객체 저장소에 액세스할 수 없기 때문에 작업이 실패합니다.

이 문서에는 실패 원인을 확인하고 문제를 해결하는 데 도움이 되는 정보가 포함되어 있습니다. 이 정보는 오류 조건에 따라 여러 섹션으로 구성됩니다.

원인을 이미 알고 있는 경우 제안된 해결 방법을 사용하여 해당 항목으로 건너뛸 수 있습니다. 그렇지 않으면 실패 원인 식별 항목을 사용하여 시작합니다.

이 문서에서는 다음 항목에 대해 다룹니다.

참고: 직렬 콘솔 연결을 만들어 단일 사용자 모드로 시스템 문제를 해결할 수도 있습니다. OCI 콘솔에서 직렬 콘솔 접속 생성에 대한 자세한 내용은 DB 시스템에 대한 직렬 콘솔 접속 관리를 참조하십시오.

실패의 원인 식별

OCI 콘솔에서는 DB 시스템 또는 개별 데이터베이스의 업데이트 내역을 확인하여 실패한 업데이트 작업을 식별할 수 있습니다. 성공적으로 적용되지 않은 업데이트는 실패 상태를 표시하며, 실패를 일으킨 오류에 대한 간략한 설명을 포함합니다. 오류 메시지에 해결 방법을 가리키는 정보가 충분하지 않으면 데이터베이스 CLI 및 로그 파일을 사용하여 더 많은 데이터를 수집할 수 있습니다. 그런 다음 해결 방법은 이 문서의 해당 섹션을 참조하십시오.

다음 항목을 다룹니다.

업데이트 작업 실패의 근본 원인 식별

  1. root 유저로 호스트에 로그온하여 /opt/oracle/dcs/bin/ 디렉토리로 이동합니다.
  2. 데이터베이스에서 수행되는 작업 순서를 결정합니다.

    dbcli list-jobs

    성공 이외의 상태로 나열된 마지막 작업 ID를 확인합니다.

  3. 이전 단계에서 기록한 작업 ID를 사용하여 다음 명령을 사용하여 해당 작업의 세부 정보를 확인합니다.

    dbcli describe-job -i <job_ID> -j

    일반적으로 이 명령을 실행하면 실패의 근본 원인을 밝히기에 충분합니다.

  4. 자세한 정보가 필요하면 /opt/oracle/dcs/log/dcs-agent.log 파일을 검토합니다.

    2단계의 작업 보고서에서 반환된 시간 기록을 사용하여 이 파일에서 작업 ID를 찾을 수 있습니다.

  5. 2노드 RAC 데이터베이스에 갱신 Failure가 있는 경우 두 노드에서 3단계와 4단계를 수행합니다.

데이터베이스 서비스 에이전트 문제

데이터베이스는 에이전트 프레임워크를 사용하여 Oracle Cloud 플랫폼을 통해 관리할 수 있도록 합니다.

다음 항목을 다룹니다.

정지된 에이전트에서 발생한 업데이트 실패 해결

경우에 따라 업데이트 실패를 해결하기 위해 stop/waiting 상태인 경우 dcsagent 프로그램을 다시 시작해야 할 수 있습니다.

데이터베이스 서비스 에이전트 재시작

  1. 명령 프롬프트에서 에이전트의 상태를 확인합니다.

    initctl status initdcsagent
  2. 에이전트가 stop/waiting 상태인 경우 에이전트 재시작을 시도합니다.

    initctl start initdcsagent
  3. 에이전트의 상태를 다시 확인하여 상태가 start/running인지 확인합니다.

    initctl status initdcsagent

업데이트해야 하는 에이전트에 의해 발생한 업데이트 실패 해결

에이전트를 업데이트해야 하는 경우에도 업데이트 작업이 실패할 수 있습니다. 시스템에서 이 실패에 대해 다음 오류 메시지를 제공합니다.

Current DcsAgent version is less than or equal to minimum required version.

이 문제를 해결하려면 다음 절의 단계를 수행하십시오.

Oracle Support에 문의하여 OCI 데이터베이스 서비스 에이전트 업데이트

  1. 다음 명령을 사용하여 에이전트(dcsagent) 및 DCS 관리 프로그램(dcsadmin)이 실행 중인지 확인합니다.

    initctl status initdcsagent
    initctl status initdcsadmin
  2. 이러한 프로그램이 실행되고 있지 않으면 다음 명령을 사용하여 프로그램을 다시 시작합니다.

    initctl start initdcsagent
    initctl start initdcsadmin
  3. 추가 도움말 가져오기의 지침에 따라 DCS 에이전트 로그 파일을 수집합니다.
  4. 에이전트 업데이트에 대한 지원은 Oracle Support에 문의하십시오.

객체 저장소 접속 문제

DB 시스템 및 데이터베이스 업데이트는 OCI Object Storage에 저장됩니다. 따라서 업데이트 작업을 성공하려면 업데이트가 다운로드되는 오브젝트 스토리지 위치와 DB 시스템 호스트 간의 접속이 필요합니다.

다음 항목을 다룹니다.

데이터베이스 호스트가 OCI Object Storage에 연결할 수 있는지 확인

  1. 다음 명령을 사용하여 호스트가 OCI Object Storage에 액세스할 수 있는지 확인합니다.

    dbcli describe-latestpatch

    성공을 나타내는 출력 예:

    componentType   availableVersion
    --------------  --------------
    gi              12.2.0.1.180417
    gi              12.1.0.2.180417
    db              11.2.0.4.180417
    db              12.2.0.1.180417
    db              12.1.0.2.180417
    oak             12.1.2.11.3
    oak             12.2.1.1.0

    실패를 나타내는 출력 예:

    DCS-10032:Resource patch metadata is not found.Failed to download patchmetadata from objectstore
  2. 객체 저장소에 접속할 수 없는 경우 객체 저장소 접속 구성 방법은 콘솔을 사용하여 데이터베이스 백업을 참조하십시오.

호스트 이슈

데이터베이스 호스트에서 다음 조건 중 하나 이상으로 인해 업데이트 작업이 실패할 수 있습니다.

다음 항목을 다룹니다.

업데이트 작업 중 데이터베이스 노드가 실행되고 있지 않음

DB 시스템 또는 데이터베이스 홈 업데이트 여부에 관계없이 업데이트 작업이 진행되는 동안 데이터베이스의 모든 노드가 활성 상태이고 실행 중이어야 합니다. OCI 콘솔을 사용하여 각 노드의 상태가 AVAILABLE인지 확인하고 필요한 경우 노드를 시작합니다.

파일 시스템이 가득 참

업데이트 작업을 수행하려면 호스트 파일 시스템의 /u01 디렉토리에 최소 15GB의 여유 공간이 필요합니다. 호스트에서 df -h 명령을 사용하여 사용 가능한 공간을 확인합니다. 파일 시스템의 공간이 부족하면 이전 로그 또는 Trace File을 제거하여 공간을 확보할 수 있습니다.

Oracle Clusterware 문제

다음 항목을 다룹니다.

Oracle Clusterware가 실행 중이 아님

Oracle Clusterware를 사용하면 서버가 서로 통신하여 공동 단위로 작동할 수 있습니다. 업데이트 작업을 완료하려면 DB 시스템에서 클러스터 소프트웨어 프로그램이 작동되어 실행 중이어야 합니다. 경우에 따라 업데이트 오류를 해결하려면 Oracle Clusterware를 다시 시작해야 할 수 있습니다.

Oracle Clusterware 재시작

  1. 명령 프롬프트에서 Oracle Clusterware의 상태를 확인합니다.

    crsctl check crs

    출력:

    CRS-4638: Oracle High Availability Services is online
    CRS-4537: Cluster Ready Services is online
    CRS-4529: Cluster Synchronization Services is online
    CRS-4533: Event Manager is online

    자세한 상태 정보를 보려면 crsctl stat res -t를 실행하면 됩니다.

  2. Oracle Clusterware가 온라인 상태가 아니면 프로그램을 재시작해 보십시오.

    crsctl start crs
  3. Oracle Clusterware의 상태를 검사하여 온라인 상태인지 확인합니다.

    crsctl check crs

Oracle Grid Infrastructure(GI)가 업데이트되지 않았습니다.

이 문제는 데이터베이스의 DB 시스템을 업데이트하기 전에 데이터베이스를 업데이트하려고 할 때 발생합니다. 오류 설명은 Oracle Grid Infrastructure를 먼저 업데이트해야 함을 나타냅니다. 이 문제를 해결하려면 DB 시스템을 사용 가능한 최신 버전으로 업데이트하십시오. DB 시스템을 업데이트한 후 데이터베이스 업데이트 작업을 재시도할 수 있습니다.

DB 시스템의 현재 및 사용 가능한 최신 GI 버전을 가져오려면 다음 명령을 사용합니다.

dbcli describe-component

데이터베이스 문제

부적절한 데이터베이스 상태로 인해 업데이트 실패가 발생할 수 있습니다.

다음 항목을 다룹니다.

업데이트 작업 중 데이터베이스가 실행되고 있지 않음

모든 갱신 작업을 완료하려면 데이터베이스가 활성 상태이고 실행 중이어야 합니다. 그렇지 않은 경우 데이터 패치 작업을 수동으로 실행해야 합니다.

데이터베이스가 활성 상태이고 실행 중인지 확인

다음 명령을 사용하여 데이터베이스의 상태를 확인하고 데이터베이스를 부적절한 상태로 만들 수 있는 문제가 해결되었는지 확인합니다.

srvctl status database -d <db_unique_name> -verbose

시스템에서 데이터베이스 인스턴스 상태를 포함한 메시지를 반환합니다. 업데이트 작업을 성공하려면 인스턴스 상태가 미결이어야 합니다.

데이터베이스가 실행되고 있지 않으면 다음 명령을 사용하여 데이터베이스를 시작합니다.

srvctl start database -d <db_unique_name> -o open

데이터베이스가 마운트되었지만 Open 상태가 아닌 경우 다음 명령을 사용하여 SQL*Plus 명령 프롬프트에 액세스하고 상태를 Open으로 설정합니다.

sqlplus / as sysdba
alter database open;

datapatch 태스크 실행

datapatch 명령을 실행하기 전에 모든 PDB(플러거블 데이터베이스)가 열려 있는지 확인하십시오. PDB를 열려면 SQL*Plus를 사용하여 PDB에 대해 ALTER PLUGGABLE DATABASE <pdb_name> OPEN READ WRITE;를 실행할 수 있습니다.

$ORACLE_HOME/OPatch/datapatch

각 데이터베이스 홈에서 datapatch 명령을 실행해야 합니다.

추가 도움말 가져오기

이 문서의 정보를 사용하여 문제를 해결할 수 없는 경우 아래 절차에 따라 관련 데이터베이스 및 진단 정보를 수집하십시오. 이 정보를 수집한 후 Oracle Support에 문의하십시오.

다음 항목을 다룹니다.

실패한 작업과 관련된 진단 정보 수집

  1. root 유저로 호스트에 로그온하여 /opt/oracle/dcs/bin/ 디렉토리로 이동합니다.
  2. 다음 두 명령을 실행하여 실패한 작업에 대한 정보를 생성합니다.

    dbcli list-jobs | grep -i <dbname>
    dbcli describe-job -i <job_ID> -j

    두번째 명령의 <job_ID>는 첫번째 명령에서 보고된 최근 실패한 작업의 ID여야 합니다.

  3. 진단 수집기 스크립트를 실행하여 Oracle Support Services에 대한 진단 정보가 포함된 zip 파일을 생성합니다.

    diagcollector.py

    이 명령은 /tmp 디렉토리에 diagLogs-<timestamp>.zip라는 파일을 생성합니다.

DCS 에이전트 로그 파일 수집

DCS 에이전트 로그 파일을 수집하려면 다음을 수행합니다.

  1. opc 사용자로 로그인합니다.
  2. 다음 명령을 실행합니다.

    sudo /opt/oracle/dcs/bin/diagcollector.py
  3. 시스템은 지정된 디렉토리의 zip 파일에서 에이전트 로그를 사용할 수 있음을 나타내는 메시지를 반환합니다. 예:

    Log files collected to :/tmp/dcsdiag/diagLogs-1234567890.zip
    Logs are being collected to:
    /tmp/dcsdiag/diagLogs-1234567890.zip

Oracle Grid Infrastructure 및 데이터베이스 로그 파일 수집

Oracle Grid Infrastructure 또는 Oracle Database 업데이트를 실패한 경우 다음 위치에서 이러한 실패에 대한 로그 파일을 찾을 수 있습니다.

Oracle Grid Infrastructure:

$GI_HOME/cfgtoollogs/

Oracle Database:

$ORACLE_HOME/cfgtoollogs/