Document about Oracle 10g New Features
Hi all,
I would like to share a document I wrote about Oracle 10g New Feature. I hope it would be useful.
Currently, I am updating the document to include Release 2 features. Any comments or suggestion is appreciated.
Download link:
http://www.operflow.com/Oracle_10g_DB_Summary.pdf
Hi Ahmed,
Good Work !!!
I just visit your blog it is very interesting about you and your country.
Regards
Taj
Similar Messages
-
Hi,
Is there any link, where i can find in detail about oracle 10g new features, TIAYou can find each doc in html and pdf format on the Documentation Library<br>
You can too download all the documentation in html format to have all on your own computer here (445.8MB)<br>
<br>
Nicolas. -
Hi,
I want to know Oracle 10g New Features for developers. please note that i am asking for developers not DBA.
Thanks in Advance,
SuSu wrote:
ya go through this web site ..as i'm a new to oracle development i'm confused that all topics for developers oly...pls make me clear..you want me to go through this site and figure out which articles are meant for developers only??? : O
I would suggest an easier method for you. Open each and every article and search for the term "developer". If found, then its what you are looking for. ; )
Vivek L -
Oracle 10G New Feature........Part 1
Dear all,
from last couple of days i was very busy with my oracle 10g box,so i think this is right time to
share some intresting feature on 10g and some internal stuff with all of you.
Have a look :-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Oracle 10g Memory and Storage Feature.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.Automatic Memory Management.
2.Online Segment Shrink
3.Redolog Advisor, checkpointing
4.Multiple Temporary tablespace.
5.Automatic Workload Repository
6.Active Session History
7.Misc
a)Rename Tablespace
b)Bigfile tablespace
c)flushing buffer cache
8.ORACLE INTERNAL
a)undocumented parameter (_log_blocks_during_backup)
b)X$ view (x$messages view)
c)Internal Structure of Controlfile
1.Automatic memory management
================================
This feature reduce the overhead of oracle DBA.previously mostly time we need to set diff oracle SGA parameter for
better performance with the help of own experience,advice views and by monitoring the behaviour
of oracle database.
this was just time consuming activity.........
Now this feature makes easy life for oracle DBA.
Just set SGA_TARGET parameter and it automatically allocate memory to different SGA parameter.
it focus on DB_CACHE_SIZE
SHARED_POOL_SIZE
LARGE_POOL
JAVA_POOL
and automatically set it as
__db_cache_size
__shared_pool_size
__large_pool_size
__java_pool_size
check it in alert_log
MMAN(memory manager) process is new in 10g and this is responsible for sga tuning task.
it automatically increase and decrease the SGA parameters value as per the requirement.
Benefit:- Maximum utlization of available SGA memory.
2.Online Segment Shrink.
==========================
hmmmmm again a new feature by oracle to reduce the downtime.Now oracle mainly focus on availablity
thats why its always try to reduce the downtime by intrducing new feature.
in previous version ,reducing High water mark of table was possible by
Exp/imp
or
alter table move....cmd. but on these method tables was not available for normal use for long hrs if it has more data.
but in 10g with just few command we can reduce the HWmark of table.
this feature is available for ASSM tablespaces.
1.alter table emp enable row movement.
2.alter table emp shrink space.
the second cmd have two phases
first phase is to compact the segment and in this phase DML operations are allowed.
second phase(shrink phase)oracle shrink the HWM of table, DML operation will be blocked at that time for short duration.
So if want to shrink the HWM of table then we should use it with two diff command
first compact the segment and then shrink it on non-peak hrs.
alter table emp shrink space compact. (This cmd doesn't block the DML operation.)
and alter table emp shrink space. (This cmd should be on non-peak hrs.)
Benefit:- better full table scan.
3.Redolog Advisor and checkpointing
================================================================
now oracle will suggest the size of redo log file by V$INSTANCE_RECOVERY
SELECT OPTIMAL_LOGFILE_SIZE
FROM V$INSTANCE_RECOVERY
this value is influence with the value of FAST_START_MTTR_TARGET .
Checkpointing
Automatic checkpointing will be enable after setting FAST_START_MTTR_TARGET to non-zero value.
4.Multiple Temporary tablespace.
==================================
Now we can manage multiple temp tablespace under one group.
we can create a tablespace group implicitly when we include the TABLESPACE GROUP clause in the CREATE TEMPORARY TABLESPACE or ALTER TABLESPACE statement and the specified tablespace group does not currently exist.
For example, if group1 is not exists,then the following statements create this groups with new tablespace
CREATE TEMPORARY TABLESPACE temp1 TEMPFILE '/u02/oracle/data/temp01.dbf'
SIZE 50M
TABLESPACE GROUP group1;
--Add Existing temp tablespace into group by
alter tablespace temp2 tablespace group group1.
--we can also assign the temp tablespace group on database level as default temp tablespace.
ALTER DATABASE <db name> DEFAULT TEMPORARY TABLESPACE group1;
benefit:- Better I/O
One sql can use more then one temp tablespace
5.AWR(Automatic Workload Repository):-
================================== AWR is built in Repository and Central point of Oracle 10g.Oracle self managing activities
is fully dependent on AWR.by default after 1 hr, oracle capure all database uses information and store in AWR with the help of
MMON process.we called it Memory monitor process.and all these information are kept upto 7 days(default) and after that it automatically purge.
we can generate a AWR report by
SQL> @?/rdbms/admin/awrrpt
Just like statspack report but its a advance and diff version of statspack,it provide more information of Database as well as OS.
it show report in Html and Text format.
we can also take manually snapshot for AWR by
BEGIN
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
END;
**The STATISTICS_LEVEL initialization parameter must be set to the TYPICAL or ALL to enable the Automatic Workload Repository.
[oracle@RMSORA1 oracle]$ sqlplus / as sysdba
SQL*Plus: Release 10.1.0.2.0 - Production on Fri Mar 17 10:37:22 2006
Copyright (c) 1982, 2004, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> @?/rdbms/admin/awrrpt
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance
4174002554 RMSORA 1 rmsora
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Enter value for report_type: text
Type Specified: text
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
* 4174002554 1 RMSORA rmsora RMSORA1
Using 4174002554 for database Id
Using 1 for instance number
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed. Pressing <return> without
specifying a number lists all completed snapshots.
Listing the last 3 days of Completed Snapshots
Snap
Instance DB Name Snap Id Snap Started Level
rmsora RMSORA 16186 16 Mar 2006 17:33 1
16187 16 Mar 2006 18:00 1
16206 17 Mar 2006 03:30 1
16207 17 Mar 2006 04:00 1
16208 17 Mar 2006 04:30 1
16209 17 Mar 2006 05:00 1
16210 17 Mar 2006 05:31 1
16211 17 Mar 2006 06:00 1
16212 17 Mar 2006 06:30 1
16213 17 Mar 2006 07:00 1
16214 17 Mar 2006 07:30 1
16215 17 Mar 2006 08:01 1
16216 17 Mar 2006 08:30 1
16217 17 Mar 2006 09:00 1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 16216
Begin Snapshot Id specified: 16216
Enter value for end_snap: 16217
End Snapshot Id specified: 16217
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_16216_16217.txt. To use this name,
press <return> to continue, otherwise enter an alternative.
Benefit:- Now DBA have more free time to play games.....................:-)
Advance version of statspack
more DB and OS information with self managing capabilty
New Automatic alert and database advisor with the help of AWR.
6.Active Session History:-
==========================
V$active_session_history is view that contain the recent session history.
the memory for ASH is comes from SGA and it can't more then 5% of Shared pool.
So we can get latest and active session report from v$active_session_history view and also get histortical data of
of session from DBA_HIST_ACTIVE_SESS_HISTORY.
v$active_session_history include some imp column like:-
~SQL identifier of SQL statement
~Object number, file number, and block number
~Wait event identifier and parameters
~Session identifier and session serial number
~Module and action name
~Client identifier of the session
7.Misc:-
========
Rename Tablespace:-
=================
in 10g,we can even rename a tablespace by
alter tablespace <tb_name> rename to <tb_name_new>;
This command will update the controlfile,data dictionary and datafile header,but dbf filename will be same.
**we can't rename system and sysaux tablespace.
Bigfile tablespace:-
====================
Bigfile tablespace contain only one datafile.
A bigfile tablespace with 8K blocks can contain a 32 terabyte datafile.
Bigfile tablespaces are supported only for locally managed tablespaces with automatic segment-space management.
we can take the advantage of bigfile tablespace when we are using ASM or other logical volume with RAID.
without ASM or RAID ,it gives poor response.
syntax:-
CREATE BIGFILE TABLESPACE bigtbs
Flushing Buffer Cache:-
======================
This option is same as flushing the shared pool,but only available with 10g.
but i don't know, whats the use of this command in prod database......
anyway we can check and try it on test server for tuning n testing some query etc....
SQL> alter system flush buffer_cache;
System altered.
++++++++++++++++++
8.Oracle Internal
++++++++++++++++++
Here is some stuff that is not related with 10g but have some intresting things.
a)undocumented parameter "_log_blocks_during_backup"
++++++++++++++++++++++++
as we know that oracle has generate more redo logs during hotbackup mode because
oracle has to maintain the a complete copy of block into redolog due to split block.
we can also change this behaviour by setting this parameter to False.
If Oracle block size equals the operating system block size.thus reducing the amount of redo generated
during a hot backup.
WITHOUT ORACLE SUPPORT DON'T SET IT ON PROD DATABASE.THIS DOCUMENT IS JUST FOR INFORMATIONAL PURPOSE.
b)some X$ views (X$messages)
++++++++++++++++
if you are intresting in oracle internal architecture then x$ view is right place for getting some intresting things.
X$messages :-it show all the actions that a background process do.
select * from x$messages;
like:-
lock memory at startup MMAN
Memory Management MMAN
Handle sga_target resize MMAN
Reset advisory pool when advisory turned ON MMAN
Complete deferred initialization of components MMAN
lock memory timeout action MMAN
tune undo retention MMNL
MMNL Periodic MQL Selector MMNL
ASH Sampler (KEWA) MMNL
MMON SWRF Raw Metrics Capture MMNL
reload failed KSPD callbacks MMON
SGA memory tuning MMON
background recovery area alert action MMON
Flashback Marker MMON
tablespace alert monitor MMON
Open/close flashback thread RVWR
RVWR IO's RVWR
kfcl instance recovery SMON
c)Internal Structure of Controlfile
++++++++++++++++++++++++++++++++++++
The contents of the current controlfile can be dumped in text form.
Dump Level Dump Contains
1 only the file header
2 just the file header, the database info record, and checkpoint progress records
3 all record types, but just the earliest and latest records for circular reuse record types
4 as above, but includes the 4 most recent records for circular reuse record types
5+ as above, but the number of circular reuse records included doubles with each level
the session must be connected AS SYSDBA
alter session set events 'immediate trace name controlf level 5';
This dump show lots of intresting information.
it also show rman recordes if we used this controlfile in rman backup.
Thanks
Kuljeet Pal SinghYou can find each doc in html and pdf format on the Documentation Library<br>
You can too download all the documentation in html format to have all on your own computer here (445.8MB)<br>
<br>
Nicolas. -
Oracle 10g new feature to backup to tape?
I heard rumours that Oracle 10g has new features to backup to tape directly. I don't know exactly how this is done, and I'd like the experts to comment. What I've discovered so far is that there is this program called Legato Single Server Version (LSSV) which ships with the Oracle 10g Companion CD which makes RMAN use the tape directly as a medium to backup. Is this CD available for download?
I am truly curious why you actively ask to avoid the "New Features Guide" which provides much of the information you desire.
(http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14214/toc.htm) -
10G NEW FEATURE-HOW TO FLUSH THE BUFFER CACHE
제품 : ORACLE SERVER
작성날짜 : 2004-05-25
10G NEW FEATURE-HOW TO FLUSH THE BUFFER CACHE
===============================================
PURPOSE
이 자료는 Oracle 10g new feature 로 manual 하게
buffer cache 를 flush 할 수 있는 기능에 대하여 알아보도록 한다.
Explanation
Oracle 10g 에서 new feature 로 소개된 내용으로 SGA 내 buffer cache 의
모든 data 를 command 수행으로 clear 할 수 있다.
이 작업을 위해서는 "alter system" privileges 가 있어야 한다.
Buffer cache flush 를 위한 command 는 다음과 같다.
주의) 이 작업은 database performance 에 영향을 줄 수 있으므로 주의하여 사용하여야 한다.
SQL > alter system flush buffer_cache;
Example
x$bh 를 query 하여 buffer cache 내 존재하는 정보를 확인한다.
x$bh view 는 buffer cache headers 정보를 확인할 수 있는 view 이다.
우선 test 로 table 을 생성하고 insert 를 수행하고
x$bh 에서 barfil column(Relative file number of block) 과 file# 를 조회한다.
1) Test table 생성
SQL> Create table Test_buffer (a number)
2 tablespace USERS;
Table created.
2) Test table 에 insert
SQL> begin
2 for i in 1..1000
3 loop
4 insert into test_buffer values (i);
5 end loop;
6 commit;
7 end;
8 /
PL/SQL procedure successfully completed.
3) Object_id 확인
SQL> select OBJECT_id from dba_objects
2 where object_name='TEST_BUFFER';
OBJECT_ID
42817
4) x$bh 에서 buffer cache 내에 올라와 있는 DBARFIL(file number of block) 를 조회한다.
SQL> select ts#,file#,dbarfil,dbablk,class,state,mode_held,obj
2 from x$bh where obj= 42817;
TS# FILE# DBARFIL DBABLK CLASS STATE MODE_HELD J
9 23 23 1297 8 1 0 7
9 23 23 1298 9 1 0 7
9 23 23 1299 4 1 0 7
9 23 23 1300 1 1 0 7
9 23 23 1301 1 1 0 7
9 23 23 1302 1 1 0 7
9 23 23 1303 1 1 0 7
9 23 23 1304 1 1 0 7
8 rows selected.
5) 다음과 같이 buffer cache 를 flush 하고 위 query 를 재수행한다.
SQL > alter system flush buffer_cache ;
SQL> select ts#,file#,dbarfil,dbablk,class,state,mode_held,obj
2 from x$bh where obj= 42817;
6) x$bh 에서 state column 이 0 인지 확인한다.
0 은 free buffer 를 의미한다. flush 이후에 state 가 0 인지 확인함으로써
flushing 이 command 를 통해 manual 하게 수행되었음을 확인할 수 있다.
Reference Documents
<NOTE. 251326.1>I am also having the same issue. Can this be addressed or does BEA provide 'almost'
working code for the bargin price of $80k/cpu?
"Prashanth " <[email protected]> wrote:
>
Hi ALL,
I am using wl:cache tag for caching purpose. My reqmnt is such that I
have to
flush the cache based on user activity.
I have tried all the combinations, but could not achieve the desired
result.
Can somebody guide me on how can we flush the cache??
TIA, Prashanth Bhat. -
Hi,
I'm using
Personal Oracle Database 11g Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
My question about Oracle 11g New Features.
create table sales
sales_id number,
product_code number,
state_code varchar2(2)
partition by list (product_code)
subpartition by list (state_code)
partition p101 values (101)
subpartition p101_ct values ('CT'),
subpartition p101_ny values ('NY'),
subpartition p101_def values (default)
partition p201 values (201)
subpartition p201_ct values ('CT'),
subpartition p201_ny values ('NY'),
subpartition p201_def values (default)
Partition is Product Code It's Only allow to insert the values is 101 or 201
Subpartition is State_code It's Only allow to insert the values is CT or NY
My understanding is correct or not.
Any one help me and thanks for ur reply.
Regards,
Suresh KumarHi
Partition is Product Code It's Only allow to insert the values is 101 or 201Yes.
Subpartition is State_code It's Only allow to insert the values is CT or NYNo. You have a subpartition with "default" and, therefore, any varchar2(2) value can be inserted.
HTH
Chris -
1Z0-045: Oracle Database 10g: New Features for Oracle 8i OCPs
Hi,
I was looking for right reference book for the 1z0-045 upgrade certification. I could not find any reference book that is related to this certification. Only one book have found out on Amazon site, which is "OCP Oracle Database 10g: New Features for Administrators Exam Guide (Oracle Press) (Paperback)" published by McGraw Hill.
But this book does not show exem number 1z0-045 anywhere. So I am not sure, is it a right book to buy.
Please let me know if any one has any knowledge about that.
I appreciate for your information.
Thanks
AmitThe book you mention is for those individuals who are upgrading their 9i OCP to the 10g OCP. Since you are apparently upgrading from 8i OCP, there is possibly a gap in your learning. You might want to take a look at OCP Oracle9i Database: New Features for Administrators Exam Guide (Paperback) which explains the new features for Oracle 9i to someone coming from an 8i background. No additional exam would be needed in your case but this book may help to fill out your knowledge a bit. You could also take a look at http://download.oracle.com/docs/cd/B10501_01/server.920/a96531/toc.htm if you would rather not buy an additional book.
Tom -
FUNCTION-BASED INDEX ( ORACLE 8I NEW FEATURE )
제품 : ORACLE SERVER
작성날짜 : 2004-08-16
FUNCTION-BASED INDEX ( ORACLE 8I NEW FEATURE )
==============================================
SCOPE
10g Standard Edition(10.1.0) 이상 부터 Function-based Index 기능이 지원된다.
Explanation
1. 개요
Function-based index는, 함수(function)이나 수식(expression)으로 계산
된 결과에 대해 인덱스를 생성하여 사용할 수 있는 기능을 제공한다.
질의 수행 시 해당 함수나 수식을 처리하여 결과를 가져 오는 것이 아니라,
인덱스 형태로 존재하는 미리 계산되어 있는 결과를 가지고 처리하므로
성능 향상을 기할 수 있다.
2. 제약사항
1) aggregate function 에 대한 function-based index 생성 불가.
(예 : sum(...) )
2) LOB, REF, nested table 컬럼에 대한 function-based index 생성 불가.
3. 주요 특징
1) cost-based optimizer에 의해 사용됨.
2) B*Tree / bitmap index로 생성 가능.
3) 산술식 (arithmetic expression), PLSQL function, SQL built-in
function 등에 적용 가능.
4) 함수나 수식으로 처리된 결과에 대한 range scan 가능
5) NLS SORT 지원
6) SELECT/DELETE를 할 때마다 함수나 수식의 결과를 계산하는 것이 아니라
INSERT/UPDATE 시 계산된 값을 인덱스에 저장.
7) 질의 속도 향상
8) object column이나 REF column에 대해서는 해당 object에 정의된
method에 대해 function-based index 생성 가능.
4. 생성 방법
CREATE [UNIQUE | BITMAP ] INDEX <index_name>
ON <tablename> (<index-expression-list>)
<index-expression-list> -> { <column_name> | <column_expression> }
예) CREATE INDEX EMP_NAME_INDEX ON EMP (UPPER(ENAME));
CREATE INDEX EMP_SAL_INDEX ON EMP( SAL + COMM, empno);
* Function-based index를 생성하기 위해서는 QUERY REWRITE 권한이
부여 되어 있어야만 한다.
예) GRANT QUERY REWRITE TO SCOTT;
5. Function-Based Index 사용을 위한 사전 작업
1) Function-based index는 cost based optimizer에서만 사용 가능하므로,
테이블에 대해 미리 analyze 해 주는 것이 바람직하다.
그리고 init 파일에서 OPTIMIZER_MODE 를 FIRST_ROWS 나 ALL_ROWS 등으
로 지정하거나 HINT 등을 사용하여 cost based optimizer가 사용되도록
한다.
2) init 파일에서 COMPATIBLE 파라미터 값을 8.1 이상으로 설정되어 있어야
한다.
( 예 : COMPATIBLE = 8.1.6 )
3) session/instance level 에서 QUERY_REWRITE_ENABLED 값이 TRUE 지정
되어 있어야 한다.
( 예 : ALTER SESSION SET QUERY_REWRITE_ENABLED = TRUE; )
6. 예제
1) init 파라미터에서 다음과 같이 지정
compatible = 8.1.6 (반드시 8.1이상이어야 한다)
query_rewrite_enabled = true
query_rewrite_integrity = trusted
2) SCOTT 유저에서 function_based_index 생성
create index idx_emp_lower_ename
on emp
( lower(ename) ) ;
3) EMP table analyze
analyze table emp compute statistics ;
4) PLAN_TABLE 생성
@ ?/rdbms/admin/utlxplan.sql
5) Cost based optimizer 선택
alter session set optimizer_mode = FIRST_ROWS ;
6) Query 실행
explain plan set statement_id='qry1' FOR
select empno, ename
from emp
where lower(ename) = 'ford' ;
7) PLAN 분석
SELECT LPAD(' ',2*level-2)||operation||' '||options||' '||object_name query_plan
FROM plan_table
WHERE statement_id='qry1'
CONNECT BY prior id = parent_id
START WITH id = 0 order by id ;
-> 결과
QUERY_PLAN
SELECT STATEMENT
TABLE ACCESS BY INDEX ROWID EMP
INDEX RANGE SCAN IDX_EMP_LOWER_ENAME
7. 결론
Function-based index는 적절하게 사용될 경우 성능상의 많은 이점을 가져
온다. Oracle8i Designing and Tuning for Performance에서도 가능한 한
Function-based index를 사용하는 것을 권장하고 있으며, LOWER(), UPPER()
등의 함수를 사용하여 불가피하게 FULL TABLE SCAN을 하는 경우에 대해서도
효과적으로 처리해 줄 수 있는 방안이라 할 수 있다.
Reference Documents
-------------------Partha:
From the Oracle8i Administrators Guide:
"Table owners should have EXECUTE privileges on the functions used in function-based indexes.
For the creation of a function-based index in your own schema, you must be
granted the CREATE INDEX and QUERY REWRITE system privileges. To create
the index in another schema or on another schemas tables, you must have the
CREATE ANY INDEX and GLOBAL QUERY REWRITE privileges."
Hope this helps.
Peter -
(V9I) ORACLE 9I NEW FEATURE : ORACLE FLASHBACK
제품 : ORACLE SERVER
작성날짜 : 2002-11-01
(V9I) ORACLE 9I New Feature : ORACLE FLASHBACK
==============================================
PURPOSE
Oracle9i 새로운 기능인 Flashback 의 등장으로 Commit 된 Transaction 에 대해
특정 시점의 과거 DATA를 Query가 가능함으로써 Self-service repair 기능이 향상되었다.
다음 Flashback query 기능과 Setup 방법 및 실제 Data Recovery 에 관한 내용에 대해 알아보도록 한다.
Explanation
Flashback : 새로운 기능인 Flahback 은 과거 시점의 consistent view 를 볼 수있는
기능으로 system time or systme change number(SCN) 기반 read-only view이다.
다음은 Flashback 기능을 사용하기 위해 미리 설정해야할 부분에 대해 알아보도록 한다.
1) 반드시 Automatic Undo Management 에서만 가능
(initSID.ora file이나 spfile에 다음 파라미터가 auto로 설정)
UNDO_MANAGEMENT = AUTO
2) Rentention interval 을 두어 해당 time 동안은 inactive rollback 이라 하더라도
overwrite 되지 않도록 유지(초단위)
SQL> ALTER SYSTEM SET undo_retention = 1200;
UNDO_RETENTION 을 지정한 다음 실제 적용을 위해 5분정도 기다려야 한다.
3) DBMS_FLASHBACK package를 이용하여 Flashback 기능을 enable 시킨다.
SQL> call dbms_flashback.enable_at_time('9-NOV-01:11:00:00');
Example1. Flashback setup 과 date/time 설정
1) Undo tablespace 생성
SQL> create undo tablespace UNDOTBS datafile
'/database/901/V901/undotbs01.dbf' size 100M;
2) intiSID or spfile 에 다음 파라미터 적용
undo_management=auto
undo_retention=1200
undo_tablespace=UNDOTBS
3) dbms_flashback exeucte 권한 grant
SQL> connect / as sysdba
Connected.
SQL> grant execute on dbms_flashback to testuser;
Grant succeeded.
4) test table 생성
SQL> connect testuser/testuser;
Connected.
SQL> create table emp_flash as select * from scott.emp;
Table created.
SQL> select count(*) from emp_flash;
COUNT(*)
15
5) table 생성후 5분 정도 waiting -> table delete
SQL> delete from emp_flash;
15 rows deleted.
SQL> commit;
Commit complete.
SQL> select count(*) from emp_flash;
COUNT(*)
0
6) flashback 활성화
SQL> execute DBMS_FLASHBACK.ENABLE_AT_TIME(sysdate - 5/1440);
PL/SQL procedure successfully completed.
SQL> select count(*) from emp_flash;
COUNT(*)
15
SQL> execute DBMS_FLASHBACK.DISABLE;
PL/SQL procedure successfully completed.
SQL> select count(*) from emp_flash;
COUNT(*)
0
Example2. Flashback 으로 잃어버린 data recovery
1) test user 생성
SQL> connect testuser/testuser;
Connected.
SQL> create table emp_recover as select * from scott.emp;
Table created.
SQL> select count(*) from emp_recover;
COUNT(*)
15
2) delete table
SQL> VARIABLE SCN_SAVE NUMBER;
SQL> EXECUTE :SCN_SAVE := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER;
PL/SQL procedure successfully completed.
SQL> PRINT SCN_SAVE
SCN_SAVE
6.4455E+12
SQL> select count(*) from emp_recover;
COUNT(*)
15
SQL> delete from emp_recover;
15 rows deleted.
SQL> commit;
Commit complete.
SQL> select count(*) from emp_recover;
COUNT(*)
0
3) flashback 이용한 data recover
SQL> DECLARE
2 CURSOR FLASH_RECOVER IS
3 select * from emp_recover;
4 emp_recover_rec emp_recover%ROWTYPE;
5 begin
6 DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:SCN_SAVE);
7 open FLASH_RECOVER;
8 DBMS_FLASHBACK.DISABLE;
9 loop
10 FETCH FLASH_RECOVER INTO emp_recover_rec;
11 EXIT WHEN FLASH_RECOVER%NOTFOUND;
12 insert into emp_recover
13 values
14 (emp_recover_rec.empno,
15 emp_recover_rec.ename,
16 emp_recover_rec.job,
17 emp_recover_rec.mgr,
18 emp_recover_rec.hiredate,
19 emp_recover_rec.sal,
20 emp_recover_rec.comm,
21 emp_recover_rec.deptno);
22 end loop;
23 CLOSE FLASH_RECOVER;
24 commit;
25 end;
26 /
PL/SQL procedure successfully completed.
SQL> select count(*) from emp_recover;
COUNT(*)
15
Reference Document
Note. 174425.1
Note. 143217.1
Note. 179851.1I 'm sorry I can not offer the correct figure since I'm an easy-to-forget guy.
Below is extracted from other's post. wish it helps.
Oracle Security Server ---> 2 questions
High Availability Technology ---> 4 questions
LogMiner Enhancements -> 1 question
Backup & Recovery Enhancements ---> 3 questions
Data Guard ---> 3 questions
Resource Manager Enhancements ---> 2 questions
Online Operations Enhancements ---> 3 questions
Segment Management (Part I) ---> 4 questions
Segment Management (Part II) ---> 3 questions
Performance Improvements ---> 4 questions
Scalable Session Management ---> 2 questions
Real Application Clusters ---> 2 questions
File Management ---> 4 questions
Tablespace Management ---> 4 questions
Memory Management ---> 3 questions
Enterprise Manager Enhancements ---> 2 questions
by the way, I just found an enthusiast (roxylo
) posted a book about the 9i new features. It surely will help -
BLOCK CORRUPTION (ORA-1578) 처리 (ORACLE 8I NEW FEATURE)
제품 : ORACLE SERVER
작성날짜 : 2002-05-31
BLOCK CORRUPTION (ORA-1578) 처리 (ORACLE 8I NEW FEATURE)
========================================================
PURPOSE
Block Corruption의 처리 방안에 대해 알아본다.
Problem Description
block corruption 시 10210, 10211,10231 의 event 를 사용해서
해당 block 을 skip 할 수도 있지만 V8.1 이상에서는
dbms_repair.fix_corrupt_blocks ,
dbms_repair.skip_corrupt_block 를 이용하여
corrupt가 발생한 block을 detect하고 skip, 또는 repair해주는 방안이
제시되고 있다.
Workaround
Solution Description
- 먼저 detecting 을 위해 db_block_checking =true 를 init.ora 에 set
- dbms_repair 의 package 를 사용하는데 이 package 는 dbmsrpr.sql,
prvtrpr.plb를 수행한다 .
- sys 로 접속하여 package 를 실행한다.
다음의 예제를 살펴보자
T1 테이블에 corrupt 된 block 이 있다고 가정한다.
SQL> desc t1
Name Null? Type
COL1 NOT NULL NUMBER(38)
COL2 CHAR(512)
SQL> analyze table t1 validate structure;
analyze table t1 validate structure
ERROR at line 1:
ORA-01498: block check failure - see trace file
이때 ANALYZE로 부터 발생된 trace file 에 corrupt 된 block 에 3 row 의
(nrows = 3) data 가 있음을 알수 있다고 가정하자.
DBMS_REPAIR.ADMIN_TABLES (repair and orphan key)
================================================
ADMIN_TABLES 은 table 을 위한 repair table과,인덱스를 위한 orphan key
tables을 제공한다.
SQL> @adminCreate
SQL> connect sys/change_on_install
Connected.
SQL>
SQL> -- Repair Table
SQL>
SQL> declare
2 begin
3 -- Create repair table
4 dbms_repair.admin_tables (
5 -- table_name => 'REPAIR_TABLE',
6 table_type => dbms_repair.repair_table,
7 action => dbms_repair.create_action,
8 tablespace => 'USERS'); -- default TS of SYS if not specified
9 end;
10 /
PL/SQL procedure successfully completed.
SQL> select owner, object_name, object_type
2 from dba_objects
3 where object_name like '%REPAIR_TABLE';
OWNER OBJECT_NAME OBJECT_TYPE
SYS DBA_REPAIR_TABLE VIEW
SYS REPAIR_TABLE TABLE
SQL>
SQL> -- Orphan Key Table
SQL>
SQL> declare
2 begin
3 -- Create orphan key table
4 dbms_repair.admin_tables (
5 table_type => dbms_repair.orphan_table,
6 action => dbms_repair.create_action,
7 tablespace => 'USERS'); -- default TS of SYS if not specified
8 end;
9 /
PL/SQL procedure successfully completed.
SQL> select owner, object_name, object_type
2 from dba_objects
3 where object_name like '%ORPHAN_KEY_TABLE';
OWNER OBJECT_NAME OBJECT_TYPE
SYS DBA_ORPHAN_KEY_TABLE VIEW
SYS ORPHAN_KEY_TABLE TABLE
DBMS_REPAIR.CHECK_OBJECT
=========================
CHECK_OBJECT procedure 는 기술된 object를 check 하고, repair 를 위한 정보를 수집하기 위함이다.
SQL> @checkObject
SQL> set serveroutput on
SQL>
SQL> declare
2 rpr_count int;
3 begin
4 rpr_count := 0;
5 dbms_repair.check_object (
6 schema_name => 'SYSTEM',
7 object_name => 'T1',
8 repair_table_name => 'REPAIR_TABLE',
9 corrupt_count => rpr_count);
10 dbms_output.put_line('repair count: ' || to_char(rpr_count));
11 end;
12 /
repair count: 1
PL/SQL procedure successfully completed.
SQL> desc repair_table
Name Null? Type
OBJECT_ID NOT NULL NUMBER
TABLESPACE_ID NOT NULL NUMBER
RELATIVE_FILE_ID NOT NULL NUMBER
BLOCK_ID NOT NULL NUMBER
CORRUPT_TYPE NOT NULL NUMBER
SCHEMA_NAME NOT NULL VARCHAR2(30)
OBJECT_NAME NOT NULL VARCHAR2(30)
BASEOBJECT_NAME VARCHAR2(30)
PARTITION_NAME VARCHAR2(30)
CORRUPT_DESCRIPTION VARCHAR2(2000)
REPAIR_DESCRIPTION VARCHAR2(200)
MARKED_CORRUPT NOT NULL VARCHAR2(10)
CHECK_TIMESTAMP NOT NULL DATE
FIX_TIMESTAMP DATE
REFORMAT_TIMESTAMP DATE
SQL> select object_name, block_id, corrupt_type, marked_corrupt,
2 corrupt_description, repair_description
3 from repair_table;
OBJECT_NAME BLOCK_ID CORRUPT_TYPE MARKED_COR
CORRUPT_DESCRIPTION
REPAIR_DESCRIPTION
T1 3 1 FALSE
kdbchk: row locked by non-existent transaction
table=0 slot=0
lockid=32 ktbbhitc=1
mark block software corrupt
Data Extraction
===============
repair table에 의하면 file 6 ,block 3 에 corrupt 이 났음을 알수 있다
그러나 아직 이 block 은 corrupt 로 mark 되어 있지 않으므로 필요 data 를
추출하여야 한다.
1. ALTER SYSTEM DUMP (nrows = 3) 에 의해 block안에 있는 row수를 결정한다.
2. corrupt object를 select 하여 가능한 정보를 추출한다.
SQL> -- The following query can be used to salvage data from a corrupt block.
SQL> -- Creating a temporary table facilitates data insertion.
SQL> create table temp_t1 as
2 select * from system.t1
3 where dbms_rowid.rowid_block_number(rowid) = 3
4 and dbms_rowid.rowid_to_absolute_fno (rowid, 'SYSTEM','T1') = 6;
Table created.
SQL> select col1 from temp_t1;
COL1
2
3
DBMS_REPAIR.FIX_CORRUPT_BLOCKS (ORA-1578)
============================================
FIX_CORRUPT_BLOCKS procedure는 repair table 의 정보를 이용하여 corrupt
blocks 을 fix 한다
그러나 아직 full table scan 시 여전히 error 가 발생한다
SQL> declare
2 fix_count int;
3 begin
4 fix_count := 0;
5 dbms_repair.fix_corrupt_blocks (
6 schema_name => 'SYSTEM',
7 object_name => 'T1',
8 object_type => dbms_repair.table_object,
9 repair_table_name => 'REPAIR_TABLE',
10 fix_count => fix_count);
11 dbms_output.put_line('fix count: ' || to_char(fix_count));
12 end;
13 /
fix count: 1
PL/SQL procedure successfully completed.
SQL> select object_name, block_id, marked_corrupt
2 from repair_table;
OBJECT_NAME BLOCK_ID MARKED_COR
T1 3 TRUE
SQL> select * from system.t1;
select * from system.t1
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 6, block # 3)
ORA-01110: data file 6: '/tmp/ts_corrupt.dbf'
DBMS_REPAIR.DUMP_ORPHAN_KEYS
==============================
DUMP_ORPHAN_KEYS는 corrupt data 에 해당하는 index 를 나타내 준다
SQL> select index_name from dba_indexes
2 where table_name in (select distinct object_name from repair_table);
INDEX_NAME
T1_PK
SQL> @dumpOrphanKeys
SQL> set serveroutput on
SQL>
SQL> declare
2 key_count int;
3 begin
4 key_count := 0;
5 dbms_repair.dump_orphan_keys (
6 schema_name => 'SYSTEM',
7 object_name => 'T1_PK',
8 object_type => dbms_repair.index_object,
9 repair_table_name => 'REPAIR_TABLE',
10 orphan_table_name => 'ORPHAN_KEY_TABLE',
11 key_count => key_count);
12 dbms_output.put_line('orphan key count: ' || to_char(key_count));
13 end;
14 /
orphan key count: 3
PL/SQL procedure successfully completed.
SQL> desc orphan_key_table
Name Null? Type
SCHEMA_NAME NOT NULL VARCHAR2(30)
INDEX_NAME NOT NULL VARCHAR2(30)
IPART_NAME VARCHAR2(30)
INDEX_ID NOT NULL NUMBER
TABLE_NAME NOT NULL VARCHAR2(30)
PART_NAME VARCHAR2(30)
TABLE_ID NOT NULL NUMBER
KEYROWID NOT NULL ROWID
KEY NOT NULL ROWID
DUMP_TIMESTAMP NOT NULL DATE
SQL> select index_name, count(*) from orphan_key_table
2 group by index_name;
INDEX_NAME COUNT(*)
T1_PK 3
Note: orphan key table의 index 는 다시 rebuild 되어야 한다.
DBMS_REPAIR.SKIP_CORRUPT_BLOCKS
===============================
SKIP_CORRUPT_BLOCKS 은 table 과 index 의 corrupt block 을 skip 하는 것을 enable/disable 을 실시한다.
Suggestion: SKIP_CORRUPT_BLOCKS 가 enabled되면 orphan key table의 모든
index 는 모두 rebuild 되어야 한다. ( all index associated with object
if DUMP_ORPHAN_KEYS was omitted).
SQL> @skipCorruptBlocks
SQL> declare
2 begin
3 dbms_repair.skip_corrupt_blocks (
4 schema_name => 'SYSTEM',
5 object_name => 'T1',
6 object_type => dbms_repair.table_object,
7 flags => dbms_repair.skip_flag);
8 end;
9 /
PL/SQL procedure successfully completed.
SQL> select table_name, skip_corrupt from dba_tables
2 where table_name = 'T1';
TABLE_NAME SKIP_COR
T1 ENABLED
SQL> -- rows in corrupt block skipped, no errors on full table scan
SQL> select * from system.t1;
COL1 COL2
4 dddd
5 eeee
--> Notice the pk index has not yet been corrected.
SQL> insert into system.t1 values (1,'aaaa');
insert into system.t1 values (1,'aaaa')
SQL> select * from system.t1 where col1 = 1;
no rows selected
DBMS_REPAIR.REBUILD_FREELISTS
===============================
REBUILD_FREELISTS rebuilds freelists for the specified object.
SQL> declare
2 begin
3 dbms_repair.rebuild_freelists (
4 schema_name => 'SYSTEM',
5 object_name => 'T1',
6 object_type => dbms_repair.table_object);
7 end;
8 /
PL/SQL procedure successfully completed.
Rebuild Index
=============
Note: Every index identified in the orphan key table should be rebuilt to
ensure consistent results.
SQL> alter index system.t1_pk rebuild online;
Index altered.
SQL> insert into system.t1 values (1, 'aaaa');
1 row created.
SQL> select * from system.t1;
COL1 COL2
4 dddd
5 eeee
1 aaaa
Reference Document
------------------Try look to alert<SID>.log file for full error report (you could paste it here).
Also from alert log you could get real values for db_block_buffers and shared_pool_size parameters that used during instance startup. -
DATABASE RESOURCE MANAGER ( ORACLE 8I NEW FEATURE )
제품 : ORACLE SERVER
작성날짜 : 2004-08-16
DATABASE RESOURCE MANAGER ( ORACLE 8I NEW FEATURE )
===================================================
SCOPE
8i~10g Standard Edition 에서는 Database Resource Manager 를 지원하지 않는다.
Explanation
Database Resource Manager란 OS에서 제공하는 자원 (예 : CPU 자원 )에 대해 DB
차원에서 계획을 세워, 세부 관리를 할 수 있도록 해 주는 서비스이다.
예를 들어 주간에 batch 작업을 처리하더라도, OLTP 업무에는 지장을 주지 않아야
할 경우 batch 작업에 CPU 자원을 적게 할당해 주는 것이 바람직 하며, Resource
Manager를 활용하여 CPU 자원을 batch 작업과 OLTP 업무에 서로 다르게 할당해 줄
수 있다. ( Oracle 8.1.6 까지는 Resouurce Manager에서 CPU 자원에 대해서만
관리만 가능하다 )
1. 용어
1) Resource Consumer Group
사용자 session들의 집합. Resource에 대한 요구사항에 따라 나뉘어진 그룹.
2) Resource Plan
Consumer Group에 자원을 할당 해 주기 위한 resource plan directive들을
포함.
3) Resource Allocation Method
Resource Manager에서 자원을 할당해 주는 방법/정책.
4) Resource Plan Directive
Resource Plan에 대해 자원을 할당해 주는 세부 내역.
2. Resource Consumer Group
* 기본 group
[ 사용자가 삭제, 수정할 수 없는 group ]
OTHER_GROUPS : active plan schema에 속하지 않는 consumer group의 모든
session
DEFAULT_CONSUMER_GROUP : consumer group을 지정하지 않은 모든
session.(default)
[ 기본적으로 제공되나 사용자가 삭제하거나 변경할 수 있는 group ]
SYS_GROUP : SYSTEM_PLAN에 대한 high priority consumer group
SYSTEM, SYS user에 할당한다.
LOW_GROUP : SYSTEM_PLAN에 대한 low priority consumer group
3. Resource Plan
Consumer group에 속하는 session들은 해당 group에 대한 resource plan에
따라 자원 할당이 결정되며, 자원 할당에 대한 세부 사항은 resource plan에
대한 resource plan directive에서 지정된다.
Resource plan은 subplan을 둘 수 있다.
4. Resource Allocation Method
Round-robin Method : Consumer group 내에서 session들에 대한 CPU 할당
Emphasis Method : Consumer group에 할당되는 CPU
Absolute Method : Parallel degree 한계 ( 예 : Parallel Query에서의
degree )
5. Resource Plan Directive
Resource Plan Directive에 지정된 내용들은 resource plan에 따라
consumer group에 자원을 할당할 때 반영된다.
6. 구현 예제
MYDB PLAN +-> MAILDB PLAN +-> POSTMAN GROUP (40% Level 1)
| (30% Level 1) |
| +-> USERS GROUP (80% Level 2)
| |
| +-> MAILMAINT GROUP (20% Level 2)
| |
| +-> OTHER GROUP (100% Level 3)
|
+-> BUGDB PLAN +-> ONLINE GROUP (80% Level 1)
(70% Level 1) |
+-> BATCH GROUP (20% Level 1)
|
+-> BUGMAINT GROUP (100% Level 2)
|
+-> OTHER GROUP (100% Level 3)
위 예에서 MYDB PLAN에는 2개의 subplan ( MAILDB PLAN, BUGDB PLAN )이
있으며 각각 30%와 70%의 CPU 자원을 할당하였다.
Level 1, Level 2, Level 3 는 우선순위 레벨을 의미하며, 하나의
resource plan에서 동일한 level의 합이 100%를 넘지 못한다.
( Level 은 1부터 8까지 지정할 수 있으며 level 1이 가장 우선순위가
높으며 level 8이 가장 우선순위가 낮다 )
예를 들어 전체 CPU 자원의 70%를 할당 받은 BUGDB PLAN은 다시
ONLINE GROUP과 BATCH GROUP을 두고 있는데, 이 둘의 Level이 모두 1이며
두개의 percentage의 합이 100%이다. 하지만, 즉, level 1인 ONLINE GROUP
에 90%를 할당하였다면, level 1인 BATCH GROUP에는 10% 이상을 할당할 수
없다.
Example
* 구현을 위한 코드
BEGIN
/* PLAN schema 작업 영역 생성 */
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
/* BUGDB PLAN, MAILDB PLAN, MYDB PLAN 생성 */
DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'bugdb_plan',
COMMENT => 'Resource plan/method for bug users sessions');
DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'maildb_plan',
COMMENT => 'Resource plan/method for mail users sessions');
DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN => 'mydb_plan',
COMMENT => 'Resource plan/method for bug and mail users sessions');
/* CONSUMER GROUP 생성 */
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP =>
'Bug_Online_group', COMMENT => 'Resource consumer group/method for
online bug users sessions');
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP =>
'Bug_Batch_group', COMMENT => 'Resource consumer group/method for
bug users sessions who run batch jobs');
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP =>
'Bug_Maintenance_group', COMMENT => 'Resource consumer group/method
for users sessions who maintain the bug db');
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP =>
'Mail_users_group', COMMENT => 'Resource consumer group/method for
mail users sessions');
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP =>
'Mail_Postman_group', COMMENT => 'Resource consumer group/method for
mail postman');
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP =>
'Mail_Maintenance_group', COMMENT => 'Resource consumer group/method
for users sessions who maintain the mail db');
/* BUGDB PLAN에 대한 DIRECTIVE 생성 */
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan',
GROUP_OR_SUBPLAN => 'Bug_Online_group', COMMENT => 'online bug users
sessions at level 1', CPU_P1 => 80, CPU_P2=> 0,
PARALLEL_DEGREE_LIMIT_P1 => 8);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan',
GROUP_OR_SUBPLAN => 'Bug_Batch_group', COMMENT => 'batch bug users
sessions at level 1', CPU_P1 => 20, CPU_P2 => 0,
PARALLEL_DEGREE_LIMIT_P1 => 2);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan',
GROUP_OR_SUBPLAN => 'Bug_Maintenance_group',COMMENT => 'bug
maintenance users sessions at level 2', CPU_P1 => 0, CPU_P2 => 100,
PARALLEL_DEGREE_LIMIT_P1 => 3);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'bugdb_plan',
GROUP_OR_SUBPLAN => 'OTHER_GROUPS', COMMENT => 'all other users
sessions at level 3', CPU_P1 => 0, CPU_P2 => 0, CPU_P3 =>
100);
(참고) CPU_P1 : cpu allocation for level 1
/* MAILDB PLAN에 대한 DIRECTIVE 생성 */
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan',
GROUP_OR_SUBPLAN => 'Mail_Postman_group',COMMENT => 'mail postman at
level 1', CPU_P1 => 40, CPU_P2 => 0, PARALLEL_DEGREE_LIMIT_P1 => 4);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan',
GROUP_OR_SUBPLAN => 'Mail_users_group', COMMENT => 'mail users
sessions at level 2', CPU_P1 => 0, CPU_P2 => 80,
PARALLEL_DEGREE_LIMIT_P1 => 4);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan',
GROUP_OR_SUBPLAN => 'Mail_Maintenance_group',COMMENT => 'mail
maintenance users sessions at level 2', CPU_P1 => 0, CPU_P2 => 20,
PARALLEL_DEGREE_LIMIT_P1 => 2);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'maildb_plan',
GROUP_OR_SUBPLAN => 'OTHER_GROUPS', COMMENT => 'all other users
sessions at level 3', CPU_P1 => 0, CPU_P2 => 0, CPU_P3 =>
100);
/* MYDB PLAN에 대한 DIRECTIVE 생성 */
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'mydb_plan',
GROUP_OR_SUBPLAN => 'maildb_plan', COMMENT=> 'all mail users
sessions at level 1', CPU_P1 => 30);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(PLAN => 'mydb_plan',
GROUP_OR_SUBPLAN => 'bugdb_plan', COMMENT => 'all bug users sessions
at level 1', CPU_P1 => 70);
/* PLAN schema 작업 내용을 저장 */
DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
end;
7. CONSUMER GROUP에 사용자나 세션을 할당하는 방법
먼저 인스턴스에서 사용할 TOP Level resource plan 을 지정한다.
initSID.ora에 RESOURCE_MANAGER_PLAN = MRDB_PLAN 지정이나 아래와 같이
session level에 ALTER SYSTEM command를 사용하여 지정한다.
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = MYDB_PLAN;
그리고 SCOTT 계정에 BUG_ONLINE_GROUP과 BUB_BATCH_GROUP 에 속할 수 있는
권한을 부여
DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP ('SCOTT',
'BUG_ONLINE_GROUP', TRUE);
DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP ('SCOTT',
'BUG_BATCH_GROUP', TRUE);
* DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP( user in
varchar2, consumer_group in varchar2);
예)
DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP('SCOTT',
'BUG_ONLINE_GROUP');
SCOTT 계정을 BUG_BATCH_GROUP에 할당
* DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_SESS (
session_id IN NUMBER,
session_serial IN NUMBER,
consumer_group IN VARCHAR2);
예)
DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_SESS( 11, 2,
'BUG_ONLINE_GROUP');
* DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_USER (
user IN VARCHAR2,
consumer_group IN VARCHAR2);
예)
DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_USER('SCOTT',
'BUG_BATCH_GROUP');
8. 관련된 Dictionary
DBA_RSRC_PLANS : Resource plan과 status
DBA_RSRC_PLAN_DIRECTIVES : Resource plan directives와 status
DBA_RSRC_CONSUMER_GROUPS : Consumer group과 status
DBA_RSRC_CONSUMER_GROUP_PRIVS : 사용자에게 부여된 Consumer group
DBA_USERS : INITIAL_RSRC_CONSUMER_GROUP라는 새로운 column이 추가
V$SESSION : RESOURCE_CONSUMER_GROUP라는 새로운 column이 추가
V$RSRC_PLAN : 새로운 view로 active resource plan을 보여준다
V$RSRC_CONSUMER_GROUP : 새로운 view로 consumer group의 active session
을 보여준다.
Reference Ducumment
---------------------user1 is the schema present in DB1
user2 is the schema present in DB2. I just have a DB link
as below:
create database link link_to_DB2 connect to user2 identified by user2 using 'DB2';---Connects from user1 of DB1 to user2 of DB2.
Requirement is as below:
CPU for DB2 - 25%
Out of above 25%, CPU for user2 - 70%
CPU for user1 30% -- whenever it conncts using the link)
Please help me out. -
(V9I) ORACLE 9I NEW FEATURE : RESUMABLE SPACE ALLOCATION
제품 : ORACLE SERVER
작성날짜 : 2002-11-01
(V9I) ORACLE 9I New Feature : Resumable Space Allocation
=====================================================
PURPOSE
Oracle9i New Feature 인 Resumable Space Allocation 에 대해
알아보도록 한다.
Explanation
Resumable Space Allocation 은 다음과 같은 새로운 Space allocation
이 발생되어야 할 시점에 에러를 바로 발생하지 않고 어느정도의 Time 을 준뒤
Admin에게 이를 알림으로써 수행중인 Transaction rollback 되지 않고 계속적으로
진행할 수 있도록 하는 기능이다.
Query 수행시 다음과 같은 원인으로 에러가 발생하면서 query 수행이 중지된다.
1) Out of space condition
2) Maximum number of extents reached condision
3) Space quota exceeded condition
그러나 9I 에서 Resumable Space Allocation Operations을 설정하게 되면
alertSID.ora file에 suspend 되는 메세지와 함께 설정한 timeout 까지 hang 상태가
발생된다. 만약 timeout 초과시엔 에러가 발생하면서 transaction은 rollback 된다.
alertSID.ora 메세지예)
Wed Mar 14 11:14:17 2001
statement in resumable session 'User SCOTT(54), Session 9, Instance 1' was
suspended due to
ORA-01631: max # extents (5) reached in table SCOTT.TEST_RESUMABLE
Example
다음은 Resumable Space Allocation Operations 을 설정하기 위해서는 RESUMABLE 을
ENABLE 시키고 또는 DBMS_RESUMABLE package를 이용한다.
1) RESUMABLE system privilege 부여
SQL> connect system/manager
Connected.
SQL> grant resumable to scott;
Grant succeeded.
2) session level에서 RESUMABLE enable 시키기
SQL> alter session enable resumable;
Session altered.
This can be set automatically through an AFTER LOGON trigger.
SQL> create or replace trigger logon_set_resumable
2 after logon
3 on scott.schema
4 begin
5 execute immediate 'alter session enable resumable timeout 1200';
6 end;
7 /
Trigger created.
3) 생성한 TEST_RESUMABLE table 에 insert 작업
-> insert 시에 hang 현상 발생(transaction rollback은 이루어지지 않는다.)
-> alert.log에 suspend message 확인
-> 만약 설정한 timeout 초과시 에러 발생되면서 transaction rollback
a. Displaying the DBA_RESUMABLE view(DBA_RESUMABLE view에서 suspend 확인)
SQL> select user_id,SESSION_ID, STATUS, START_TIME, SUSPEND_TIME,
2 SQL_TEXT, ERROR_NUMBER, ERROR_MSG
3 from dba_resumable;
USER_ID SESSION_ID STATUS START_TIME SUSPEND_TIME
SQL_TEXT
ERROR_NUMBER
ERROR_MSG
54 9 SUSPENDED 03/14/01 10:49:25 03/14/01 11:14:17
insert into test_resumable select * from test_resumable
1631
ORA-01631: max # extents (5) reached in table SCOTT.TEST_RESUMABLE
b. In alert.log file(alert.log에서 message 확인)
Wed Mar 14 11:14:17 2001
statement in resumable session 'User SCOTT(54), Session 9, Instance 1' was
suspended due to
ORA-01631: max # extents (5) reached in table SCOTT.TEST_RESUMABLE
c. The statement may issue the following error when the timeout set for the
session has expired(timeout 초과시 transaction rollback 되면서 에러 발생)
SQL> insert into test_resumable values (1);
insert into test_resumable values (1)
ERROR at line 1:
ORA-30032: the suspended (resumable) statement has timed out
ORA-01536: space quota exceeded for tablespace 'EXAMPLE'
4) The DBA now knows why the session hangs, and needs to find which action to
take to alleviate the ora-1631 error(DBA는 timeout 이 발생하기 전에 에러 발생)
SQL> connect system/manager
Connected.
SQL> alter table scott.test_resumable storage (maxextents 8);
Table altered.
SQL> select user_id,SESSION_ID, STATUS, START_TIME, RESUME_TIME,
2 SQL_TEXT, ERROR_NUMBER, ERROR_MSG
3 from dba_resumable;
USER_ID SESSION_ID STATUS START_TIME RESUME_TIME
SQL_TEXT
ERROR_NUMBER
ERROR_MSG
54 9 NORMAL 03/14/01 10:49:25 03/14/01 11:24:02
insert into test_resumable select * from test_resumable
0
5) If the session does not need to be in resumable state, the session can
disable the resumable state(더이상 resumable 기능 사용하지 않을 경우 disable 시키기)
SQL> alter session disable resumable;
Session altered.
SQL> select user_id,SESSION_ID, STATUS, START_TIME, RESUME_TIME,
2 SQL_TEXT, ERROR_NUMBER, ERROR_MSG
3 from dba_resumable;
no rows selected
Reference Document
Note. 136941.1 Using RESUMABLE Session to Avoid Transaction Abort Due to Space Errors제품 : ORACLE SERVER
작성날짜 : 2002-11-01
(V9I) ORACLE 9I New Feature : Resumable Space Allocation
=====================================================
PURPOSE
Oracle9i New Feature 인 Resumable Space Allocation 에 대해
알아보도록 한다.
Explanation
Resumable Space Allocation 은 다음과 같은 새로운 Space allocation
이 발생되어야 할 시점에 에러를 바로 발생하지 않고 어느정도의 Time 을 준뒤
Admin에게 이를 알림으로써 수행중인 Transaction rollback 되지 않고 계속적으로
진행할 수 있도록 하는 기능이다.
Query 수행시 다음과 같은 원인으로 에러가 발생하면서 query 수행이 중지된다.
1) Out of space condition
2) Maximum number of extents reached condision
3) Space quota exceeded condition
그러나 9I 에서 Resumable Space Allocation Operations을 설정하게 되면
alertSID.ora file에 suspend 되는 메세지와 함께 설정한 timeout 까지 hang 상태가
발생된다. 만약 timeout 초과시엔 에러가 발생하면서 transaction은 rollback 된다.
alertSID.ora 메세지예)
Wed Mar 14 11:14:17 2001
statement in resumable session 'User SCOTT(54), Session 9, Instance 1' was
suspended due to
ORA-01631: max # extents (5) reached in table SCOTT.TEST_RESUMABLE
Example
다음은 Resumable Space Allocation Operations 을 설정하기 위해서는 RESUMABLE 을
ENABLE 시키고 또는 DBMS_RESUMABLE package를 이용한다.
1) RESUMABLE system privilege 부여
SQL> connect system/manager
Connected.
SQL> grant resumable to scott;
Grant succeeded.
2) session level에서 RESUMABLE enable 시키기
SQL> alter session enable resumable;
Session altered.
This can be set automatically through an AFTER LOGON trigger.
SQL> create or replace trigger logon_set_resumable
2 after logon
3 on scott.schema
4 begin
5 execute immediate 'alter session enable resumable timeout 1200';
6 end;
7 /
Trigger created.
3) 생성한 TEST_RESUMABLE table 에 insert 작업
-> insert 시에 hang 현상 발생(transaction rollback은 이루어지지 않는다.)
-> alert.log에 suspend message 확인
-> 만약 설정한 timeout 초과시 에러 발생되면서 transaction rollback
a. Displaying the DBA_RESUMABLE view(DBA_RESUMABLE view에서 suspend 확인)
SQL> select user_id,SESSION_ID, STATUS, START_TIME, SUSPEND_TIME,
2 SQL_TEXT, ERROR_NUMBER, ERROR_MSG
3 from dba_resumable;
USER_ID SESSION_ID STATUS START_TIME SUSPEND_TIME
SQL_TEXT
ERROR_NUMBER
ERROR_MSG
54 9 SUSPENDED 03/14/01 10:49:25 03/14/01 11:14:17
insert into test_resumable select * from test_resumable
1631
ORA-01631: max # extents (5) reached in table SCOTT.TEST_RESUMABLE
b. In alert.log file(alert.log에서 message 확인)
Wed Mar 14 11:14:17 2001
statement in resumable session 'User SCOTT(54), Session 9, Instance 1' was
suspended due to
ORA-01631: max # extents (5) reached in table SCOTT.TEST_RESUMABLE
c. The statement may issue the following error when the timeout set for the
session has expired(timeout 초과시 transaction rollback 되면서 에러 발생)
SQL> insert into test_resumable values (1);
insert into test_resumable values (1)
ERROR at line 1:
ORA-30032: the suspended (resumable) statement has timed out
ORA-01536: space quota exceeded for tablespace 'EXAMPLE'
4) The DBA now knows why the session hangs, and needs to find which action to
take to alleviate the ora-1631 error(DBA는 timeout 이 발생하기 전에 에러 발생)
SQL> connect system/manager
Connected.
SQL> alter table scott.test_resumable storage (maxextents 8);
Table altered.
SQL> select user_id,SESSION_ID, STATUS, START_TIME, RESUME_TIME,
2 SQL_TEXT, ERROR_NUMBER, ERROR_MSG
3 from dba_resumable;
USER_ID SESSION_ID STATUS START_TIME RESUME_TIME
SQL_TEXT
ERROR_NUMBER
ERROR_MSG
54 9 NORMAL 03/14/01 10:49:25 03/14/01 11:24:02
insert into test_resumable select * from test_resumable
0
5) If the session does not need to be in resumable state, the session can
disable the resumable state(더이상 resumable 기능 사용하지 않을 경우 disable 시키기)
SQL> alter session disable resumable;
Session altered.
SQL> select user_id,SESSION_ID, STATUS, START_TIME, RESUME_TIME,
2 SQL_TEXT, ERROR_NUMBER, ERROR_MSG
3 from dba_resumable;
no rows selected
Reference Document
Note. 136941.1 Using RESUMABLE Session to Avoid Transaction Abort Due to Space Errors -
1Z0-050 Oracle 11g New Features for Administrators
Which release are the exam 1Z0-050 - Oracle 11g New Features for Administrators, release 1 or release 2?
I need to study Oracle University Material Release 1 or Release 2?Hi,
I have a question too.
I am 10g certified and looking to take the 11g New Features For Administrators course in the new year.
Previously when I certifed from 8i to 9i and then to 10g it was only required to take the exam and the course was optional although my company sends me anyway.
Looking on Oracles website it seems to be that to do the 11g New Features you now have also have to attend another instructor led course. I have posted a link.
http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getlppage?page_id=212&path=DBAU
Can someone confirm if this is the case and that Oracle have changed the format of the New Features upgrade path,
cheers -
I am unable to locate "Oracle 11g & 10g new features by Arup Nanda" at Oracle's website
Do you mean
http://www.oracle.com/technetwork/articles/sql/11g-asm-083478.html
http://www.oracle.com/technetwork/articles/sql/11g-security-100258.html
http://www.oracle.com/technetwork/articles/sql/11g-manage-101028.html
Edited by: Chinar on Sep 21, 2010 10:38 PM
Maybe you are looking for
-
How can I change the size of Dictionary.app panel?
Hi! I love quickly looking up words while working in applications such as Safar, Pages or Mail. I go to Dictionary's preferences and set the Context Menu option Dictionary.app - Open Dictionary panel. But the size of the window pane is very small. In
-
Hi Made down payment to vendor - TDS is deducted Made MIRO - TDS is deducted on entire bill once again Made clear down payment - (Debit to TDS payble account) Trying to make TDS payment to government through Remit challan (Net off TDS on entire bill
-
Game animation...
I'm kinda new to java, but not new to programming... I want to get a particular character to walk or do anything, meaning i want to use several images for a characters actions, im thinking of gif files, as they are the closest to small image files. A
-
Placement of 2 background images
I want a background image for the body of my site like the one used here; https://www.fortnumandmason.com/ The image they used is here; https://www.fortnumandmason.com/Common/images/Global/bodyBkg015.jpg They have used a big image, 100k i think. This
-
Ejecting ipod after photo update
I have 2 questions: 1: Everytime I update new photos, my old ones dissapear. How do i keep the old ones and get the new ones? and 2: after i update my photos and itunes says the ipod is ready to eject, i click eject but a message appears saying that