

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# ALTER DATASHARE
<a name="r_ALTER_DATASHARE"></a>

datashare의 정의를 변경합니다. ALTER DATASHARE를 사용하여 객체를 추가하거나 제거할 수 있습니다. 현재 데이터베이스의 데이터 공유만 변경할 수 있습니다. 연결된 데이터베이스에서 객체를 데이터 공유에 추가하거나 제거합니다. 추가하거나 제거할 datashare 객체에 대한 필수 권한이 있는 datashare 소유자는 datashare를 변경할 수 있습니다.

## 필수 권한
<a name="r_ALTER_DATASHARE-privileges"></a>

ALTER DATASHARE에 필요한 권한은 다음과 같습니다.
+ 슈퍼 사용자.
+ ALTER DATASHARE 권한을 가진 사용자.
+ datashare에 대한 ALTER 또는 ALL 권한을 가진 사용자.
+ datashare에 특정 객체를 추가하려면 사용자에게 객체에 대한 권한이 있어야 합니다. 이 경우 사용자는 객체 소유자이거나 객체에 대한 SELECT, USAGE 또는 ALL 권한이 있어야 합니다.

## 구문
<a name="r_ALTER_DATASHARE-synopsis"></a>

다음 구문은 datashare에 객체를 추가하거나 제거하는 방법을 보여줍니다.

```
ALTER DATASHARE datashare_name { ADD | REMOVE } {
TABLE schema.table [, ...]
| SCHEMA schema [, ...]
| FUNCTION schema.sql_udf (argtype,...) [, ...]
| ALL TABLES IN SCHEMA schema [, ...]
| ALL FUNCTIONS IN SCHEMA schema [, ...] }
```

다음 구문은 datashare의 속성을 구성하는 방법을 보여줍니다.

```
ALTER DATASHARE datashare_name {
[ SET PUBLICACCESSIBLE [=] TRUE | FALSE ]
[ SET INCLUDENEW [=] TRUE | FALSE FOR SCHEMA schema ] }
```

## 파라미터
<a name="r_ALTER_DATASHARE-parameters"></a>

*datashare\$1name*  
변경할 datashare의 이름입니다.

ADD \$1 REMOVE  
datashare에서 객체를 추가할지 아니면 제거할지 지정하는 절입니다.

TABLE *schema*.*table* [, ...]  
datashare에 추가할 지정된 스키마의 테이블 또는 뷰의 이름입니다.

SCHEMA *schema* [, ...]   
datashare에 추가할 스키마의 이름입니다.

FUNCTION *schema*.*sql\$1udf* (argtype,...) [, ...]  
datashare에 추가할 인수 유형이 있는 사용자 정의 SQL 함수의 이름입니다.

ALL TABLES IN SCHEMA *schema* [, ...]   
지정된 스키마의 모든 테이블과 뷰를 datashare에 추가할지 여부를 지정하는 절입니다.

ALL FUNCTIONS IN SCHEMA *schema* [, ...] \$1  
지정된 스키마의 모든 함수를 datashare에 추가하도록 지정하는 절입니다.

[ SET PUBLICACCESSIBLE [=] TRUE \$1 FALSE ]  
공개적으로 액세스할 수 있는 클러스터와 datashare를 공유할 수 있는지 여부를 지정하는 절입니다.

[ SET INCLUDENEW [=] TRUE \$1 FALSE FOR SCHEMA *schema* ]  
지정된 스키마에서 생성된 향후 테이블, 뷰 또는 SQL 사용자 정의 함수(UDF)를 datashare에 추가할지 여부를 지정하는 절입니다. 지정된 스키마의 현재 테이블, 뷰 또는 SQL UDF는 datashare에 추가되지 않습니다. 슈퍼 사용자만 각 datashare-스키마 페어에 대해 이 속성을 변경할 수 있습니다. 기본적으로 INCLUDENEW 절은 false입니다.

## ALTER DATASHARE 사용 참고 사항
<a name="r_ALTER_DATASHARE_usage"></a>
+ 다음 사용자가 datashare를 변경할 수 있습니다.
  + 슈퍼 사용자
  + datashare의 소유자입니다.
  + datashare에 대한 ALTER 또는 ALL 권한을 가진 사용자
+ datashare에 특정 객체를 추가하려면 이러한 사용자에게 객체에 대한 올바른 권한이 있어야 합니다. 사용자는 객체 소유자이거나 객체에 대한 SELECT, USAGE 또는 ALL 권한이 있어야 합니다.
+ 스키마, 테이블, 일반 뷰, 후기 바인딩 뷰, 구체화된 뷰 및 SQL 사용자 정의 함수(UDF)를 공유할 수 있습니다. 스키마에 객체를 추가하기 전에 먼저 datashare에 스키마를 추가합니다.

  스키마를 추가할 때 Amazon Redshift는 스키마 아래에 모든 객체를 추가하지 않습니다. 명시적으로 스키마를 추가해야 합니다.
+ 공개적으로 액세스할 수 있는 설정이 지정된 상태에서 AWS Data Exchange datashare를 생성하는 것이 좋습니다.
+ 일반적으로 ALTER DATASHARE 문을 사용하여 퍼블릭 액세스 가능성을 끄도록 AWS Data Exchange datashare를 변경하지 않는 것이 좋습니다. 그렇게 하면 클러스터에 공개적으로 액세스할 수 있는 경우 datashare에 액세스할 수 있는 AWS 계정의 액세스 권한이 상실됩니다. 이러한 유형의 변경을 수행하면 AWS Data Exchange의 데이터 제품 조건을 위반할 수 있습니다. 이 권장 사항에 대한 예외는 다음을 참조하세요.

  다음 예는 설정이 해제된 상태에서 AWS Data Exchange datashare가 생성될 경우 오류를 보여줍니다.

  ```
  ALTER DATASHARE salesshare SET PUBLICACCESSIBLE FALSE;
  ERROR:  Alter of ADX-managed datashare salesshare requires session variable datashare_break_glass_session_var to be set to value 'c670ba4db22f4b'
  ```

  공개적으로 액세스 가능한 설정을 해제하도록 AWS Data Exchange datashare를 변경하려면 다음 변수를 설정하고 ALTER DATASHARE 문을 다시 실행합니다.

  ```
  SET datashare_break_glass_session_var to 'c670ba4db22f4b';
  ```

  ```
  ALTER DATASHARE salesshare SET PUBLICACCESSIBLE FALSE;
  ```

  이 경우 Amazon Redshift는 임의의 일회성 값을 생성하여 AWS Data Exchange datashare에 대해 ALTER DATASHARE SET PUBLICACCESSIBLE FALSE를 허용하도록 세션 변수를 설정합니다.

## 예제
<a name="r_ALTER_DATASHARE_examples"></a>

다음 예에서는 datashare `salesshare`에 `public` 스키마를 추가합니다.

```
ALTER DATASHARE salesshare ADD SCHEMA public;
```

다음 예에서는 datashare `salesshare`에 `public.tickit_sales_redshift` 테이블을 추가합니다.

```
ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
```

다음 예에서는 datashare `salesshare`에 모든 테이블을 추가합니다.

```
ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;
```

다음 예에서는 datashare `salesshare`에서 `public.tickit_sales_redshift` 테이블을 제거합니다.

```
ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;
```