datashare의 정의를 변경합니다. ALTER DATASHARE를 사용하여 객체를 추가하거나 제거할 수 있습니다. 현재 데이터베이스의 데이터 공유만 변경할 수 있습니다. 연결된 데이터베이스에서 객체를 데이터 공유에 추가하거나 제거합니다. 추가하거나 제거할 datashare 객체에 대한 필수 권한이 있는 datashare 소유자는 datashare를 변경할 수 있습니다.
필수 권한
ALTER DATASHARE에 필요한 권한은 다음과 같습니다.
-
슈퍼 사용자.
-
ALTER DATASHARE 권한을 가진 사용자.
-
datashare에 대한 ALTER 또는 ALL 권한을 가진 사용자.
-
datashare에 특정 객체를 추가하려면 사용자에게 객체에 대한 권한이 있어야 합니다. 이 경우 사용자는 객체 소유자이거나 객체에 대한 SELECT, USAGE 또는 ALL 권한이 있어야 합니다.
구문
다음 구문은 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 ] }
파라미터
- datashare_name
-
변경할 datashare의 이름입니다.
- ADD | REMOVE
-
datashare에서 객체를 추가할지 아니면 제거할지 지정하는 절입니다.
- TABLE schema.table [, ...]
-
datashare에 추가할 지정된 스키마의 테이블 또는 뷰의 이름입니다.
- SCHEMA schema [, ...]
-
datashare에 추가할 스키마의 이름입니다.
- FUNCTION schema.sql_udf (argtype,...) [, ...]
-
datashare에 추가할 인수 유형이 있는 사용자 정의 SQL 함수의 이름입니다.
- ALL TABLES IN SCHEMA schema [, ...]
-
지정된 스키마의 모든 테이블과 뷰를 datashare에 추가할지 여부를 지정하는 절입니다.
- ALL FUNCTIONS IN SCHEMA schema [, ...] }
-
지정된 스키마의 모든 함수를 datashare에 추가하도록 지정하는 절입니다.
- [ SET PUBLICACCESSIBLE [=] TRUE | FALSE ]
-
공개적으로 액세스할 수 있는 클러스터와 datashare를 공유할 수 있는지 여부를 지정하는 절입니다.
- [ SET INCLUDENEW [=] TRUE | FALSE FOR SCHEMA schema ]
-
지정된 스키마에서 생성된 향후 테이블, 뷰 또는 SQL 사용자 정의 함수(UDF)를 datashare에 추가할지 여부를 지정하는 절입니다. 지정된 스키마의 현재 테이블, 뷰 또는 SQL UDF는 datashare에 추가되지 않습니다. 슈퍼 사용자만 각 datashare-스키마 페어에 대해 이 속성을 변경할 수 있습니다. 기본적으로 INCLUDENEW 절은 false입니다.
ALTER DATASHARE 사용 참고 사항
-
다음 사용자가 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를 허용하도록 세션 변수를 설정합니다.
예시
다음 예에서는 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;