업데이트 실패 문제 해결

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

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

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

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

참고:

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

실패 원인 식별

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

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

  1. root 유저로 호스트에 로그온하여 /opt/oracle/dcs/bin/ 디렉토리로 이동합니다.

  2. 데이터베이스에서 수행되는 작업 순서를 결정합니다.

    dbcli list-jobs

    Success가 아닌 상태로 나열된 마지막 작업 ID를 확인합니다.

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

    dbcli describe-job -i <job_ID> -j

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

  4. 자세한 내용은 /opt/oracle/dcs/log/dcs-agent.log 파일을 참조하십시오.

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

  5. 업데이트 실패가 2노드 RAC 데이터베이스에 있는 경우 두 노드에서 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 명령을 사용하여 사용 가능한 공간을 확인합니다. 파일 시스템에 공간이 부족하면 이전 로그 또는 추적 파일을 제거하여 공간을 확보할 수 있습니다.

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

시스템은 데이터베이스 Instance 상태를 포함하는 메시지를 반환합니다. 업데이트 작업이 성공하려면 인스턴스 상태가 열림이어야 합니다.

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

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/