0% found this document useful (0 votes)
13 views13 pages

Database 19c - Hybrid Partitioning

Uploaded by

Lang Tu Mong Mo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views13 pages

Database 19c - Hybrid Partitioning

Uploaded by

Lang Tu Mong Mo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Database 19c - Hybrid Partitioning

Compartment
LL80180-COMPARTMENT
Username
LL80180-USER
Password
wO0kGz6Rv18_l([Jq#mx
Tenancy Name
C4U03

Objectives
In this lab, you will:

 Log in to your compute instance


 Confirm your Oracle Database 19c is up and running

Objectives
In this lab, you will setup sample schema:

 Set the environment variables


 Get the Database sample schemas and unzip them
 Install the Sample Schemas

About Hybrid Partitioning


The Hybrid Partition Tables feature extends Oracle Partitioning by enabling partitions to
reside in both Oracle Database segments and in external files and sources. This feature
significantly enhances the functionality of partitioning for Big Data SQL where large
portions of a table can reside in external partitions.

Hybrid Partition Tables enable you to easily integrate internal partitions and external
partitions into a single partition table. With this feature, you can also easily move non-
active partitions to external files, such as Oracle Data Pump files, for a cheaper storage
solution. Partitions of hybrid partitioned tables can reside on both Oracle tablespaces
and external sources, such as Linux files with comma-separated values (CSV) records or
files on Hadoop Distributed File System (HDFS) with Java server. Hybrid partitioned
tables support all existing external table types for external partitions:
ORACLE_DATAPUMP, ORACLE_LOADER, ORACLE_HDFS, ORACLE_HIVE. External table
types for external partitions use the following access driver types:

 ORACLE_DATAPUMP
 ORACLE_LOADER
 ORACLE_HDFS
 ORACLE_HIVE
For external partitions of ORACLE_LOADER and ORACLE_DATAPUMP access driver type,
you must grant the following privileges to the user:

 READ privileges on directories with data files


 WRITE privileges on directories with logging and bad files
 EXECUTE privileges on directories with pre-processor programs
create or replace PROCEDURE table_part_to_csv (

p_tname in varchar2,

p_pname in varchar2,

p_dir in varchar2,
p_filename in varchar2)

is

l_output utl_file.file_type;

l_theCursor integer default dbms_sql.open_cursor;

l_columnValue varchar2(4000);

l_status integer;

l_query varchar2(1000) default 'select * from '|| p_tname || ' partition (' || p_pname || ') where 1=1';

l_colCnt number := 0;

l_separator varchar2(1);

l_descTbl dbms_sql.desc_tab;

begin

--create an empty file on disk

l_output := utl_file.fopen( p_dir, p_filename, 'w','32760');

execute immediate 'alter session set nls_date_format=''dd-mon-yyyy hh24:mi:ss'' ';

dbms_sql.parse( l_theCursor, l_query, dbms_sql.native );

dbms_sql.describe_columns( l_theCursor, l_colCnt, l_descTbl );

--write column names into the new file

for i in 1 .. l_colCnt loop

utl_file.put( l_output, l_separator || '"' || l_descTbl(i).col_name || '"' );

dbms_sql.define_column( l_theCursor, i, l_columnValue, 4000 );

l_separator := ',';

end loop;

utl_file.new_line( l_output );

--write data into the new file and close

l_status := dbms_sql.execute(l_theCursor);

while ( dbms_sql.fetch_rows(l_theCursor) > 0 ) loop

l_separator := '';

for i in 1 .. l_colCnt loop

dbms_sql.column_value( l_theCursor, i, l_columnValue );


utl_file.put( l_output, l_separator || '"' || l_columnValue || '"');

l_separator := ',';

end loop;

utl_file.new_line( l_output );

end loop;

dbms_sql.close_cursor(l_theCursor);

utl_file.fclose( l_output );

END table_part_to_csv;

-- QUERY

SET LINESIZE 120

column DIRECTORY_NAME format a20

column DIRECTORY_PATH format a55

select DIRECTORY_NAME, DIRECTORY_PATH from ALL_DIRECTORIES where DIRECTORY_NAME like


'SALES%';

exec table_part_to_csv('SALES','SALES_Q1_1998','SALES_98','SALES_Q1_1998.csv');

exec table_part_to_csv('SALES','SALES_Q2_1998','SALES_98','SALES_Q2_1998.csv');

exec table_part_to_csv('SALES','SALES_Q3_1998','SALES_98','SALES_Q3_1998.csv');

exec table_part_to_csv('SALES','SALES_Q4_1998','SALES_98','SALES_Q4_1998.csv');

exec table_part_to_csv('SALES','SALES_Q1_1999','SALES_99','SALES_Q1_1999.csv');

exec table_part_to_csv('SALES','SALES_Q2_1999','SALES_99','SALES_Q2_1999.csv');

exec table_part_to_csv('SALES','SALES_Q3_1999','SALES_99','SALES_Q3_1999.csv');

exec table_part_to_csv('SALES','SALES_Q4_1999','SALES_99','SALES_Q4_1999.csv');
set pages 999

set long 90000

col definition format a120

-- QUERY

select dbms_metadata.get_ddl('TABLE','SALES','SH') definition from dual;

CREATE TABLE "SH"."HYBRID_SALES"

("PROD_ID" NUMBER NOT NULL ENABLE,

"CUST_ID" NUMBER NOT NULL ENABLE,

"TIME_ID" DATE NOT NULL ENABLE,

"CHANNEL_ID" NUMBER NOT NULL ENABLE,

"PROMO_ID" NUMBER NOT NULL ENABLE,

"QUANTITY_SOLD" NUMBER(10,2) NOT NULL ENABLE,

"AMOUNT_SOLD" NUMBER(10,2) NOT NULL ENABLE

) PCTFREE 5 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS NOLOGGING

TABLESPACE "USERS"
EXTERNAL PARTITION ATTRIBUTES (

TYPE ORACLE_LOADER

DEFAULT DIRECTORY sales_98

ACCESS PARAMETERS(

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

(prod_id, cust_id,

time_id DATE 'DD-MON-YYYY HH24:MI:SS',channel_id,promo_id,quantity_sold,amount_sold)

REJECT LIMIT UNLIMITED

PARTITION BY RANGE ("TIME_ID")

(PARTITION "SALES_Q1_1998" VALUES LESS THAN

(TO_DATE(' 1998-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

EXTERNAL

DEFAULT DIRECTORY SALES_98 LOCATION ('SALES_Q1_1998.csv') ,

PARTITION "SALES_Q2_1998" VALUES LESS THAN

(TO_DATE(' 1998-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

EXTERNAL

DEFAULT DIRECTORY SALES_98 LOCATION ('SALES_Q2_1998.csv') ,

PARTITION "SALES_Q3_1998" VALUES LESS THAN

(TO_DATE(' 1998-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

EXTERNAL

DEFAULT DIRECTORY SALES_98 LOCATION ('SALES_Q3_1998.csv') ,

PARTITION "SALES_Q4_1998" VALUES LESS THAN

(TO_DATE(' 1999-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

EXTERNAL

DEFAULT DIRECTORY SALES_98 LOCATION ('SALES_Q4_1998.csv') ,

PARTITION "SALES_Q1_1999" VALUES LESS THAN

(TO_DATE(' 1999-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))


EXTERNAL

DEFAULT DIRECTORY SALES_99 LOCATION ('SALES_Q1_1999.csv') ,

PARTITION "SALES_Q2_1999" VALUES LESS THAN

(TO_DATE(' 1999-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

EXTERNAL

DEFAULT DIRECTORY SALES_99 LOCATION ('SALES_Q2_1999.csv') ,

PARTITION "SALES_Q3_1999" VALUES LESS THAN

(TO_DATE(' 1999-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

EXTERNAL

DEFAULT DIRECTORY SALES_99 LOCATION ('SALES_Q3_1999.csv') ,

PARTITION "SALES_Q4_1999" VALUES LESS THAN

(TO_DATE(' 2000-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

EXTERNAL

DEFAULT DIRECTORY SALES_99 LOCATION ('SALES_Q4_1999.csv') ,

PARTITION "SALES_Q1_2000" VALUES LESS THAN

(TO_DATE(' 2000-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q2_2000" VALUES LESS THAN

(TO_DATE(' 2000-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)


TABLESPACE "USERS" ,

PARTITION "SALES_Q3_2000" VALUES LESS THAN

(TO_DATE(' 2000-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q4_2000" VALUES LESS THAN

(TO_DATE(' 2001-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q1_2001" VALUES LESS THAN

(TO_DATE(' 2001-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q2_2001" VALUES LESS THAN

(TO_DATE(' 2001-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255


COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q3_2001" VALUES LESS THAN

(TO_DATE(' 2001-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q4_2001" VALUES LESS THAN

(TO_DATE(' 2002-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q1_2002" VALUES LESS THAN

(TO_DATE(' 2002-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q2_2002" VALUES LESS THAN


(TO_DATE(' 2002-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q3_2002" VALUES LESS THAN

(TO_DATE(' 2002-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q4_2002" VALUES LESS THAN

(TO_DATE(' 2003-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q1_2003" VALUES LESS THAN

(TO_DATE(' 2003-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION IMMEDIATE

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645


PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1)

TABLESPACE "USERS" ,

PARTITION "SALES_Q2_2003" VALUES LESS THAN

(TO_DATE(' 2003-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION DEFERRED

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

TABLESPACE "USERS" ,

PARTITION "SALES_Q3_2003" VALUES LESS THAN

(TO_DATE(' 2003-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))


SEGMENT CREATION DEFERRED

PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255

COMPRESS BASIC NOLOGGING

TABLESPACE "USERS" ,

PARTITION "SALES_Q4_2003" VALUES LESS THAN

(TO_DATE(' 2004-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

SEGMENT CREATION DEFERRED

PCTFREE 5 PCTUSED 40 INITRANS 1 MAXTRANS 255

NOCOMPRESS NOLOGGING

TABLESPACE "USERS" );

You might also like