Amazon RDS for Oracle을 Amazon S3와 통합하면 발생하는 문제를 해결하려면 어떻게 해야 합니까?
Amazon Relational Database Service(Amazon RDS) for Oracle을 Amazon Simple Storage Service(Amazon S3)와 통합하면 발생하는 문제를 해결하려고 합니다.
간략한 설명
Amazon RDS for Oracle 데이터베이스 인스턴스와 Amazon S3 버킷 간에 파일을 전송하기 전에 다음 요구 사항을 확인하십시오.
- 데이터베이스 인스턴스와 S3 버킷이 동일한 AWS 리전에 있습니다.
- 데이터베이스 인스턴스의 AWS Identity and Access Management(IAM) 역할에는 S3 버킷에 대한 필수 액세스 권한이 있습니다.
- 데이터베이스 인스턴스가 옵션 그룹과 연결되어 있으며 S3_INTEGRATION 옵션을 포함합니다.
- Oracle 디렉터리 객체에서만 파일을 업로드합니다.
참고: 이 디렉터리는 사용자가 만든 디렉터리나 DATA_PUMP_DIR 디렉터리일 수 있습니다. - 사용자가 만든 디렉터리를 사용하는 경우 업로드 및 다운로드를 수행하는 사용자에게 디렉터리에 대한 필수 권한이 있는지 확인합니다.
- 하위 디렉터리 내에서 데이터를 복사하는 경우 rdsadmin 패키지 사용 시 하위 디렉터리의 이름을 명시적으로 지정합니다.
참고: S3_INTEGRATION 옵션을 사용하는 하위 디렉터리를 복사할 수 없습니다. S3_INTEGRATION 옵션만 사용하여 DATA_PUMP_DIR과 같은 Oracle 논리적 디렉터리와 Amazon S3 간에 파일을 복사할 수 있습니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하는 경우, AWS CLI 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
데이터베이스 인스턴스의 IAM 역할에 S3 버킷에 대한 권한이 있는지 확인
다음 단계를 완료하십시오.
-
Amazon RDS 콘솔을 엽니다.
-
탐색 창에서 데이터베이스를 선택합니다.
-
확인하려는 데이터베이스 인스턴스를 선택합니다.
-
연결 및 보안 탭을 선택합니다.
-
아래로 스크롤하여 IAM 역할 관리 섹션으로 이동하고 다음과 같은 최소 권한을 포함하는 활성 IAM 역할이 있는지 확인합니다.
S3:ListBucket
S3:PutObject
S3:GetObject
또한 describe-db-instances 명령을 실행할 수 있습니다.aws rds describe-db-instances \--db-instance-identifier example-db-instance \--query 'DBInstances[*].[AssociatedRoles[*]]'참고: example-db-instance를 데이터베이스 인스턴스로 바꿉니다.
-
IAM 역할은 있지만 최소 권한이 없는 경우 이러한 권한을 포함하도록 역할을 업데이트합니다.
필요한 권한을 보유한 IAM 역할이 없는 경우 다음 단계를 완료하십시오.
- 파일 전송에 필요한 권한이 포함된 IAM 정책을 만듭니다.
참고: IAM 정책을 만드는 경우 버킷에는 버킷 수준 권한을, 객체에는 객체 수준 권한을 추가해야 합니다. - Amazon RDS for Oracle 데이터베이스 인스턴스에 대한 IAM 역할을 만들고 정책을 역할에 연결합니다.
- IAM 역할을 Amazon RDS for Oracle 데이터베이스 인스턴스와 연결합니다.
버킷 권한 관련 문제가 지속되면 다음 예제 정책을 사용하여 IAM 역할에 S3 버킷에 대한 전체 액세스 권한을 부여합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::example-bucket/*", "arn:aws:s3:::example-bucket" ] } ] }
중요: S3 버킷에 대한 전체 액세스 권한만 부여하여 부적절한 IAM 권한 설정으로 인해 문제가 발생했는지 테스트하십시오. 문제를 해결한 후 사용자 지정 권한을 이전 상태로 되돌립니다.
Amazon S3의 특정 폴더에 파일을 업로드하려면 rdsadmin.rdsadmin_s3_tasks.upload_to_s3 프로시저의 p_s3_prefix 파라미터를 사용하십시오. 파일을 업로드하기 전에 필요한 권한이 있는지 확인하십시오.
예를 들어 파일을 S3 버킷 example-bucket의 example-folder 폴더에 업로드하려면 다음 IAM 정책을 연결합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::example-bucket/example-folder/*" ] } ] }
RDS 데이터베이스 인스턴스에 옵션 그룹이 연결되어 있는지 확인
다음 단계를 완료하십시오.
-
Amazon RDS 콘솔을 엽니다.
-
탐색 창에서 데이터베이스를 선택합니다.
-
확인하려는 DB 인스턴스를 선택합니다.
-
구성 탭을 선택하고 옵션 그룹 파라미터를 기록해 둡니다.
-
이 옵션 그룹이 동기화 중 상태인지 확인하려면 다음 describe-db-instances 명령을 실행합니다.
aws rds describe-db-instances \--db-instance-identifier example-db-instance \--query 'DBInstances[*].[OptionGroupMemberships[*]]'참고: example-db-instance를 데이터베이스 인스턴스로 바꿉니다.
-
다음 작업 중 하나를 수행합니다.
옵션 그룹이 동기화 중 상태가 아닌 경우 로그 및 이벤트 탭을 선택하고 최근 이벤트 섹션을 검토합니다. 옵션 그룹이 동기화되지 않도록 하는 구성 요소를 식별한 다음, 데이터베이스에서 해당 구성 요소를 제거합니다.
-또는-
옵션 그룹이 동기화 중 상태인 경우 S3_INTEGRATION 옵션이 옵션 그룹에 포함되어 있는지 확인합니다. S3_INTEGRATION 옵션이 옵션 그룹에 포함되지 않은 경우 S3 통합 옵션을 추가합니다.
참고: ‘ORA-00904: "RDSADMIN"."RDSADMIN_S3_TASKS"."UPLOAD_TO_S3": invalid identifier";’ 오류를 받은 경우 데이터베이스 인스턴스에 S3_INTEGRATION 옵션을 추가했는지 확인하십시오.
S3_INTEGRATION 옵션을 추가하면 가동 중지 시간이 발생하지 않습니다. 즉시 적용 옵션을 사용하려는 경우 보류 중인 유지 관리 작업이 없는지 확인하십시오. 보류 중인 유지 관리 작업이 있는 경우 해당 작업은 S3 통합에 적용됩니다. 자세한 내용은 DB 인스턴스 유지 관리를 참조하십시오.
파일 업로드 및 다운로드
데이터베이스 인스턴스에서는 Amazon S3 파일에 직접 액세스할 수 없습니다. 이 파일에 액세스하려면 파일을 Amazon RDS 호스트의 디렉터리에 복사해야 합니다. 데이터베이스 인스턴스에서 S3 버킷으로 파일을 업로드하거나 다운로드하려면 다음 단계를 완료하십시오.
- expdp 명령, DATA_DUMP_DIR의 dbms_datapump API 또는 사용자 지정 디렉터리를 사용하여 Amazon S3로 내보내기 파일을 만듭니다.
- rdsadmin.rdsadmin_s3_tasks.upload_to_s3 프로시저를 사용하여 파일을 S3에 업로드합니다.
- rdsadmin. rdsadmin_s3_tasks.download_from_s3 프로시저를 사용하여 S3 버킷에서 DATA_PUMP_DIR 폴더 또는 사용자가 만든 디렉터리로 파일을 다운로드합니다.
rdsadmin 패키지 업로드 또는 다운로드 프로시저를 실행하는 경우 로그를 보고 파일 전송 상태를 모니터링합니다. 이러한 로그를 보려면 다음 단계를 완료하십시오.
-
Amazon RDS 콘솔을 엽니다.
-
탐색 창에서 데이터베이스를 선택합니다.
-
보려는 데이터베이스 인스턴스를 선택합니다.
-
로그 및 이벤트 탭을 선택합니다.
-
로그 섹션에서 검색 필터에 프로시저 작업 ID를 입력합니다.
-
반환된 파일을 선택합니다.
-
보기를 선택하여 로그를 보거나 다운로드를 선택하여 로그를 다운로드합니다.
-
업로드 또는 다운로드 프로세스 중에 생성된 로그 파일을 읽으려면 다음 select 문을 실행합니다.
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));참고: task-id를 프로시저가 반환하는 작업 ID로 바꿉니다.
관련 정보
Amazon RDS for Oracle DB 인스턴스가 예상보다 많은 스토리지를 사용하는 이유는 무엇입니까?

