You are on page 1of 37

Oracle11gR2 Database

New Features
Ramesh Raghav
Agenda II
Partitioning
Performance enhancements
RMAN
Flashback
SecureFile
Miscellaneous

Partitioning

Interval (ideal for ILM)
Virtual column based
Reference
Composite : range-range,range-list,range-
hash,list-list,list-range,list-hash,interval-
range,interval-list,interval-hash
Interval partitioning
CREATE TABLE sales_int
( prod_id NUMBER(6),
cust_id NUMBER,
time_id DATE,
quantity_sold NUMBER(3),
amount_sold NUMBER(10,2) )
PARTITION BY RANGE (time_id)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
( PARTITION p0 VALUES LESS THAN (TO_DATE('1-1-
2008', 'DD-MM-YYYY')),
PARTITION p1 VALUES LESS THAN (TO_DATE('1-1-
2009', 'DD-MM-YYYY')) );
Reference partitioning
CREATE TABLE orders
( order_id NUMBER(12),
order_date TIMESTAMP WITH LOCAL TIME ZONE,
customer_id NUMBER(6),
order_status NUMBER(2),
order_total NUMBER(8,2),
CONSTRAINT orders_pk PRIMARY KEY(order_id) )
PARTITION BY RANGE(order_date)
( PARTITION Q1_2009 VALUES LESS THAN (TO_DATE('01-APR-
2009','DD-MON-YYYY')),
PARTITION Q2_2009 VALUES LESS THAN (TO_DATE('01-JUL-
2009','DD-MON-YYYY')) );
Reference partitioning
CREATE TABLE order_items
( order_id NUMBER(12) NOT NULL,
product_id NUMBER(6) NOT NULL,
unit_price NUMBER(8,2),
quantity NUMBER(8),
CONSTRAINT order_items_fk
FOREIGN KEY(order_id) REFERENCES
orders(order_id) )
PARTITION BY REFERENCE(order_items_fk);
Equipartitioned
Virtual partitioning
CREATE TABLE sales
( prod_id NUMBER(6) NOT NULL,
cust_id NUMBER NOT NULL,
time_id DATE NOT NULL,
quantity_sold NUMBER(3) NOT NULL,
amount_sold NUMBER(10,2) NOT NULL,
total_amount AS (quantity_sold * amount_sold) )
PARTITION BY RANGE (time_id) INTERVAL
(NUMTOYMINTERVAL(1,'MONTH'))
SUBPARTITION BY RANGE(total_amount)
SUBPARTITION TEMPLATE
( SUBPARTITION p_good VALUES LESS THAN (1000),
SUBPARTITION p_excel VALUES LESS THAN (MAXVALUE) )
(PARTITION sales_before_2009 VALUES LESS THAN
(TO_DATE('01-JAN-2009','DD-MON-YYYY')))
ENABLE ROW MOVEMENT;
ADDM
RAC : Database, Instance, Partial
Mantra : reduce DB time
VAR tname VARCHAR2(30);
BEGIN
:tname := 'My ADDM task before GoLive';
DBMS_ADDM.ANALYZE_PARTIAL(:tname, '1,3',
110, 115);
END;
/

Auto Memory
ALTER SYSTEM SET MEMORY_MAX_TARGET
= 2G SCOPE = SPFILE;

ALTER SYSTEM SET MEMORY_TARGET = 1G;
ALTER SYSTEM SET SGA_TARGET = 0;
ALTER SYSTEM SET
PGA_AGGREGATE_TARGET = 0;

v$memory_dynamic_components
Optimizer
incremental for partitioned tables
exec
DBMS_STATS.SET_TABLE_PREFS('SH',
SALES,'INCREMENTAL',true);
deferred stats publishing
select dbms_stats.get_prefs(PUBLISH) publish
from dual;
USER_TAB_PENDING_STATS,
USER_IND_PENDING_STATS


Optimizer
exec dbms_stats.set_table_prefs(SH, 'CUSTOMERS',
'PUBLISH', false);
alter session set optimizer_use_pending_statistics =
TRUE;
exec
dbms_stats.publish_pending_stats(SH,'CUSTOMERS'
);
exec
dbms_stats.delete_pending_stats(SH,'CUSTOMERS');
Optimizer
extended : column group for better selectivity value
declare
cg_name varchar2(30);
begin
cg_name :=
dbms_stats.create_extended_stats(null,'customers',
'(state_province,country_id)');
end;
/
Optimizer
select extension_name, extension
from user_stat_extensions
where table_name='CUSTOMERS';
exec
dbms_stats.gather_table_stats(null,customers,me
thod_opt =>
'for all columns size skewonly
for columns (state_province,country_id)
skewonly');

Optimizer
extended : expression for better selectivity value
exec
dbms_stats.gather_table_stats(null,customers,
method_opt =>
'for all columns size skewonly
for columns (lower(state_province)) skewonly');


Result cache
Cache more stuff
Client Side Cache
Server Results Cache
PL/SQL Function Results Cache

SELECT /*+ result_cache */ deptno, avg(sal)
FROM emp
GROUP BY deptno;


RESULT_CACHE_MAX_SIZE (dynamic)

Result cache
create or replace
function cached
( p_owner in varchar2 )
return number
result_cache
relies_on (t1)
as
l_cnt number;
begin
select count(*) into l_cnt
from t1 where owner = p_owner;
return l_cnt;
end;

Result cache
dbms_result_cache (status,flush)
v$result_cache_objects

RMAN
active db duplication
self contained archival (long term) backup
archived log deletion policy
recovery catalog mgt : merge, virtual (private)

RMAN
DUPLICATE TARGET DATABASE
TO dupdb
FROM ACTIVE DATABASE
SPFILE
PARAMETER_VALUE_CONVERT
'/u01/oracle/data/ndsprd/', '+DATA_DG1'
SET DB_CREATE_FILE_DEST +DATA_DG1
SET SGA_MAX_SIZE '1G';

RMAN
BACKUP DATABASE TAG quarterly KEEP
FOREVER RESTORE POINT FY09Q2;
duplicate target database to archdb
until restore point fy09q2
..
RMAN
CONFIGURE ARCHIVELOG DELETION
POLICY TO BACKED UP 2 TIMES TO SBT;
deletion policy for ALL arch dest (includes flash
recovery area)


RMAN
Merge
unregisters imported databases from source
catalog (default)
RMAN> CONNECT CATALOG
101cat@destdb;
IMPORT CATALOG 102cat@srcdb
DBID=1423241, 1423242;

RMAN
Virtual (private)
GRANT recovery_catalog_owner TO u1;
CONNECT CATALOG catowner@catdb;
GRANT CATALOG FOR DATABASE prod1
TO u1;
GRANT REGISTER DATABASE TO u1;
CONNECT CATALOG u1@catdb;
CREATE VIRTUAL CATALOG;

RMAN
TSPITR : dropped tablespaces, multiple passes
SET NEWNAME FOR DATABASE TO
'+datadg1';
Flashback Data Archive
aka Oracle Total Recall
useful for ILM, reporting, auditing, data
recovery, digital shredding of historical data
CREATE FLASHBACK ARCHIVE
DEFAULT fla1 TABLESPACE tbs1
QUOTA 10G RETENTION 1 YEAR;
ALTER FLASHBACK ARCHIVE fla1 ADD
TABLESPACE tbs2 QUOTA 5G;


Flashback Data Archive
ALTER FLASHBACK ARCHIVE fla1
MODIFY RETENTION 2 YEAR;
ALTER FLASHBACK ARCHIVE fla1
PURGE BEFORE TIMESTAMP
(SYSTIMESTAMP - INTERVAL '1' DAY);
CREATE TABLE t1 .. FLASHBACK
ARCHIVE fla1;
ALTER TABLE t1 NO FLASHBACK
ARCHIVE;

Flashback Data Archive
NOW allowed:
-- add, drop, rename or modify column
-- RENAME,TRUNCATE TABLE
DBA_FLASHBACK_ARCHIVE_TABLES
SELECT product_number, product_name, count
FROM inventory AS OF
TIMESTAMP TO_TIMESTAMP ('2009-01-01
00:00:00', 'YYYY-MM-DD HH24:MI:SS');
Tamper-proof data archive

SecureFile
2 storage implementations for LOB columns
BASICFILE Pre-Oracle11g
SECUREFILE New
DB_SECUREFILE = [ ALWAYS | FORCE |
PERMITTED | NEVER | IGNORE ]
SecureFile
only in ASSM tablespaces
compression (orthogonal to index and table compression)
-- avoid duplication of LOB data
transparent encryption

SecureFile
CREATE TABLE t1
( id number, doc CLOB ENCRYPT USING AES256 )
LOB(doc) STORE AS SECUREFILE
( COMPRESS HIGH DEDUPLICATE CACHE
NOLOGGING );
select segment_subtype from dba_segments
where segment_type=LOBSEGMENT;
Migrate from basicfile online by using
DBMS_REDEFINITION package

Invisible index
CREATE INDEX i1 ON emp(empid) TABLESPACE
idx STORAGE .. INVISIBLE;
ALTER INDEX i1 VISIBLE;
OPTIMIZER_USE_INVISIBLE_INDEXES
SELECT INDEX_NAME, VISIBILITY FROM
DBA_INDEXES WHERE INDEX_NAME = 'I1';
Invisible index maintained during DML (unlike
unusable index)

Native PL/SQL
native compilation (no C code)
PLSQL_CODE_TYPE
SELECT PLSQL_CODE_TYPE FROM
DBA_PLSQL_OBJECT_SETTINGS WHERE
NAME=' .. ';
ALTER PROCEDURE p1 COMPILE
PLSQL_CODE_TYPE=NATIVE;

Hot patch
No need to restart instance or relink binaries
Patch shipped as dynamic/shared library
Mapped into memory by all Oracle processes from target
ORACLE_HOME
Applied or rolled back using OPatch
Listed in OPatch inventory
Persistent across instance restarts
Replace with conventional patch at convenient downtime
Platforms: Linux x86 , Solaris SPARC-64
Current patch availability: Small and diagnostic patches
Long-term goal: Hot patching capability for CPU
Active Data Guard
Use physical standby database
for development & testing
-- preserves zero data loss in test/dev mode
Flashback DB to back-out
changes & use as standby
DR resources NOT idle

Active Data Guard
Offload reporting to standby
simultaneously available for recovery
Offload backups to standby
complete database and fast incremental
backups
Performance enhancement
Miscellaneous
create (s)pfile from memory;
ALTER TABLESPACE lmtemp1 SHRINK
SPACE KEEP 500M;
ALTER TABLESPACE lmtemp2 SHRINK
TEMPFILE +DATA_DG/ora1/tempfile/..;
dba_temp_free_space
Miscellaneous
create table t1 .. compress for all operations;
select table_name, compression,compress_for
from dba_tables;
alter table t1 read only;
segmentless unusable index


whoami
Oracle11g OCP dba & RAC Certified Expert
http://www.iuniverse.com/bookstore/book_detail.asp?isbn=0-595-42027-3

You might also like