ALTER DATASHARE
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;