Oracle VM missing features disscussion.

I work in shop where we have 13 blades running VMware 5.1 and 7 blades running Oracle VM 3.2.6 because of this I have become very familiar with both products. While I think Oracle VM is a wonderful product; it is sadly missing key features that would make it a real replacement for VMware in our I.T. shop.
The 3 top features I think it is missing are:
Live Storage Migration similar to VMware vStorage Motion.
Live Snapshot and Cloning of Virtual Machines.
Integrated Disaster Recover Site Management and failover capabilities, similar to VMware SRM.
I am curious to see what others think are missing features that Oracle VM could benefit from.

If you don't have libaio on your o/s CD, you can get it from rpmfind.net. It's a prerequisite for Oracle Database XE, which is used as part of Oracle VM Manager. When you've got the rpm, follow the instructions from the Oracle VM Manager Installation Guide (I love copy/paste, don't you?)
The libaio.rpm File
Ensure that the libaio.rpm package is installed. You can find libaio.rpm from the
ISO packages of Oracle Enterprise Linux. The libaio version varies depending on the
Oracle Enterprise Linux version. For Oracle Enterprise Linux 4 Update 5, the libaio
version is libaio-0.3.105-2.
1. Before installing libaio.rpm, check if it is already installed. To determine if
libaio.rpm is already installed, enter the following command:
# /bin/rpm -q libaio.i386
This command will display the existing libaio.rpm version. For example:
libaio-0.3.106-3.2
If no information is displayed, then you need to install libaio.rpm.
2. Go to the directory where libaio.rpm is located, and enter the following
command:
# rpm -ivh libaio-0.3.105-2.i386.rpm
Alison

Similar Messages

  • Missing Features in 3.0 - I second that - Where to post?

    Hi,
    Some of the 3.0 missing features suggestions that are being posted are just brilliant, like Patricks On-Error pl/sql code. I would like to second that, but where should I post it? If I make a post in the feedback application things will be a bit messy.
    We should have something like the Feature Request they have for SQL Developer. Check: http://htmldb.oracle.com/pls/otn/f?p=42626:37:1696515673997019::NO:::
    Regards Pete

    Hello,
    Why do you think it would get messy?
    Anyway one way or the other that's the place to put it, that's why it called the feedback application and you know all about it. That's where we are checking and that's where we expect these things to show up.
    Regards,
    Carl

  • List of missing features in CC 2014 for film editors

    hello everyone,
    I was thinking about some features I miss in CC 2014 (and I really was hoping they will be there, because the most of them are just basics...) and made a list which I want to send (again...) to Adobe as feature request. Premiere improved a lot in last years, but there are still some basic functions which you absolutely need as a professional editor, which still aren`t implemented. What do you think about the list? or maybe did I overlook some of the new features in CC 2014? Just so you know, I`m using Premiere mostly for editing movies (shorts, but will edit my first feature film this year), also promotional films, but much more less. So my biggest concern right now is if Premiere is the right choice for editing a feature, which of course means a lot of material, probably Red Raw.
    so here`s what I totally miss in Premiere:
    1. auto sync/auto merge: synching by timecode or waveform all of the video and audio clips in the bin/in the timeline at once and not one after another. and merging them all at once, not one after another. it works of course, but it takes ages!
    2. merged clips should be more flexible,
    - it should be possible to use the option "interpret footage" on merged clips, sometimes you have to modify them after they were merged and you`re already editing for a long time.
    - replacing raw footage should also replace the footage in the (already merged and edited in a timeline) merged clips
    3. the aaf export is much too simple, there are a lot of options I miss there. it is great solve in Avid and in automatic duck in Final Cut, something like that would be great
    4. the possibility to change color space in the project and play out. yes, this option is available in After Effects, but you can`t always use it, because there is some footage you can`t import in AE (like titles!)
    5. .. which leads me to the last point: it should be possible to export the titles from Premiere with an alpha channel (I`m using the titles as the subtitles)
    bugs that need to be fix:
    - audio dropouts!
    Are there any feature films editors here? what is your experience with working on big projects on premiere?

    Since I don't know how to edit my own posts . . .
    Another missing feature, automatically filling in formulas when a new row is created. For instance, say you have 3 columns, 1 + 2 = 3. In Office 2004, when I add a new row, that formula is automatically inserted. It's just one of those nice little time saving features that would be nice.

  • Where are the many missing features in Numbers found?

    The more that I use Numbers the less likely that I will ever go through the motions of trying to get Numbers to do enough of the things that have to be done in order for my income tax program to work. Like in another post I have some of my smaller tax forms to say that they are too big to be imported. There seems to be too many missing features to do a useful job.
    This leaves trying to use Numbers to handle new small, small, small spreadsheets. At the present times I have little problem setting up a format for a cell providing the formatting is available. In Excel the easiest way to copy a format to a new cell is to use format painter. Many time copy/paste will work. But copy/paste will move the formula also. I have not been able to find a way to do this with Numbers.
    So far the sliders feature is the one feature that interests me enough to try to use Numbers in the real work handling portion of my business. Many things I want to do either I can't find out how to do them or there are too many added keystrokes needed compared to Excel to make me want to do a spreadsheet in Numbers.
    Since the majority of my spreadsheets do not use a header row or header column I have to get that turned off. Tax sheets have a lot of blank spaces to start things out & normally will be different than the next sheet.
    I used a lot of cell/range names as well as individual cells. I use 450+ cell names in my main Form 1040, A,B,D,NE,IA page. That still leaves me needing to know the row/column designation most of the time. I cannot find where that information is displayed in Numbers.
    I keep looking, but generally do not find the needed feature that I need. Many like the cell designation is so basic. Being able to use the arrow keys to move to a cell for inclusion in a formula is another one that I am unable to do. Using the help files do not come close to answering any question that I have with Numbers. Where is the Numbers, "Missing Manual?" I need what I don't have & may not be made at the current time.
    Like Pages 1.0, Numbers 1.0 doesn’t seem ready for prime time use. There are too many missing features be a very complete spreadsheet. Some I probably can’t find, some probably are not there.
    I need help.
    Bill the TaxMan

    HolgerA,
    Page Headers and Footers are gone, but are returning, according to a recent KB article:
    Exerpt...
    Some features in upcoming releases in the next 6 months
    Pages
    Customize toolbar
    Vertical ruler
    Improved alignment guides
    Improved object placement
    Import of cells with images
    Improved word counts
    Keyboard shortcuts for styles
    Manage pages and sections from the thumbnail view
    Numbers
    Customize toolbar
    Improvements to zoom and window placement
    Multi-column and range sort
    Auto-complete text in cells
    Page headers and footers
    Improvements to AppleScript support
    Keynote
    Customize toolbar
    Restoring old transitions and builds
    Improvements to presenter display
    Improvements to AppleScript support
    In the meanwhile, you can continue to use these features by accessing the previous versions of the iWork applications which remain installed on your Mac. The previous versions can be found in Applications > iWork ’09.Reverting documents created in the new iWork for Mac applications to the previous version’s file formatNew or existing documents you open in the new versions of Pages, Numbers, and Keynote use the new unified file format. These files can’t be opened in the previous versions of the iWork applications. To revert the document file format to the previous version, you can do one of the following:
    Documents that you haven't edited can be reverted to the iWork ’09 version by selecting File > Revert To.
    If you have edited the document and want to preserve the edits, you can save it as an iWork ’09 document by selecting File > Export To, then choosing Pages ’09, Numbers ’09, or Keynote ’09.
    Jerry

  • 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.

  • MULTIPLE ARCHIVER PROCESSES FAQ ( ORACLE 8I NEW FEATURE )

    제품 : ORACLE SERVER
    작성날짜 : 2002-04-19
    MULTIPLE ARCHIVER PROCESSES FAQ ( ORACLE 8I NEW FEATURE )
    =========================================================
    PURPOSE
    1. LOG_ARCHIVE_MAX_PROCESSES가 하는 역할
    2. LOG_ARCHIVE_MAX_PROCESSES 값은 동적으로 변경 가능한지 여부
    3. Archiver process의 갯수가 동적으로 바뀌는 메카니즘
    4. 어떤 archiver process가 online log를 archive시켰는지 판단 방법
    Explanation
    1. LOG_ARCHIVE_MAX_PROCESSES가 하는 역할
    Oracle 8i에는 다중 archive destination을 지원하며, 단일 archiver의
    부하를 줄여주기 위해 multiple archiver process를 사용할 수 있다.
    LOG_ARCHIVE_MAX_PROCESSES 파라미터로 구동시킬 최대 ARCH 프로세스의
    갯수를 지정하면 된다.
    만약 LOG_ARCHIVE_START 값이 TRUE로 지정되어 있다면 인스턴스 구동시
    init 파일에 지정된 LOG_ARCHIVE_MAX_PROCESSES에 지정된 값을 읽어
    들인다. 만약 LOG_ARCHIVE_START 값이 true인데 LOG_ARCHIVE_MAX_PROCESSES
    값이 별도로 지정되어 있지 않을 경우에는 arc0 프로세스만을 구동시킨다.
    LOG_ARCHIVE_MAX_PROCESSES 값이 별도로 지정되었을 경우 (1 - 10 범위),
    arc0, arc1 과 같은 추가 프로세스를 구동시킨다.
    하지만, 이 파라미터 값을 기본값 1이 아닌 다른 값으로 명시적으로 지정할
    필요는 없다. 왜냐하면, 시스템에서 몇개의 ARCn 프로세스가
    필요한지를 판단하여, 추가 ARCn 프로세스를 생성하기 때문이다.
    2. LOG_ARCHIVE_MAX_PROCESSES 값은 동적으로 변경 가능한지 여부
    alter system 명령에서 set LOG_ARCHIVE_MAX_PROCESSES=n 으로
    지정하여 동적으로 값을 변경할 수 있다. 이때 n은 1 부터 10사이의
    값이어야 한다. 하지만, LOG_ARCHIVE_START 값이 FALSE로 지정되어
    있을 경우에는, 명령을 실행시켜도 아무런 영향을 미치지
    못한다.
    3. Archiver process의 갯수가 동적으로 바뀌는 메카니즘
    만약 LOG_ARCHIVE_START 값이 TRUE로 지정되어 있다면, 오라클에서는
    구동시 하나의 archiver process (ARC0)를 구동시킨다. 이 파라미터
    값은 필요시 LATER SYSTEM 명령으로 지정된 갯수만큼의
    archive process를 구동시킬 수 있다.
    예)
    SVRMGRL>alter system set LOG_ARCHIVE_MAX_PROCESSES=4;
    위 명령을 실행 시키면 다음과 같은 절차에 따라 ARC1, ARC2, ARC3를
    추가한다.
    1) Shadow process는 primary archive process에게 프로세스 갯수를
    늘릴 것을 요청한다.
    2) Archiver process는 kcrrschd 함수를 호출한다. (kcrrschd:
    다중 arch process를 schedule)
    3) 만약 요청된 process의 갯수가 현재 사용중인 archiver process
    갯수보다 작은지 확인한다. 만약 새로 지정된 값이 적거나, ARCHIVING이
    DISABLE 된 상태라면 다른 조치를 취하지 않고 return 한다. 그렇지
    않다면 지원되는 최대 갯수인 10을 넘는지 확인하고 10을 넘을 경우에는
    프로세스의 갯수를 10으로 지정한다.
    4) Scheduler 함수는 kcrxs{} structure에 대한 latch를 확보한다.
    여기서 kcrxs{} structure는 ARCH Activation status를 나타낸다.
    5) Scheduler 함수는 지정된 process 갯수 만큼 loop를 돌면서
    schedule된 상태를 structure KCRRSCHED에 반영시킨다.
    6) 그리고 나서 latch를 release 시킨 후 kcrrsmp 함수를 ( kcrrsmp:
    다중 arch processs 구동 ) 호출한다.
    7) kcrrsmp 함수는 kcrrxs{} structure (ARCH 구동 상태)에 대한 latch를
    확보하여 code 실행을 serialize 시켜 이 함수가 동시에 실행되더라도
    한번에 하나씩 실행될 수 있도록 한다.
    8) pending 상태에 있는 archiver process를 스케쥴링 하고, dead process가
    있으면 clean up 시킨다.
    9) 그리고 나서 이 함수는 지정된 process 갯수 만큼 loop를 돌면서
    KCRRSCHED 상태를 KCRRSTART으로 바꾸어, archiver process들을
    구동 준비 상태로 만든다.
    10) latch를 release 시킨 후 ARCH 프로세스를 구동시킨다.
    11) kcrrsmp함수는 latch를 다시 획득한다. 각각의 archiver 프로세스는
    자기 자신을 activate 시킬 것을 통보 받는다. archiver process는
    자기 자신을 activate 시킨 후 alert file에 관련 사항을 기록한다.
    12) 호출을 하는 함수는 모든 archiver process가 자기 자신을
    activate 시키고, kcrrxs structure의 내용을 갱신할 때 까지
    sleep 상태에서 대기한다.
    13) 끝으로, 현재 archiver process의 갯수가 요청된 archiver process
    의 갯수와 일치 하면, latch를 release 시키고 break 한다. ( C
    에서의 break )
    alert. log 에는 위 과정이 다음과 같이 반영된다.
    sql: prodding the archiver
    ALTER SYSTEM SET log_archive_max_processes=4;
    Tue Jul 13 02:15:14 1999
    ARC0: changing ARC1 KCRRNOARCH->KCRRSCHED
    ARC0: changing ARC2 KCRRNOARCH->KCRRSCHED
    ARC0: changing ARC3 KCRRNOARCH->KCRRSCHED
    ARC0: STARTING ARCH PROCESSES
    ARC0: changing ARC1 KCRRSCHED->KCRRSTART
    ARC0: changing ARC2 KCRRSCHED->KCRRSTART
    ARC0: changing ARC3 KCRRSCHED->KCRRSTART
    ARC0: invoking ARC1
    Tue Jul 13 02:15:15 1999
    ARC1: changing ARC1 KCRRSTART->KCRRACTIVE
    Tue Jul 13 02:15:15 1999
    ARC0: Initializing ARC1
    ARC0: ARC1 invoked
    ARC0: invoking ARC2
    ARC1 started with pid=10
    ARC1: Archival started
    Tue Jul 13 02:15:15 1999
    ARC2: changing ARC2 KCRRSTART->KCRRACTIVE
    Tue Jul 13 02:15:15 1999
    ARC0: Initializing ARC2
    ARC2 와 ARC3도 동일한 절차를 따른다.
    흥미로운 사실은 프로세스의 갯수를 줄일 수도 있다는 것이다. 예를 들어
    다음과 같은 명령을 실행시킬 경우
    SVRMGRL>alter system set LOG_ARCHIVE_MAX_PROCESSES=2;
    다음과 같은 작업이 순서대로 실행된다.
    1) shadow process는 현재 active 상태인 archiver process와 접속을 한다.
    2) archiverprocess는 kcrrxmp 함수를 호출한다. ( kcrrxmp: 다중
    Arch process 정지 )
    3) kcrrxmp 함수는 kcrrxs{} structure에 (ARCH 구동 상태) 대한 latch를 획득하여 다른 프로세스에서 structure를 동시에 병경하지 않도록 한다.
    4) 새로 요청된 archiver process의 갯수가 현재 사용중인 archiver process
    의 갯수보다 작은지 확인한다.
    5) 만약 작다면, archiver process 목록 가운데, 가장 최근에 schedule
    되어, archival 작업에 schedule 차례가 금방 돌아 오지 않을 프로세스를
    찾아낸다.
    6) 각각의 프로세스에 대해 KCRRACTIVE 상태에서 KCRRSHUTDN로 상태를
    변경할 것을 요청한다.
    7) 상태가 바뀌면, OS에서 해당 프로세스를 종료시키도록 하고, 상태를
    KCRRDEAD로 바꾼다. 관련된 상태 정보가 정리되고 kcrrxs{} structure의
    내용이 갱신된다.
    6) ,7) 과정은 지정된 archiver process 갯수로 줄어들 때 까지
    반복된다.
    8) 새로운 archiver process의 갯수로 kcrrxs structure 내용이 갱신된다.
    9) latch를 release 시킨다.
    상태 변동은 다음과 같이 alert. log 파일에 반영된다.
    sql: prodding the archiver
    Tue Jul 13 00:34:20 1999
    ARC3: changing ARC0 KCRRACTIVE->KCRRSHUTDN
    ARC3: sending ARC0 shutdown message
    ARC3: changing ARC1 KCRRACTIVE->KCRRSHUTDN
    ARC3: sending ARC1 shutdown message
    ARC3: received prod
    Tue Jul 13 00:34:20 1999
    ALTER SYSTEM SET log_archive_max_processes=2;
    Tue Jul 13 00:34:20 1999
    ARCH shutting down
    ARC0: Archival stopped
    ARC0: changing ARC0 KCRRSHUTDN->KCRRDEAD
    Tue Jul 13 00:34:20 1999
    ARCH shutting down
    ARC1: Archival stopped
    ARC1: changing ARC1 KCRRSHUTDN->KCRRDEAD
    4. 어떤 archiver process가 online log를 archive시켰는지 판단 방법
    Archiver process는 round-robin 방식으로 archiving 작업을 수행하도록
    schedule 된다. 만약 다중 archiver process가 부하에 따라 activate 된
    경우는 여러가지 경우의 수가 있을 수 있다. Oracle 8i에서는 다중
    archive log dest를 지원하면서 archive log에 대한 duplexing을 지원
    하기 때문에, 어떤프로세스가 log file을 archive 시켰는지를 기록할 필요가
    있다.
    Oracle 8i에서 archival 작업은 성공할 때 마다 trace file에 archiver
    process 명을 기록한다.
    다음은 관련 trace file의 주요 내용이다.
    Instance name: v815
    Redo thread mounted by this instance: 1
    Oracle process number: 12
    Unix process pid: 3658, image: oracle@oracle8i (ARC3)
    *** Session ID:(12. 1) 1999. 07. 13. 02. 15. 15. 000
    *** 1999. 07. 13. 02. 15. 15. 000
    *** 1999. 07. 13. 02. 33. 06. 000
    ARC3: Begin archiving log# 1 seq# 38 thrd# 1
    ARC3: VALIDATE
    ARC3: PREPARE
    ARC3: INITIALIZE
    ARC3: SPOOL
    ARC3: Creating archive destination 1 : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: Archiving block 1 count 1 to : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: Closing archive destination 1 : /bigdisk/oracle8i/dbs/arch/1_38.
    dbf
    ARC3: FINISH
    ARC3: Archival success destination 1 : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: COMPLETE, all destinations archived
    ARC3: ArchivedLog entry added: /bigdisk/oracle8i/dbs/arch/1_38. dbf
    ARC3: ARCHIVED
    *** 1999. 07. 13. 02. 33. 06. 000
    ARC3: Completed archiving log# 1 seq# 38 thrd# 1
    이 정보를 가지고, archive process 3이 log sequence 38번을
    destination 1 :/bigdisk/oracle8i/dbs/arch 에 archive 시킨 것을 알 수 있다.
    Reference Ducumment
    <Note:73163.1>

    제품 : ORACLE SERVER
    작성날짜 : 2002-04-19
    MULTIPLE ARCHIVER PROCESSES FAQ ( ORACLE 8I NEW FEATURE )
    =========================================================
    PURPOSE
    1. LOG_ARCHIVE_MAX_PROCESSES가 하는 역할
    2. LOG_ARCHIVE_MAX_PROCESSES 값은 동적으로 변경 가능한지 여부
    3. Archiver process의 갯수가 동적으로 바뀌는 메카니즘
    4. 어떤 archiver process가 online log를 archive시켰는지 판단 방법
    Explanation
    1. LOG_ARCHIVE_MAX_PROCESSES가 하는 역할
    Oracle 8i에는 다중 archive destination을 지원하며, 단일 archiver의
    부하를 줄여주기 위해 multiple archiver process를 사용할 수 있다.
    LOG_ARCHIVE_MAX_PROCESSES 파라미터로 구동시킬 최대 ARCH 프로세스의
    갯수를 지정하면 된다.
    만약 LOG_ARCHIVE_START 값이 TRUE로 지정되어 있다면 인스턴스 구동시
    init 파일에 지정된 LOG_ARCHIVE_MAX_PROCESSES에 지정된 값을 읽어
    들인다. 만약 LOG_ARCHIVE_START 값이 true인데 LOG_ARCHIVE_MAX_PROCESSES
    값이 별도로 지정되어 있지 않을 경우에는 arc0 프로세스만을 구동시킨다.
    LOG_ARCHIVE_MAX_PROCESSES 값이 별도로 지정되었을 경우 (1 - 10 범위),
    arc0, arc1 과 같은 추가 프로세스를 구동시킨다.
    하지만, 이 파라미터 값을 기본값 1이 아닌 다른 값으로 명시적으로 지정할
    필요는 없다. 왜냐하면, 시스템에서 몇개의 ARCn 프로세스가
    필요한지를 판단하여, 추가 ARCn 프로세스를 생성하기 때문이다.
    2. LOG_ARCHIVE_MAX_PROCESSES 값은 동적으로 변경 가능한지 여부
    alter system 명령에서 set LOG_ARCHIVE_MAX_PROCESSES=n 으로
    지정하여 동적으로 값을 변경할 수 있다. 이때 n은 1 부터 10사이의
    값이어야 한다. 하지만, LOG_ARCHIVE_START 값이 FALSE로 지정되어
    있을 경우에는, 명령을 실행시켜도 아무런 영향을 미치지
    못한다.
    3. Archiver process의 갯수가 동적으로 바뀌는 메카니즘
    만약 LOG_ARCHIVE_START 값이 TRUE로 지정되어 있다면, 오라클에서는
    구동시 하나의 archiver process (ARC0)를 구동시킨다. 이 파라미터
    값은 필요시 LATER SYSTEM 명령으로 지정된 갯수만큼의
    archive process를 구동시킬 수 있다.
    예)
    SVRMGRL>alter system set LOG_ARCHIVE_MAX_PROCESSES=4;
    위 명령을 실행 시키면 다음과 같은 절차에 따라 ARC1, ARC2, ARC3를
    추가한다.
    1) Shadow process는 primary archive process에게 프로세스 갯수를
    늘릴 것을 요청한다.
    2) Archiver process는 kcrrschd 함수를 호출한다. (kcrrschd:
    다중 arch process를 schedule)
    3) 만약 요청된 process의 갯수가 현재 사용중인 archiver process
    갯수보다 작은지 확인한다. 만약 새로 지정된 값이 적거나, ARCHIVING이
    DISABLE 된 상태라면 다른 조치를 취하지 않고 return 한다. 그렇지
    않다면 지원되는 최대 갯수인 10을 넘는지 확인하고 10을 넘을 경우에는
    프로세스의 갯수를 10으로 지정한다.
    4) Scheduler 함수는 kcrxs{} structure에 대한 latch를 확보한다.
    여기서 kcrxs{} structure는 ARCH Activation status를 나타낸다.
    5) Scheduler 함수는 지정된 process 갯수 만큼 loop를 돌면서
    schedule된 상태를 structure KCRRSCHED에 반영시킨다.
    6) 그리고 나서 latch를 release 시킨 후 kcrrsmp 함수를 ( kcrrsmp:
    다중 arch processs 구동 ) 호출한다.
    7) kcrrsmp 함수는 kcrrxs{} structure (ARCH 구동 상태)에 대한 latch를
    확보하여 code 실행을 serialize 시켜 이 함수가 동시에 실행되더라도
    한번에 하나씩 실행될 수 있도록 한다.
    8) pending 상태에 있는 archiver process를 스케쥴링 하고, dead process가
    있으면 clean up 시킨다.
    9) 그리고 나서 이 함수는 지정된 process 갯수 만큼 loop를 돌면서
    KCRRSCHED 상태를 KCRRSTART으로 바꾸어, archiver process들을
    구동 준비 상태로 만든다.
    10) latch를 release 시킨 후 ARCH 프로세스를 구동시킨다.
    11) kcrrsmp함수는 latch를 다시 획득한다. 각각의 archiver 프로세스는
    자기 자신을 activate 시킬 것을 통보 받는다. archiver process는
    자기 자신을 activate 시킨 후 alert file에 관련 사항을 기록한다.
    12) 호출을 하는 함수는 모든 archiver process가 자기 자신을
    activate 시키고, kcrrxs structure의 내용을 갱신할 때 까지
    sleep 상태에서 대기한다.
    13) 끝으로, 현재 archiver process의 갯수가 요청된 archiver process
    의 갯수와 일치 하면, latch를 release 시키고 break 한다. ( C
    에서의 break )
    alert. log 에는 위 과정이 다음과 같이 반영된다.
    sql: prodding the archiver
    ALTER SYSTEM SET log_archive_max_processes=4;
    Tue Jul 13 02:15:14 1999
    ARC0: changing ARC1 KCRRNOARCH->KCRRSCHED
    ARC0: changing ARC2 KCRRNOARCH->KCRRSCHED
    ARC0: changing ARC3 KCRRNOARCH->KCRRSCHED
    ARC0: STARTING ARCH PROCESSES
    ARC0: changing ARC1 KCRRSCHED->KCRRSTART
    ARC0: changing ARC2 KCRRSCHED->KCRRSTART
    ARC0: changing ARC3 KCRRSCHED->KCRRSTART
    ARC0: invoking ARC1
    Tue Jul 13 02:15:15 1999
    ARC1: changing ARC1 KCRRSTART->KCRRACTIVE
    Tue Jul 13 02:15:15 1999
    ARC0: Initializing ARC1
    ARC0: ARC1 invoked
    ARC0: invoking ARC2
    ARC1 started with pid=10
    ARC1: Archival started
    Tue Jul 13 02:15:15 1999
    ARC2: changing ARC2 KCRRSTART->KCRRACTIVE
    Tue Jul 13 02:15:15 1999
    ARC0: Initializing ARC2
    ARC2 와 ARC3도 동일한 절차를 따른다.
    흥미로운 사실은 프로세스의 갯수를 줄일 수도 있다는 것이다. 예를 들어
    다음과 같은 명령을 실행시킬 경우
    SVRMGRL>alter system set LOG_ARCHIVE_MAX_PROCESSES=2;
    다음과 같은 작업이 순서대로 실행된다.
    1) shadow process는 현재 active 상태인 archiver process와 접속을 한다.
    2) archiverprocess는 kcrrxmp 함수를 호출한다. ( kcrrxmp: 다중
    Arch process 정지 )
    3) kcrrxmp 함수는 kcrrxs{} structure에 (ARCH 구동 상태) 대한 latch를 획득하여 다른 프로세스에서 structure를 동시에 병경하지 않도록 한다.
    4) 새로 요청된 archiver process의 갯수가 현재 사용중인 archiver process
    의 갯수보다 작은지 확인한다.
    5) 만약 작다면, archiver process 목록 가운데, 가장 최근에 schedule
    되어, archival 작업에 schedule 차례가 금방 돌아 오지 않을 프로세스를
    찾아낸다.
    6) 각각의 프로세스에 대해 KCRRACTIVE 상태에서 KCRRSHUTDN로 상태를
    변경할 것을 요청한다.
    7) 상태가 바뀌면, OS에서 해당 프로세스를 종료시키도록 하고, 상태를
    KCRRDEAD로 바꾼다. 관련된 상태 정보가 정리되고 kcrrxs{} structure의
    내용이 갱신된다.
    6) ,7) 과정은 지정된 archiver process 갯수로 줄어들 때 까지
    반복된다.
    8) 새로운 archiver process의 갯수로 kcrrxs structure 내용이 갱신된다.
    9) latch를 release 시킨다.
    상태 변동은 다음과 같이 alert. log 파일에 반영된다.
    sql: prodding the archiver
    Tue Jul 13 00:34:20 1999
    ARC3: changing ARC0 KCRRACTIVE->KCRRSHUTDN
    ARC3: sending ARC0 shutdown message
    ARC3: changing ARC1 KCRRACTIVE->KCRRSHUTDN
    ARC3: sending ARC1 shutdown message
    ARC3: received prod
    Tue Jul 13 00:34:20 1999
    ALTER SYSTEM SET log_archive_max_processes=2;
    Tue Jul 13 00:34:20 1999
    ARCH shutting down
    ARC0: Archival stopped
    ARC0: changing ARC0 KCRRSHUTDN->KCRRDEAD
    Tue Jul 13 00:34:20 1999
    ARCH shutting down
    ARC1: Archival stopped
    ARC1: changing ARC1 KCRRSHUTDN->KCRRDEAD
    4. 어떤 archiver process가 online log를 archive시켰는지 판단 방법
    Archiver process는 round-robin 방식으로 archiving 작업을 수행하도록
    schedule 된다. 만약 다중 archiver process가 부하에 따라 activate 된
    경우는 여러가지 경우의 수가 있을 수 있다. Oracle 8i에서는 다중
    archive log dest를 지원하면서 archive log에 대한 duplexing을 지원
    하기 때문에, 어떤프로세스가 log file을 archive 시켰는지를 기록할 필요가
    있다.
    Oracle 8i에서 archival 작업은 성공할 때 마다 trace file에 archiver
    process 명을 기록한다.
    다음은 관련 trace file의 주요 내용이다.
    Instance name: v815
    Redo thread mounted by this instance: 1
    Oracle process number: 12
    Unix process pid: 3658, image: oracle@oracle8i (ARC3)
    *** Session ID:(12. 1) 1999. 07. 13. 02. 15. 15. 000
    *** 1999. 07. 13. 02. 15. 15. 000
    *** 1999. 07. 13. 02. 33. 06. 000
    ARC3: Begin archiving log# 1 seq# 38 thrd# 1
    ARC3: VALIDATE
    ARC3: PREPARE
    ARC3: INITIALIZE
    ARC3: SPOOL
    ARC3: Creating archive destination 1 : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: Archiving block 1 count 1 to : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: Closing archive destination 1 : /bigdisk/oracle8i/dbs/arch/1_38.
    dbf
    ARC3: FINISH
    ARC3: Archival success destination 1 : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: COMPLETE, all destinations archived
    ARC3: ArchivedLog entry added: /bigdisk/oracle8i/dbs/arch/1_38. dbf
    ARC3: ARCHIVED
    *** 1999. 07. 13. 02. 33. 06. 000
    ARC3: Completed archiving log# 1 seq# 38 thrd# 1
    이 정보를 가지고, archive process 3이 log sequence 38번을
    destination 1 :/bigdisk/oracle8i/dbs/arch 에 archive 시킨 것을 알 수 있다.
    Reference Ducumment
    <Note:73163.1>

  • INVOKER'S RIGHT ( ORACLE 8I NEW FEATURE )

    제품 : PL/SQL
    작성날짜 : 2000-05-31
    INVOKER'S RIGHT ( ORACLE 8I NEW FEATURE )
    ==============================================
         AUTHID와 SQL_NAME_RESOLVE에 대해 CURRENT_USER, DEFINER를 지정
         8.1 현재 버젼에서는 AUTHID = CURRENT_USER 일때는 SQL_NAME_RESOLVE =
    CURRENT_USER, AUTHID = DEFINERE 일때는 SQL_NAME_RESOLVE = DEFINER만
    가능
         - AUTHID , SQL_NAME_RESOLVE = DEFINER
              scott 이라는 user에 다음과 같은 stored procedure를 정의했을때
              foo 라는 user에서는 scott.emp 나 scott.empcount 에 대한
              select priviledge, insert priveledge가 없어도 name_count에
              대한 execute priveledge를 가지고 있으면 실행 가능하다.
              그 이유는 name_count를 invoke 시킨 user가 foo라고 할 지라도
              내부적으로는 scott의 priveledge를 가지고 name_count라는
              procedure가 실행 되기 때문이다.
              create or replace procedure name_count
              authid definer as
              n number;
              begin
              select count(*) into n from scott.emp;
              insert into empcount values(n);
              end;
         - AUTHID , SQL_NAME_RESOLVE = CURRENT_USER     
              scott이라는 user에서 다음과 같은 stored procedure를 정의했을
    때 foo 라는 user에서 name_count에 대한 execute priveledge를
              가지고 있다고 할 지라도 scott.emp 에 대한 select priveledge를
              가지고 있지 못하면 name_count를 실행 할 수 없다. 또한
              empcount table은 scott.empcount가 아니라, foo.empcount 테이블
    을 뜻하는데, 그 이유는 authid 와 sql_name_resolve가
    current_user로 지정이 되어 있기 때문이다.
              foo 라는 user에 scott.emp 테이블에 대한 select priviledge를
              grant 해 주고, empcount 테이블을 만든후 실행 시키면
              scott.emp의 row 갯수를 foo.empcount 테이블에 insert 시키게
              된다.
              create or replace procedure name_count
              authid current_user as
              n number;
              begin
              select count(*) into n from scott.emp;
              insert into empcount values(n);
              end;

    Seems that you are right ... iSQLPlus is not referenced in the Oracle8i documentation and was probably not available until Oracle9i
    However, it is certainly possible to install only the iSQLPlus capability of 9i (and probably10g) and configure the tnsnames.ora for the iSQLPlus installation to communicate with an 8i database.
    This is partially discussed here http://download-west.oracle.com/docs/cd/B10501_01/server.920/a90842/ch3.htm#1005835
    Works ... as long as the use is willing to accept the lesser capability of Oracle8i ...

  • 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.

  • 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 : 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

  • (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.1

    I '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

  • 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

  • Oracle 10g new feature?

    Hi,
    Is there any link, where i can find in detail about oracle 10g new features, TIA

    You 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.

  • Missing Features, Bugs, and Wish List for Apple Engineers

    I LOVE my iPhone. It is by far the best phone I have ever had. The interface is awesome. Great job Apple, but there are missing features and bugs that all of us want updated or wish were added. I know they were probably already thought of by Apple, but in an effort to make the phone perfect removed to make it more stable. Now that it is out lets make it perfect.
    This thread will hopefully give you guys guidance from the early adopters who share your love for the phone (and others who want to chime in). I want to separate the list into a few categories and hope everyone will add to this thread with their ideas:
    1) BUGS/CHANGES TO EXISTING APPS:
    - Period should be in alphabet keyboard (make space smaller) or when you go to symbol keyboard and hit period it should automatically go back to the alphabet keyboard (unless you double click the symbol button which means stay there like caps lock)
    - Individual delete (like Mail) of all lists (eg. call list, bookmarks list, history etc.
    - Multiple item in a List delete (see below for how to select). This is also so un-Mac like to not be able to select multiple items to delete. It is all or none for clear/delete on the iPhone.
    - Implement double finger slide...in maps double finger tap zooms out so the OS recognizes this, why don't you use a double finger drag to mean "select". There is no way to select some words in a sentence or a group of items. This could be how. eg. In a list (eg Mail) double finger slide over items you want to select (instead of singer finger drag which moves the list) then one finger slide to the right to delete the selected items from the list.
    - Copy and paste. Since there are no menus this would require a gesture (ala newton)
    - when you tap the battery icon it should bring up a battery status dialog (ala wifi join dialog where the screen dims): present charge, big battery icon (like the charging one), time left. In addition, instead of giving battery usage details only after a full charge, give it at any point.
    - Since you know that nights and weekends are at set times (and not variable like it was on Sprint where I came from)...the phone usage details should be broken down into: peak minutes used and N+W minutes used (not hard to figure out since you know the time and dates of calls)
    - Be able to change font/background etc in Notes app
    - faster way to get to favorites in the killer phone app after turning on phone. Just seems like it takes too many taps to get there to make a call on a phone.
    2) WISH LIST FOR NEW APPS (apps that can be added with existing hardware, see #3 for other wishes)
    - iChat (obvious and probably almost done)
    - VOIP (probably not going to happen, and wouldn't work in Europe where I would need it most gven network speeds there)
    - Flight tracker widget
    - Exchange support (probably in the works)
    - Push email from gmail and .Mac (probably in the works)
    - Bluetooth sync
    - DUN (probably not going to happen since AT+T does not want it)
    - Data/File storage with sync
    - TODO APP that syncs to to do in iCal
    - Ringtones, definitely from songs from iPod side (obvious and coming soon I am sure)
    -Search function like spotlight. Global would be awesome, but even just in contacts
    3) FUTURE HARDWARE RELATED WISHES (stuff we wish could be in hardware version 1 but know require a version 2):
    - GPS
    - 3G
    - LED that changes color and/or pulses (like MacBooks sleep light) that indicates things (eg charge status, Voice mail status, roaming status etc) without turning on the phone
    - Move camera to front to allow video conferencing (I doubt Steve would allow since it would mess up the clean front look)
    Well I could go on and will add to this thread later, but I need to go to work to show everyone (and sell more apple stuff since many of my colleagues have been converted to macs). Now, all you pioneers, start adding things to help our beloved phone become better!
    Peter
    iMac   Mac OS X (10.3.6)  

    I agree with your post! I'm amazed by the simplicity, the screen, and the apps on the iPhone. They all have worked wonderfully for me, with just a few crashes while surfing or loading big email images. (I heard that shutting down the phone and restarting helps that.)
    The single flaw for me is that the phone app itself should be primary, with more options (quicker access, unique ringtones, voicedial?) and ease of use. The other applications are so elegant, but I need my phone to be very accessible and practical too.
    My wish list:
    1) Make it fewer taps to get to the point where you can make a phone call. How about the main button can be programmed to take you wherever you want. I'd choose to go to Phone Favorites, so I could speed dial right away.
    2) Be able to set a preference as to what app you're in when you wake up the phone. I'd choose phone keypad, some might choose iCal, etc.
    3) Add the period and comma symbols to the alpha keyboard.
    4) Allow different ringtones for specific caller ID's.
    5) Copy and paste.
    V2) With new hardware, add a "back" button to return to prev. screen. It could be small, on the side near volume?
    2.33 ghz dual core Intel Imac   Mac OS X (10.4.9)  

  • Missing features

    I'm delighted with many aspects of iPhone, but there are several "missing features":
    1 - There is no <Find> or <Search> function at all. Being used to Spotlight on Mac OSX, I expected to be able to search for keywords in text messages, contacts, notes, etc etc etc. This is a grave omission and reduces the functionality of iPhone for me. Let's say I'm looking for an electrician, and I know I have someone in my contacts, but can't remember his name. I should be able to hit <Find> and type in "electrician" - which would deliver a list of contacts and notes containing that word.
    2 - There is no way to send a Contact to another phone via Bluetooth or Text message. Every other phone I've ever had (from some really old Nokia phones to the latest Sony Ericsson) had this function. You could select a contact, then open a menu and choose "send as...", and then select how to send the info, either via Bluetooth or Infrared (if applicable) or simply via SMS to another person's phone. This is VERY restrictive.
    3 - As a Mac user, I am used to contextual menus everywhere. Hold <ctrl> and click and you get lots of options wjich relate to whatever you are doing. There are no menus at all on iPhone. I'm sure this was intentional, but it would really be useful to have menus in many areas. For example, to send a contact as noted in my point 2 above. Or to re-name a pin in Maps.
    4 - What about being able to copy and paste text? I can't believe this is not available. It ties in with my suggestion above for contextual menus. We really need more functionality on the iPhone
    I do LOVE the phone and find the whole experience captivating, fun and intuitive. However, the missing features noted above really sour the experience.
    Regards - Colin

    This is a user to user forum. Apple doesn't really read these forums. To send feedback - http://apple.com/feedback

Maybe you are looking for

  • Whats the difference between these two queries ? - for tuning purpose

    Whats the difference between these two queries ? I have huge amount of data for each table. its takeing such a long time (>5-6hrs). here whice one is fast / do we have any other option there apart from listed here.... QUERY 1:    SELECT  --<< USING I

  • Error DTP Urgent

    Hi Gurus, This proplem is on production system so, any help is appreciated. One error appeared while executing the DTP. The error handling for the dtp is Valid Records Update, No Reporting (Request Red). I corrected the error in the error stack and I

  • "Posting with reference to pur. order only possible for integrated whse"

    When I try posting GR with mvmt type 101 wrt PO  I am receiving the error "Posting with reference to pur. order only possible for integrated whse" The scenario is  storage lcation is maintained  with the external warehouse management . Is there anyth

  • Keynote 6.0 Presenter View

    Just installed Keynote 6. In the previous version you were able to adjust the size and position of elements (e.g. current slide, next slide, notes...) in your presenter view. Any idea how to get this done in v6.0?

  • HDMI Switch + Verizon On Demand woes

    So I setup my STB to run through an HDMI switch (that goes to my stereo receiver's HDMI passthrough) which, except for the occaisonal audio glitch (usually when I switch sources without first turning my STB off) works great.  The only problem being t