MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/cathive1.sql

Rem
Rem $Header: rdbms/admin/cathive1.sql /main/8 2017/10/25 18:01:32 raeburns Exp $
Rem
Rem cathive1.sql
Rem
Rem Copyright (c) 2015, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      cathive1.sql - <one-line expansion of the name>
Rem
Rem    DESCRIPTION
Rem      Scripts to create various oracle catalog views for hive metadata
Rem
Rem    NOTES
Rem      None
Rem
Rem    BEGIN SQL_FILE_METADATA 
Rem    SQL_SOURCE_FILE: rdbms/admin/cathive1.sql 
Rem    SQL_SHIPPED_FILE: rdbms/admin/cathive1.sql
Rem    SQL_PHASE: CATHIVE1
Rem    SQL_STARTUP_MODE: NORMAL 
Rem    SQL_IGNORABLE_ERRORS: NONE 
Rem    SQL_CALLING_FILE: rdbms/admin/cathive.sql
Rem    END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    raeburns    10/20/17 - RTI 20225108: correct SQLPHASE
Rem    mthiyaga    07/03/17 - Bug 26381383
Rem    mthiyaga    06/07/16 - Remove HIVE_URI$ dependency
Rem    mthiyaga    09/29/15 - Bug 21916906
Rem    mthiyaga    09/02/15 - Add ORACLE_COLUMN_TYPE to
Rem                           DBA_HIVE_PART_KEY_COLUMNS
Rem    mthiyaga    08/14/15 - Bug 21139344
Rem    mthiyaga    07/17/15 - Contents of (old) cathive.sql
Rem    mthiyaga    07/17/15 - Created
Rem

@@?/rdbms/admin/sqlsessstart.sql


-------------------------------------------------------------------------------
--                           HIVE_TABLES VIEWS
-------------------------------------------------------------------------------
--
-- DBA_HIVE_TABLES
--
CREATE OR REPLACE VIEW DBA_HIVE_TABLES
(
  CLUSTER_ID,                     /* User supplied hive identifier           */
  DATABASE_NAME,                  /* Hive database name                      */
  TABLE_NAME,                     /* Hive table name                         */
  LOCATION,                       /* Location of hive table                  */
  NO_OF_COLS,                     /* Number of columns in table              */
  CREATION_TIME,                  /* Creation time of hive table             */
  LAST_ACCESSED_TIME,             /* Last accessed time of hive table        */
  OWNER,                          /* Hive table owner                        */
  TABLE_TYPE,                     /* Table type                              */
  PARTITIONED,                    /* Is this hive table partitioned?         */
  NO_OF_PART_KEYS,                /* Number of partition cols                */
  INPUT_FORMAT,                   /* Input format of the hive table          */
  OUTPUT_FORMAT,                  /* Output format of the hive table         */
  SERIALIZATION,                  /* Serialization info of the hive table    */
  COMPRESSED,                     /* Is this hive table compressed?          */
  HIVE_URI                        /* URI of the hive metastore db            */
)
AS
SELECT HT.C15 AS CLUSTER_ID, 
       HT.C0 AS DATABASE_NAME,
       HT.C1 AS TABLE_NAME, 
       HT.C5 AS LOCATION, 
       HT.C6 AS NO_OF_COLS,
       DBMS_HADOOP_INTERNAL.UNIX_TS_TO_DATE(HT.C8) AS CREATION_TIME,
       DBMS_HADOOP_INTERNAL.UNIX_TS_TO_DATE(HT.C9) AS LAST_ACCESSED_TIME,
       HT.C2 AS OWNER, 
       HT.C3 AS TABLE_TYPE,
       HT.C10 AS PARTITIONED,
       HT.C7 AS NO_OF_PART_KEYS,
       HT.C11 AS INPUT_FORMAT, 
       HT.C12 AS OUTPUT_FORMAT, 
       HT.C13 AS SERIALIZATION,
       HT.C14 AS COMPRESSED,
       HT.C16 AS HIVE_URI
  FROM
    (SELECT DIRECTORY_PATH AS configDir
     FROM DBA_DIRECTORIES 
     WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_CONFIG') HU, 
    (SELECT DIRECTORY_PATH AS debugDir
     FROM DBA_DIRECTORIES
     WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_DEBUG' 
     UNION ALL
     SELECT 'InvalidDir' FROM DUAL WHERE 
           NOT EXISTS (SELECT DIRECTORY_PATH AS debugDir
                       FROM DBA_DIRECTORIES
                       WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_DEBUG')
    ) HV,
     LATERAL(SELECT * FROM 
         TABLE(DBMS_HADOOP_INTERNAL.GetHiveTable(HU.configDir, HV.debugDir, '*', '*', '*', 'TRUE', 1))) HT
/

COMMENT ON TABLE DBA_HIVE_TABLES is 'All hive tables in the given database'
/
COMMENT ON  COLUMN DBA_HIVE_TABLES.CLUSTER_ID is 'Hadoop cluster name'
/
COMMENT ON  COLUMN DBA_HIVE_TABLES.DATABASE_NAME is 'Database where hive table resides'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.TABLE_NAME is 'Hive table name'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.LOCATION is 'Physical location of the hive table'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.NO_OF_COLS is 'Number of columns in the hive table'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.CREATION_TIME is 'Creation time of the hive table'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.LAST_ACCESSED_TIME is 'Last accessed time of hive table'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.OWNER is 'Owner of hive table'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.TABLE_TYPE is 'Type of hive table'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.PARTITIONED is 'Is this hive table partitioned?'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.NO_OF_PART_KEYS is 'No of partition keys in hive table'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.INPUT_FORMAT is 'Hive table input format'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.OUTPUT_FORMAT is 'Hive table output format'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.SERIALIZATION is 'Hive table serialization'
/

COMMENT ON  COLUMN DBA_HIVE_TABLES.COMPRESSED is 'Is this hive table compressed?'
/

CREATE  OR REPLACE PUBLIC SYNONYM DBA_HIVE_TABLES FOR DBA_HIVE_TABLES
/

GRANT SELECT ON DBA_HIVE_TABLES TO select_catalog_role
/

EXECUTE CDBView.create_cdbview(false, 'SYS', 'DBA_HIVE_TABLES', 'CDB_HIVE_TABLES');

grant select on SYS.CDB_HIVE_TABLES to select_catalog_role
/
CREATE OR REPLACE PUBLIC SYNONYM CDB_HIVE_TABLES for SYS.CDB_HIVE_TABLES
/


--
-- USER_HIVE_TABLES
--

CREATE  OR REPLACE VIEW USER_HIVE_TABLES
AS SELECT M.* FROM DBA_HIVE_TABLES M, SYS.USER$ U
WHERE U.user# = USERENV('SCHEMAID') AND
-- Current user has system privileges
      ((
        ora_check_sys_privilege(U.user#, 2) = 1
       )
       OR
-- If current user is neither SYS nor DBA, then do the following checks
-- User must have read privilege on ORACLE_BIGDATA_CONFIG directory.
      (
       ((U.NAME IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')) OR
        ('PUBLIC' IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')))))
/


COMMENT ON  TABLE USER_HIVE_TABLES is 'All hive tables in the given database'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.CLUSTER_ID is 'Hadoop cluster name'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.DATABASE_NAME is 'Database where hive table resides'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.TABLE_NAME is 'Hive table name'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.LOCATION is 'Physical location of the hive table'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.NO_OF_COLS is 'Number of columns in the hive table'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.CREATION_TIME is 'Creation time of the hive table'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.LAST_ACCESSED_TIME is 'Last accessed time of hive table'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.OWNER is 'Owner of hive table'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.TABLE_TYPE is 'Type of hive table'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.PARTITIONED is 'Is this hive table partitioned?'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.NO_OF_PART_KEYS is 'No of partition keys in hive table'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.INPUT_FORMAT is 'Hive table input format'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.OUTPUT_FORMAT is 'Hive table output format'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.SERIALIZATION is 'Hive table serialization'
/

COMMENT ON  COLUMN USER_HIVE_TABLES.COMPRESSED is 'Is this hive table compressed?'
/


CREATE  OR REPLACE PUBLIC SYNONYM USER_HIVE_TABLES FOR USER_HIVE_TABLES
/

GRANT READ ON USER_HIVE_TABLES TO PUBLIC WITH GRANT OPTION
/


--
-- ALL_HIVE_TABLES
--
-- The view, ALL_HIVE_TABLES, displays information  about those hive tables the current user
-- can access.  For a user to access a hive table, the user must have SYS or DBA privileges or 
-- the user has READ permission on ORACLE_BIGDATA_CONFIG
--
CREATE  OR REPLACE VIEW ALL_HIVE_TABLES
AS SELECT * FROM USER_HIVE_TABLES
/


COMMENT ON  TABLE ALL_HIVE_TABLES is 'All hive tables in the given database'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.CLUSTER_ID is 'Hadoop cluster name'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.DATABASE_NAME is 'Database where hive table resides'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.TABLE_NAME is 'Hive table name'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.LOCATION is 'Physical location of the hive table'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.NO_OF_COLS is 'Number of columns in the hive table'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.CREATION_TIME is 'Creation time of the hive table'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.LAST_ACCESSED_TIME is 'Last accessed time of hive table'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.OWNER is 'Owner of hive table'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.TABLE_TYPE is 'Type of hive table'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.PARTITIONED is 'Is this hive table partitioned?'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.NO_OF_PART_KEYS is 'No of partition keys in hive table'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.INPUT_FORMAT is 'Hive table input format'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.OUTPUT_FORMAT is 'Hive table output format'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.SERIALIZATION is 'Hive table serialization'
/

COMMENT ON  COLUMN ALL_HIVE_TABLES.COMPRESSED is 'Is this hive table compressed?'
/


CREATE  OR REPLACE PUBLIC SYNONYM ALL_HIVE_TABLES FOR ALL_HIVE_TABLES
/

GRANT READ ON ALL_HIVE_TABLES TO PUBLIC WITH GRANT OPTION
/



--
-- DBA_HIVE_COLUMNS
--

CREATE  OR REPLACE VIEW DBA_HIVE_COLUMNS
(
  CLUSTER_ID,                     /* User supplied hive identifier           */
  DATABASE_NAME,                  /* Hive database name                      */
  TABLE_NAME,                     /* Hive table name                         */
  COLUMN_NAME,                    /* Hive column name                        */
  HIVE_COLUMN_TYPE,               /* Hive column type                        */
  ORACLE_COLUMN_TYPE,             /* Oracle column type                      */
  LOCATION,                       /* Location of hive table                  */
  OWNER,                          /* Hive table owner                        */
  CREATION_TIME,                  /* Creation time of hive table             */
  HIVE_URI                        /* URI of the hive metastore db            */
)
AS
SELECT HT.C15 AS CLUSTER_ID,
       HT.C0 AS DATABASE_NAME,
       HT.C1 AS TABLE_NAME,
       HT.C3 AS COLUMN_NAME,
       HT.C4 AS HIVE_COLUMN_TYPE,
       HT.C10 AS ORACLE_COLUMN_TYPE,
       HT.C5 AS LOCATION,
       HT.C2 AS OWNER,
       DBMS_HADOOP_INTERNAL.UNIX_TS_TO_DATE(HT.C8) AS CREATION_TIME, 
       HT.C16 AS HIVE_URI
  FROM
  (SELECT DIRECTORY_PATH AS configDir
     FROM DBA_DIRECTORIES 
     WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_CONFIG') HU, 
  (SELECT DIRECTORY_PATH AS debugDir
     FROM DBA_DIRECTORIES
     WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_DEBUG'
     UNION ALL
     SELECT 'InvalidDir' FROM DUAL WHERE
           NOT EXISTS (SELECT DIRECTORY_PATH AS debugDir
                       FROM DBA_DIRECTORIES
                       WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_DEBUG')
  ) HV,
     LATERAL(SELECT * FROM 
       TABLE(DBMS_HADOOP_INTERNAL.GetHiveTable(HU.configDir, HV.debugDir, '*', '*', '*', 'TRUE', 2))) HT
/


COMMENT ON  TABLE DBA_HIVE_COLUMNS is 'All hive columns in the given database'
/

COMMENT ON  COLUMN DBA_HIVE_COLUMNS.CLUSTER_ID is 'User supplied identifier for this hive metastore'
/

COMMENT ON  COLUMN DBA_HIVE_COLUMNS.DATABASE_NAME is 'Database where owning hive table resides'
/

COMMENT ON  COLUMN DBA_HIVE_COLUMNS.TABLE_NAME is 'Hive table name where the column belongs to'
/

COMMENT ON  COLUMN DBA_HIVE_COLUMNS.COLUMN_NAME is 'Hive column name'
/

COMMENT ON  COLUMN DBA_HIVE_COLUMNS.HIVE_COLUMN_TYPE is 'Data type of the hive column' 
/

COMMENT ON  COLUMN DBA_HIVE_COLUMNS.ORACLE_COLUMN_TYPE is 'Equivalent Oracle data type of the hive column'
/

COMMENT ON  COLUMN DBA_HIVE_COLUMNS.LOCATION is 'Physical location of the hive table'
/

COMMENT ON  COLUMN DBA_HIVE_COLUMNS.OWNER is 'Owner of hive table'
/

COMMENT ON  COLUMN DBA_HIVE_COLUMNS.HIVE_URI is 'The connection string (URI and port no) for metastore db'
/


CREATE  OR REPLACE PUBLIC SYNONYM DBA_HIVE_COLUMNS FOR DBA_HIVE_COLUMNS
/

GRANT SELECT ON DBA_HIVE_COLUMNS TO select_catalog_role
/


EXECUTE  CDBView.create_cdbview(false, 'SYS', 'DBA_HIVE_COLUMNS', 'CDB_HIVE_COLUMNS');

grant select on SYS.CDB_HIVE_COLUMNS to select_catalog_role
/
CREATE OR REPLACE PUBLIC SYNONYM CDB_HIVE_COLUMNS for SYS.CDB_HIVE_COLUMNS
/


--
-- USER_HIVE_COLUMNS
--

CREATE  OR REPLACE VIEW USER_HIVE_COLUMNS
AS SELECT M.* FROM DBA_HIVE_COLUMNS M, SYS.USER$ U
WHERE U.user# = USERENV('SCHEMAID') AND
-- Current user has system privileges
      ((
        ora_check_sys_privilege(U.user#, 2) = 1
       )
       OR
-- If current user is neither SYS nor DBA, then do the following checks
-- User must have read privilege on ORACLE_BIGDATA_CONFIG directory.
      (((U.NAME IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')) OR
        ('PUBLIC' IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')))))
/



COMMENT ON  TABLE USER_HIVE_COLUMNS is 'All hive columns in the given database'
/

COMMENT ON  COLUMN USER_HIVE_COLUMNS.CLUSTER_ID is 'User supplied identifier for this hive metastore'
/

COMMENT ON  COLUMN USER_HIVE_COLUMNS.DATABASE_NAME is 'Database where owning hive table resides'
/

COMMENT ON  COLUMN USER_HIVE_COLUMNS.TABLE_NAME is 'Hive table name where the column belongs to'
/

COMMENT ON  COLUMN USER_HIVE_COLUMNS.COLUMN_NAME is 'Hive column name'
/

COMMENT ON  COLUMN USER_HIVE_COLUMNS.HIVE_COLUMN_TYPE is 'Data type of the hive column'
/

COMMENT ON  COLUMN USER_HIVE_COLUMNS.ORACLE_COLUMN_TYPE is 'Equivalent Oracle data type of the hive column'
/

COMMENT ON  COLUMN USER_HIVE_COLUMNS.LOCATION is 'Physical location of the hive table'
/

COMMENT ON  COLUMN USER_HIVE_COLUMNS.OWNER is 'Owner of hive table'
/

COMMENT ON  COLUMN USER_HIVE_COLUMNS.HIVE_URI is 'The connection string (URI and port no) for metastore db'
/



CREATE  OR REPLACE PUBLIC SYNONYM USER_HIVE_COLUMNS FOR USER_HIVE_COLUMNS
/

GRANT READ ON USER_HIVE_COLUMNS TO PUBLIC WITH GRANT OPTION
/



--
-- ALL_HIVE_COLUMNS
--
-- The view, ALL_HIVE_COLUMNS, displays information  about those hive columns the current user
-- can access.  For a user to access a hive table, the user must have SYS or DBA privileges or 
-- the user has READ permission on ORACLE_BIGDATA_CONFIG
--

CREATE  OR REPLACE VIEW ALL_HIVE_COLUMNS
AS SELECT * FROM USER_HIVE_COLUMNS
/



COMMENT ON  TABLE ALL_HIVE_COLUMNS is 'All hive columns in the given database'
/

COMMENT ON  COLUMN ALL_HIVE_COLUMNS.CLUSTER_ID is 'User supplied identifier for this hive metastore'
/

COMMENT ON  COLUMN ALL_HIVE_COLUMNS.DATABASE_NAME is 'Database where owning hive table resides'
/

COMMENT ON  COLUMN ALL_HIVE_COLUMNS.TABLE_NAME is 'Hive table name where the column belongs to'
/

COMMENT ON  COLUMN ALL_HIVE_COLUMNS.COLUMN_NAME is 'Hive column name'
/

COMMENT ON  COLUMN ALL_HIVE_COLUMNS.HIVE_COLUMN_TYPE is 'Data type of the hive column'
/

COMMENT ON  COLUMN ALL_HIVE_COLUMNS.ORACLE_COLUMN_TYPE is 'Equivalent Oracle data type of the hive column'
/

COMMENT ON  COLUMN ALL_HIVE_COLUMNS.LOCATION is 'Physical location of the hive table'
/

COMMENT ON  COLUMN ALL_HIVE_COLUMNS.OWNER is 'Owner of hive table'
/

COMMENT ON  COLUMN ALL_HIVE_COLUMNS.HIVE_URI is 'The connection string (URI and port no) for metastore db'
/



CREATE  OR REPLACE PUBLIC SYNONYM ALL_HIVE_COLUMNS FOR ALL_HIVE_COLUMNS
/

GRANT READ ON ALL_HIVE_COLUMNS TO PUBLIC WITH GRANT OPTION
/



--
-- DBA_HIVE_DATABASES
--

CREATE  OR REPLACE VIEW DBA_HIVE_DATABASES
(
  CLUSTER_ID,                      /* User supplied cluster identifier       */
  DATABASE_NAME,                   /* Hive database name                     */
  DESCRIPTION,                     /* Database description                   */
  DB_LOCATION,                     /* DB location                            */
  HIVE_URI                         /* URI of the hive metastore db           */
)
AS
SELECT UNIQUE HT.C15 AS CLUSTER_ID,
       HT.C0 AS DATABASE_NAME,
       HT.C4 AS DESCRIPTION,
       HT.C5 AS DB_LOCATION,
       HT.C16 AS HIVE_URI
    FROM
    (SELECT DIRECTORY_PATH AS configDir
     FROM DBA_DIRECTORIES
     WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_CONFIG') HU,
    (SELECT DIRECTORY_PATH AS debugDir
     FROM DBA_DIRECTORIES
     WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_DEBUG'
     UNION ALL
     SELECT 'InvalidDir' FROM DUAL WHERE
           NOT EXISTS (SELECT DIRECTORY_PATH AS debugDir
                       FROM DBA_DIRECTORIES
                       WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_DEBUG')
    ) HV,
     LATERAL(SELECT * FROM 
    TABLE(DBMS_HADOOP_INTERNAL.GetHiveTable(HU.configDir,  HV.debugDir, '*', '*', '*', 'TRUE', 0))) HT
/



COMMENT ON  TABLE DBA_HIVE_DATABASES is 'All hive schemas in the given hadoop cluster'
/

COMMENT ON  COLUMN DBA_HIVE_DATABASES.DATABASE_NAME is 'Hive database'
/

COMMENT ON  COLUMN DBA_HIVE_DATABASES.DESCRIPTION is 'Description of hive database'
/

COMMENT ON  COLUMN DBA_HIVE_DATABASES.DB_LOCATION is 'Physical location of hive database'
/

COMMENT ON  COLUMN DBA_HIVE_DATABASES.CLUSTER_ID is 'User supplied identifier for this hive metastore'
/

COMMENT ON  COLUMN DBA_HIVE_DATABASES.HIVE_URI is 'The connection string (URI and port no) for metastore db'
/


CREATE  OR REPLACE PUBLIC SYNONYM DBA_HIVE_DATABASES FOR DBA_HIVE_DATABASES
/

GRANT SELECT ON DBA_HIVE_DATABASES TO SELECT_CATALOG_ROLE
/


EXECUTE CDBView.create_cdbview(false, 'SYS', 'DBA_HIVE_DATABASES', 'CDB_HIVE_DATABASES');

grant select on SYS.CDB_HIVE_DATABASES to select_catalog_role
/
CREATE OR REPLACE PUBLIC SYNONYM CDB_HIVE_DATABASES for SYS.CDB_HIVE_DATABASES
/


--
-- USER_HIVE_DATABASES
--

CREATE  OR REPLACE VIEW USER_HIVE_DATABASES
AS SELECT M.* FROM DBA_HIVE_DATABASES M, SYS.USER$ U
WHERE U.user# = USERENV('SCHEMAID') AND
-- Current user has system privileges
      ((
        ora_check_sys_privilege(U.user#, 2) = 1
       )
       OR
-- If current user is neither SYS nor DBA, then do the following checks
-- User must have read privilege on ORACLE_BIGDATA_CONFIG directory 
      (((U.NAME IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')) OR
        ('PUBLIC' IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')))))
/



COMMENT ON  TABLE USER_HIVE_DATABASES is 'All hive schemas in the given hadoop cluster'
/

COMMENT ON  COLUMN USER_HIVE_DATABASES.DATABASE_NAME is 'Hive database'
/

COMMENT ON  COLUMN USER_HIVE_DATABASES.DESCRIPTION is 'Description of hive database'
/

COMMENT ON  COLUMN USER_HIVE_DATABASES.DB_LOCATION is 'Physical location of hive database'
/

COMMENT ON  COLUMN USER_HIVE_DATABASES.CLUSTER_ID is 'User supplied identifier for this hive metastore'
/  

COMMENT ON  COLUMN USER_HIVE_DATABASES.HIVE_URI is 'The connection string (URI and port no) for metastore db'
/



CREATE  OR REPLACE PUBLIC SYNONYM USER_HIVE_DATABASES FOR USER_HIVE_DATABASES
/

GRANT READ ON USER_HIVE_DATABASES TO PUBLIC WITH GRANT OPTION
/


--
-- ALL_HIVE_DATABASES
--
-- The view, ALL_HIVE_DATABASES, displays information  about those hive 
-- databases the current user can access.  For a user to access a hive table, 
-- the user has READ permission on ORACLE_BIGDATA_CONFIG
-- Therefore, the view ALL_HIVE_DATABASES is identical to the view, USER_HIVE_DATABASES
--

CREATE  OR REPLACE VIEW ALL_HIVE_DATABASES
AS SELECT * FROM USER_HIVE_DATABASES
/


COMMENT ON  TABLE ALL_HIVE_DATABASES is 'All hive schemas in the given hadoop cluster'
/

COMMENT ON  COLUMN ALL_HIVE_DATABASES.DATABASE_NAME is 'Hive database'
/

COMMENT ON  COLUMN ALL_HIVE_DATABASES.DESCRIPTION is 'Description of hive database'
/

COMMENT ON  COLUMN ALL_HIVE_DATABASES.DB_LOCATION is 'Physical location of hive database'
/

COMMENT ON  COLUMN ALL_HIVE_DATABASES.CLUSTER_ID is 'User supplied identifier for this hive metastore'
/

COMMENT ON  COLUMN ALL_HIVE_DATABASES.HIVE_URI is 'The connection string (URI and port no) for metastore db'
/


CREATE  OR REPLACE PUBLIC SYNONYM ALL_HIVE_DATABASES FOR ALL_HIVE_DATABASES
/

GRANT READ ON ALL_HIVE_DATABASES TO PUBLIC WITH GRANT OPTION
/



-------------------------------------------------------------------------------
--                           HIVE_TAB_PARTITIONS
-------------------------------------------------------------------------------
--
-- DBA_HIVE_TAB_PARTITIONS
--
-------------------------------------------------------------------------------
--
-- DBA_HIVE_TAB_PARTITIONS
--

CREATE  OR REPLACE VIEW DBA_HIVE_TAB_PARTITIONS
(
  CLUSTER_ID,                     /* User supplied hive identifier           */
  DATABASE_NAME,                  /* Hive database name                      */
  TABLE_NAME,                     /* Hive table name                         */
  LOCATION,                       /* Location of hive partition              */
  OWNER,                          /* Hive table owner                        */
  PARTITION_SPECS,                /* Partition specifications                */
  PART_SIZE,                      /* Size of partition in bytes              */
  CREATION_TIME                   /* Creation time of hive partition         */
)
AS
SELECT HT.C15 AS CLUSTER_ID,
       HT.C0 AS DATABASE_NAME,
       HT.C1 AS TABLE_NAME,
       HT.C5 AS LOCATION,
       HT.C2 AS OWNER,
--       'P_' || ORA_HASH(HT.C13, 99999) AS PART_NAME,
       HT.C13 AS PARTITION_SPECS,
       HT.C7 AS PART_SIZE,
       DBMS_HADOOP_INTERNAL.UNIX_TS_TO_DATE(HT.C8) AS CREATION_TIME
  FROM
    (SELECT DIRECTORY_PATH AS configDir
     FROM DBA_DIRECTORIES
     WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_CONFIG') HU,
    (SELECT DIRECTORY_PATH AS debugDir
     FROM DBA_DIRECTORIES
     WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_DEBUG'
     UNION ALL
     SELECT 'InvalidDir' FROM DUAL WHERE
           NOT EXISTS (SELECT DIRECTORY_PATH AS debugDir
                       FROM DBA_DIRECTORIES
                       WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_DEBUG')
    ) HV,
     LATERAL(SELECT * FROM 
      TABLE(DBMS_HADOOP_INTERNAL.GetHiveTable(HU.configDir, HV.debugDir,'*', '*', '*', 'TRUE', 4))) HT
/



COMMENT ON  TABLE DBA_HIVE_TAB_PARTITIONS is 'All hive table partitions'
/

COMMENT ON  COLUMN DBA_HIVE_TAB_PARTITIONS.CLUSTER_ID is 'Hadoop cluster name'
/

COMMENT ON  COLUMN DBA_HIVE_TAB_PARTITIONS.DATABASE_NAME is 'Database where hive table resides'
/

COMMENT ON  COLUMN DBA_HIVE_TAB_PARTITIONS.TABLE_NAME is 'Hive table name'
/

COMMENT ON  COLUMN DBA_HIVE_TAB_PARTITIONS.LOCATION is 'Physical location of the hive partition'
/

COMMENT ON  COLUMN DBA_HIVE_TAB_PARTITIONS.OWNER is 'Owner of hive table'
/

COMMENT ON  COLUMN DBA_HIVE_TAB_PARTITIONS.PARTITION_SPECS is 'Spec of the currrent Hive partition'
/

COMMENT ON  COLUMN DBA_HIVE_TAB_PARTITIONS.PART_SIZE is 'Partition size in bytes'
/


CREATE  OR REPLACE PUBLIC SYNONYM DBA_HIVE_TAB_PARTITIONS FOR DBA_HIVE_TAB_PARTITIONS
/

GRANT SELECT ON DBA_HIVE_TAB_PARTITIONS TO select_catalog_role
/

EXECUTE CDBView.create_cdbview(false, 'SYS', 'DBA_HIVE_TAB_PARTITIONS', 'CDB_HIVE_TAB_PARTITIONS');

grant select on SYS.CDB_HIVE_TAB_PARTITIONS to select_catalog_role
/
CREATE OR REPLACE PUBLIC SYNONYM CDB_HIVE_TAB_PARTITIONS for SYS.CDB_HIVE_TAB_PARTITIONS
/


--
-- USER_HIVE_TAB_PARTITIONS
--

CREATE  OR REPLACE VIEW USER_HIVE_TAB_PARTITIONS
AS SELECT M.* FROM DBA_HIVE_TAB_PARTITIONS M, SYS.USER$ U
WHERE U.user# = USERENV('SCHEMAID') AND
-- Current user has system privileges
      ((
        ora_check_sys_privilege(U.user#, 2) = 1
       )
       OR
-- If current user is neither SYS nor DBA, then do the following checks
-- User must have read privilege on ORACLE_BIGDATA_CONFIG directory
      (((U.NAME IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')) OR
        ('PUBLIC' IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')))))
/


COMMENT ON  TABLE USER_HIVE_TAB_PARTITIONS is 'All hive table partitions'
/

COMMENT ON  COLUMN USER_HIVE_TAB_PARTITIONS.CLUSTER_ID is 'Hadoop cluster name'
/

COMMENT ON  COLUMN USER_HIVE_TAB_PARTITIONS.DATABASE_NAME is 'Database where hive table resides'
/

COMMENT ON  COLUMN USER_HIVE_TAB_PARTITIONS.TABLE_NAME is 'Hive table name'
/

COMMENT ON  COLUMN USER_HIVE_TAB_PARTITIONS.LOCATION is 'Physical location of the hive partition'
/

COMMENT ON  COLUMN USER_HIVE_TAB_PARTITIONS.OWNER is 'Owner of hive table'
/

COMMENT ON  COLUMN USER_HIVE_TAB_PARTITIONS.PARTITION_SPECS is 'Spec of the currrent Hive partition'
/

COMMENT ON  COLUMN USER_HIVE_TAB_PARTITIONS.PART_SIZE is 'Partition size in bytes'
/


CREATE  OR REPLACE PUBLIC SYNONYM USER_HIVE_TAB_PARTITIONS FOR USER_HIVE_TAB_PARTITIONS
/

GRANT READ ON USER_HIVE_TAB_PARTITIONS TO PUBLIC WITH GRANT OPTION
/


--
-- ALL_HIVE_TAB_PARTITIONS
--
-- The view, ALL_HIVE_TAB_PARTITIONS, displays information about those hive tables partitions
-- the current user can access. For a user to access a hive table, 
-- the user has READ permission on ORACLE_BIGDATA_CONFIG
-- Therefore, the view ALL_HIVE_TAB_PARTITIONS is identical to the view, USER_HIVE_TAB_PARTITIONS
--

CREATE  OR REPLACE VIEW ALL_HIVE_TAB_PARTITIONS
AS SELECT * FROM USER_HIVE_TAB_PARTITIONS
/


COMMENT ON  TABLE ALL_HIVE_TAB_PARTITIONS is 'All hive table partitions'
/

COMMENT ON  COLUMN ALL_HIVE_TAB_PARTITIONS.CLUSTER_ID is 'Hadoop cluster name'
/

COMMENT ON  COLUMN ALL_HIVE_TAB_PARTITIONS.DATABASE_NAME is 'Database where hive table resides'
/

COMMENT ON  COLUMN ALL_HIVE_TAB_PARTITIONS.TABLE_NAME is 'Hive table name'
/

COMMENT ON  COLUMN ALL_HIVE_TAB_PARTITIONS.LOCATION is 'Physical location of the hive partition'
/

COMMENT ON  COLUMN ALL_HIVE_TAB_PARTITIONS.OWNER is 'Owner of hive table'
/

COMMENT ON  COLUMN ALL_HIVE_TAB_PARTITIONS.PARTITION_SPECS is 'Spec of the currrent Hive partition'
/

COMMENT ON  COLUMN ALL_HIVE_TAB_PARTITIONS.PART_SIZE is 'Partition size in bytes'
/


CREATE  OR REPLACE PUBLIC SYNONYM ALL_HIVE_TAB_PARTITIONS FOR ALL_HIVE_TAB_PARTITIONS
/

GRANT READ ON ALL_HIVE_TAB_PARTITIONS TO PUBLIC WITH GRANT OPTION
/


-------------------------------------------------------------------------------
--                           HIVE_PART_KEY_COLUMNS
-------------------------------------------------------------------------------
--
-- DBA_HIVE_PART_KEY_COLUMNS
--

CREATE  OR REPLACE VIEW DBA_HIVE_PART_KEY_COLUMNS
(
  CLUSTER_ID,                     /* User supplied hive identifier           */
  DATABASE_NAME,                  /* Hive database name                      */
  TABLE_NAME,                     /* Hive table name                         */
  OWNER,                          /* Hive table owner                        */
  COLUMN_NAME,                    /* Hive column name                        */
  COLUMN_TYPE,                    /* Hive column type                        */
  COLUMN_POSITION,                /* Position of the column within the 
                                     partitioning key                        */
  ORACLE_COLUMN_TYPE              /* Equivalent oracle column type           */
)
AS
SELECT HT.C15 AS CLUSTER_ID,
       HT.C0 AS DATABASE_NAME,
       HT.C1 AS TABLE_NAME,
       HT.C2 AS OWNER,
       HT.C4 AS COLUMN_NAME,
       HT.C5 AS COLUMN_TYPE,
       HT.C8 AS COLUMN_POSITION,
       HT.C10 AS ORACLE_COLUMN_TYPE
  FROM
    (SELECT DIRECTORY_PATH AS configDir
     FROM DBA_DIRECTORIES
     WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_CONFIG') HU,
    (SELECT DIRECTORY_PATH AS debugDir
     FROM DBA_DIRECTORIES
     WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_DEBUG'
     UNION ALL
     SELECT 'InvalidDir' FROM DUAL WHERE
           NOT EXISTS (SELECT DIRECTORY_PATH AS debugDir
                       FROM DBA_DIRECTORIES
                       WHERE UPPER(DIRECTORY_NAME) = 'ORACLE_BIGDATA_DEBUG')
    ) HV,
     LATERAL(SELECT * FROM 
             TABLE(DBMS_HADOOP_INTERNAL.GetHiveTable(HU.configDir,  HV.debugDir, '*', '*', '*', 'TRUE', 5))) HT
/



COMMENT ON  TABLE DBA_HIVE_PART_KEY_COLUMNS is 'DBA hive table partition columns'
/

COMMENT ON  COLUMN DBA_HIVE_PART_KEY_COLUMNS.CLUSTER_ID is 'Hadoop cluster name'
/

COMMENT ON  COLUMN DBA_HIVE_PART_KEY_COLUMNS.DATABASE_NAME is 'Database where hive table resides'
/

COMMENT ON  COLUMN DBA_HIVE_PART_KEY_COLUMNS.TABLE_NAME is 'Hive table name'
/

COMMENT ON  COLUMN DBA_HIVE_PART_KEY_COLUMNS.OWNER is 'Owner of hive table'
/

COMMENT ON  COLUMN DBA_HIVE_PART_KEY_COLUMNS.COLUMN_NAME is 'Partition column name'
/

COMMENT ON  COLUMN DBA_HIVE_PART_KEY_COLUMNS.COLUMN_TYPE is 'Partition column type'
/

COMMENT ON  COLUMN DBA_HIVE_PART_KEY_COLUMNS.COLUMN_POSITION is 'Partition column position'
/


CREATE  OR REPLACE PUBLIC SYNONYM DBA_HIVE_PART_KEY_COLUMNS FOR DBA_HIVE_PART_KEY_COLUMNS
/

GRANT SELECT ON DBA_HIVE_PART_KEY_COLUMNS TO select_catalog_role
/

EXECUTE CDBView.create_cdbview(false, 'SYS', 'DBA_HIVE_PART_KEY_COLUMNS', 'CDB_HIVE_PART_KEY_COLUMNS');

grant select on SYS.CDB_HIVE_PART_KEY_COLUMNS to select_catalog_role
/
CREATE OR REPLACE PUBLIC SYNONYM CDB_HIVE_PART_KEY_COLUMNS for SYS.CDB_HIVE_PART_KEY_COLUMNS
/


--
-- USER_HIVE_PART_KEY_COLUMNS
--

CREATE  OR REPLACE VIEW USER_HIVE_PART_KEY_COLUMNS
AS SELECT M.* FROM DBA_HIVE_PART_KEY_COLUMNS M, SYS.USER$ U
WHERE U.user# = USERENV('SCHEMAID') AND
-- Current user has system privileges
      ((
        ora_check_sys_privilege(U.user#, 2) = 1
       )
       OR
-- If current user is neither SYS nor DBA, then do the following checks
-- User must have read privilege on ORACLE_BIGDATA_CONFIG directory
      (((U.NAME IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')) OR
        ('PUBLIC' IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')))))
/


COMMENT ON  TABLE USER_HIVE_PART_KEY_COLUMNS is 'USER hive table partition columns'
/

COMMENT ON  COLUMN USER_HIVE_PART_KEY_COLUMNS.CLUSTER_ID is 'Hadoop cluster name'
/

COMMENT ON  COLUMN USER_HIVE_PART_KEY_COLUMNS.DATABASE_NAME is 'Database where hive table resides'
/

COMMENT ON  COLUMN USER_HIVE_PART_KEY_COLUMNS.TABLE_NAME is 'Hive table name'
/

COMMENT ON  COLUMN USER_HIVE_PART_KEY_COLUMNS.OWNER is 'Owner of hive table'
/

COMMENT ON  COLUMN USER_HIVE_PART_KEY_COLUMNS.COLUMN_NAME is 'Partition column name'
/

COMMENT ON  COLUMN USER_HIVE_PART_KEY_COLUMNS.COLUMN_TYPE is 'Partition column type'
/

COMMENT ON  COLUMN USER_HIVE_PART_KEY_COLUMNS.COLUMN_POSITION is 'Partition column position'
/


CREATE  OR REPLACE PUBLIC SYNONYM USER_HIVE_PART_KEY_COLUMNS FOR USER_HIVE_PART_KEY_COLUMNS
/

GRANT READ ON USER_HIVE_PART_KEY_COLUMNS TO PUBLIC WITH GRANT OPTION
/



CREATE  OR REPLACE VIEW ALL_HIVE_PART_KEY_COLUMNS
AS SELECT * FROM USER_HIVE_PART_KEY_COLUMNS
/


COMMENT ON  TABLE ALL_HIVE_PART_KEY_COLUMNS is 'ALL hive table partition columns'
/

COMMENT ON  COLUMN ALL_HIVE_PART_KEY_COLUMNS.CLUSTER_ID is 'Hadoop cluster name'
/

COMMENT ON  COLUMN ALL_HIVE_PART_KEY_COLUMNS.DATABASE_NAME is 'Database where hive table resides'
/

COMMENT ON  COLUMN ALL_HIVE_PART_KEY_COLUMNS.TABLE_NAME is 'Hive table name'
/ 

COMMENT ON  COLUMN ALL_HIVE_PART_KEY_COLUMNS.OWNER is 'Owner of hive table'
/ 

COMMENT ON  COLUMN ALL_HIVE_PART_KEY_COLUMNS.COLUMN_NAME is 'Partition column name'
/ 

COMMENT ON  COLUMN ALL_HIVE_PART_KEY_COLUMNS.COLUMN_TYPE is 'Partition column type'
/

COMMENT ON  COLUMN ALL_HIVE_PART_KEY_COLUMNS.COLUMN_POSITION is 'Partition column position'
/


CREATE  OR REPLACE PUBLIC SYNONYM ALL_HIVE_PART_KEY_COLUMNS FOR ALL_HIVE_PART_KEY_COLUMNS
/

GRANT READ ON ALL_HIVE_PART_KEY_COLUMNS TO PUBLIC WITH GRANT OPTION
/




-------------------------------------------------------------------------------
--                           XT_HIVE_TABLES_VALIDATION
-------------------------------------------------------------------------------
--
-- DBA_XT_HIVE_TABLES_VALIDATION 
--

--

CREATE  OR REPLACE VIEW DBA_XT_HIVE_TABLES_VALIDATION
(
  CLUSTER_ID,                     /* User supplied hive identifier           */
  DATABASE_NAME,                  /* Hive database name                      */
  HIVE_TABLE_NAME,                /* Hive table name                         */
  TABLE_NAME,                     /* External table name                     */
  TABLE_OWNER,                    /* External table owner                    */
  METADATA_COMPATIBLE,            /* Has Hive table changed?                 */
  HIVE_XT_INCOMPATIBILITY,        /* First error encountered, if any         */
  PARTITION_COMPATIBLE,           /* Need to sync XT partitions?             */
  PARTITIONS_ADDED,               /* New partitions on Hive table            */
  PARTITIONS_DROPPED,             /* XT partitions not in Hive               */
  LAST_SYNC_TIME                  /* Timestamp of last sync                  */
)
AS
SELECT HI.CLUSTER_ID AS CLUSTER_ID,
       HI.DB_NAME AS DATABASE_NAME,
       HI.HIVE_TABLE_NAME AS HIVE_TABLE_NAME,
       HI.XT_NAME AS TABLE_NAME,
       HI.XT_OWNER AS TABLE_OWNER,
       DBMS_HADOOP_INTERNAL.IS_METADATA_COMPATIBLE(HI.CLUSTER_ID, HI.DB_NAME, 
                                HI.HIVE_TABLE_NAME, HI.XT_NAME, HI.XT_OWNER),
       DBMS_HADOOP_INTERNAL.GET_INCOMPATIBILITY(HI.CLUSTER_ID, 
                    HI.DB_NAME, HI.HIVE_TABLE_NAME, HI.XT_NAME, HI.XT_OWNER),
       DBMS_HADOOP_INTERNAL.IS_PARTITION_COMPATIBLE('TRUE',
          DBMS_HADOOP_INTERNAL.ADDED_PARTNS(HI.CLUSTER_ID, HI.DB_NAME, 
             HI.HIVE_TABLE_NAME, HI.XT_NAME, HI.XT_OWNER, 'TRUE'),
       DBMS_HADOOP_INTERNAL.DROPPED_PARTNS(HI.CLUSTER_ID, HI.DB_NAME, 
             HI.HIVE_TABLE_NAME, HI.XT_NAME, HI.XT_OWNER, 'TRUE')),
       DBMS_HADOOP_INTERNAL.ADDED_HIVE_PARTNS(HI.CLUSTER_ID, HI.DB_NAME, 
             HI.HIVE_TABLE_NAME, 
             DBMS_HADOOP_INTERNAL.ADDED_PARTNS(HI.CLUSTER_ID, HI.DB_NAME, 
               HI.HIVE_TABLE_NAME, HI.XT_NAME, HI.XT_OWNER, 'TRUE'), 'TRUE'),
       DBMS_HADOOP_INTERNAL.DROPPED_PARTNS(HI.CLUSTER_ID, HI.DB_NAME, 
             HI.HIVE_TABLE_NAME, HI.XT_NAME, HI.XT_OWNER, 'TRUE'),
       HI.MTIME AS LAST_SYNC_TIME
  FROM
  -- Extract CLUSTER_ID, DB_NAME and HIVE_TABLE_NAME from EXTERNAL_TAB$.
  -- Note that this assumes that PARAM_CLOB will not change its format
  -- in the future. If the format changes, tests in lrgxadp4 will break.
  --
     (SELECT ET.obj# AS OBJNO, O.NAME AS XT_NAME, U.NAME AS XT_OWNER, 
             O.MTIME AS MTIME,
           DBMS_LOB.SUBSTR(SUBSTR(ET.param_clob, INSTR(ET.param_clob, '=', 1, 1)+1,
             INSTR(ET.param_clob, 'com', 1, 2)-1 - INSTR(ET.param_clob, '=', 1, 1)-1), 
                      4000, 1) AS CLUSTER_ID,
           DBMS_LOB.SUBSTR(SUBSTR(ET.param_clob, INSTR(ET.param_clob, '=', 1, 2)+1, 
                      INSTR(ET.param_clob, '.', INSTR(ET.param_clob, '=', 1, 2)+1)-1
                      - INSTR(ET.param_clob, '=', 1, 2)), 4000, 1) AS DB_NAME,
           DBMS_LOB.SUBSTR(SUBSTR(ET.param_clob, INSTR(ET.param_clob, '.', -1, 1)+1), 
                      4000, 1) AS HIVE_TABLE_NAME
      FROM EXTERNAL_TAB$ ET, OBJ$ O, USER$ U
         WHERE ET.TYPE$ = 'ORACLE_HIVE' AND
               ET.OBJ# IN (SELECT bo# FROM TABPART$) AND
               ET.OBJ# = O.OBJ# AND
               O.OWNER# = U.USER# ORDER BY OBJNO) HI
/

COMMENT ON  TABLE DBA_XT_HIVE_TABLES_VALIDATION is 'DBA hive tables validation'
/


COMMENT ON COLUMN DBA_XT_HIVE_TABLES_VALIDATION.CLUSTER_ID is 'Hadoop cluster name'
/


COMMENT ON COLUMN DBA_XT_HIVE_TABLES_VALIDATION.DATABASE_NAME is 'Database where hive table resides'
/


COMMENT ON COLUMN DBA_XT_HIVE_TABLES_VALIDATION.TABLE_NAME is 'External table name'
/


COMMENT ON COLUMN DBA_XT_HIVE_TABLES_VALIDATION.TABLE_OWNER is 'Owner of external table'
/


COMMENT ON COLUMN DBA_XT_HIVE_TABLES_VALIDATION.METADATA_COMPATIBLE is 'Is XT metadata compatible with Hive'
/


COMMENT ON COLUMN DBA_XT_HIVE_TABLES_VALIDATION.HIVE_XT_INCOMPATIBILITY is 'First error encountered, if any'
/


COMMENT ON COLUMN DBA_XT_HIVE_TABLES_VALIDATION.PARTITION_COMPATIBLE is 'Need to sync XT partitions?'
/


COMMENT ON COLUMN DBA_XT_HIVE_TABLES_VALIDATION.PARTITIONS_ADDED is 'New partitions on Hive table'
/


COMMENT ON COLUMN DBA_XT_HIVE_TABLES_VALIDATION.PARTITIONS_DROPPED is 'XT partitions non in Hive'
/


COMMENT ON COLUMN DBA_XT_HIVE_TABLES_VALIDATION.LAST_SYNC_TIME is 'Timestamp of the last sync operation'
/


CREATE  OR REPLACE PUBLIC SYNONYM DBA_XT_HIVE_TABLES_VALIDATION FOR DBA_XT_HIVE_TABLES_VALIDATION
/


GRANT SELECT ON DBA_XT_HIVE_TABLES_VALIDATION TO select_catalog_role
/

EXECUTE CDBView.create_cdbview(false, 'SYS', 'DBA_XT_HIVE_TABLES_VALIDATION', 'CDB_XT_HIVE_TABLES_VALIDATION');

grant select on SYS.CDB_XT_HIVE_TABLES_VALIDATION to select_catalog_role
/

CREATE OR REPLACE PUBLIC SYNONYM CDB_XT_HIVE_TABLES_VALIDATION for SYS.CDB_XT_HIVE_TABLES_VALIDATION
/


--
-- USER_XT_HIVE_TABLES_VALIDATION
--

CREATE  OR REPLACE VIEW USER_XT_HIVE_TABLES_VALIDATION
AS SELECT M.* FROM DBA_XT_HIVE_TABLES_VALIDATION M, SYS.USER$ U
WHERE U.user# = USERENV('SCHEMAID') AND
-- Current user has system privileges
      ((
        ora_check_sys_privilege(U.user#, 2) = 1
       )
       OR
-- If current user is neither SYS nor DBA, then do the following checks
-- User must have read privilege on ORACLE_BIGDATA_CONFIG directory
      (((U.NAME IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')) OR
        ('PUBLIC' IN (SELECT GRANTEE FROM
                               ALL_TAB_PRIVS
                               WHERE TABLE_NAME = 'ORACLE_BIGDATA_CONFIG' AND
                                     PRIVILEGE = 'READ')))))
/


COMMENT ON TABLE USER_XT_HIVE_TABLES_VALIDATION is 'USER hive tables validation' 
/


COMMENT ON COLUMN USER_XT_HIVE_TABLES_VALIDATION.CLUSTER_ID is 'Hadoop cluster name'
/


COMMENT ON COLUMN USER_XT_HIVE_TABLES_VALIDATION.DATABASE_NAME is 'Database where hive table resides'
/


COMMENT ON COLUMN USER_XT_HIVE_TABLES_VALIDATION.TABLE_NAME is 'External table name'
/


COMMENT ON COLUMN USER_XT_HIVE_TABLES_VALIDATION.TABLE_OWNER is 'Owner of external table'
/


COMMENT ON COLUMN USER_XT_HIVE_TABLES_VALIDATION.METADATA_COMPATIBLE is 'Is XT metadata compatible with Hive'
/


COMMENT ON COLUMN USER_XT_HIVE_TABLES_VALIDATION.HIVE_XT_INCOMPATIBILITY is 'First error encountered, if any'
/


COMMENT ON COLUMN USER_XT_HIVE_TABLES_VALIDATION.PARTITION_COMPATIBLE is 'Need to sync XT partitions?'
/


COMMENT ON COLUMN USER_XT_HIVE_TABLES_VALIDATION.PARTITIONS_ADDED is 'New partitions on Hive table'
/


COMMENT ON COLUMN USER_XT_HIVE_TABLES_VALIDATION.PARTITIONS_DROPPED is 'XT partitions non in Hive'
/


COMMENT ON COLUMN USER_XT_HIVE_TABLES_VALIDATION.LAST_SYNC_TIME is 'Timestamp of the last sync operation'
/


CREATE  OR REPLACE PUBLIC SYNONYM USER_XT_HIVE_TABLES_VALIDATION FOR USER_XT_HIVE_TABLES_VALIDATION
/


GRANT READ ON USER_XT_HIVE_TABLES_VALIDATION TO PUBLIC WITH GRANT OPTION
/



CREATE OR REPLACE VIEW ALL_XT_HIVE_TABLES_VALIDATION
AS SELECT * FROM USER_XT_HIVE_TABLES_VALIDATION
/


COMMENT ON TABLE ALL_XT_HIVE_TABLES_VALIDATION is 'ALL hive tables validation' 
/


COMMENT ON COLUMN ALL_XT_HIVE_TABLES_VALIDATION.CLUSTER_ID is 'Hadoop cluster name'
/


COMMENT ON COLUMN ALL_XT_HIVE_TABLES_VALIDATION.DATABASE_NAME is 'Database where hive table resides'
/


COMMENT ON COLUMN ALL_XT_HIVE_TABLES_VALIDATION.TABLE_NAME is 'External table name'
/


COMMENT ON COLUMN ALL_XT_HIVE_TABLES_VALIDATION.TABLE_OWNER is 'Owner of external table'
/


COMMENT ON COLUMN ALL_XT_HIVE_TABLES_VALIDATION.METADATA_COMPATIBLE is 'Is XT metadata compatible with Hive'
/



COMMENT ON COLUMN ALL_XT_HIVE_TABLES_VALIDATION.HIVE_XT_INCOMPATIBILITY is 'First error encountered, if any'
/


COMMENT ON COLUMN ALL_XT_HIVE_TABLES_VALIDATION.PARTITION_COMPATIBLE is 'Need to sync XT partitions?'
/


COMMENT ON COLUMN ALL_XT_HIVE_TABLES_VALIDATION.PARTITIONS_ADDED is 'New partitions on Hive table'
/


COMMENT ON COLUMN ALL_XT_HIVE_TABLES_VALIDATION.PARTITIONS_DROPPED is 'XT partitions non in Hive'
/


COMMENT ON COLUMN ALL_XT_HIVE_TABLES_VALIDATION.LAST_SYNC_TIME is 'Timestamp of the last sync operation'
/


CREATE OR REPLACE PUBLIC SYNONYM ALL_XT_HIVE_TABLES_VALIDATION FOR ALL_XT_HIVE_TABLES_VALIDATION
/


GRANT READ ON ALL_XT_HIVE_TABLES_VALIDATION TO PUBLIC WITH GRANT OPTION
/

@?/rdbms/admin/sqlsessend.sql

OHA YOOOO