਍㰀栀攀愀搀㸀ഀഀ Albert van der Sel - Overview of some often used Oracle SQL Statements ਍㰀⼀栀攀愀搀㸀ഀഀ ਍ഀഀ

Overview of some often used Oracle 10g/11g/12c SQL Statements

਍ഀഀ Version : 3.6
਍㰀䈀㸀䐀愀琀攀㰀⼀䈀㸀ऀऀ㨀 ㌀  一漀瘀攀洀戀攀爀 ㈀ ㄀㘀㰀戀爀㸀ഀഀ By : Albert van der Sel
਍㰀䈀㸀刀攀洀愀爀欀㰀⼀䈀㸀                  㨀 倀氀攀愀猀攀 爀攀昀爀攀猀栀 琀栀攀 瀀愀最攀 琀漀 猀攀攀 愀渀礀 甀瀀搀愀琀攀猀⸀㰀戀爀㸀ഀഀ
਍㰀栀爀⼀㸀ഀഀ ਍㰀栀㌀㸀䤀琀 洀愀礀 琀愀欀攀 愀 昀攀眀 猀攀挀漀渀搀猀 琀漀 氀漀愀搀 琀栀椀猀 栀琀洀氀 瀀愀最攀⸀⸀⸀㰀⼀栀㌀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ This note is organized in 2 parts:
਍㰀戀爀㸀ഀഀ

Part 1: 10g/11g Statements (practically all will work in 12c as well)
਍倀愀爀琀 ㈀㨀 匀瀀攀挀椀昀椀挀 ㄀㈀挀 匀琀愀琀攀洀攀渀琀猀㰀⼀栀㄀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Part 1 was created while 10g and 11g were still courant versions of the RDBMS.
਍䠀漀眀攀瘀攀爀Ⰰ 猀椀渀挀攀 ㄀㈀挀 椀猀 愀瘀愀椀氀戀氀攀Ⰰ 琀栀攀 渀漀琀攀 栀愀搀 琀漀 戀攀 攀砀琀攀渀搀攀搀 眀椀琀栀 愀搀搀椀琀椀漀渀愀氀 ㄀㈀挀 猀瀀攀挀椀昀椀挀猀⸀ 䠀攀渀挀攀 倀愀爀琀 ㈀⸀㰀戀爀㸀ഀഀ
਍㰀栀㄀㸀倀愀爀琀 ㄀㨀㰀⼀栀㄀㸀ഀഀ ਍㰀栀㄀㸀䴀愀椀渀 䌀漀渀琀攀渀琀猀 倀愀爀琀 ㄀㨀 ㄀ 最⼀㄀㄀最㰀⼀栀㄀㸀ഀഀ ਍ഀഀ 1. ENABLE AND DISABLE A CONSTRAINT
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㈀∀㸀 ㈀⸀ 䐀䤀匀䄀䈀䰀䔀 䄀一䐀 䔀一䄀䈀䰀䔀 吀刀䤀䜀䜀䔀刀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 3. PROCESSES AND LOCKS
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㐀∀㸀 㐀⸀ 儀唀䤀䌀䬀 䌀䠀䔀䌀䬀 䐀䄀吀䄀䈀䄀匀䔀 一䄀䴀䔀 䄀一䐀 䤀一匀吀䄀一䌀䔀 一䄀䴀䔀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 5. QUICK CHECK ON DATABASE FILES
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㘀∀㸀 㘀⸀ 儀唀䤀䌀䬀 䌀䠀䔀䌀䬀 伀一 䈀䄀䌀䬀唀倀⼀刀䔀䌀伀嘀䔀刀夀 刀䔀䰀䄀吀䔀䐀 䔀嘀䔀一吀匀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 7. EXAMPLES OF SOME COMMON CREATE STATEMENTS
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㠀∀㸀 㠀⸀ 䜀䔀吀 吀䠀䔀 匀儀䰀 䤀匀匀唀䔀䐀 䄀䜀䄀䤀一匀吀 吀䠀䔀 䐀䄀吀䄀䈀䄀匀䔀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 9. GET THE SGA PROPERTIES
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㄀ ∀㸀㄀ ⸀ 䌀刀䔀䄀吀䔀 䄀一 ∀匀倀䘀䤀䰀䔀⸀伀刀䄀∀ 䘀刀伀䴀 䄀一 ∀䤀一䤀吀⸀伀刀䄀∀ 䄀一䐀 吀䠀䔀 伀吀䠀䔀刀 圀䄀夀 䄀刀伀唀一䐀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 11. CREATE A COPY TABLE WITH ALL DATA
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㄀㈀∀㸀㄀㈀⸀ 䄀 䘀䔀圀 匀䤀䴀倀䰀䔀 圀䄀夀匀 吀伀 吀刀䄀䌀䔀 䄀 匀䔀匀匀䤀伀一㰀⼀䄀㸀㰀戀爀㸀ഀഀ 13. A FEW SIMPLE WAYS TO DETECT WAITS
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㄀㐀∀㸀㄀㐀⸀ 䌀刀䔀䄀吀䔀 䄀 䐀䄀吀䄀䈀䄀匀䔀 唀匀䔀刀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 15. FINDING INVALID OBJECTS AND REPAIR
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㄀㘀∀㸀㄀㘀⸀ 䌀刀䔀䄀吀䤀一䜀 䄀一䐀 刀䔀䈀唀䤀䰀䐀䤀一䜀 䤀一䐀䔀堀䔀匀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 17. GETTING PRODUCT/PARAMETER INFORMATION
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㄀㠀∀㸀㄀㠀⸀ 䬀䤀䰀䰀䤀一䜀 䄀一 伀刀䄀䌀䰀䔀 匀䔀匀匀䤀伀一㰀⼀䄀㸀㰀戀爀㸀ഀഀ 19. 9i,10g,11g INIT.ORA/SPFILE.ORA initialization parameters
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㈀ ∀㸀㈀ ⸀ 䐀䤀䄀䜀一伀匀吀䤀䌀 吀伀伀䰀匀 䤀一 㤀椀㨀 䄀 䘀䔀圀 圀伀刀䐀匀 伀一 匀吀䄀吀匀倀䄀䌀䬀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 21. USING A CURSOR IN PL/SQL LOOPS
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㈀㈀∀㸀㈀㈀⸀ 䔀堀䔀䌀唀吀䤀一䜀 匀䌀刀䤀倀吀匀 䘀刀伀䴀 吀䠀䔀 ∀匀儀䰀㸀∀ 倀刀伀䴀倀吀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 23. USING CONTROLS, AND "FOR.." AND "WHILE.." LOOPS IN PL/SQL
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㈀㐀∀㸀㈀㐀⸀ 䠀伀圀 吀伀 倀唀吀 匀儀䰀倀䰀唀匀 伀唀吀倀唀吀 䤀一 䄀 匀䠀䔀䰀䰀 嘀䄀刀䤀䄀䈀䰀䔀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 25. INSTANCE STARTUP OPTIONS
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㈀㘀∀㸀㈀㘀⸀ 䄀 䘀䔀圀 ㄀ 最Ⰰ㄀㄀最 刀䴀䄀一 一伀吀䔀匀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 27. HOW TO VIEW IF THE DATABASE IS DOING A LARGE ROLLBACK
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㈀㠀∀㸀㈀㠀⸀ 䄀 匀䤀䴀倀䰀䔀 圀䄀夀 吀伀 䌀䰀伀一䔀 䄀 㤀椀⼀㄀ 最⼀㄀㄀最 䐀䄀吀䄀䈀䄀匀䔀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 29. A FEW NOTES ON 10g/11g ADDM and AWR
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㌀ ∀㸀㌀ ⸀ 䄀 䘀䔀圀 挀漀渀渀攀挀琀 匀吀刀䤀一䜀 䔀堀䄀䴀倀䰀䔀匀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 31. UNSTRUCTURED PLSQL txt FILE
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㌀㈀∀㸀㌀㈀⸀ 䠀伀圀 吀伀 匀伀䰀嘀䔀 䈀䰀伀䌀䬀 䌀伀刀刀唀倀吀䤀伀一㰀⼀䄀㸀㰀戀爀㸀ഀഀ 33. BIRDS-EYE VIEW ON INSTANCE STRUCTURE AND PROCESSES.
਍㰀戀爀㸀ഀഀ 34. Appendices.
਍ഀഀ

Part 2:

਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

Main Contents Part 2: 12c (and some also applies to 10g/11g)

਍ഀഀ 35. EM CLOUD CONTROL 12c or EM EXPRESS 12c.
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㌀㘀∀㸀㌀㘀⸀ 䌀䐀䈀 䄀一䐀 倀䐀䈀✀猀 䤀一 ㄀㈀挀⸀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 37. CLONING A DATABASE IN 12c.
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㌀㠀∀㸀㌀㠀⸀ 䘀唀䰀䰀 䐀䄀吀䄀䈀䄀匀䔀 䌀䄀䌀䠀䤀一䜀 䤀一 ㄀㈀挀⸀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 39. CREATE DATABASE USER IN 12c.
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㐀 ∀㸀㐀 ⸀ 䄀匀䴀 䤀一 ㄀ 最⼀㄀㄀最 䄀一䐀 ㄀㈀挀⸀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 41. RMAN IN 12c (SEE ALSO SECTION 26 FOR 10g/11g).
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㐀㈀∀㸀㐀㈀⸀ 䄀䐀刀Ⰰ 䰀伀䜀䘀䤀䰀䔀匀Ⰰ 䐀䤀䄀䜀一伀匀吀䤀䌀匀 ⠀㄀㄀最⼀㄀㈀挀⤀⸀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 43. MOVING DATABASE FILES.
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㐀㐀∀㸀㐀㐀⸀ 䐀䄀吀䄀䜀唀䄀刀䐀 ㄀㄀最⼀㄀㈀挀⸀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 45. SHOW OFTEN ACCESSED TABLES AND INDEXES (10g/11g/12c).
਍㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㐀㘀∀㸀㐀㘀⸀ 匀䠀伀圀 倀䔀刀䴀䤀匀匀䤀伀一匀 䄀一䐀 䜀刀䄀一吀 匀吀䄀吀䔀䴀䔀一吀匀 ⠀㄀ 最⼀㄀㄀最⼀㄀㈀挀⤀⸀㰀⼀䄀㸀㰀戀爀㸀ഀഀ 47. EXPDP AND IMPDP (10g/11g/12c).
਍㰀⼀䈀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

1. ENABLE AND DISABLE A CONSTRAINT:


਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍ⴀⴀ 䐀椀猀愀戀氀攀 愀渀搀 攀渀愀戀氀攀 漀渀攀 䌀漀渀猀琀爀愀椀渀琀㨀㰀戀爀㸀ഀഀ
਍䄀䰀吀䔀刀 吀䄀䈀䰀䔀 琀愀戀氀攀开渀愀洀攀 攀渀愀戀氀攀 䌀伀一匀吀刀䄀䤀一吀 挀漀渀猀琀爀愀椀渀琀开渀愀洀攀㬀㰀戀爀㸀ഀഀ
਍䄀䰀吀䔀刀 吀䄀䈀䰀䔀 琀愀戀氀攀开渀愀洀攀 搀椀猀愀戀氀攀 䌀伀一匀吀刀䄀䤀一吀 挀漀渀猀琀爀愀椀渀琀开渀愀洀攀㬀㰀戀爀㸀ഀഀ
਍ഀഀ -- Make a list of statements: Disable and enable ALL Foreign Key (type=R) constraints in one schema (like e.g. HARRY):
਍㰀戀爀㸀ഀഀ SELECT 'ALTER TABLE HARRY.'||table_name||' enable constraint '||constraint_name||';'
਍䘀刀伀䴀 䐀䈀䄀开䌀伀一匀吀刀䄀䤀一吀匀㰀戀爀㸀ഀഀ WHERE owner='HARRY' AND constraint_type='R';
਍㰀戀爀㸀ഀഀ SELECT 'ALTER TABLE HARRY.'||table_name||' disable constraint '||constraint_name||';'
਍䘀刀伀䴀 䐀䈀䄀开䌀伀一匀吀刀䄀䤀一吀匀㰀戀爀㸀ഀഀ WHERE owner='HARRY' AND constraint_type='R';
਍ഀഀ

More on "dynamic" statements:

਍ഀഀ The statements you see above, generate listings of actual statements.
਍吀栀椀猀 眀椀氀氀 栀攀氀瀀 礀漀甀 椀昀 礀漀甀 洀甀猀琀 愀氀琀攀爀 愀 氀愀爀最攀 氀椀猀琀 漀昀 漀戀樀攀挀琀猀Ⰰ 漀爀 椀昀 礀漀甀 洀甀猀琀 最爀愀渀琀 漀爀 爀攀瘀漀欀攀 瀀攀爀洀椀猀猀椀漀渀猀 攀琀挀⸀⸀ 攀琀挀⸀⸀㰀戀爀㸀ഀഀ
਍䠀攀爀攀 愀爀攀 愀 昀攀眀 漀琀栀攀爀 攀砀愀洀瀀氀攀猀㨀㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ -- create synonyms:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
਍猀攀氀攀挀琀 ✀挀爀攀愀琀攀 漀爀 爀攀瀀氀愀挀攀 瀀甀戀氀椀挀 猀礀渀漀渀礀洀 ✀簀簀琀愀戀氀攀开渀愀洀攀簀簀✀昀漀爀 䠀刀⸀✀簀簀琀愀戀氀攀开渀愀洀攀簀簀✀㬀✀㰀戀爀㸀ഀഀ from dba_tables where owner='HR';
਍㰀戀爀㸀ഀഀ ਍ⴀⴀ 䤀一䐀䔀堀 爀攀戀甀椀氀搀㨀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ SELECT 'alter index ALBERT.'||INDEX_NAME||' rebuild;'
਍昀爀漀洀 搀戀愀开椀渀搀攀砀攀猀 眀栀攀爀攀 漀眀渀攀爀㴀✀䄀䰀䈀䔀刀吀✀㬀㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ -- Granting permissions to a role or user for a set of objects:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 ✀䜀刀䄀一吀 匀䔀䰀䔀䌀吀 伀一 䠀刀⸀✀簀簀琀愀戀氀攀开渀愀洀攀簀簀✀ 吀伀 刀伀䰀䔀开刀䔀䄀䐀伀一䰀夀㬀✀ 昀爀漀洀 搀戀愀开琀愀戀氀攀猀㰀戀爀㸀ഀഀ where owner='HR';
਍㰀戀爀㸀ഀഀ SELECT 'GRANT SELECT ON HR.'||view_name||' TO ROLE_READONLY;' from dba_views
਍眀栀攀爀攀 漀眀渀攀爀㴀✀䠀刀✀㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 ✀䜀刀䄀一吀 匀䔀䰀䔀䌀吀Ⰰ 䤀一匀䔀刀吀Ⰰ 唀倀䐀䄀吀䔀Ⰰ 䐀䔀䰀䔀吀䔀 伀一 一椀挀攀䄀瀀瀀⸀✀簀簀琀愀戀氀攀开渀愀洀攀簀簀✀ 吀伀 䄀氀戀攀爀琀㬀✀ 昀爀漀洀 搀戀愀开琀愀戀氀攀猀㰀戀爀㸀ഀഀ where owner='NiceApp';
਍ഀഀ ਍ഀഀ
਍㰀戀爀㸀ഀഀ
਍ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㈀∀㸀㈀⸀ 䐀䤀匀䄀䈀䰀䔀 䄀一䐀 䔀一䄀䈀䰀䔀 吀刀䤀䜀䜀䔀刀㨀㰀⼀栀㈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ -- Disable and enable one trigger:
਍㰀戀爀㸀ഀഀ ALTER TRIGGER trigger_name DISABLE;
਍䄀䰀吀䔀刀 吀刀䤀䜀䜀䔀刀 琀爀椀最最攀爀开渀愀洀攀 䔀一䄀䈀䰀䔀㬀㰀戀爀㸀ഀഀ
਍ⴀⴀ 伀爀 椀渀 ㄀ 琀椀洀攀 昀漀爀 愀氀氀 琀爀椀最最攀爀猀 漀渀 愀 琀愀戀氀攀㨀㰀戀爀㸀ഀഀ
਍䄀䰀吀䔀刀 吀䄀䈀䰀䔀 琀愀戀氀攀开渀愀洀攀 䐀䤀匀䄀䈀䰀䔀 䄀䰀䰀 吀刀䤀䜀䜀䔀刀匀㬀㰀戀爀㸀ഀഀ
਍䄀䰀吀䔀刀 吀䄀䈀䰀䔀 琀愀戀氀攀开渀愀洀攀 䔀一䄀䈀䰀䔀 䄀䰀䰀 吀刀䤀䜀䜀䔀刀匀㬀㰀戀爀㸀ഀഀ
਍ⴀⴀ 䐀爀漀瀀 愀 琀爀椀最最攀爀㨀㰀戀爀㸀ഀഀ
਍䐀刀伀倀 吀刀䤀䜀䜀䔀刀 琀爀椀最最攀爀开渀愀洀攀㬀 㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

3. PROCESSES AND LOCKS:


਍ഀഀ ਍㰀䈀㸀㌀⸀㄀ 儀唀䤀䌀䬀 䌀䠀䔀䌀䬀 伀一 倀刀伀䌀䔀匀匀䔀匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍猀攀琀 氀椀渀攀猀椀稀攀㴀㄀   㰀戀爀㸀ഀഀ set pagesize=1000
਍㰀戀爀㸀ഀഀ -- v$session mainly shows characteristics of Oracle Sessions, v$process is more oriented
਍ⴀⴀ 琀漀 伀匀 瀀爀漀挀攀猀猀攀猀⸀㰀戀爀㸀ഀഀ -- The below two (similar) queries "connects" the Oracle Session ID (sid) to the OS process (spid):
਍㰀戀爀㸀 ഀഀ SELECT
਍瀀⸀猀瀀椀搀 䄀匀 伀匀开倀䤀䐀Ⰰ 㰀戀爀㸀ഀഀ p.pid,
਍猀⸀猀椀搀 䄀匀 伀刀䄀䌀䰀䔀开匀䤀䐀Ⰰ 㰀戀爀㸀ഀഀ p.addr,s.paddr,
਍猀甀戀猀琀爀⠀猀⸀甀猀攀爀渀愀洀攀Ⰰ ㄀Ⰰ ㄀㔀⤀ 䄀匀 䐀䈀唀匀䔀刀Ⰰ 㰀戀爀㸀ഀഀ substr(s.schemaname, 1, 15),
਍猀⸀挀漀洀洀愀渀搀Ⰰ㰀戀爀㸀ഀഀ substr(s.osuser, 1, 15) AS OSUSER,
਍猀甀戀猀琀爀⠀猀⸀洀愀挀栀椀渀攀Ⰰ ㄀Ⰰ ㄀㔀⤀ 䄀匀 䴀䄀䌀䠀䤀一䔀Ⰰ㰀戀爀㸀ഀഀ substr(s.program,1,15) AS PROGRAM
਍䘀刀伀䴀 瘀␀猀攀猀猀椀漀渀 猀Ⰰ 瘀␀瀀爀漀挀攀猀猀 瀀㰀戀爀㸀ഀഀ WHERE s.paddr=p.addr
਍㰀戀爀㸀 ഀഀ SELECT
਍瀀⸀猀瀀椀搀 䄀匀 伀匀开倀䤀䐀Ⰰ㰀戀爀㸀 ഀഀ s.sid AS ORACLE_SID,
਍猀甀戀猀琀爀⠀猀⸀漀猀甀猀攀爀Ⰰ ㄀Ⰰ ㄀㔀⤀ 䄀匀 伀匀唀匀䔀刀Ⰰ 㰀戀爀㸀 ഀഀ substr(s.program,1,55) AS PROGRAM,
਍猀甀戀猀琀爀⠀猀⸀洀漀搀甀氀攀Ⰰ㄀Ⰰ㔀㔀⤀ 䄀匀 䴀伀䐀唀䰀䔀㰀戀爀㸀 ഀഀ FROM v$session s, v$process p
਍圀䠀䔀刀䔀  猀⸀瀀愀搀搀爀㴀瀀⸀愀搀搀爀㬀㰀戀爀㸀 ഀഀ
਍ⴀⴀ 匀栀漀爀琀 瘀攀爀猀椀漀渀㨀㰀戀爀㸀ഀഀ select p.spid, s.sid, s.osuser, s.program from
਍瘀␀瀀爀漀挀攀猀猀 瀀Ⰰ 瘀␀猀攀猀猀椀漀渀 猀 眀栀攀爀攀 瀀⸀愀搀搀爀㴀猀⸀瀀愀搀搀爀㬀㰀戀爀㸀ഀഀ
਍ⴀⴀ 䰀椀猀琀椀渀最 挀栀愀爀愀挀琀攀爀椀猀琀椀挀猀 漀昀 伀爀愀挀氀攀 匀攀猀猀椀漀渀猀 ⠀瘀␀猀攀猀猀椀漀渀⤀㨀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 ഀഀ sid, serial#, substr(username,1,15), substr(osuser,1,15), LOCKWAIT, substr(program,1,30), substr(module,1,30)
਍䘀刀伀䴀 瘀␀猀攀猀猀椀漀渀㬀㰀戀爀㸀 ഀഀ
਍匀䔀䰀䔀䌀吀 㰀戀爀㸀 ഀഀ sid, serial#, command,substr(username, 1, 15), substr(osuser,1,15), sql_address,LOCKWAIT,
਍琀漀开挀栀愀爀⠀氀漀最漀渀开琀椀洀攀Ⰰ ✀䐀䐀ⴀ䴀䴀ⴀ夀夀夀夀㬀䠀䠀㈀㐀㨀䴀䤀✀⤀Ⰰ 猀甀戀猀琀爀⠀瀀爀漀最爀愀洀Ⰰ ㄀Ⰰ ㌀ ⤀㰀戀爀㸀 ഀഀ FROM v$session;
਍㰀戀爀㸀ഀഀ -- background processes: ਍㰀戀爀㸀ഀഀ SQL> SELECT paddr, name, substr(description,1,40) FROM v$bgprocess;
਍㰀戀爀㸀ഀഀ SQL> SELECT pid, spid, program, background FROM v$process WHERE BACKGROUND=1;
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 3.2 QUICK CHECK ON LOCKS:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
਍㰀戀爀㸀  ഀഀ SELECT d.OBJECT_ID, substr(OBJECT_NAME,1,20), l.SESSION_ID, l.ORACLE_USERNAME, l.LOCKED_MODE
਍䘀刀伀䴀 瘀␀氀漀挀欀攀搀开漀戀樀攀挀琀 氀Ⰰ 搀戀愀开漀戀樀攀挀琀猀 搀㰀戀爀㸀 ഀഀ WHERE d.OBJECT_ID=l.OBJECT_ID;
਍㰀戀爀㸀  ഀഀ SELECT * FROM DBA_WAITERS;
਍㰀戀爀㸀  ഀഀ SELECT waiting_session, holding_session, lock_type, mode_held
਍䘀刀伀䴀 搀戀愀开眀愀椀琀攀爀猀㬀㰀戀爀㸀 ഀഀ
਍ഀഀ ਍㰀䈀㸀㌀⸀㌀ 儀唀䤀䌀䬀 䌀䠀䔀䌀䬀 伀一 吀䔀䴀倀㨀㰀⼀䈀㸀㰀戀爀㸀 ഀഀ ਍ ഀഀ
਍猀攀氀攀挀琀 琀漀琀愀氀开攀砀琀攀渀琀猀Ⰰ 甀猀攀搀开攀砀琀攀渀琀猀Ⰰ 琀漀琀愀氀开攀砀琀攀渀琀猀Ⰰ 挀甀爀爀攀渀琀开甀猀攀爀猀Ⰰ 琀愀戀氀攀猀瀀愀挀攀开渀愀洀攀㰀戀爀㸀ഀഀ from v$sort_segment;
਍㰀戀爀㸀ഀഀ select username, user, sqladdr, extents, tablespace from v$sort_usage;
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 3.4 QUICK CHECK ON ACTIVITY UNDO:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀 ഀഀ SELECT a.sid, a.saddr, b.ses_addr, a.username, b.xidusn, b.used_urec, b.used_ublk
਍䘀刀伀䴀 瘀␀猀攀猀猀椀漀渀 愀Ⰰ 瘀␀琀爀愀渀猀愀挀琀椀漀渀 戀㰀戀爀㸀 ഀഀ WHERE a.saddr = b.ses_addr;
਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㌀⸀㔀 儀唀䤀䌀䬀 䌀䠀䔀䌀䬀 伀一 䌀倀唀 唀匀䄀䜀䔀㰀⼀䈀㸀㰀戀爀㸀 ഀഀ ਍ഀഀ
਍ഀഀ select ss.username, se.SID, se.SERIAL#, VALUE/100 cpu_usage_seconds
਍昀爀漀洀  瘀␀猀攀猀猀椀漀渀 猀猀Ⰰ 瘀␀猀攀猀猀琀愀琀 猀攀Ⰰ 瘀␀猀琀愀琀渀愀洀攀 猀渀㰀戀爀㸀ഀഀ where
਍   猀攀⸀匀吀䄀吀䤀匀吀䤀䌀⌀ 㴀 猀渀⸀匀吀䄀吀䤀匀吀䤀䌀⌀㰀戀爀㸀ഀഀ and
਍   一䄀䴀䔀 氀椀欀攀 ✀─䌀倀唀 甀猀攀搀 戀礀 琀栀椀猀 猀攀猀猀椀漀渀─✀㰀戀爀㸀ഀഀ and
਍   猀攀⸀匀䤀䐀 㴀 猀猀⸀匀䤀䐀㰀戀爀㸀ഀഀ and
਍   猀猀⸀猀琀愀琀甀猀㴀✀䄀䌀吀䤀嘀䔀✀㰀戀爀㸀ഀഀ and
਍   猀猀⸀甀猀攀爀渀愀洀攀 椀猀 渀漀琀 渀甀氀氀㰀戀爀㸀ഀഀ order by VALUE desc;
਍㰀戀爀㸀ഀഀ ਍猀攀氀攀挀琀 瘀⸀猀焀氀开琀攀砀琀Ⰰ 瘀⸀䘀䤀刀匀吀开䰀伀䄀䐀开吀䤀䴀䔀Ⰰ 瘀⸀倀䄀刀匀䤀一䜀开匀䌀䠀䔀䴀䄀开䤀䐀Ⰰ 瘀⸀䐀䤀匀䬀开刀䔀䄀䐀匀Ⰰ 瘀⸀刀伀圀匀开倀刀伀䌀䔀匀匀䔀䐀Ⰰ 瘀⸀䌀倀唀开吀䤀䴀䔀Ⰰ㰀戀爀㸀ഀഀ b.username from
਍瘀␀猀焀氀愀爀攀愀 瘀Ⰰ 搀戀愀开甀猀攀爀猀 戀㰀戀爀㸀ഀഀ where v.FIRST_LOAD_TIME > '2017-06-26'
਍愀渀搀 瘀⸀倀䄀刀匀䤀一䜀开匀䌀䠀䔀䴀䄀开䤀䐀㴀戀⸀甀猀攀爀开椀搀㰀戀爀㸀ഀഀ order by v.CPU_TIME desc ;
਍ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

4. QUICK CHECK DATABASE NAME AND INSTANCE NAME:


਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀 ഀഀ set linesize=1000
਍猀攀琀 瀀愀最攀猀椀稀攀㴀㄀   㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 瘀␀搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 䐀䈀䤀䐀Ⰰ 一䄀䴀䔀Ⰰ 䌀刀䔀䄀吀䔀䐀Ⰰ 䰀伀䜀开䴀伀䐀䔀Ⰰ 伀倀䔀一开䴀伀䐀䔀 䘀刀伀䴀 瘀␀搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 瘀␀椀渀猀琀愀渀挀攀㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 䤀一匀吀䄀一䌀䔀开一䄀䴀䔀Ⰰ 䠀伀匀吀开一䄀䴀䔀Ⰰ嘀䔀刀匀䤀伀一Ⰰ 匀吀䄀刀吀唀倀开吀䤀䴀䔀Ⰰ 匀吀䄀吀唀匀 䘀刀伀䴀 瘀␀椀渀猀琀愀渀挀攀㬀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㔀∀㸀㔀⸀ 儀唀䤀䌀䬀 䌀䠀䔀䌀䬀匀 伀一 䐀䄀吀䄀䈀䄀匀䔀 䘀䤀䰀䔀匀㨀㰀⼀栀㈀㸀㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 5.1 CONTROLFILES:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ select * from v$controlfile;
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 5.2 REDO LOG FILES:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ select * from v$log;
਍㰀戀爀㸀ഀഀ select * from v$logfile;
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 5.3 DATA FILES:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ SELECT file_id, substr(file_name, 1, 70), substr(tablespace_name,1,50), status FROM dba_data_files;
਍㰀戀爀㸀ഀഀ SELECT file_id, substr(file_name, 1, 70), bytes, blocks, autoextensible FROM dba_data_files;
਍㰀戀爀㸀ഀഀ SELECT file#, status, substr(name, 1, 70) FROM V$DATAFILE;
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 5.4 FREE/USED SPACE IN TABLESPACES:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 吀漀琀愀氀⸀渀愀洀攀 ∀吀愀戀氀攀猀瀀愀挀攀 一愀洀攀∀Ⰰ㰀戀爀㸀ഀഀ Free_space, (total_space-Free_space) Used_space, total_space
਍䘀刀伀䴀㰀戀爀㸀ഀഀ (SELECT tablespace_name, sum(bytes/1024/1024) Free_Space
਍     䘀刀伀䴀 猀礀猀⸀搀戀愀开昀爀攀攀开猀瀀愀挀攀㰀戀爀㸀ഀഀ GROUP BY tablespace_name
਍  ⤀ 䘀爀攀攀Ⰰ㰀戀爀㸀ഀഀ (SELECT b.name, sum(bytes/1024/1024) TOTAL_SPACE
਍     䘀刀伀䴀 猀礀猀⸀瘀开␀搀愀琀愀昀椀氀攀 愀Ⰰ 猀礀猀⸀瘀开␀琀愀戀氀攀猀瀀愀挀攀 䈀㰀戀爀㸀ഀഀ WHERE a.ts# = b.ts#
਍    䜀刀伀唀倀 䈀夀 戀⸀渀愀洀攀㰀戀爀㸀ഀഀ ) Total
਍圀䠀䔀刀䔀 䘀爀攀攀⸀吀愀戀氀攀猀瀀愀挀攀开渀愀洀攀 㴀 吀漀琀愀氀⸀渀愀洀攀㬀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍ഀഀ

6. QUICK CHECK ON BACKUP/RECOVERY RELATED EVENTS:


਍ഀഀ ਍ഀഀ SELECT * FROM v$backup;
਍㰀戀爀㸀ഀഀ SELECT file#, status, substr(name, 1, 70), checkpoint_change# FROM v$datafile;
਍㰀戀爀㸀ഀഀ SELECT file#, status, checkpoint_change# FROM v$datafile_header;
਍㰀戀爀㸀ഀഀ SELECT substr(name,1,60), recover, fuzzy, checkpoint_change#, resetlogs_change#, resetlogs_time
਍䘀刀伀䴀   瘀␀搀愀琀愀昀椀氀攀开栀攀愀搀攀爀㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 渀愀洀攀Ⰰ 漀瀀攀渀开洀漀搀攀Ⰰ 挀栀攀挀欀瀀漀椀渀琀开挀栀愀渀最攀⌀Ⰰ 䄀刀䌀䠀䤀嘀䔀开䌀䠀䄀一䜀䔀⌀ 䘀刀伀䴀 瘀␀搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 䜀刀伀唀倀⌀Ⰰ吀䠀刀䔀䄀䐀⌀Ⰰ匀䔀儀唀䔀一䌀䔀⌀Ⰰ䴀䔀䴀䈀䔀刀匀Ⰰ䄀刀䌀䠀䤀嘀䔀䐀Ⰰ匀吀䄀吀唀匀Ⰰ䘀䤀刀匀吀开䌀䠀䄀一䜀䔀⌀ 䘀刀伀䴀 瘀␀氀漀最㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 䜀刀伀唀倀⌀Ⰰ猀甀戀猀琀爀⠀洀攀洀戀攀爀Ⰰ㄀Ⰰ㜀 ⤀ 䘀刀伀䴀 瘀␀氀漀最昀椀氀攀㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 瘀␀氀漀最开栀椀猀琀漀爀礀㬀㰀戀爀㸀ഀഀ SELECT * FROM v$recover_file;
਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 瘀␀爀攀挀漀瘀攀爀礀开氀漀最㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 昀椀爀猀琀开挀栀愀渀最攀⌀Ⰰ 渀攀砀琀开挀栀愀渀最攀⌀Ⰰ 猀攀焀甀攀渀挀攀⌀Ⰰ 愀爀挀栀椀瘀攀搀Ⰰ 猀甀戀猀琀爀⠀渀愀洀攀Ⰰ ㄀Ⰰ 㔀 ⤀ 㰀戀爀㸀ഀഀ FROM V$ARCHIVED_LOG;
਍㰀戀爀㸀ഀഀ SELECT status,resetlogs_change#,resetlogs_time,checkpoint_change#,
਍       琀漀开挀栀愀爀⠀挀栀攀挀欀瀀漀椀渀琀开琀椀洀攀Ⰰ ✀䐀䐀ⴀ䴀伀一ⴀ夀夀夀夀 䠀䠀㈀㐀㨀䴀䤀㨀匀匀✀⤀ 愀猀 挀栀攀挀欀瀀漀椀渀琀开琀椀洀攀Ⰰ挀漀甀渀琀⠀⨀⤀ 㰀戀爀㸀ഀഀ FROM v$datafile_header
਍最爀漀甀瀀 戀礀 猀琀愀琀甀猀Ⰰ 爀攀猀攀琀氀漀最猀开挀栀愀渀最攀⌀Ⰰ 爀攀猀攀琀氀漀最猀开琀椀洀攀Ⰰ 挀栀攀挀欀瀀漀椀渀琀开挀栀愀渀最攀⌀Ⰰ 挀栀攀挀欀瀀漀椀渀琀开琀椀洀攀㰀戀爀㸀ഀഀ order by status, checkpoint_change#, checkpoint_time ;
਍㰀戀爀㸀ഀഀ ਍ഀഀ SELECT LF.member, L.group#, L.thread#, L.sequence#, L.status,
਍       䰀⸀昀椀爀猀琀开挀栀愀渀最攀⌀Ⰰ 䰀⸀昀椀爀猀琀开琀椀洀攀Ⰰ 䐀䘀⸀洀椀渀开挀栀攀挀欀瀀漀椀渀琀开挀栀愀渀最攀⌀ 㰀戀爀㸀ഀഀ FROM v$log L, v$logfile LF,
਍      ⠀猀攀氀攀挀琀 洀椀渀⠀挀栀攀挀欀瀀漀椀渀琀开挀栀愀渀最攀⌀⤀ 洀椀渀开挀栀攀挀欀瀀漀椀渀琀开挀栀愀渀最攀⌀ 㰀戀爀㸀ഀഀ from v$datafile_header
਍       眀栀攀爀攀 猀琀愀琀甀猀㴀✀伀一䰀䤀一䔀✀⤀ 䐀䘀 㰀戀爀㸀ഀഀ WHERE LF.group# = L.group#
਍䄀一䐀    䰀⸀昀椀爀猀琀开挀栀愀渀最攀⌀ 㸀㴀 䐀䘀⸀洀椀渀开挀栀攀挀欀瀀漀椀渀琀开挀栀愀渀最攀⌀㬀 㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 嘀␀刀䔀䌀伀嘀䔀刀夀开䘀䤀䰀䔀开䐀䔀匀吀㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 嘀␀䘀䰀䄀匀䠀开刀䔀䌀伀嘀䔀刀夀开䄀刀䔀䄀开唀匀䄀䜀䔀㬀㰀戀爀㸀ഀഀ
਍ഀഀ SELECT V1.GROUP#, MEMBER, SEQUENCE#, FIRST_CHANGE#
਍䘀刀伀䴀   嘀␀䰀伀䜀 嘀㄀Ⰰ 嘀␀䰀伀䜀䘀䤀䰀䔀 嘀㈀ 㰀戀爀㸀ഀഀ WHERE V1.GROUP# = V2.GROUP# ;
਍㰀戀爀㸀 ഀഀ ਍匀䔀䰀䔀䌀吀 䘀䤀䰀䔀⌀Ⰰ 䌀䠀䄀一䜀䔀⌀ 䘀刀伀䴀 嘀␀刀䔀䌀伀嘀䔀刀开䘀䤀䰀䔀㬀 㰀戀爀㸀ഀഀ
਍猀攀氀攀挀琀 愀氀⸀猀攀焀甀攀渀挀攀⌀㰀戀爀㸀ഀഀ from v$archived_log al, v$log rl
਍眀栀攀爀攀  愀氀⸀猀攀焀甀攀渀挀攀⌀  㴀 爀氀⸀猀攀焀甀攀渀挀攀⌀ ⠀⬀⤀㰀戀爀㸀ഀഀ and al.thread# = rl.thread# (+)
਍愀渀搀  ⠀ 爀氀⸀猀琀愀琀甀猀     㴀 ✀䤀一䄀䌀吀䤀嘀䔀✀㰀戀爀㸀ഀഀ or rl.status is null
਍     ⤀㰀戀爀㸀ഀഀ and al.deleted = 'NO'
਍漀爀搀攀爀 戀礀 愀氀⸀猀攀焀甀攀渀挀攀⌀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 刀䔀䌀伀嘀䔀刀夀开䔀匀吀䤀䴀䄀吀䔀䐀开䤀伀匀 䘀刀伀䴀 嘀␀䤀一匀吀䄀一䌀䔀开刀䔀䌀伀嘀䔀刀夀㬀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㜀∀㸀㜀⸀ 䔀堀䄀䴀倀䰀䔀匀 伀䘀 匀伀䴀䔀 䌀伀䴀䴀伀一 䌀刀䔀䄀吀䔀 匀吀䄀吀䔀䴀䔀一吀匀 㨀㰀⼀栀㈀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍ഀഀ ਍㰀䈀㸀㜀⸀㄀ 䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀匀倀䄀䌀䔀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ऀऀऀऀऀഀഀ
਍䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀匀倀䄀䌀䔀 匀吀䄀䜀䤀一䜀 䐀䄀吀䄀䘀䤀䰀䔀 ✀䌀㨀尀伀刀䄀䐀䄀吀䄀尀吀䔀匀吀㄀㄀䜀尀匀吀䄀䜀䤀一䜀⸀䐀䈀䘀✀ 匀䤀娀䔀 㔀   䴀㰀戀爀㸀ऀऀऀऀऀഀഀ EXTENT MANAGEMENT LOCAL AUTOALLOCATE
਍匀䔀䜀䴀䔀一吀 匀倀䄀䌀䔀 䴀䄀一䄀䜀䔀䴀䔀一吀 䄀唀吀伀㬀㰀戀爀㸀ऀऀऀऀऀഀഀ
਍䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀匀倀䄀䌀䔀 䌀䤀匀吀匀开 ㄀ 䐀䄀吀䄀䘀䤀䰀䔀 ✀⼀甀 㜀⼀漀爀愀搀愀琀愀⼀猀瀀氀搀攀瘀瀀⼀挀椀猀琀猀开 ㄀⸀搀戀昀✀ 匀䤀娀䔀 ㄀㈀  䴀㰀戀爀㸀ऀऀऀऀऀഀഀ EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
਍㰀戀爀㸀ऀऀऀऀऀഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 7.2 CREATE TABLE (heap organized):
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ CREATE TABLE employees
਍⠀ 㰀戀爀㸀ഀഀ employee_id NUMBER(6),
਍昀椀爀猀琀开渀愀洀攀           嘀䄀刀䌀䠀䄀刀㈀⠀㈀ ⤀Ⰰ㰀戀爀㸀ഀഀ last_name VARCHAR2(25) NOT NULL,
਍攀洀愀椀氀                嘀䄀刀䌀䠀䄀刀㈀⠀㈀㔀⤀ 一伀吀 一唀䰀䰀Ⰰ㰀戀爀㸀ഀഀ phone_number VARCHAR2(20),
਍栀椀爀攀开搀愀琀攀            䐀䄀吀䔀 䌀伀一匀吀刀䄀䤀一吀 攀洀瀀开栀椀爀攀开搀愀琀攀开渀渀 一伀吀 一唀䰀䰀Ⰰ㰀戀爀㸀ഀഀ job_id VARCHAR2(10) CONSTRAINT emp_job_nn NOT NULL,
਍猀愀氀愀爀礀               一唀䴀䈀䔀刀⠀㠀Ⰰ㈀⤀Ⰰ㰀戀爀㸀ഀഀ commission_pct NUMBER(2,2),
਍洀愀渀愀最攀爀开椀搀           一唀䴀䈀䔀刀⠀㘀⤀Ⰰ㰀戀爀㸀ഀഀ department_id NUMBER(4),
਍䌀伀一匀吀刀䄀䤀一吀 攀洀瀀开猀愀氀愀爀礀开洀椀渀 䌀䠀䔀䌀䬀 ⠀猀愀氀愀爀礀 㸀  ⤀Ⰰഀഀ CONSTRAINT emp_email_uk UNIQUE (email)
਍⤀ 吀䄀䈀䰀䔀匀倀䄀䌀䔀 唀匀䔀刀匀㬀㰀戀爀㸀ഀഀ
਍䄀䰀吀䔀刀 吀䄀䈀䰀䔀 攀洀瀀氀漀礀攀攀猀㰀戀爀㸀ഀഀ ADD (
਍䌀伀一匀吀刀䄀䤀一吀 攀洀瀀开攀洀瀀开椀搀开瀀欀  倀刀䤀䴀䄀刀夀 䬀䔀夀 ⠀攀洀瀀氀漀礀攀攀开椀搀⤀Ⰰ㰀戀爀㸀ഀഀ CONSTRAINT emp_dept_fk FOREIGN KEY (department_id) REFERENCES departments (department_id),
਍䌀伀一匀吀刀䄀䤀一吀 攀洀瀀开樀漀戀开昀欀     䘀伀刀䔀䤀䜀一 䬀䔀夀 ⠀樀漀戀开椀搀⤀        刀䔀䘀䔀刀䔀一䌀䔀匀 樀漀戀猀 ⠀樀漀戀开椀搀⤀Ⰰ㰀戀爀㸀ഀഀ CONSTRAINT emp_manager_fk FOREIGN KEY (manager_id) REFERENCES employees (manager_id)
਍⤀ 㬀㰀戀爀㸀ഀഀ
਍䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀 栀爀⸀愀搀洀椀渀开攀洀瀀 ⠀㰀戀爀㸀ഀഀ empno NUMBER(5) PRIMARY KEY,
਍         攀渀愀洀攀      嘀䄀刀䌀䠀䄀刀㈀⠀㄀㔀⤀ 一伀吀 一唀䰀䰀Ⰰ㰀戀爀㸀ഀഀ ssn NUMBER(9) ENCRYPT,
਍         樀漀戀        嘀䄀刀䌀䠀䄀刀㈀⠀㄀ ⤀Ⰰ㰀戀爀㸀ഀഀ mgr NUMBER(5),
਍         栀椀爀攀搀愀琀攀   䐀䄀吀䔀 䐀䔀䘀䄀唀䰀吀 ⠀猀礀猀搀愀琀攀⤀Ⰰ㰀戀爀㸀ഀഀ photo BLOB,
਍         猀愀氀        一唀䴀䈀䔀刀⠀㜀Ⰰ㈀⤀Ⰰ㰀戀爀㸀ഀഀ hrly_rate NUMBER(7,2) GENERATED ALWAYS AS (sal/2080),
਍         挀漀洀洀       一唀䴀䈀䔀刀⠀㜀Ⰰ㈀⤀Ⰰ㰀戀爀㸀ऀऀऀऀऀഀഀ deptno NUMBER(3) NOT NULL,
਍                     䌀伀一匀吀刀䄀䤀一吀 愀搀洀椀渀开搀攀瀀琀开昀欀攀礀 刀䔀䘀䔀刀䔀一䌀䔀匀 栀爀⸀搀攀瀀愀爀琀洀攀渀琀猀㰀戀爀㸀ऀऀऀऀऀഀഀ (department_id)) ਍吀䄀䈀䰀䔀匀倀䄀䌀䔀 愀搀洀椀渀开琀戀猀㰀戀爀㸀ऀऀऀऀऀഀഀ STORAGE ( INITIAL 50K);
਍㰀戀爀㸀ऀऀऀऀऀഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ऀऀऀऀऀഀഀ 7.3 OBJECT TABLE:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ऀऀऀऀऀऀഀഀ CREATE TYPE department_typ AS OBJECT
਍⠀ 搀开渀愀洀攀 嘀䄀刀䌀䠀䄀刀㈀⠀㄀  ⤀Ⰰऀ㰀戀爀㸀ऀऀऀऀऀഀഀ d_address VARCHAR2(200) );
਍㰀戀爀㸀ऀऀऀऀऀഀഀ CREATE TABLE departments_obj_t OF department_typ;
਍䤀一匀䔀刀吀 䤀一吀伀 搀攀瀀愀爀琀洀攀渀琀猀开漀戀樀开琀㰀戀爀㸀ഀഀ VALUES ('hr', '10 Main St, Sometown, CA');
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 7.4 GLOBAL TEMPORARY TABLE:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ CREATE GLOBAL TEMPORARY TABLE my_temp_table (
਍  挀漀氀甀洀渀㄀  一唀䴀䈀䔀刀Ⰰ㰀戀爀㸀ഀഀ column2 NUMBER
਍⤀ 伀一 䌀伀䴀䴀䤀吀 䐀䔀䰀䔀吀䔀 刀伀圀匀㬀㰀戀爀㸀ഀഀ
਍䌀刀䔀䄀吀䔀 䜀䰀伀䈀䄀䰀 吀䔀䴀倀伀刀䄀刀夀 吀䄀䈀䰀䔀 洀礀开琀攀洀瀀开琀愀戀氀攀 ⠀㰀戀爀㸀ഀഀ column1 NUMBER,

਍  挀漀氀甀洀渀㈀  一唀䴀䈀䔀刀ഀഀ ) ON COMMIT PRESERVE ROWS;
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 7.5 EXTERNAL TABLE:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ CREATE OR REPLACE DIRECTORY ext AS 'c:\external';
਍䜀刀䄀一吀 刀䔀䄀䐀 伀一 䐀䤀刀䔀䌀吀伀刀夀 攀砀琀 吀伀 瀀甀戀氀椀挀㬀㰀戀爀㸀ഀഀ
਍䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀 攀砀琀开琀愀戀 ⠀㰀戀爀㸀ഀഀ empno CHAR(4),
਍攀渀愀洀攀  䌀䠀䄀刀⠀㈀ ⤀Ⰰ㰀戀爀㸀ഀഀ job CHAR(20),
਍搀攀瀀琀渀漀 䌀䠀䄀刀⠀㈀⤀⤀㰀戀爀㸀ഀഀ ORGANIZATION EXTERNAL (
਍  吀夀倀䔀 漀爀愀挀氀攀开氀漀愀搀攀爀㰀戀爀㸀ഀഀ DEFAULT DIRECTORY ext
਍    䄀䌀䌀䔀匀匀 倀䄀刀䄀䴀䔀吀䔀刀匀 ⠀㰀戀爀㸀ഀഀ RECORDS DELIMITED BY NEWLINE
਍    䈀䄀䐀䘀䤀䰀䔀 ✀戀愀搀开─愀开─瀀⸀戀愀搀✀㰀戀爀㸀ഀഀ LOGFILE 'log_%a_%p.log'
਍    䘀䤀䔀䰀䐀匀 吀䔀刀䴀䤀一䄀吀䔀䐀 䈀夀 ✀Ⰰ✀㰀戀爀㸀ഀഀ MISSING FIELD VALUES ARE NULL
਍    刀䔀䨀䔀䌀吀 刀伀圀匀 圀䤀吀䠀 䄀䰀䰀 一唀䰀䰀 䘀䤀䔀䰀䐀匀㰀戀爀㸀ഀഀ (empno, ename, job, deptno))
਍    䰀伀䌀䄀吀䤀伀一 ⠀✀搀攀洀漀㄀⸀搀愀琀✀⤀㰀戀爀㸀ഀഀ )
਍㰀戀爀㸀ഀഀ ਍ऀऀऀऀऀഀഀ ਍㰀䈀㸀㜀⸀㘀 䌀刀䔀䄀吀䔀 䌀䰀唀匀吀䔀刀㨀㰀⼀䈀㸀㰀戀爀㸀ऀഀഀ ਍ऀऀऀऀഀഀ
਍䤀渀搀攀砀 䌀氀甀猀琀攀爀㨀㰀戀爀㸀ऀऀऀऀऀഀഀ CREATE CLUSTER employees_departments_cluster
਍⠀搀攀瀀愀爀琀洀攀渀琀开椀搀 一唀䴀䈀䔀刀⠀㐀⤀⤀㰀戀爀㸀ऀऀऀऀऀഀഀ SIZE 512;
਍㰀戀爀㸀ऀऀऀऀऀഀഀ ਍䌀刀䔀䄀吀䔀 䤀一䐀䔀堀 椀搀砀开攀洀瀀开搀攀瀀琀开挀氀甀猀琀攀爀 伀一 䌀䰀唀匀吀䔀刀 攀洀瀀氀漀礀攀攀猀开搀攀瀀愀爀琀洀攀渀琀猀开挀氀甀猀琀攀爀㬀㰀戀爀㸀ऀऀऀऀऀഀഀ
਍ⴀⴀ 一漀眀Ⰰ ∀愀搀搀∀ 琀愀戀氀攀猀 琀漀 琀栀攀 挀氀甀猀琀攀爀 氀椀欀攀 昀漀爀 攀砀愀洀瀀氀攀㨀㰀戀爀㸀ऀऀऀऀऀഀഀ
਍䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀 攀洀瀀氀漀礀攀攀猀 ⠀ ⸀⸀⸀ ⤀ऀ㰀戀爀㸀ऀऀऀऀഀഀ CLUSTER employees_departments_cluster (department_id);
਍㰀戀爀㸀ഀഀ CREATE TABLE departments ( ... )
਍䌀䰀唀匀吀䔀刀 攀洀瀀氀漀礀攀攀猀开搀攀瀀愀爀琀洀攀渀琀猀开挀氀甀猀琀攀爀 ⠀搀攀瀀愀爀琀洀攀渀琀开椀搀⤀㬀㰀戀爀㸀ഀഀ
਍ഀഀ ਍㰀䈀㸀㜀⸀㜀 䤀一䐀䔀堀ⴀ伀刀䜀䄀一䤀娀䔀䐀 吀䄀䈀䰀䔀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍ⴀⴀ 䤀渀搀攀砀 伀爀最愀渀椀稀攀搀 吀愀戀氀攀猀 愀爀攀 琀愀戀氀攀猀 琀栀愀琀Ⰰ 甀渀氀椀欀攀 栀攀愀瀀 琀愀戀氀攀猀Ⰰ 愀爀攀 漀爀最愀渀椀稀攀搀 氀椀欀攀 䈀⨀吀爀攀攀 椀渀搀攀砀攀猀⸀ऀഀഀ
਍䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀 氀愀戀漀爀开栀漀甀爀 ⠀㰀戀爀㸀ഀഀ WORK_DATE DATE,
਍䔀䴀倀䰀伀夀䔀䔀开一伀    嘀䄀刀䌀䠀䄀刀㈀⠀㠀⤀Ⰰ㰀戀爀㸀ഀഀ CONSTRAINT pk_labor_hour
਍倀刀䤀䴀䄀刀夀 䬀䔀夀 ⠀眀漀爀欀开搀愀琀攀Ⰰ 攀洀瀀氀漀礀攀攀开渀漀⤀⤀㰀戀爀㸀ഀഀ ORGANIZATION INDEX;
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 7.8 DATABASE LINK:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ऀऀऀऀഀഀ -- To run queries against remote tables in another database, you can create a "database link":
਍ⴀⴀ 䔀砀愀洀瀀氀攀㨀㰀戀爀㸀ऀऀऀऀഀഀ
਍䌀刀䔀䄀吀䔀 倀甀戀氀椀挀 䐀愀琀愀戀愀猀攀 䰀椀渀欀 䴀夀䰀䤀一䬀 㰀戀爀㸀ऀഀഀ connect To scott Identified By tiger using sales;
਍㰀戀爀㸀ഀഀ Here, "sales" is the alias as listed in the tnsnames.ora, which corresponds to some local
਍漀爀 爀攀洀漀琀攀 椀渀猀琀愀渀挀攀⸀㰀戀爀㸀ഀഀ Also, scott is a schema in that remote database, which owns the tables and views we are ਍椀渀琀攀爀爀攀猀琀攀搀 椀渀⸀㰀戀爀㸀ഀഀ
਍一漀眀 猀甀瀀瀀漀猀攀 琀栀愀琀 䔀䴀倀 ⠀猀挀漀琀琀⸀䔀䴀倀⤀ 椀猀 愀 琀愀戀氀攀 椀渀 琀栀攀 爀攀洀漀琀攀 搀愀琀愀戀愀猀攀Ⰰ 琀栀攀渀 眀攀 挀愀渀 焀甀攀爀礀 椀琀 甀猀椀渀最㰀戀爀㸀ഀഀ a syntax like:
਍㰀戀爀㸀ऀऀऀऀഀഀ SELECT * from EMP@MYLINK;
਍㰀戀爀㸀ഀഀ So, the SELECT statement simply uses identifiers like "OBJECT_NAME@DATABASELINK_NAME"
਍椀渀 琀栀攀 䘀刀伀䴀 挀氀愀甀猀攀⸀㰀戀爀㸀ऀഀഀ
਍一漀琀攀㨀 礀漀甀 挀愀渀 愀氀猀漀 挀爀攀愀琀攀 愀 ∀猀礀渀漀渀礀洀∀ 昀漀爀 猀甀挀栀 爀攀洀漀琀攀 琀愀戀氀攀猀Ⰰ 眀栀椀挀栀 洀愀欀攀 琀栀攀洀㰀戀爀㸀ഀഀ to "appear" to exist locally.
਍㰀戀爀㸀ऀऀऀऀഀഀ ਍㰀䈀㸀㜀⸀㤀 匀䔀儀唀䔀一䌀䔀㨀㰀⼀䈀㸀㰀戀爀㸀ऀഀഀ ਍ऀऀऀഀഀ
਍䌀刀䔀䄀吀䔀 匀䔀儀唀䔀一䌀䔀           猀攀焀甀攀渀挀攀 渀愀洀攀㰀戀爀㸀 ഀഀ INCREMENT BY increment number
਍          匀吀䄀刀吀 圀䤀吀䠀      猀琀愀爀琀 渀甀洀戀攀爀㰀戀爀㸀ഀഀ MAXVALUE maximum value
਍          䌀夀䌀䰀䔀 㬀㰀戀爀㸀ഀഀ
਍ഀഀ CREATE SEQUENCE SEQ_SOURCE
਍  䤀一䌀刀䔀䴀䔀一吀 䈀夀 ㄀㰀戀爀㸀ഀഀ START WITH 1
਍  䴀䄀堀嘀䄀䰀唀䔀 㤀㤀㤀㤀㤀㤀㤀㰀戀爀㸀ഀഀ NOCYCLE;
਍㰀戀爀㸀ഀഀ create table SOURCE
਍⠀㰀戀爀㸀ऀഀഀ id number(10) not null,
਍氀漀渀最爀攀挀漀爀搀 瘀愀爀挀栀愀爀㈀⠀㄀㈀㠀⤀⤀㬀㰀戀爀㸀ऀഀഀ
਍䌀刀䔀䄀吀䔀 伀刀 刀䔀倀䰀䄀䌀䔀 吀刀䤀䜀䜀䔀刀 琀爀开猀漀甀爀挀攀ऀ㰀戀爀㸀ഀഀ BEFORE INSERT ON SOURCE FOR EACH ROW
਍䈀䔀䜀䤀一ऀ㰀戀爀㸀ഀഀ SELECT seq_source.NEXTVAL INTO :NEW.id FROM dual;
਍䔀一䐀㬀㰀戀爀㸀ऀഀഀ /
਍㰀戀爀㸀ऀഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 7.10 Partitioned Table:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ -- RANGE PARTITIONED:
਍㰀戀爀㸀ഀഀ CREATE TABLE sales
਍    ⠀ 椀渀瘀漀椀挀攀开渀漀 一唀䴀䈀䔀刀Ⰰ 㰀戀爀㸀ഀഀ sale_year INT NOT NULL,
਍      猀愀氀攀开洀漀渀琀栀 䤀一吀 一伀吀 一唀䰀䰀Ⰰ㰀戀爀㸀ഀഀ sale_day INT NOT NULL )
਍  倀䄀刀吀䤀吀䤀伀一 䈀夀 刀䄀一䜀䔀 ⠀猀愀氀攀开礀攀愀爀Ⰰ 猀愀氀攀开洀漀渀琀栀Ⰰ 猀愀氀攀开搀愀礀⤀㰀戀爀㸀ഀഀ ( PARTITION sales_q1 VALUES LESS THAN (1999, 04, 01)
਍        吀䄀䈀䰀䔀匀倀䄀䌀䔀 琀猀愀Ⰰ㰀戀爀㸀ഀഀ PARTITION sales_q2 VALUES LESS THAN (1999, 07, 01)
਍        吀䄀䈀䰀䔀匀倀䄀䌀䔀 琀猀戀Ⰰ㰀戀爀㸀ഀഀ PARTITION sales_q3 VALUES LESS THAN (1999, 10, 01)
਍        吀䄀䈀䰀䔀匀倀䄀䌀䔀 琀猀挀Ⰰ㰀戀爀㸀ഀഀ PARTITION sales_q4 VALUES LESS THAN (2000, 01, 01)
਍        吀䄀䈀䰀䔀匀倀䄀䌀䔀 琀猀搀 ⤀㬀 㰀戀爀㸀ഀഀ
਍ഀഀ -- A row with SALE_YEAR=1999, SALE_MONTH=8, and SALE_DAY=1 has a partitioning key of (1999, 8, 1)
਍ⴀⴀ 愀渀搀 眀漀甀氀搀 戀攀 猀琀漀爀攀搀 椀渀 瀀愀爀琀椀琀椀漀渀 匀䄀䰀䔀匀开儀㌀ 椀渀 吀愀戀氀攀猀瀀愀挀攀 琀猀挀⸀ 㰀戀爀㸀ഀഀ
਍ⴀⴀ 䠀䄀匀䠀 倀䄀刀吀䤀吀䤀伀一䔀䐀㨀㰀戀爀㸀ഀഀ
਍䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀 猀挀甀戀愀最攀愀爀㰀戀爀㸀ഀഀ (id NUMBER,
਍      渀愀洀攀 嘀䄀刀䌀䠀䄀刀㈀ ⠀㘀 ⤀⤀㰀戀爀㸀ഀഀ PARTITION BY HASH (id)
਍   倀䄀刀吀䤀吀䤀伀一匀 㐀 㰀戀爀㸀ഀഀ STORE IN (gear1, gear2, gear3, gear4);
਍㰀戀爀㸀ഀഀ -- LIST PARTITIONED:
਍㰀戀爀㸀ഀഀ CREATE TABLE q1_sales_by_region
਍      ⠀搀攀瀀琀渀漀 渀甀洀戀攀爀Ⰰ 㰀戀爀㸀ഀഀ deptname varchar2(20),
਍       焀甀愀爀琀攀爀氀礀开猀愀氀攀猀 渀甀洀戀攀爀⠀㄀ Ⰰ ㈀⤀Ⰰ㰀戀爀㸀ഀഀ state varchar2(2))
਍   倀䄀刀吀䤀吀䤀伀一 䈀夀 䰀䤀匀吀 ⠀猀琀愀琀攀⤀㰀戀爀㸀ഀഀ (PARTITION q1_northwest VALUES ('OR', 'WA'),
਍       倀䄀刀吀䤀吀䤀伀一 焀㄀开猀漀甀琀栀眀攀猀琀 嘀䄀䰀唀䔀匀 ⠀✀䄀娀✀Ⰰ ✀唀吀✀Ⰰ ✀一䴀✀⤀Ⰰ㰀戀爀㸀ഀഀ PARTITION q1_northeast VALUES ('NY', 'VM', 'NJ'),
਍       倀䄀刀吀䤀吀䤀伀一 焀㄀开猀漀甀琀栀攀愀猀琀 嘀䄀䰀唀䔀匀 ⠀✀䘀䰀✀Ⰰ ✀䜀䄀✀⤀Ⰰ㰀戀爀㸀ഀഀ PARTITION q1_northcentral VALUES ('SD', 'WI'),
਍       倀䄀刀吀䤀吀䤀伀一 焀㄀开猀漀甀琀栀挀攀渀琀爀愀氀 嘀䄀䰀唀䔀匀 ⠀✀伀䬀✀Ⰰ ✀吀堀✀⤀⤀㬀㰀戀爀㸀ഀഀ
਍ⴀⴀ 䌀漀洀瀀漀猀椀琀攀 刀愀渀最攀ⴀ䠀愀猀栀 倀愀爀琀椀琀椀漀渀椀渀最㨀㰀戀爀㸀ഀഀ
਍ഀഀ CREATE TABLE scubagear (equipno NUMBER, equipname VARCHAR(32), price NUMBER)
਍  倀䄀刀吀䤀吀䤀伀一 䈀夀 刀䄀一䜀䔀 ⠀攀焀甀椀瀀渀漀⤀ 匀唀䈀倀䄀刀吀䤀吀䤀伀一 䈀夀 䠀䄀匀䠀⠀攀焀甀椀瀀渀愀洀攀⤀ऀ㰀戀爀㸀ऀऀऀऀഀഀ SUBPARTITIONS 8 STORE IN (ts1, ts2, ts3, ts4) -- tablespaces ਍      ⠀倀䄀刀吀䤀吀䤀伀一 瀀㄀ 嘀䄀䰀唀䔀匀 䰀䔀匀匀 吀䠀䄀一 ⠀㄀   ⤀Ⰰ㰀戀爀㸀ऀऀऀऀऀഀഀ PARTITION p2 VALUES LESS THAN (2000),
਍       倀䄀刀吀䤀吀䤀伀一 瀀㌀ 嘀䄀䰀唀䔀匀 䰀䔀匀匀 吀䠀䄀一 ⠀䴀䄀堀嘀䄀䰀唀䔀⤀⤀㬀㰀戀爀㸀ऀऀऀऀऀഀഀ ਍㰀戀爀㸀  ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

8. GET THE SQL ISSUED AGAINST THE DATABASE:

਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍ⴀⴀ 䌀漀甀氀搀 琀愀欀攀 愀 氀漀琀 漀昀 瀀攀爀昀漀爀洀愀渀挀攀Ⰰ 搀攀瀀攀渀搀椀渀最 漀渀 甀瀀琀椀洀攀 愀渀搀 愀挀琀椀瘀椀琀礀⸀㰀戀爀㸀ഀഀ -- Sort of auditing. You get the sql statements.
਍ⴀⴀ 䤀洀瀀漀爀琀愀渀琀㨀 䘀椀爀猀琀 琀爀礀 琀栀椀猀 焀甀攀爀礀 漀渀 愀 琀攀猀琀 猀礀猀琀攀洀⸀㰀戀爀㸀ഀഀ
਍ⴀⴀ 猀攀琀 氀椀渀攀猀椀稀攀 㜀 㰀戀爀㸀ഀഀ -- set pagesize 100
਍ⴀⴀ 猀攀琀 琀爀椀洀猀瀀漀漀氀 漀渀㰀戀爀㸀ഀഀ -- spool /tmp/sql.log
਍㰀戀爀㸀ഀഀ select v.sql_text, v.FIRST_LOAD_TIME, v.PARSING_SCHEMA_ID, v.DISK_READS, v.ROWS_PROCESSED, v.CPU_TIME,
਍戀⸀甀猀攀爀渀愀洀攀 昀爀漀洀㰀戀爀㸀ഀഀ v$sqlarea v, dba_users b
਍眀栀攀爀攀 瘀⸀䘀䤀刀匀吀开䰀伀䄀䐀开吀䤀䴀䔀 㸀 ✀㈀ ㄀ ⴀ ㌀ⴀ㄀㔀✀㰀戀爀㸀ഀഀ and v.PARSING_SCHEMA_ID=b.user_id
਍漀爀搀攀爀 戀礀 瘀⸀䘀䤀刀匀吀开䰀伀䄀䐀开吀䤀䴀䔀 㬀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㤀∀㸀㤀⸀ 䜀䔀吀 吀䠀䔀 匀䜀䄀 倀刀伀倀䔀刀吀䤀䔀匀㨀㰀⼀栀㈀㸀ഀഀ ਍ഀഀ -- Oracle background processes:
਍㰀戀爀㸀ഀഀ SQL> SELECT paddr, name, substr(description,1,40) FROM v$bgprocess;
਍㰀戀爀㸀ഀഀ SQL> SELECT pid, spid, program, background FROM v$process WHERE BACKGROUND=1;
਍㰀戀爀㸀ഀഀ -- All processes:
਍㰀戀爀㸀ഀഀ SQL> SELECT SID,SERIAL#,USERNAME,COMMAND,PROCESS,MODULE,PROGRAM FROM v$session;
਍㰀戀爀㸀ഀഀ -- SGA properties:
਍㰀戀爀㸀ഀഀ SELECT * FROM v$sga;
਍㰀戀爀㸀ഀഀ SELECT * FROM v$sgastat;
਍㰀戀爀㸀ഀഀ SELECT * FROM v$pgastat; -- PGA properties
਍㰀戀爀㸀ഀഀ SELECT * FROM v$memory_target_advice ORDER BY memory_size;
਍㰀戀爀㸀ഀഀ SELECT SUBSTR(COMPONENT,1,20), CURRENT_SIZE, MIN_SIZE, MAX_SIZE, USER_SPECIFIED_SIZE from V$MEMORY_DYNAMIC_COMPONENTS;
਍㰀戀爀㸀ഀഀ SELECT sum(bytes) FROM v$sgastat WHERE pool in ('shared pool', 'java pool', 'large pool');
਍㰀戀爀㸀ഀഀ SELECT (1-(pr.value/(dbg.value+cg.value)))*100
਍䘀刀伀䴀    瘀␀猀礀猀猀琀愀琀 瀀爀Ⰰ 瘀␀猀礀猀猀琀愀琀 搀戀最Ⰰ 瘀␀猀礀猀猀琀愀琀 挀最㰀戀爀㸀ഀഀ WHERE pr.name = 'physical reads'
਍䄀一䐀     搀戀最⸀渀愀洀攀 㴀 ✀搀戀 戀氀漀挀欀 最攀琀猀✀㰀戀爀㸀ഀഀ AND cg.name = 'consistent gets';
਍㰀戀爀㸀ഀഀ SELECT * FROM v$sgastat
਍圀䠀䔀刀䔀 渀愀洀攀 㴀 ✀昀爀攀攀 洀攀洀漀爀礀✀㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 最攀琀栀椀琀猀Ⰰ最攀琀猀Ⰰ最攀琀栀椀琀爀愀琀椀漀 䘀刀伀䴀 瘀␀氀椀戀爀愀爀礀挀愀挀栀攀㰀戀爀㸀ഀഀ WHERE namespace = 'SQL AREA';
਍㰀戀爀㸀ഀഀ SELECT substr(sql_text,1,40) "SQL",
਍       挀漀甀渀琀⠀⨀⤀ Ⰰ 㰀戀爀㸀ഀഀ sum(executions) "TotExecs"
਍䘀刀伀䴀 瘀␀猀焀氀愀爀攀愀㰀戀爀㸀ഀഀ WHERE executions < 5
਍䜀刀伀唀倀 䈀夀 猀甀戀猀琀爀⠀猀焀氀开琀攀砀琀Ⰰ㄀Ⰰ㐀 ⤀㰀戀爀㸀ഀഀ HAVING count(*) > 30
਍伀刀䐀䔀刀 䈀夀 ㈀㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 匀唀䴀⠀倀䤀一匀⤀ ∀䔀堀䔀䌀唀吀䤀伀一匀∀Ⰰ 匀唀䴀⠀刀䔀䰀伀䄀䐀匀⤀ ∀䌀䄀䌀䠀䔀 䴀䤀匀匀䔀匀 圀䠀䤀䰀䔀 䔀堀䔀䌀唀吀䤀一䜀∀㰀戀爀㸀ഀഀ FROM V$LIBRARYCACHE;
਍㰀戀爀㸀ഀഀ See also section 33 for an illustration of the memory structures and processes.
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㄀ ∀㸀㄀ ⸀ 䌀刀䔀䄀吀䔀 䄀一 ∀匀倀䘀䤀䰀䔀⸀伀刀䄀∀ 䘀刀伀䴀 䄀一 ∀䤀一䤀吀⸀伀刀䄀∀ 䄀一䐀 吀䠀䔀 伀吀䠀䔀刀 圀䄀夀 䄀刀伀唀一䐀㨀㰀⼀栀㈀㸀ഀഀ ਍ഀഀ -- init.ora: traditional ascii format startup configuration file.
਍ⴀⴀ 猀瀀昀椀氀攀⸀漀爀愀㨀 戀椀渀愀爀礀 昀漀爀洀愀琀 猀琀愀爀琀甀瀀 挀漀渀昀椀最甀爀愀琀椀漀渀 昀椀氀攀⸀㰀戀爀㸀ഀഀ -- Both can be used to start the instance. However, preferred is to use the spfile.ora.
਍ⴀⴀ 吀栀攀 愀挀琀甀愀氀 ⠀搀攀昀愀甀氀琀⤀ 椀渀椀琀⸀漀爀愀⼀猀瀀昀椀氀攀⸀漀爀愀 昀椀氀攀Ⰰ 眀椀氀氀 甀猀攀 琀栀攀 椀渀猀琀愀渀挀攀 渀愀洀攀 椀渀 椀琀✀猀 昀椀氀攀渀愀洀攀Ⰰ 氀椀欀攀 椀渀椀琀匀䄀䰀䔀匀⸀漀爀愀㰀戀爀㸀ഀഀ
਍䌀刀䔀䄀吀䔀 匀倀䘀䤀䰀䔀㴀✀⼀漀瀀琀⼀漀爀愀挀氀攀⼀瀀爀漀搀甀挀琀⼀㄀ ⸀㈀⼀搀戀猀⼀猀瀀昀椀氀攀匀䄀䰀䔀匀⸀漀爀愀✀ 㰀戀爀㸀ഀഀ FROM PFILE='/opt/oracle/product/10.2/admin/scripts/init.ora';
਍㰀戀爀㸀ഀഀ CREATE SPFILE='/opt/app/oracle/product/9.2/dbs/spfilePEGACC.ora'
਍䘀刀伀䴀 倀䘀䤀䰀䔀㴀✀⼀漀瀀琀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀愀搀洀椀渀⼀倀䔀䜀䄀䌀䌀⼀猀挀爀椀瀀琀猀⼀椀渀椀琀⸀漀爀愀✀㬀㰀戀爀㸀ഀഀ
਍䌀刀䔀䄀吀䔀 倀䘀䤀䰀䔀㴀✀⼀漀瀀琀⼀漀爀愀挀氀攀⼀瀀爀漀搀甀挀琀⼀㄀ ⸀㈀⼀愀搀洀椀渀⼀猀挀爀椀瀀琀猀⼀椀渀椀琀⸀漀爀愀✀ 㰀戀爀㸀ഀഀ FROM SPFILE='/opt/oracle/product/10.2/dbs/spfileSALES.ora';
਍㰀戀爀㸀ഀഀ In addition, in Oracle 11g, you can create a pfile (init.ora) file, just from the current settings from memory:
਍㰀戀爀㸀ഀഀ CREATE PFILE='/apps/oracle/product/11.1/dbs/init_prod.ora' FROM MEMORY;
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

11. CREATE A COPY TABLE WITH ALL DATA:

਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍ⴀⴀ 吀栀攀 䌀吀䄀匀 洀攀琀栀漀搀 漀爀 ∀䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀 䄀匀 匀䔀䰀䔀䌀吀∀ 洀攀琀栀漀搀Ⰰ 愀氀氀漀眀猀 礀漀甀 琀漀 挀爀攀愀琀攀 愀渀 攀砀愀挀琀 挀漀瀀礀 琀愀戀氀攀㰀戀爀㸀ഀഀ -- from an original table, with the same columns and datatypes, and all rows,
਍ⴀⴀ 戀甀琀 攀砀挀氀甀搀椀渀最 琀栀攀 椀渀搀攀砀攀猀 愀渀搀 挀漀渀猀琀爀愀椀渀琀猀⸀㰀戀爀㸀ഀഀ -- This new table will be created "on the fly", so it should not exist beforehand. ਍㰀戀爀㸀ഀഀ -- Example CTAS method:
਍㰀戀爀㸀ഀഀ CREATE TABLE EMPLOYEE2
਍䄀匀 匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 䔀䴀倀䰀伀夀䔀䔀㬀㰀戀爀㸀ഀഀ
਍ⴀⴀ 伀渀攀 愀氀琀攀爀渀愀琀椀瘀攀 洀攀琀栀漀搀 椀猀㨀㰀戀爀㸀ഀഀ -- Obtain the create script of the original table (e.g. using toad).
਍ⴀⴀ 䌀爀攀愀琀攀 琀栀攀 渀攀眀 攀洀瀀琀礀 琀愀戀氀攀 甀猀椀渀最 愀渀 漀琀栀攀爀 琀愀戀氀攀渀愀洀攀Ⰰ 甀猀椀渀最 琀栀愀琀 猀挀爀椀瀀琀⸀ഀഀ -- Then use:
਍㰀戀爀㸀ഀഀ INSERT INTO NEW_TABLE ਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 匀伀唀刀䌀䔀开吀䄀䈀䰀䔀㬀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

12. A FEW SIMPLE WAYS TO TRACE A SESSION:

਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍ⴀⴀ 吀栀椀猀 猀攀挀琀椀漀渀 伀一䰀夀 氀椀猀琀猀 琀栀攀 瘀攀爀礀 瘀攀爀礀 戀愀猀椀挀猀 漀渀 琀爀愀挀椀渀最⸀㰀戀爀㸀ഀഀ
਍ⴀⴀ ∀伀氀搀 昀愀猀栀椀漀渀∀ 琀爀愀挀攀猀 椀渀 㤀椀⼀㄀ 最⼀㄀㄀最Ⰰ 甀猀攀猀 琀栀攀 匀攀猀猀椀漀渀 䤀搀攀渀琀椀昀椀攀爀 ⠀匀䤀䐀⤀ 愀渀搀 漀瀀琀椀漀渀愀氀氀礀 漀琀栀攀爀 瀀愀爀愀洀攀琀攀爀猀 氀椀欀攀 㰀戀爀㸀ഀഀ -- the Serial number (serial#), to distinguish between all sessions in the database, and accordingly trace
਍ⴀⴀ 琀栀愀琀 猀瀀攀挀椀昀椀挀 猀攀猀猀椀漀渀⸀㰀戀爀㸀ഀഀ
਍ⴀⴀ 䴀漀搀攀爀渀 洀攀琀栀漀搀猀 愀氀氀漀眀猀 礀漀甀 琀漀 攀猀琀愀戀氀椀猀栀 愀 挀氀椀攀渀琀 椀搀攀渀琀椀昀椀攀爀Ⰰ 漀爀 氀攀琀✀猀 礀漀甀 洀漀渀椀琀漀爀 漀渀 愀 洀漀搀甀氀攀Ⰰ㰀戀爀㸀ഀഀ -- so you are not perse "tied" to the SID anymore.
਍㰀戀爀㸀ഀഀ -- From v$session you can find the username, osuser, SID, SERIAL#, program, and module (if needed).
਍ⴀⴀ 䰀椀欀攀 昀漀爀 攀砀愀洀瀀氀攀 ⠀猀攀攀 猀攀挀琀椀漀渀 ㌀ 昀漀爀 洀漀爀攀 椀渀昀漀⤀㨀㰀戀爀㸀ഀഀ --
਍ⴀⴀ 猀攀氀攀挀琀 猀椀搀Ⰰ 猀攀爀椀愀氀⌀Ⰰ 甀猀攀爀渀愀洀攀 昀爀漀洀 瘀␀猀攀猀猀椀漀渀㬀㰀戀爀㸀ഀഀ -- select sid, serial#, username, module from v$session;
਍ⴀⴀ 㰀戀爀㸀ഀഀ -- This will identify the Oracle SID with the username (and optionally the OS user and other).
਍ⴀⴀ 䤀昀 礀漀甀 欀渀漀眀 愀 挀栀愀爀愀挀琀攀爀椀猀琀椀挀 瀀爀漀最爀愀洀Ⰰ 漀爀 洀漀搀甀氀攀 ⠀氀椀欀攀 猀焀氀瀀氀甀猀⤀Ⰰ 漀爀 甀猀攀爀Ⰰ 琀栀攀 匀䤀䐀 ⠀匀攀猀猀椀漀渀 䤀䐀⤀ 挀愀渀 戀攀 昀漀甀渀搀⸀㰀戀爀㸀ഀഀ -- Especially the "module" field in v$session identifies a certain client program like "sqlplus.exe" or "nav.exe" etc..
਍ⴀⴀ 䈀甀琀 洀愀礀戀攀Ⰰ 愀氀爀攀愀搀礀 愀 甀渀椀焀甀攀 甀猀攀爀渀愀洀攀 椀猀 猀甀昀昀椀挀椀攀渀琀 琀漀 椀搀攀渀琀椀昀礀 琀栀攀 匀䤀䐀 愀渀搀 匀䔀刀䤀䄀䰀⌀ 椀渀 礀漀甀爀 猀椀琀甀愀琀椀漀渀⸀㰀戀爀㸀ഀഀ
਍ⴀⴀ 䤀渀 洀漀猀琀 洀攀琀栀漀搀猀Ⰰ 琀栀攀 㤀椀Ⰰ ㄀ 最 琀爀愀挀攀猀 眀椀氀氀 戀攀 猀琀漀爀攀搀 椀渀 琀栀攀 唀匀䔀刀开䐀唀䴀倀开䐀䔀匀吀 搀椀爀攀挀琀漀爀礀 ⠀甀搀甀洀瀀⤀⸀ 㰀戀爀㸀ഀഀ
਍㰀戀爀㸀 ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 12.1 TRACING ON SESSION ID (SID)
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
਍㰀戀爀㸀ഀഀ 1. Using the DBMS_MONITOR.SESSION_TRACE_ENABLE() procedure:
਍㰀戀爀㸀ഀഀ Example: Suppose you want to trace Session 75 with serial# 4421:
਍㰀戀爀㸀ഀഀ exec DBMS_MONITOR.SESSION_TRACE_ENABLE(75,4421);
਍㰀戀爀㸀ഀഀ To disable tracing specified in the previous step:
਍㰀戀爀㸀ഀഀ exec DBMS_MONITOR.SESSION_TRACE_DISABLE(75,4421);
਍㰀戀爀㸀ഀഀ Since almost always the session is qualified "enough" by the SID alone, you can use this as well:
਍㰀戀爀㸀ഀഀ exec DBMS_MONITOR.SESSION_TRACE_ENABLE(75);
਍㰀戀爀㸀ഀഀ Tracing your session can be done using: ਍㰀戀爀㸀ഀഀ exec DBMS_MONITOR.SESSION_TRACE_ENABLE();
਍漀爀㰀戀爀㸀ഀഀ exec DBMS_MONITOR.SESSION_TRACE_ENABLE(NULL, NULL);
਍㰀戀爀㸀ഀഀ
਍㰀唀㸀㈀⸀ 唀猀椀渀最 琀栀攀 䐀䈀䴀匀开匀夀匀吀䔀䴀⸀匀䔀吀开䔀嘀⠀⤀ 瀀爀漀挀攀搀甀爀攀㨀㰀⼀唀㸀㰀戀爀㸀ഀഀ
਍䠀攀爀攀Ⰰ 夀漀甀 渀攀攀搀 琀漀 欀渀漀眀 眀栀椀挀栀 ∀攀瘀攀渀琀∀ 渀甀洀戀攀爀 礀漀甀 眀愀渀琀 琀漀 琀爀愀挀攀 漀渀Ⰰ 愀渀搀 琀栀攀 氀攀瘀攀氀 琀栀攀爀攀漀昀昀⸀㰀戀爀㸀ഀഀ For a performance related trace, event 10046 with level 8 (or 12) might be a good choice.
਍䈀攀 愀眀愀爀攀 琀栀愀琀 琀栀攀猀攀 琀爀愀挀攀猀 瀀爀漀搀甀挀攀 焀甀椀挀欀 最爀漀眀椀渀最 琀爀愀挀攀 昀椀氀攀猀 ⠀攀猀瀀攀挀椀愀氀氀礀 氀攀瘀攀氀 ㄀㈀⤀⸀㰀戀爀㸀ഀഀ Next, you need the SID and SERIAL# of the session you want to trace.
਍吀栀攀 琀爀愀挀攀 椀渀昀漀爀洀愀琀椀漀渀 眀椀氀氀 戀攀 眀爀椀琀琀攀渀 琀漀 甀猀攀爀开搀甀洀瀀开搀攀猀琀⸀㰀戀爀㸀ഀഀ
਍䔀砀愀洀瀀氀攀㨀㰀戀爀㸀ഀഀ
਍匀琀愀爀琀 琀栀攀 琀爀愀挀攀 漀渀 匀攀猀猀椀漀渀 ㄀㜀㜀 ⠀眀椀琀栀 猀攀爀椀愀氀⌀ 㔀㔀㈀㌀㔀⤀㨀㰀戀爀㸀ഀഀ
਍攀砀攀挀 猀礀猀⸀搀戀洀猀开猀礀猀琀攀洀⸀猀攀琀开攀瘀⠀㄀㜀㜀Ⰰ㔀㔀㈀㌀㔀Ⰰ㄀  㐀㘀Ⰰ㠀Ⰰ✀✀⤀㬀㰀戀爀㸀ഀഀ
਍匀琀漀瀀 琀栀攀 琀爀愀挀攀 漀渀 匀攀猀猀椀漀渀 ㄀㜀㜀 ⠀眀椀琀栀 猀攀爀椀愀氀⌀ 㔀㔀㈀㌀㔀⤀㨀㰀戀爀㸀ഀഀ
਍攀砀攀挀 猀礀猀⸀搀戀洀猀开猀礀猀琀攀洀⸀猀攀琀开攀瘀⠀㄀㜀㜀Ⰰ㔀㔀㈀㌀㔀Ⰰ㄀  㐀㘀Ⰰ Ⰰ✀✀⤀㬀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀唀㸀㌀⸀ 唀猀椀渀最 琀栀攀 䐀䈀䴀匀开匀礀猀琀攀洀⸀匀攀琀开匀焀氀开吀爀愀挀攀开䤀渀开匀攀猀猀椀漀渀⠀⤀ 瀀爀漀挀攀搀甀爀攀㨀㰀⼀唀㸀㰀戀爀㸀ഀഀ
਍䄀 ∀焀甀椀琀攀 漀氀搀∀ 愀渀搀 眀攀氀氀 欀渀漀眀渀 漀琀栀攀爀 瀀爀漀挀攀搀甀爀攀 琀栀愀琀 挀愀渀 戀攀 甀猀攀搀 琀漀 琀爀愀挀攀 愀 匀攀猀猀椀漀渀Ⰰ 椀猀 琀栀攀㰀戀爀㸀ഀഀ DBMS_System.Set_Sql_Trace_In_Session(SID, SERIAL#,true|false) procedure.
਍㰀戀爀㸀ഀഀ Example:
਍㰀戀爀㸀ഀഀ Turn SQL tracing on in session 448. The trace information will get written to user_dump_dest.
਍㰀戀爀㸀ഀഀ exec dbms_system.set_sql_trace_in_session(448,2288,TRUE);
਍㰀戀爀㸀ഀഀ Turn SQL tracing off in session 448
਍㰀戀爀㸀ഀഀ exec dbms_system.set_sql_trace_in_session(448,2288,FALSE); ਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㄀㈀⸀㈀ 吀刀䄀䌀䤀一䜀 伀一 伀吀䠀䔀刀 䤀䐀䔀一吀䤀䘀䤀䔀刀匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍䤀渀猀琀攀愀搀 漀昀 琀爀愀挀椀渀最 漀渀 愀 欀渀漀眀渀 匀䤀䐀Ⰰ 琀漀 戀攀 愀戀氀攀 琀漀 琀爀愀挀攀 漀渀 漀琀栀攀爀 ∀椀搀攀渀琀椀昀椀攀爀猀∀ 椀猀 愀 洀甀挀栀 眀愀渀琀攀搀 昀攀愀琀甀爀攀⸀㰀戀爀㸀ഀഀ As of 10g, the tracing facility has been greatly expanded.
਍一攀眀 瘀␀ ∀瘀椀攀眀猀∀ 眀攀爀攀 愀搀搀攀搀Ⰰ 愀渀搀 攀砀椀猀琀椀渀最 瘀␀ ∀瘀椀攀眀猀∀ 栀愀猀 戀攀攀渀 攀砀瀀愀渀搀攀搀 琀漀 昀愀挀椀氀椀琀愀琀攀 琀栀攀 渀攀眀 琀爀愀挀椀渀最 洀攀琀栀漀搀猀⸀㰀戀爀㸀ഀഀ
਍吀栀椀猀 猀甀戀 猀攀挀琀椀漀渀 眀椀氀氀 栀漀氀搀 昀漀爀 ㄀ 最⼀㄀㄀最⸀㰀戀爀㸀ഀഀ
਍䄀最愀椀渀 氀攀琀✀猀 琀愀欀攀 愀 氀漀漀欀 愀琀 䐀䈀䴀匀开䴀伀一䤀吀伀刀 愀最愀椀渀⸀㰀戀爀㸀ഀഀ Suppose we want to track a program that connects to a RAC cluster. Now, the discussion is not much different
਍椀渀 甀猀椀渀最 愀 猀琀愀渀搀愀氀氀漀渀攀 椀渀猀琀愀渀挀攀⸀ 伀渀氀礀Ⰰ 礀漀甀 瀀爀漀戀愀戀氀礀 欀渀漀眀 琀栀愀琀 琀栀攀 瘀␀ 瘀椀攀眀猀 愀爀攀 猀瀀攀挀椀昀椀挀 昀漀爀 愀渀 椀渀猀琀愀渀挀攀Ⰰ㰀戀爀㸀ഀഀ while the gv$ views are "global" for all the instances in RAC.
਍㰀戀爀㸀ഀഀ The DBMS_MONITOR.serv_mod_act_trace_enable() method allows you to set the tracing on for sessions matching a
਍洀漀搀甀氀攀Ⰰ 愀挀琀椀漀渀Ⰰ 漀爀 漀琀栀攀爀 甀猀愀戀氀攀 昀椀攀氀搀 椀渀 最瘀␀猀攀猀猀椀漀渀 ⠀漀爀 瘀␀猀攀猀猀椀漀渀⤀⸀㰀戀爀㸀ഀഀ So, suppose we want to generate traces for all SQL*plus sessions that connect to the cluster (RACDEV1) from any instance,
਍眀攀 挀漀甀氀搀 椀猀猀甀攀 琀栀攀 昀漀氀氀漀眀椀渀最 挀漀洀洀愀渀搀㨀 㰀戀爀㸀ഀഀ
਍䈀䔀䜀䤀一㰀戀爀㸀ഀഀ DBMS_MONITOR.serv_mod_act_trace_enable
਍                              ⠀猀攀爀瘀椀挀攀开渀愀洀攀       㴀㸀 ✀刀䄀䌀䐀䔀嘀㄀✀Ⰰ㰀戀爀㸀ഀഀ module_name => 'SQL*Plus',
਍                               愀挀琀椀漀渀开渀愀洀攀        㴀㸀 䐀䈀䴀匀开䴀伀一䤀吀伀刀⸀愀氀氀开愀挀琀椀漀渀猀Ⰰ㰀戀爀㸀ഀഀ waits => TRUE,
਍                               戀椀渀搀猀              㴀㸀 䘀䄀䰀匀䔀Ⰰ㰀戀爀㸀ഀഀ instance_name => NULL
਍                              ⤀㬀㰀戀爀㸀ഀഀ END;
਍⼀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

13. A FEW SIMPLE WAYS TO DETECT WAITS:

਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍ⴀⴀ 吀栀椀猀 猀攀挀琀椀漀渀 伀一䰀夀 氀椀猀琀猀 琀栀攀 瘀攀爀礀 瘀攀爀礀 戀愀猀椀挀猀 漀渀 眀愀椀琀猀⸀㰀戀爀㸀ഀഀ
਍ⴀⴀ 猀攀琀 氀椀渀攀猀椀稀攀 ㄀   㰀戀爀㸀ഀഀ -- set pagesize 1000
਍ⴀⴀ 猀攀攀 昀漀爀 礀漀甀爀猀攀氀昀 眀栀攀爀攀 琀漀 甀猀攀 猀甀戀猀琀爀⠀昀椀攀氀搀Ⰰ猀琀愀爀琀Ⰰ氀攀渀最栀琀⤀㰀戀爀㸀ഀഀ
਍ഀഀ ਍㰀䈀㸀㄀㌀⸀㄀ 䠀伀圀 吀伀 䤀䐀䔀一吀䤀䘀夀 吀䠀䔀 䘀䤀䰀䔀匀 圀䤀吀䠀 䠀䤀䜀䠀䔀匀吀 䄀䌀吀䤀嘀䤀吀夀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍ⴀⴀ 焀甀攀爀礀 漀渀 瘀␀昀椀氀攀猀琀愀琀Ⰰ 搀戀愀开搀愀琀愀开昀椀氀攀猀㨀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 瘀⸀倀䠀夀刀䐀匀Ⰰ 瘀⸀倀䠀夀圀刀吀匀Ⰰ 搀⸀吀䄀䈀䰀䔀匀倀䄀䌀䔀开一䄀䴀䔀Ⰰ 搀⸀䘀䤀䰀䔀开一䄀䴀䔀㰀戀爀㸀ഀഀ FROM V$FILESTAT v, DBA_DATA_FILES d
਍圀䠀䔀刀䔀 瘀⸀䘀䤀䰀䔀⌀㴀搀⸀䘀䤀䰀䔀开䤀䐀㬀㰀戀爀㸀ഀഀ
਍ഀഀ ਍㰀䈀㸀㄀㌀⸀㈀ 䠀伀圀 吀伀 䤀䐀䔀一吀䤀䘀夀 䄀䌀吀䤀嘀䤀吀夀 伀一 䌀伀一吀刀伀䰀䘀䤀䰀䔀匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 瘀␀猀礀猀琀攀洀开攀瘀攀渀琀㰀戀爀㸀ഀഀ WHERE event LIKE '%control%' ;
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 13.3 HOW TO IDENTIFY WAITS OF SESSIONS OR WITH HIGH IO:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ SELECT s.SID,v.username,v.osuser,v.command,s.BLOCK_GETS,s.PHYSICAL_READS,s.BLOCK_CHANGES,substr(v.module,1,30)
਍䘀刀伀䴀 瘀␀猀攀猀猀开椀漀 猀Ⰰ 瘀␀猀攀猀猀椀漀渀 瘀㰀戀爀㸀ഀഀ where v.sid=s.sid;
਍㰀戀爀㸀ഀഀ SELECT SID,OPNAME,SOFAR,TOTALWORK,START_TIME,LAST_UPDATE_TIME,TIME_REMAINING,MESSAGE
਍䘀刀伀䴀 瘀␀猀攀猀猀椀漀渀开氀漀渀最漀瀀猀㬀㰀戀爀㸀ഀഀ
਍ⴀⴀ 椀搀攀渀琀椀昀礀 匀䤀䐀✀猀 愀渀搀 琀栀攀 漀戀樀攀挀琀猀 ⠀漀爀 昀椀氀攀⌀Ⰰ 戀氀漀挀欀⌀⤀ 眀栀椀挀栀 愀爀攀 椀渀瘀漀氀瘀攀搀 椀渀 眀愀椀琀猀⸀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀   匀䤀䐀Ⰰ 攀瘀攀渀琀Ⰰ瀀㄀琀攀砀琀Ⰰ瀀㄀Ⰰ瀀㈀琀攀砀琀Ⰰ瀀㈀㰀戀爀㸀ഀഀ FROM v$session_wait
਍圀䠀䔀刀䔀    攀瘀攀渀琀 䰀䤀䬀䔀 ✀搀戀 昀椀氀攀─✀㰀戀爀㸀ഀഀ AND state = 'WAITING';
਍㰀戀爀㸀ഀഀ -- The p1 and p2 might identify the file# and block# of the object(s).
਍ⴀⴀ 䐀攀琀攀爀洀椀渀攀 琀栀攀 漀戀樀攀挀琀 愀猀 昀漀氀氀漀眀猀㨀 猀甀瀀瀀漀猀攀 礀漀甀 昀漀甀渀搀 瀀㄀㴀㔀 愀渀搀 瀀㈀㴀㄀㄀㜀㠀㰀戀爀㸀ഀഀ
਍猀攀氀攀挀琀 猀攀最洀攀渀琀开渀愀洀攀Ⰰ 猀攀最洀攀渀琀开琀礀瀀攀㰀戀爀㸀ഀഀ from dba_extents
਍眀栀攀爀攀 昀椀氀攀开椀搀 㴀 㔀 愀渀搀 ㄀㄀㜀㠀 戀攀琀眀攀攀渀 ⠀戀氀漀挀欀开椀搀 愀渀搀 戀氀漀挀欀开椀搀 ⬀ 戀氀漀挀欀猀 ጀ†㄀⤀㬀㰀戀爀㸀ഀഀ
਍ഀഀ ਍㰀䈀㸀㄀㌀⸀㐀 伀嘀䔀刀䄀䰀䰀 圀䄀䤀吀匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍猀攀氀攀挀琀㰀戀爀㸀ഀഀ event,
਍   琀漀琀愀氀开眀愀椀琀猀Ⰰ㰀戀爀㸀ഀഀ time_waited / 100,
਍   琀漀琀愀氀开琀椀洀攀漀甀琀猀Ⰰ㰀戀爀㸀ഀഀ average_wait/100
਍昀爀漀洀 㰀戀爀㸀ഀഀ v$system_event
਍眀栀攀爀攀                  ⴀⴀ 氀椀猀琀 漀昀 渀漀琀 琀漀漀 椀渀琀攀爀爀攀猀琀椀渀最 攀瘀攀渀琀猀㰀戀爀㸀 ഀഀ event not in (
਍    ✀搀椀猀瀀愀琀挀栀攀爀 琀椀洀攀爀✀Ⰰ㰀戀爀㸀ഀഀ 'lock element cleanup',
਍    ✀一甀氀氀 攀瘀攀渀琀✀Ⰰ㰀戀爀㸀 ഀഀ 'parallel query dequeue wait',
਍    ✀瀀愀爀愀氀氀攀氀 焀甀攀爀礀 椀搀氀攀 眀愀椀琀 ⴀ 匀氀愀瘀攀猀✀Ⰰ㰀戀爀㸀ഀഀ 'pipe get',
਍    ✀倀䰀⼀匀儀䰀 氀漀挀欀 琀椀洀攀爀✀Ⰰ㰀戀爀㸀ഀഀ 'pmon timer',
਍    ✀爀搀戀洀猀 椀瀀挀 洀攀猀猀愀最攀✀Ⰰ 㰀戀爀㸀ഀഀ 'slave wait',
਍    ✀猀洀漀渀 琀椀洀攀爀✀Ⰰ 㰀戀爀㸀ഀഀ 'SQL*Net break/reset to client',
਍    ✀匀儀䰀⨀一攀琀 洀攀猀猀愀最攀 昀爀漀洀 挀氀椀攀渀琀✀Ⰰ 㰀戀爀㸀ഀഀ 'SQL*Net message to client',
਍    ✀匀儀䰀⨀一攀琀 洀漀爀攀 搀愀琀愀 琀漀 挀氀椀攀渀琀✀Ⰰ㰀戀爀㸀ഀഀ 'virtual circuit status',
਍    ✀圀䴀伀一 最漀攀猀 琀漀 猀氀攀攀瀀✀㰀戀爀㸀ഀഀ );
਍㰀戀爀㸀ഀഀ SELECT event, total_waits, total_timeouts, time_waited, average_wait
਍䘀刀伀䴀 瘀␀猀礀猀琀攀洀开攀瘀攀渀琀 漀爀搀攀爀 戀礀 琀椀洀攀开眀愀椀琀攀搀㬀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 一䄀䴀䔀Ⰰ 嘀䄀䰀唀䔀 昀爀漀洀 瘀␀猀礀猀猀琀愀琀㰀戀爀㸀 ഀഀ where name like '%db%' or name like '%block%'
਍漀爀 渀愀洀攀 氀椀欀攀 ✀─氀漀最─✀ 漀爀 渀愀洀攀 氀椀欀攀 ✀─挀漀渀猀─✀ 㰀戀爀㸀ഀഀ or name like '%undo%' or name like '%write%' or name like '%read%';
਍ഀഀ
਍ഀഀ ਍㰀䈀㸀㄀㌀⸀㔀 䴀伀刀䔀 伀一 嘀␀匀䔀匀匀䤀伀一开䰀伀一䜀伀倀匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍ഀഀ Long running statements are also registered in v$session_longops.
਍䔀猀瀀攀挀椀愀氀氀礀 挀甀琀攀Ⰰ 愀爀攀 昀椀攀氀搀猀 氀椀欀攀 ∀猀漀昀愀爀∀⠀眀漀爀欀 愀氀爀攀愀搀礀 搀漀渀攀⤀Ⰰ ∀琀漀琀愀氀眀漀爀欀∀Ⰰ 愀渀搀 漀昀挀漀甀爀猀攀㰀戀爀㸀ഀഀ identifiers of the session and user.
਍㰀戀爀㸀ഀഀ Here are some well-known examples which almost everybody uses once in a while:
਍㰀戀爀㸀ഀഀ Example 1:
਍㰀戀爀㸀ഀഀ select * from
਍ ⠀㰀戀爀㸀ഀഀ select
਍     漀瀀渀愀洀攀Ⰰ㰀戀爀㸀ഀഀ start_time,
਍     琀愀爀最攀琀Ⰰ㰀戀爀㸀ഀഀ sofar,
਍     琀漀琀愀氀眀漀爀欀Ⰰ㰀戀爀㸀ഀഀ units,
਍     攀氀愀瀀猀攀搀开猀攀挀漀渀搀猀Ⰰ㰀戀爀㸀ഀഀ message
਍   昀爀漀洀㰀戀爀㸀ഀഀ v$session_longops
਍  漀爀搀攀爀 戀礀 猀琀愀爀琀开琀椀洀攀 搀攀猀挀㰀戀爀㸀ഀഀ )
਍眀栀攀爀攀 爀漀眀渀甀洀 㰀㴀㄀㬀㰀戀爀㸀ഀഀ
਍㰀䈀㸀䔀砀愀洀瀀氀攀 ㈀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
਍猀攀氀攀挀琀㰀戀爀㸀ഀഀ round(sofar/totalwork*100,2) percent_completed,
਍   瘀␀猀攀猀猀椀漀渀开氀漀渀最漀瀀猀⸀⨀ 㰀戀爀㸀ഀഀ from
਍   瘀␀猀攀猀猀椀漀渀开氀漀渀最漀瀀猀 㰀戀爀㸀ഀഀ where
਍   猀漀昀愀爀 㰀㸀 琀漀琀愀氀眀漀爀欀 㰀戀爀㸀ഀഀ order by
਍   琀愀爀最攀琀Ⰰ 猀椀搀㬀 㰀戀爀㸀ഀഀ
਍㰀䈀㸀䔀砀愀洀瀀氀攀 ㌀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
਍匀攀氀攀挀琀   ✀氀漀渀最✀Ⰰ 琀漀开挀栀愀爀 ⠀氀⸀猀椀搀⤀Ⰰ 琀漀开挀栀愀爀 ⠀氀⸀猀攀爀椀愀氀⌀⤀Ⰰ 琀漀开挀栀愀爀⠀氀⸀猀漀昀愀爀⤀Ⰰ 琀漀开挀栀愀爀⠀氀⸀琀漀琀愀氀眀漀爀欀⤀Ⰰ 琀漀开挀栀愀爀⠀氀⸀猀琀愀爀琀开琀椀洀攀Ⰰ ✀䐀䐀ⴀ䴀漀渀ⴀ夀夀夀夀 䠀䠀㈀㐀㨀䴀䤀㨀匀匀✀ ⤀Ⰰ㰀戀爀㸀   ഀഀ to_char ( l.last_update_time , 'DD-Mon-YYYY HH24:MI:SS'), to_char(l.time_remaining), to_char(l.elapsed_seconds),
਍氀⸀漀瀀渀愀洀攀Ⰰ氀⸀琀愀爀最攀琀Ⰰ氀⸀琀愀爀最攀琀开搀攀猀挀Ⰰ氀⸀洀攀猀猀愀最攀Ⰰ猀⸀甀猀攀爀渀愀洀攀Ⰰ猀⸀漀猀甀猀攀爀Ⰰ猀⸀氀漀挀欀眀愀椀琀 昀爀漀洀  瘀␀猀攀猀猀椀漀渀开氀漀渀最漀瀀猀 氀Ⰰ 瘀␀猀攀猀猀椀漀渀  猀㰀戀爀㸀ഀഀ where l.sid = s.sid and l.serial# = s.serial#;
਍㰀戀爀㸀 ഀഀ ਍匀攀氀攀挀琀   ✀氀漀渀最✀Ⰰ 琀漀开挀栀愀爀 ⠀氀⸀猀椀搀⤀Ⰰ 琀漀开挀栀愀爀 ⠀氀⸀猀攀爀椀愀氀⌀⤀Ⰰ 琀漀开挀栀愀爀⠀氀⸀猀漀昀愀爀⤀Ⰰ 琀漀开挀栀愀爀⠀氀⸀琀漀琀愀氀眀漀爀欀⤀Ⰰ 琀漀开挀栀愀爀⠀氀⸀猀琀愀爀琀开琀椀洀攀Ⰰ ✀䐀䐀ⴀ䴀漀渀ⴀ夀夀夀夀 䠀䠀㈀㐀㨀䴀䤀㨀匀匀✀ ⤀Ⰰ㰀戀爀㸀   ഀഀ to_char ( l.last_update_time , 'DD-Mon-YYYY HH24:MI:SS'), s.username,s.osuser,s.lockwait from v$session_longops l, v$session s
਍眀栀攀爀攀 氀⸀猀椀搀     㴀  猀⸀猀椀搀 愀渀搀 氀⸀猀攀爀椀愀氀⌀ 㴀  猀⸀猀攀爀椀愀氀⌀㬀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㄀㐀∀㸀㄀㐀⸀ 䌀刀䔀䄀吀䔀 䄀 䐀䄀吀䄀䈀䄀匀䔀 唀匀䔀刀㨀㰀⼀栀㈀㸀ഀഀ ਍ഀഀ -- EXAMPLE STANDARD DATABASE USER:
਍㰀戀爀㸀ഀഀ CREATE USER albert identified by albert
਍䐀䔀䘀䄀唀䰀吀 吀䄀䈀䰀䔀匀倀䄀䌀䔀 匀䄀䰀䔀匀䐀䄀吀䄀  ⴀⴀ 猀愀氀攀猀搀愀琀愀 椀猀 愀 琀愀戀氀攀猀瀀愀挀攀㰀戀爀㸀ഀഀ TEMPORARY TABLESPACE TEMP
਍儀唀伀吀䄀 ㄀  䴀 伀一 匀䄀䰀䔀匀䐀䄀吀䄀㰀戀爀㸀ഀഀ QUOTA 20M ON USERS
਍㬀㰀戀爀㸀ഀഀ
਍ⴀⴀ 䜀刀䄀一吀 猀琀愀渀搀愀爀搀 爀漀氀攀猀㨀㰀戀爀㸀ഀഀ
਍䜀刀䄀一吀 挀漀渀渀攀挀琀 吀伀 愀氀戀攀爀琀㬀㰀戀爀㸀ഀഀ GRANT resource TO albert;
਍㰀戀爀㸀ഀഀ -- GRANT specific privileges:
਍㰀戀爀㸀ഀഀ GRANT create trigger TO albert;
਍䜀刀䄀一吀 挀爀攀愀琀攀 猀攀焀甀攀渀挀攀 吀伀 愀氀戀攀爀琀㬀㰀戀爀㸀ഀഀ GRANT create procedure TO albert;
਍㰀戀爀㸀ഀഀ -- DROP the user:
਍㰀戀爀㸀ഀഀ DROP USER albert cascade;
਍㰀戀爀㸀ഀഀ -- EXAMPLE (external) USER:
਍㰀戀爀㸀ഀഀ CREATE USER global_user
਍䤀䐀䔀一吀䤀䘀䤀䔀䐀 䜀䰀伀䈀䄀䰀䰀夀 䄀匀 ✀䌀一㴀樀樀漀渀攀猀Ⰰ 伀唀㴀猀愀氀攀猀Ⰰ 伀㴀愀渀琀愀瀀攀砀Ⰰ 䌀㴀一䰀✀㰀戀爀㸀 ഀഀ DEFAULT TABLESPACE users
਍儀唀伀吀䄀 㔀  䴀 伀一 甀猀攀爀猀㬀㰀戀爀㸀 ഀഀ
਍㰀䈀㸀ⴀⴀ 䔀堀䄀䴀倀䰀䔀 ⠀圀椀渀搀漀眀猀 䄀䐀 愀甀琀栀攀渀琀椀挀攀搀 甀猀攀爀⤀ 唀匀䔀刀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
਍匀甀瀀瀀漀猀攀 眀攀 栀愀瘀攀 琀栀攀 愀挀挀漀甀渀琀 䠀愀爀爀礀 ㄀ 昀爀漀洀 琀栀攀 堀夀娀 搀漀洀愀椀渀⸀ 䘀漀爀 愀挀挀攀猀猀 琀漀 伀爀愀挀氀攀Ⰰ 眀攀 挀愀渀 挀爀攀愀琀攀㰀戀爀㸀ഀഀ the following registration, which does not need to logon to Oracle.
਍㰀戀爀㸀ഀഀ CREATE USER "OPS$XYZ\Harry01"
਍  䤀䐀䔀一吀䤀䘀䤀䔀䐀 䔀堀吀䔀刀一䄀䰀䰀夀㰀戀爀㸀ഀഀ DEFAULT TABLESPACE SALES_DATA
਍  吀䔀䴀倀伀刀䄀刀夀 吀䄀䈀䰀䔀匀倀䄀䌀䔀 吀䔀䴀倀㰀戀爀㸀ഀഀ PROFILE DEFAULT
਍  䄀䌀䌀伀唀一吀 唀一䰀伀䌀䬀㰀戀爀㸀ഀഀ QUOTA 100M ON SALES_DATA
਍ 㰀戀爀㸀ഀഀ GRANT CONNECT TO "OPS$XYZ\Harry01";
਍  䜀刀䄀一吀 刀䔀䄀䐀开匀䄀䰀䔀匀 吀伀 ∀伀倀匀␀堀夀娀尀䠀愀爀爀礀 ㄀∀㬀㰀戀爀㸀ഀഀ GRANT RESOURCE TO "OPS$XYZ\Harry01";
਍  䜀刀䄀一吀 匀䔀䰀䔀䌀吀开䌀䄀吀䄀䰀伀䜀开刀伀䰀䔀 吀伀 ∀伀倀匀␀堀夀娀尀䠀愀爀爀礀 ㄀∀㬀㰀戀爀㸀ഀഀ GRANT ADMINISTER DATABASE TRIGGER TO "OPS$XYZ\Harry01";
਍  䜀刀䄀一吀 䄀䰀吀䔀刀 唀匀䔀刀 吀伀 ∀伀倀匀␀堀夀娀尀䠀愀爀爀礀 ㄀∀㬀㰀戀爀㸀ഀഀ GRANT CREATE INDEXTYPE TO "OPS$XYZ\Harry01";
਍  䜀刀䄀一吀 䌀刀䔀䄀吀䔀 䰀䤀䈀刀䄀刀夀 吀伀 ∀伀倀匀␀堀夀娀尀䠀愀爀爀礀 ㄀∀㬀㰀戀爀㸀ഀഀ GRANT CREATE OPERATOR TO "OPS$XYZ\Harry01";
਍  䜀刀䄀一吀 䌀刀䔀䄀吀䔀 倀刀伀䌀䔀䐀唀刀䔀 吀伀 ∀伀倀匀␀堀夀娀尀䠀愀爀爀礀 ㄀∀㬀㰀戀爀㸀ഀഀ GRANT CREATE PUBLIC SYNONYM TO "OPS$XYZ\Harry01";
਍  䜀刀䄀一吀 䌀刀䔀䄀吀䔀 匀䔀儀唀䔀一䌀䔀 吀伀 ∀伀倀匀␀堀夀娀尀䠀愀爀爀礀 ㄀∀㬀㰀戀爀㸀ഀഀ GRANT CREATE SESSION TO "OPS$XYZ\Harry01";
਍  䜀刀䄀一吀 䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀 吀伀 ∀伀倀匀␀堀夀娀尀䠀愀爀爀礀 ㄀∀㬀㰀戀爀㸀ഀഀ GRANT CREATE TRIGGER TO "OPS$XYZ\Harry01";
਍  䜀刀䄀一吀 䌀刀䔀䄀吀䔀 吀夀倀䔀 吀伀 ∀伀倀匀␀堀夀娀尀䠀愀爀爀礀 ㄀∀㬀㰀戀爀㸀ഀഀ GRANT CREATE VIEW TO "OPS$XYZ\Harry01";
਍  䜀刀䄀一吀 䐀刀伀倀 倀唀䈀䰀䤀䌀 匀夀一伀一夀䴀 吀伀 ∀伀倀匀␀堀夀娀尀䠀愀爀爀礀 ㄀∀㬀㰀戀爀㸀ഀഀ GRANT UNLIMITED TABLESPACE TO "OPS$XYZ\Harry01";
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

15. FINDING INVALID OBJECTS AND REPAIR:

਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍ⴀⴀ 䘀椀渀搀椀渀最 椀渀瘀愀氀椀搀 漀戀樀攀挀琀猀㨀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 漀眀渀攀爀Ⰰ 猀甀戀猀琀爀⠀漀戀樀攀挀琀开渀愀洀攀Ⰰ ㄀Ⰰ ㌀ ⤀Ⰰ 漀戀樀攀挀琀开琀礀瀀攀Ⰰ 挀爀攀愀琀攀搀Ⰰ 㰀戀爀㸀ഀഀ last_ddl_time, status
਍䘀刀伀䴀   搀戀愀开漀戀樀攀挀琀猀 㰀戀爀㸀ഀഀ WHERE status='INVALID';
਍㰀戀爀㸀ഀഀ -- Recompile packages:
਍㰀戀爀㸀ഀഀ SELECT 'ALTER '||decode( object_type,
਍                        ✀倀䄀䌀䬀䄀䜀䔀 匀倀䔀䌀䤀䘀䤀䌀䄀吀䤀伀一✀㰀戀爀㸀ഀഀ ,'PACKAGE'
਍                       Ⰰ✀倀䄀䌀䬀䄀䜀䔀 䈀伀䐀夀✀㰀戀爀㸀ഀഀ ,'PACKAGE'
਍                       Ⰰ漀戀樀攀挀琀开琀礀瀀攀⤀㰀戀爀㸀ഀഀ ||' '||owner
਍                簀簀✀⸀✀簀簀 漀戀樀攀挀琀开渀愀洀攀 簀簀✀ 䌀伀䴀倀䤀䰀䔀 ✀㰀戀爀㸀ഀഀ ||decode( object_type,
਍                        ✀倀䄀䌀䬀䄀䜀䔀 匀倀䔀䌀䤀䘀䤀䌀䄀吀䤀伀一✀㰀戀爀㸀ഀഀ ,'SPECIFACTION'
਍                       Ⰰ✀倀䄀䌀䬀䄀䜀䔀 䈀伀䐀夀✀㰀戀爀㸀ഀഀ ,'BODY'
਍                       Ⰰ 一唀䰀䰀⤀  簀簀✀㬀✀㰀戀爀㸀ഀഀ FROM dba_objects WHERE status = 'INVALID';
਍㰀戀爀㸀ഀഀ -- Using DBMS_UTILITY.compile_schema to compile all objects in a schema:
਍㰀戀爀㸀ഀഀ Example:
਍㰀戀爀㸀ഀഀ exec DBMS_UTILITY.compile_schema('HARRY');
਍㰀戀爀㸀ഀഀ -- Manually recompile objects like views, triggers etc..:
਍㰀戀爀㸀ഀഀ ALTER PACKAGE my_package COMPILE;
਍䄀䰀吀䔀刀 倀䄀䌀䬀䄀䜀䔀 洀礀开瀀愀挀欀愀最攀 䌀伀䴀倀䤀䰀䔀 䈀伀䐀夀㬀㰀戀爀㸀ഀഀ ALTER PROCEDURE my_procedure COMPILE;
਍䄀䰀吀䔀刀 䘀唀一䌀吀䤀伀一 洀礀开昀甀渀挀琀椀漀渀 䌀伀䴀倀䤀䰀䔀㬀㰀戀爀㸀ഀഀ ALTER TRIGGER my_trigger COMPILE;
਍䄀䰀吀䔀刀 嘀䤀䔀圀 洀礀开瘀椀攀眀 䌀伀䴀倀䤀䰀䔀㬀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

16. CREATING AND REBUILDING INDEXES:

਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 16.1 EXAMPLES ON HOW TO CREATE INDEXES:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ -- Examples of ordinary index:
਍㰀戀爀㸀ഀഀ CREATE INDEX indx_cust_id ON CUSTOMERS(cust_id);
਍䌀刀䔀䄀吀䔀 䤀一䐀䔀堀 椀渀搀砀开挀甀猀琀开椀搀 伀一 䌀唀匀吀伀䴀䔀刀匀⠀挀甀猀琀开椀搀⤀ 渀漀氀漀最最椀渀最㬀㰀戀爀㸀ഀഀ CREATE INDEX indx_cust_id ON CUSTOMERS(cust_id) TABLESPACE SALES_INDEX01;
਍䌀刀䔀䄀吀䔀 䤀一䐀䔀堀 椀渀搀攀砀开攀洀瀀氀漀礀攀攀猀 伀一 䔀䴀倀䰀伀夀䔀䔀匀⠀氀愀猀琀开渀愀洀攀Ⰰ 樀漀戀开椀搀Ⰰ 猀愀氀愀爀礀⤀㬀  ⴀⴀ 洀甀氀琀椀瀀氀攀 挀漀氀甀洀渀猀㰀戀爀㸀ഀഀ
਍ⴀⴀ 匀漀洀攀 猀瀀攀挀椀愀氀 琀礀瀀攀猀 漀昀 椀渀搀攀砀攀猀㨀㰀戀爀㸀ഀഀ
਍ⴀⴀ 爀攀瘀攀爀猀攀 欀攀礀㨀㰀戀爀㸀ഀഀ CREATE INDEX indx_r_name ON RESTAURANTS(r_name) REVERSE;
਍㰀戀爀㸀ഀഀ -- bitmap index:
਍䌀刀䔀䄀吀䔀 䈀䤀吀䴀䄀倀 䤀一䐀䔀堀 椀渀搀砀开最攀渀搀攀爀 伀一 䔀䴀倀䰀伀夀䔀䔀 ⠀最攀渀搀攀爀⤀ 吀䄀䈀䰀䔀匀倀䄀䌀䔀 䔀䴀倀䐀䄀吀䄀㬀㰀戀爀㸀ഀഀ
਍ⴀⴀ 昀甀渀挀琀椀漀渀 戀愀猀攀搀 椀渀搀攀砀㨀㰀戀爀㸀ഀഀ CREATE INDEX emp_total_sal_idx ON employees (12 * salary * commission_pct, salary, commission_pct);
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 16.2 EXAMPLES ON HOW TO REBUILD INDEXES:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ -- Note that rebuilding large, or many, indexes, will generate, or add, to redo logging as well.
਍ⴀⴀ 吀栀攀爀攀昀漀爀攀Ⰰ 椀渀 猀漀洀攀 挀愀猀攀猀 琀栀攀 一伀䰀伀䜀䜀䤀一䜀 欀攀礀眀漀爀搀 洀愀礀戀攀 漀昀 栀攀氀瀀⸀㰀戀爀㸀ഀഀ -- Also, in case of very large, or a very large number of big indexes, rebuilding will be a major task.
਍ⴀⴀ 吀栀椀猀 渀漀琀攀 椀猀 渀漀琀 愀戀漀甀琀 琀栀攀 戀攀猀琀 瀀爀愀挀琀椀猀攀猀 漀渀 眀栀攀渀 琀漀 爀攀戀甀椀氀搀 椀渀搀攀砀攀猀⸀㰀戀爀㸀ഀഀ
਍䔀砀愀洀瀀氀攀猀㨀㰀戀爀㸀ഀഀ
਍愀氀琀攀爀 椀渀搀攀砀 䠀䄀刀刀夀⸀䔀䴀倀一伀开䤀一䐀䔀堀 爀攀戀甀椀氀搀㬀㰀戀爀㸀ഀഀ alter index HARRY.EMPNO_INDEX rebuild nologging;
਍愀氀琀攀爀 椀渀搀攀砀 䠀䄀刀刀夀⸀䔀䴀倀一伀开䤀一䐀䔀堀 爀攀戀甀椀氀搀 琀愀戀氀攀猀瀀愀挀攀 匀䄀䰀䔀匀开䤀一䐀䔀堀开 ㈀㬀 ⴀⴀ 爀攀戀甀椀氀搀 琀漀 愀渀漀琀栀攀爀 琀愀戀氀攀猀瀀愀挀攀㰀戀爀㸀ഀഀ
਍ⴀⴀ 䌀爀攀愀琀攀 愀 氀椀猀琀 漀昀 爀攀戀甀椀氀搀 椀渀搀攀砀 猀琀愀琀攀洀攀渀琀猀㨀㰀戀爀㸀ഀഀ
਍匀䔀䰀䔀䌀吀 ✀䄀䰀吀䔀刀 䤀一䐀䔀堀 䠀䄀刀刀夀⸀✀簀簀椀渀搀攀砀开渀愀洀攀簀簀✀ 刀䔀䈀唀䤀䰀䐀㬀✀ 昀爀漀洀 搀戀愀开椀渀搀攀砀攀猀㰀戀爀㸀ഀഀ where owner='HARRY';
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

17. GETTING PRODUCT/PARAMETER INFORMATION:

਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 17.1 OPTIONS, VERSION, FEATURES:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ SELECT * FROM V$VERSION;
਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 嘀␀伀倀吀䤀伀一㬀㰀戀爀㸀ഀഀ SELECT * FROM V$LICENSE;
਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 倀刀伀䐀唀䌀吀开䌀伀䴀倀伀一䔀一吀开嘀䔀刀匀䤀伀一㬀㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 17.2 COLLATION:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ SELECT * FROM NLS_DATABASE_PARAMETERS;
਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 一䰀匀开匀䔀匀匀䤀伀一开倀䄀刀䄀䴀䔀吀䔀刀匀㬀㰀戀爀㸀ഀഀ SELECT * FROM NLS_INSTANCE_PARAMETERS;
਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 17.3 PARAMETERS/OPTIONS:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ SELECT * FROM DBA_REGISTRY;
਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 瘀␀瀀愀爀愀洀攀琀攀爀㬀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㄀㠀∀㸀㄀㠀⸀ 䬀䤀䰀䰀䤀一䜀 䄀一 伀刀䄀䌀䰀䔀 匀䔀匀匀䤀伀一㨀㰀⼀栀㈀㸀ഀഀ ਍ഀഀ ਍㰀䈀㸀㄀㠀⸀㄀ 匀椀渀最氀攀 椀渀猀琀愀渀挀攀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍䘀爀漀洀 瘀␀猀攀猀猀椀漀渀Ⰰ 礀漀甀 挀愀渀 漀戀琀愀椀渀 琀栀攀 伀爀愀挀氀攀 匀攀猀猀椀漀渀 䤀䐀 ⠀猀椀搀⤀ 愀渀搀 猀攀爀椀愀氀⌀⸀㰀戀爀㸀ഀഀ If a Oracle session must be "killed", you can use the following ALTER SYSTEM command:
਍㰀戀爀㸀ഀഀ ALTER SYSTEM KILL SESSION 'sid, serial#';
਍㰀戀爀㸀ഀഀ Example:
਍㰀戀爀㸀ഀഀ ALTER SYSTEM KILL SESSION '77,285';
਍㰀戀爀㸀ഀഀ The above statement does not use brutal force to end the session, if currectly transactions are
਍愀猀猀漀挀椀愀琀攀搀 眀椀琀栀 琀栀愀琀 猀攀猀猀椀漀渀⸀ 匀漀Ⰰ 椀琀 洀椀最栀琀 猀栀漀眀 甀瀀 愀猀 栀愀瘀椀渀最 愀 猀琀愀琀甀猀 漀昀 ∀洀愀爀欀攀搀 昀漀爀 欀椀氀氀∀⸀㰀戀爀㸀ഀഀ
਍ഀഀ ਍㰀䈀㸀㄀㠀⸀㈀ 䌀氀甀猀琀攀爀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍䤀渀 愀 刀䄀䌀 挀氀甀猀琀攀爀 攀渀瘀椀爀漀渀洀攀渀琀Ⰰ 愀 琀栀椀爀搀 瀀愀爀愀洀攀琀攀爀 瀀愀爀愀洀攀琀攀爀 猀栀漀甀氀搀 戀攀 愀搀搀攀搀Ⰰ 眀栀椀挀栀 椀猀 琀栀攀 椀渀猀琀愀渀挀攀 䤀䐀㨀㰀戀爀㸀ഀഀ
਍䄀䰀吀䔀刀 匀夀匀吀䔀䴀 䬀䤀䰀䰀 匀䔀匀匀䤀伀一 ✀猀椀搀Ⰰ 猀攀爀椀愀氀⌀Ⰰ䀀椀渀猀琀开椀搀✀㬀㰀戀爀㸀ഀഀ
਍ഀഀ ਍㰀䈀㸀㄀㠀⸀㌀ 䄀搀搀椀琀椀漀渀愀氀 挀氀愀甀猀攀猀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍䄀 昀攀眀 愀搀搀椀琀椀漀渀愀氀 挀氀愀甀猀攀猀 挀愀渀 戀攀 甀猀攀搀 眀椀琀栀 琀栀攀 䄀䰀吀䔀刀 匀夀匀吀䔀䴀 䬀䤀䰀䰀 匀䔀匀匀䤀伀一 猀琀愀琀攀洀攀渀琀Ⰰ 氀椀欀攀 昀漀爀 攀砀愀洀瀀氀攀㨀㰀戀爀㸀ഀഀ
਍䄀䰀吀䔀刀 匀夀匀吀䔀䴀 䬀䤀䰀䰀 匀䔀匀匀䤀伀一 ✀猀椀搀Ⰰ 猀攀爀椀愀氀⌀✀ 䤀䴀䴀䔀䐀䤀䄀吀䔀㬀㰀戀爀㸀ഀഀ
਍吀栀攀 愀戀漀瘀攀 挀漀洀洀愀渀搀Ⰰ 眀椀氀氀 琀攀爀洀椀渀愀琀攀 琀栀攀 猀攀猀猀椀漀渀 愀渀搀 瀀漀猀猀椀戀氀攀 漀渀最漀椀渀最 琀爀愀渀猀愀挀琀椀漀渀猀 眀椀氀氀 爀漀氀氀 戀愀挀欀⸀㰀戀爀㸀ഀഀ
਍ഀഀ ਍㰀䈀㸀㄀㠀⸀㐀 䬀椀氀氀椀渀最 伀匀 瀀爀漀挀攀猀猀攀猀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍䤀昀 礀漀甀 栀愀瘀攀 椀搀攀渀琀椀昀椀攀搀 琀栀攀 ∀瀀爀漀挀攀猀猀 椀搀∀ 漀昀 琀栀攀 伀匀 瀀爀漀挀攀猀猀 眀栀椀挀栀 椀猀 愀猀猀漀挀椀愀琀攀搀 琀漀 琀栀攀 伀爀愀挀氀攀 猀攀猀猀椀漀渀Ⰰ㰀戀爀㸀ഀഀ you might consider "killing" the process from the OS prompt.
਍㰀戀爀㸀ഀഀ Example on Windows:
਍㰀戀爀㸀ഀഀ C:\> orakill SALES 22389
਍㰀戀爀㸀ഀഀ Example on Unix/Linux:
਍㰀戀爀㸀ഀഀ % kill -9 55827
਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

19. 9i,10g,11g INIT.ORA/SPFILE.ORA parameters:

਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 19.1 ABOUT THE SPFILE/INIT.ORA FILES:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ The "spfile.ora" (or "init.ora") instance startup configuration file, determines in a large way,
਍栀漀眀 琀栀攀 椀渀猀琀愀渀挀攀 眀椀氀氀 戀攀 挀漀渀昀椀最甀爀攀搀⸀ 吀栀椀渀欀 漀昀 琀栀攀 猀椀稀攀 漀昀 匀䜀䄀 洀攀洀漀爀礀Ⰰ 栀漀眀 洀愀渀礀 瀀爀漀挀攀猀猀攀猀 愀爀攀 愀氀氀漀眀攀搀Ⰰ㰀戀爀㸀ഀഀ location of controlfiles, location of archived redologs etc.. etc..
਍㰀戀爀㸀ഀഀ ਍䄀猀 漀昀 㤀椀Ⰰ 愀 ⠀戀椀渀愀爀礀⤀ 猀瀀昀椀氀攀⸀漀爀愀 椀猀 甀猀攀搀⸀ 䠀漀眀攀瘀攀爀Ⰰ 椀琀✀猀 猀琀椀氀氀 瀀漀猀猀椀戀氀攀 琀漀 猀琀愀爀琀 愀 㤀椀⼀㄀ 最⼀㄀㄀最 椀渀猀琀愀渀挀攀㰀戀爀㸀ഀഀ using a tradional (ascii) init.ora file.
਍㰀戀爀㸀ഀഀ If at a closed instance, you would do this: ਍㰀戀爀㸀ഀഀ SQL> connect / as sysdba
਍匀儀䰀㸀 猀琀愀爀琀甀瀀㰀戀爀㸀ഀഀ
਍吀栀攀渀 琀栀攀 搀攀昀愀甀氀琀 猀瀀昀椀氀攀⸀漀爀愀 眀漀甀氀搀 戀攀 甀猀攀搀⸀㰀戀爀㸀ഀഀ But, at a closed instance, if you would do this:
਍㰀戀爀㸀ഀഀ SQL> connect / as sysdba
਍匀儀䰀㸀 猀琀愀爀琀甀瀀 洀漀甀渀琀 瀀昀椀氀攀㴀⼀愀瀀瀀猀⼀漀爀愀挀氀攀⼀瀀爀漀搀甀挀琀⼀㄀ ⸀㈀⼀愀搀洀椀渀⼀琀攀猀琀㄀ 最⼀瀀昀椀氀攀⼀椀渀椀琀⸀漀爀愀㰀戀爀㸀ഀഀ SQL> alter database open;
਍㰀戀爀㸀ഀഀ Then that specific init.ora would be used to start and configure the instance.
਍㰀戀爀㸀ഀഀ Since the spfile.ora is not ascii, it's not easy to view the file directly
. ਍䤀渀 猀攀挀琀椀漀渀 ㄀ Ⰰ 眀攀 猀栀漀眀攀搀 栀漀眀 琀漀 挀爀攀愀琀攀 愀渀 愀猀挀椀椀 椀渀椀琀⸀漀爀愀 昀椀氀攀 昀爀漀洀 愀渀 猀瀀昀椀氀攀⸀㰀戀爀㸀ഀഀ One small advantage from an init.ora, is that it is easy to view it with any editor, or just with shell commands.
਍㰀戀爀㸀ഀഀ Here are a few examples again:
਍㰀戀爀㸀ഀഀ CREATE SPFILE='/opt/oracle/product/10.2/dbs/spfileSALES.ora'
਍䘀刀伀䴀 倀䘀䤀䰀䔀㴀✀⼀漀瀀琀⼀漀爀愀挀氀攀⼀瀀爀漀搀甀挀琀⼀㄀ ⸀㈀⼀愀搀洀椀渀⼀猀挀爀椀瀀琀猀⼀椀渀椀琀⸀漀爀愀✀㬀㰀戀爀㸀ഀഀ
਍䌀刀䔀䄀吀䔀 匀倀䘀䤀䰀䔀㴀✀⼀漀瀀琀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀瀀爀漀搀甀挀琀⼀㤀⸀㈀⼀搀戀猀⼀猀瀀昀椀氀攀倀䔀䜀䄀䌀䌀⸀漀爀愀✀ 㰀戀爀㸀ഀഀ FROM PFILE='/opt/app/oracle/admin/PEGACC/scripts/init.ora';
਍㰀戀爀㸀ഀഀ For viewing settings from the SQL> prompt, you can use the "show parameter" command, like so:
਍㰀戀爀㸀ഀഀ SQL> show parameter spfile
਍㰀戀爀㸀ഀഀ spfile string C:\ORACLE\PRODUCT\10.2\DB_1\DATABASE\SPFILETEST10G.ORA
਍㰀戀爀㸀ഀഀ So, that shows you the location of the spfile itself.
਍㰀戀爀㸀ഀഀ SQL> show parameter sga
਍㰀戀爀㸀ഀഀ NAME TYPE VALUE
਍㰀戀爀㸀ഀഀ lock_sga boolean FALSE
਍瀀爀攀开瀀愀最攀开猀最愀                         戀漀漀氀攀愀渀     䘀䄀䰀匀䔀㰀戀爀㸀ഀഀ sga_max_size big integer 280M
਍猀最愀开琀愀爀最攀琀                           戀椀最 椀渀琀攀最攀爀 ㈀㠀 䴀㰀戀爀㸀ഀഀ
਍匀漀Ⰰ 琀栀攀 甀瀀瀀攀爀 挀漀洀洀愀渀搀 猀栀漀眀猀 礀漀甀 匀䜀䄀 ⠀猀栀愀爀攀搀 洀攀洀漀爀礀⤀ 爀攀氀愀琀攀搀 猀攀琀琀椀渀最猀⸀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㄀㤀⸀㈀ 䌀䰀唀匀吀䔀刀 䄀一䐀 䤀一匀吀䄀一䌀䔀 匀倀䔀䌀䤀䘀䤀䌀 倀䄀刀䄀䴀䔀吀䔀刀匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍伀渀 愀 猀椀洀瀀氀攀 ㄀ 最 琀攀猀琀 搀愀琀愀戀愀猀攀Ⰰ 䤀 挀爀攀愀琀攀搀 愀 椀渀椀琀⸀漀爀愀 昀椀氀攀 ⠀猀攀攀 猀攀挀琀椀漀渀 ㄀ ⤀Ⰰ 愀渀搀 愀 猀洀愀氀氀 瀀愀爀琀椀愀氀 猀攀挀琀椀漀渀 椀猀 猀栀漀眀渀 戀攀氀漀眀㨀㰀戀爀㸀ഀഀ
਍⨀⸀搀戀开爀攀挀漀瘀攀爀礀开昀椀氀攀开搀攀猀琀开猀椀稀攀㴀㈀㄀㐀㜀㐀㠀㌀㘀㐀㠀㰀戀爀㸀ഀഀ *.dispatchers='(PROTOCOL=TCP) (SERVICE=test10gXDB)'
਍⨀⸀樀漀戀开焀甀攀甀攀开瀀爀漀挀攀猀猀攀猀㴀㄀ 㰀戀爀㸀ഀഀ *.open_cursors=300
਍⨀⸀瀀最愀开愀最最爀攀最愀琀攀开琀愀爀最攀琀㴀㤀㘀㐀㘀㠀㤀㤀㈀㰀戀爀㸀ഀഀ *.processes=150
਍琀攀猀琀㄀ 最⸀开开搀戀开挀愀挀栀攀开猀椀稀攀㴀㄀㘀㜀㜀㜀㈀㄀㘀 㰀戀爀㸀ഀഀ test10g.__java_pool_size=16777216
਍琀攀猀琀㄀ 最⸀开开氀愀爀最攀开瀀漀漀氀开猀椀稀攀㴀㐀㄀㤀㐀㌀ 㐀㰀戀爀㸀ഀഀ
਍圀栀愀琀✀猀 琀礀瀀椀挀愀氀 昀漀爀 ㄀ 最⼀㄀㄀最Ⰰ 椀猀 琀栀愀琀 昀漀爀 琀栀攀 ∀⨀⸀∀ 猀攀琀琀椀渀最猀Ⰰ 椀琀 洀攀愀渀猀 椀琀✀猀 椀渀 攀昀昀攀挀琀 昀漀爀 愀氀氀 椀渀猀琀愀渀挀攀猀 椀渀 愀 挀氀甀猀琀攀爀⸀㰀戀爀㸀ഀഀ It;s there even if you just use a stand allone instance.
਍吀栀攀 爀攀挀漀爀搀猀 琀栀愀琀 愀爀攀 氀椀欀攀 ∀椀渀猀琀愀渀挀攀开渀愀洀攀⸀猀攀琀琀椀渀最∀Ⰰ 椀琀 洀攀愀渀猀 琀栀愀琀 椀琀 椀猀 椀渀 攀昀昀攀挀琀 昀漀爀 琀栀愀琀 椀渀猀琀愀渀挀攀 漀渀氀礀⸀㰀戀爀㸀ഀഀ
਍匀漀Ⰰ 䤀昀 愀渀 椀渀椀琀椀愀氀椀稀愀琀椀漀渀 瀀愀爀愀洀攀琀攀爀 愀瀀瀀氀椀攀猀 琀漀 愀氀氀 椀渀猀琀愀渀挀攀猀Ⰰ 甀猀攀 ⨀⸀瀀愀爀愀洀攀琀攀爀 渀漀琀愀琀椀漀渀Ⰰ 漀琀栀攀爀眀椀猀攀㰀戀爀㸀ഀഀ prefix the parameter with the name of the instance.
਍䘀漀爀 攀砀愀洀瀀氀攀㨀㰀戀爀㸀ഀഀ Assume that you start the instance "prod1" (in a cluster) with an SPFILE containing the following entries:
਍㰀戀爀㸀ഀഀ *.OPEN_CURSORS=500
਍瀀爀漀搀㄀⸀伀倀䔀一开䌀唀刀匀伀刀匀㴀㄀   㰀戀爀㸀ഀഀ
਍吀栀攀渀 伀倀䔀一开䌀唀刀匀伀刀匀㴀㄀    椀猀 椀渀 攀昀昀攀挀琀 漀渀氀礀 昀漀爀 琀栀攀 椀渀猀琀愀渀挀攀 瀀爀漀搀㄀⸀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㄀㤀⸀㌀ 䔀堀䄀䴀倀䰀䔀 ㄀ 最⼀㄀㄀最 䤀一䤀吀⸀伀刀䄀Ⰰ 伀刀 匀倀䘀䤀䰀䔀⸀伀刀䄀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍㰀唀㸀ⴀ䔀砀愀洀瀀氀攀 ㄀㨀㰀⼀唀㸀㰀戀爀㸀ഀഀ
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ # Cache and I/O
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ db_block_size=8192
਍搀戀开昀椀氀攀开洀甀氀琀椀戀氀漀挀欀开爀攀愀搀开挀漀甀渀琀㴀㄀㘀㰀戀爀㸀ഀഀ
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ # Cursors and Library Cache
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ open_cursors=300
਍ 㰀戀爀㸀ഀഀ ###########################################
਍⌀ 䐀愀琀愀戀愀猀攀 䤀搀攀渀琀椀昀椀挀愀琀椀漀渀㰀戀爀㸀ഀഀ ###########################################
਍搀戀开搀漀洀愀椀渀㴀愀渀琀愀瀀攀砀⸀漀爀最㰀戀爀㸀ഀഀ db_name=test10g
਍ 㰀戀爀㸀ഀഀ ###########################################
਍⌀ 䐀椀愀最渀漀猀琀椀挀猀 愀渀搀 匀琀愀琀椀猀琀椀挀猀㰀戀爀㸀ഀഀ ###########################################
਍㰀戀爀㸀ഀഀ ਍⌀ 䐀椀愀最渀漀猀琀椀挀 氀漀挀愀琀椀漀渀猀 ⠀氀漀最昀椀氀攀猀 攀琀挀⸀⸀⤀ ㄀ 最 瀀愀爀愀洀攀琀攀爀猀㨀㰀戀爀㸀ഀഀ background_dump_dest=C:\oracle/admin/test10g/bdump
਍挀漀爀攀开搀甀洀瀀开搀攀猀琀㴀䌀㨀尀漀爀愀挀氀攀⼀愀搀洀椀渀⼀琀攀猀琀㄀ 最⼀挀搀甀洀瀀㰀戀爀㸀ഀഀ user_dump_dest=C:\oracle/admin/test10g/udump
਍㰀戀爀㸀ഀഀ ਍⌀ 䐀椀愀最渀漀猀琀椀挀 氀漀挀愀琀椀漀渀猀 ⠀氀漀最昀椀氀攀猀 攀琀挀⸀⸀⤀ ㄀㄀最 瀀愀爀愀洀攀琀攀爀猀㨀㰀戀爀㸀ഀഀ DIAGNOSTIC_DEST=C:\oracle\
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ # File Configuration
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ control_files=("C:\oracle\oradata\test10g\control01.ctl", "C:\oracle\oradata\test10g\control02.ctl", "C:\oracle\oradata\test10g\control03.ctl")
਍搀戀开爀攀挀漀瘀攀爀礀开昀椀氀攀开搀攀猀琀㴀䌀㨀尀漀爀愀挀氀攀⼀昀氀愀猀栀开爀攀挀漀瘀攀爀礀开愀爀攀愀㰀戀爀㸀ഀഀ db_recovery_file_dest_size=2147483648
਍ 㰀戀爀㸀ഀഀ ###########################################
਍⌀ 䨀漀戀 儀甀攀甀攀猀㰀戀爀㸀ഀഀ ###########################################
਍樀漀戀开焀甀攀甀攀开瀀爀漀挀攀猀猀攀猀㴀㄀ 㰀戀爀㸀ഀഀ
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ # Miscellaneous
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ # 10g example:
਍⌀ 挀漀洀瀀愀琀椀戀氀攀㴀㄀ ⸀㈀⸀ ⸀㄀⸀ 㰀戀爀㸀ഀഀ
਍⌀ ㄀㄀最 攀砀愀洀瀀氀攀㨀㰀戀爀㸀ഀഀ compatible=11.1.0.0.0
਍㰀戀爀㸀ഀഀ ###########################################
਍⌀ 倀爀漀挀攀猀猀攀猀 愀渀搀 匀攀猀猀椀漀渀猀㰀戀爀㸀ഀഀ ###########################################
਍瀀爀漀挀攀猀猀攀猀㴀㌀㔀 㰀戀爀㸀ഀഀ
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ # Memory
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ ਍⌀ 䔀砀愀洀瀀氀攀 ㄀ 最 猀攀琀琀椀渀最㨀㰀戀爀㸀ഀഀ sga_target=287309824
਍ 㰀戀爀㸀ഀഀ ਍⌀ 䔀砀愀洀瀀氀攀 ㄀㄀最 猀攀琀琀椀渀最㨀㰀戀爀㸀ഀഀ memory_target=287309824
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ###########################################
਍⌀ 匀攀挀甀爀椀琀礀 愀渀搀 䄀甀搀椀琀椀渀最㰀戀爀㸀ഀഀ ###########################################
਍愀甀搀椀琀开昀椀氀攀开搀攀猀琀㴀䌀㨀尀漀爀愀挀氀攀⼀愀搀洀椀渀⼀琀攀猀琀㄀ 最⼀愀搀甀洀瀀㰀戀爀㸀ഀഀ remote_login_passwordfile=EXCLUSIVE
਍ 㰀戀爀㸀ഀഀ ###########################################
਍⌀ 匀栀愀爀攀搀 匀攀爀瘀攀爀㰀戀爀㸀ഀഀ ###########################################
਍搀椀猀瀀愀琀挀栀攀爀猀㴀∀⠀倀刀伀吀伀䌀伀䰀㴀吀䌀倀⤀ ⠀匀䔀刀嘀䤀䌀䔀㴀琀攀猀琀㄀ 最堀䐀䈀⤀∀㰀戀爀㸀ഀഀ
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ # Sort, Hash Joins, Bitmap Indexes
਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀㰀戀爀㸀ഀഀ pga_aggregate_target=95420416
਍ 㰀戀爀㸀ഀഀ ###########################################
਍⌀ 匀礀猀琀攀洀 䴀愀渀愀最攀搀 唀渀搀漀 愀渀搀 刀漀氀氀戀愀挀欀 匀攀最洀攀渀琀猀㰀戀爀㸀ഀഀ ###########################################
਍甀渀搀漀开洀愀渀愀最攀洀攀渀琀㴀䄀唀吀伀㰀戀爀㸀ഀഀ undo_tablespace=UNDOTBS1
਍㰀戀爀㸀ഀഀ ###########################################
਍⌀ 䄀爀挀栀椀瘀攀 䴀漀搀攀㨀㰀戀爀㸀ഀഀ ###########################################
਍䰀伀䜀开䄀刀䌀䠀䤀嘀䔀开䐀䔀匀吀开㄀㴀挀㨀尀漀爀愀挀氀攀尀漀爀愀搀愀琀愀尀愀爀挀栀氀漀最㰀戀爀㸀ഀഀ LOG_ARCHIVE_FORMAT='arch_%t_%s_%r.dbf'
਍㰀戀爀㸀ഀഀ ਍㰀唀㸀ⴀ 䔀砀愀洀瀀氀攀 ㈀㨀 䔀砀瀀漀爀琀攀搀 ㄀㄀最 猀瀀昀椀氀攀 琀漀 愀渀 愀猀挀椀椀 椀渀椀琀 昀椀氀攀㰀⼀唀㸀㰀戀爀㸀ഀഀ
਍琀攀猀琀㄀㄀最⸀开开搀戀开挀愀挀栀攀开猀椀稀攀㴀㈀㠀㄀ ㄀㠀㌀㘀㠀㰀戀爀㸀ഀഀ test11g.__java_pool_size=12582912
਍琀攀猀琀㄀㄀最⸀开开氀愀爀最攀开瀀漀漀氀开猀椀稀攀㴀㐀㄀㤀㐀㌀ 㐀㰀戀爀㸀ഀഀ test11g.__oracle_base='c:\oracle' #ORACLE_BASE set from environment
਍琀攀猀琀㄀㄀最⸀开开瀀最愀开愀最最爀攀最愀琀攀开琀愀爀最攀琀㴀㌀㈀㈀㤀㘀㄀㐀 㠀㰀戀爀㸀ഀഀ test11g.__sga_target=536870912
਍琀攀猀琀㄀㄀最⸀开开猀栀愀爀攀搀开椀漀开瀀漀漀氀开猀椀稀攀㴀 㰀戀爀㸀ഀഀ test11g.__shared_pool_size=230686720
਍琀攀猀琀㄀㄀最⸀开开猀琀爀攀愀洀猀开瀀漀漀氀开猀椀稀攀㴀 㰀戀爀㸀ഀഀ *.audit_file_dest='c:\oracle\admin\test11g\adump'
਍⨀⸀愀甀搀椀琀开琀爀愀椀氀㴀✀搀戀✀㰀戀爀㸀ഀഀ *.compatible='11.1.0.0.0'
਍⨀⸀挀漀渀琀爀漀氀开昀椀氀攀猀㴀✀挀㨀尀漀爀愀搀愀琀愀尀琀攀猀琀㄀㄀最尀挀漀渀琀爀漀氀 ㄀⸀挀琀氀✀Ⰰ✀挀㨀尀漀爀愀搀愀琀愀尀琀攀猀琀㄀㄀最尀挀漀渀琀爀漀氀 ㈀⸀挀琀氀✀Ⰰ✀挀㨀尀漀爀愀搀愀琀愀尀琀攀猀琀㄀㄀最尀挀漀渀琀爀漀氀 ㌀⸀挀琀氀✀㰀戀爀㸀ഀഀ *.db_block_size=8192
਍⨀⸀搀戀开搀漀洀愀椀渀㴀✀愀渀琀愀瀀攀砀⸀渀氀✀㰀戀爀㸀ഀഀ *.db_name='test11g'

਍⨀⸀搀戀开爀攀挀漀瘀攀爀礀开昀椀氀攀开搀攀猀琀㴀✀挀㨀尀漀爀愀挀氀攀尀昀氀愀猀栀开爀攀挀漀瘀攀爀礀开愀爀攀愀✀㰀戀爀㸀ഀഀ *.db_recovery_file_dest_size=2147483648
਍⨀⸀搀椀愀最渀漀猀琀椀挀开搀攀猀琀㴀✀挀㨀尀漀爀愀挀氀攀✀㰀戀爀㸀ഀഀ *.dispatchers='(PROTOCOL=TCP) (SERVICE=test11gXDB)'
਍⨀⸀洀攀洀漀爀礀开琀愀爀最攀琀㴀㠀㔀㜀㜀㌀㔀㄀㘀㠀㰀戀爀㸀ഀഀ *.open_cursors=300
਍⨀⸀瀀爀漀挀攀猀猀攀猀㴀㌀㔀 㰀戀爀㸀ഀഀ *.remote_login_passwordfile='EXCLUSIVE'
਍⨀⸀甀渀搀漀开琀愀戀氀攀猀瀀愀挀攀㴀✀唀一䐀伀吀䈀匀㄀✀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㄀㤀⸀㐀 䤀䴀倀伀刀吀䄀一吀 匀倀䘀䤀䰀䔀⼀䤀一䤀吀 倀䄀刀䄀䴀䔀吀䔀刀匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍䰀攀琀✀猀 爀攀瘀椀攀眀 猀漀洀攀 漀昀 琀栀攀 洀漀猀琀 椀洀瀀漀爀琀愀渀琀 椀渀椀琀⸀漀爀愀 瀀愀爀愀洀攀琀攀爀猀⸀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㄀㤀⸀㐀⸀㄀⸀ 倀愀爀愀洀攀琀攀爀猀 爀攀氀愀琀攀搀 琀漀 伀爀愀挀氀攀 䴀愀渀愀最攀搀 䘀椀氀攀猀 伀䴀䘀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍䐀䈀开䌀刀䔀䄀吀䔀开䘀䤀䰀䔀开䐀䔀匀吀 㴀 搀椀爀攀挀琀漀爀礀 簀 䄀匀䴀 搀椀猀欀 最爀漀甀瀀 㰀戀爀㸀ഀഀ DB_CREATE_ONLINE_LOG_DEST_n = directory | ASM disk group
਍㰀戀爀㸀ഀഀ DB_CREATE_FILE_DEST specifies the default location for Oracle-managed datafiles.
਍吀栀椀猀 氀漀挀愀琀椀漀渀 椀猀 愀氀猀漀 甀猀攀搀 愀猀 琀栀攀 搀攀昀愀甀氀琀 氀漀挀愀琀椀漀渀 昀漀爀 伀爀愀挀氀攀ⴀ洀愀渀愀最攀搀 挀漀渀琀爀漀氀 昀椀氀攀猀 㰀戀爀㸀ഀഀ and online redo logs if none of the DB_CREATE_ONLINE_LOG_DEST_n initialization parameters are specified.
਍㰀戀爀㸀ഀഀ DB_CREATE_ONLINE_LOG_DEST_n (where n = 1, 2, 3, ... 5) specifies the default location
਍昀漀爀 伀爀愀挀氀攀ⴀ洀愀渀愀最攀搀 挀漀渀琀爀漀氀 昀椀氀攀猀 愀渀搀 漀渀氀椀渀攀 爀攀搀漀 氀漀最猀⸀ 㰀戀爀㸀ഀഀ If more than one DB_CREATE_ONLINE_LOG_DEST_n parameter is specified, then the control file and
਍漀渀氀椀渀攀 爀攀搀漀 氀漀最 椀猀 洀甀氀琀椀瀀氀攀砀攀搀 愀挀爀漀猀猀 琀栀攀 氀漀挀愀琀椀漀渀猀 漀昀 琀栀攀 漀琀栀攀爀 䐀䈀开䌀刀䔀䄀吀䔀开伀一䰀䤀一䔀开䰀伀䜀开䐀䔀匀吀开渀 瀀愀爀愀洀攀琀攀爀猀⸀ 㰀戀爀㸀ഀഀ One member of each online redo log is created in each location, and one control file is created in each location.
਍㰀戀爀㸀ഀഀ Example:
਍䐀䈀开䌀刀䔀䄀吀䔀开䘀䤀䰀䔀开䐀䔀匀吀 㴀 ✀⼀甀 ㄀⼀漀爀愀挀氀攀⼀琀攀猀琀㄀ 最✀㰀戀爀㸀ഀഀ DB_CREATE_ONLINE_LOG_DEST_1= '/u02/oracle/test10g'
਍䐀䈀开䌀刀䔀䄀吀䔀开伀一䰀䤀一䔀开䰀伀䜀开䐀䔀匀吀开㈀㴀 ✀⼀甀 ㌀⼀漀爀愀挀氀攀⼀琀攀猀琀㄀ 最✀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㄀㤀⸀㐀⸀㈀⸀ 倀愀爀愀洀攀琀攀爀猀 爀攀氀愀琀攀搀 琀漀 琀栀攀 䘀䰀䄀匀䠀 刀䔀䌀伀嘀䔀刀夀 䄀刀䔀䄀 ⠀㄀ 最 ⼀ ㄀㄀最刀㄀⤀ 漀爀 䘀䄀匀吀 刀䔀䌀伀嘀䔀刀夀 䄀刀䔀䄀  ⠀㄀㄀最刀㈀⤀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍䤀渀 ㄀㄀最刀㈀Ⰰ 琀栀攀 ∀䘀䰀䄀匀䠀 刀䔀䌀伀嘀䔀刀夀 䄀刀䔀䄀∀ 椀猀 爀攀渀愀洀攀搀 琀漀 ∀䘀䄀匀吀 刀䔀䌀伀嘀䔀刀夀 䄀刀䔀䄀∀⸀㰀戀爀㸀ഀഀ
਍䄀 昀氀愀猀栀 爀攀挀漀瘀攀爀礀 愀爀攀愀 椀猀 愀 氀漀挀愀琀椀漀渀 椀渀 眀栀椀挀栀 伀爀愀挀氀攀 䐀愀琀愀戀愀猀攀 挀愀渀 猀琀漀爀攀 愀渀搀 洀愀渀愀最攀 昀椀氀攀猀㰀戀爀㸀ഀഀ related to backup and recovery. It is distinct from the database area.
਍㰀戀爀㸀ഀഀ Two parameters define the "FLASH RECOVERY AREA" or "FAST RECOVERY AREA":
਍㰀戀爀㸀ഀഀ You specify a flash recovery area with the following initialization parameters:
਍䐀䈀开刀䔀䌀伀嘀䔀刀夀开䘀䤀䰀䔀开䐀䔀匀吀 ⠀㴀 氀漀挀愀琀椀漀渀 漀渀 昀椀氀攀猀礀猀琀攀洀 漀爀 䄀匀䴀⤀㰀戀爀㸀ഀഀ DB_RECOVERY_FILE_DEST_SIZE (size reserved for DB_RECOVERY_FILE_DEST)
਍㰀戀爀㸀ഀഀ DB_RECOVERY_FILE_DEST specifies the default location for the flash recovery area. The flash recovery area contains
਍愀爀挀栀椀瘀攀搀 爀攀搀漀 氀漀最猀Ⰰ 昀氀愀猀栀戀愀挀欀 氀漀最猀Ⰰ 愀渀搀 刀䴀䄀一 戀愀挀欀甀瀀猀⸀㰀戀爀㸀ഀഀ
਍吀栀攀 䐀䈀开刀䔀䌀伀嘀䔀刀夀开䘀䤀䰀䔀开䐀䔀匀吀 瀀愀爀愀洀攀琀攀爀 洀愀欀攀猀 猀甀爀攀 琀栀愀琀 愀氀氀 昀氀愀猀栀戀愀挀欀 氀漀最猀Ⰰ 刀䴀䄀一 戀愀挀欀甀瀀猀Ⰰ 愀爀挀栀椀瘀攀搀 氀漀最猀Ⰰ㰀戀爀㸀ഀഀ are under the control of the Instance.
਍匀瀀攀挀椀昀礀椀渀最 琀栀椀猀 瀀愀爀愀洀攀琀攀爀 眀椀琀栀漀甀琀 愀氀猀漀 猀瀀攀挀椀昀礀椀渀最 琀栀攀 䐀䈀开刀䔀䌀伀嘀䔀刀夀开䘀䤀䰀䔀开䐀䔀匀吀开匀䤀娀䔀 椀渀椀琀椀愀氀椀稀愀琀椀漀渀 瀀愀爀愀洀攀琀攀爀 椀猀 渀漀琀 愀氀氀漀眀攀搀⸀㰀戀爀㸀ഀഀ
਍䐀䈀开刀䔀䌀伀嘀䔀刀夀开䘀䤀䰀䔀开䐀䔀匀吀开匀䤀娀䔀 猀瀀攀挀椀昀椀攀猀 ⠀椀渀 戀礀琀攀猀⤀ 琀栀攀 栀愀爀搀 氀椀洀椀琀 漀渀 琀栀攀 琀漀琀愀氀 猀瀀愀挀攀 琀漀 戀攀 甀猀攀搀 㰀戀爀㸀ഀഀ by target database recovery files created in the flash recovery area.
਍㰀戀爀㸀ഀഀ ਍夀漀甀 挀愀渀渀漀琀 攀渀愀戀氀攀 琀栀攀猀攀 瀀愀爀愀洀攀琀攀爀猀 椀昀 礀漀甀 栀愀瘀攀 猀攀琀 瘀愀氀甀攀猀 昀漀爀 琀栀攀 䰀伀䜀开䄀刀䌀䠀䤀嘀䔀开䐀䔀匀吀 愀渀搀 㰀戀爀㸀ഀഀ LOG_ARCHIVE_DUPLEX_DEST parameters. You must disable those parameters before setting up
਍琀栀攀 昀氀愀猀栀 爀攀挀漀瘀攀爀礀 愀爀攀愀⸀ 夀漀甀 挀愀渀 椀渀猀琀攀愀搀 猀攀琀 瘀愀氀甀攀猀 昀漀爀 琀栀攀㰀戀爀㸀ഀഀ LOG_ARCHIVE_DEST_n parameters. If you do not set values for local LOG_ARCHIVE_DEST_n,
਍琀栀攀渀 猀攀琀琀椀渀最 甀瀀 琀栀攀 昀氀愀猀栀 爀攀挀漀瘀攀爀礀 愀爀攀愀 眀椀氀氀 椀洀瀀氀椀挀椀琀氀礀 猀攀琀 䰀伀䜀开䄀刀䌀䠀䤀嘀䔀开䐀䔀匀吀开㄀  琀漀 琀栀攀 昀氀愀猀栀 爀攀挀漀瘀攀爀礀 愀爀攀愀⸀㰀戀爀㸀ഀഀ Oracle recommends using a flash recovery area, because it can simplify backup and recovery operations for your database.
਍㰀戀爀㸀ഀഀ You may also set the DB_FLASHBACK_RETENTION_TARGET parameter.
਍㰀戀爀㸀ഀഀ This specifies in minutes how far back you can "flashback" the database, using the socalled "Flashback" framework.
਍䠀漀眀 昀愀爀 戀愀挀欀 漀渀攀 挀愀渀 愀挀琀甀愀氀氀礀 ∀昀氀愀猀栀戀愀挀欀∀ 琀栀攀 搀愀琀愀戀愀猀攀Ⰰ 搀攀瀀攀渀搀猀 漀渀 栀漀眀 洀甀挀栀 昀氀愀猀栀戀愀挀欀 搀愀琀愀 㰀戀爀㸀ഀഀ Oracle has kept in the recovery area.
਍㰀戀爀㸀ഀഀ Example:
਍搀戀开爀攀挀漀瘀攀爀礀开昀椀氀攀开搀攀猀琀㴀✀挀㨀尀漀爀愀挀氀攀尀昀氀愀猀栀开爀攀挀漀瘀攀爀礀开愀爀攀愀✀㰀戀爀㸀ഀഀ db_recovery_file_dest_size=2147483648
਍㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀爀攀搀∀㸀ഀഀ 19.4.3. Parameters related to Automatic Diagnostic Repository ADR:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ This is for 11g only.
਍伀爀愀挀氀攀 㤀椀 愀渀搀 ㄀ 最 甀猀攀猀 琀栀攀 眀攀氀氀 欀渀漀眀渀 氀漀挀愀琀椀漀渀猀 昀漀爀 琀栀攀 愀氀攀爀琀⸀氀漀最 愀渀搀 琀爀愀挀攀 昀椀氀攀猀Ⰰ 眀栀椀挀栀 愀爀攀 猀瀀攀挀椀昀椀攀搀 戀礀㨀㰀戀爀㸀ഀഀ BACKGROUND_DUMP_DESTINATION, USER_DUMP_DESTINATION and CORE_DUMP_DESTINATION.
਍㰀戀爀㸀ഀഀ ADR is defined by the DIAGNOSTIC_DEST parameter, which specifies a location on the filesystem.
਍㰀戀爀㸀ഀഀ ADR is new in 11g, and is partly XML based. The logging (alert.log) and traces are part of ADR.
਍㰀戀爀㸀ഀഀ DIAGNOSTIC_DEST = { pathname | directory }
਍䄀猀 漀昀 伀爀愀挀氀攀 ㄀㄀最 刀攀氀攀愀猀攀 ㄀Ⰰ 琀栀攀 搀椀愀最渀漀猀琀椀挀猀 昀漀爀 攀愀挀栀 搀愀琀愀戀愀猀攀 椀渀猀琀愀渀挀攀 愀爀攀 氀漀挀愀琀攀搀 椀渀 愀 搀攀搀椀挀愀琀攀搀 搀椀爀攀挀琀漀爀礀Ⰰ 㰀戀爀㸀ഀഀ which can be specified through the DIAGNOSTIC_DEST initialization parameter.
਍㰀戀爀㸀ഀഀ This location is known as the Automatic Diagnostic Repository (ADR) Home. For example, if the database name is proddb
਍愀渀搀 琀栀攀 椀渀猀琀愀渀挀攀 渀愀洀攀 椀猀 瀀爀漀搀搀戀㄀Ⰰ 琀栀攀 䄀䐀刀 栀漀洀攀 搀椀爀攀挀琀漀爀礀 眀漀甀氀搀 戀攀 ∀␀䐀䤀䄀䜀一伀匀吀䤀䌀开䐀䔀匀吀⼀搀椀愀最⼀爀搀戀洀猀⼀瀀爀漀搀搀戀⼀瀀爀漀搀搀戀㄀∀⸀㰀戀爀㸀ഀഀ
਍匀漀Ⰰ 椀昀 琀栀攀 䐀䤀䄀䜀一伀匀吀䤀䌀开䐀䔀匀吀 眀愀猀 瀀氀愀挀攀搀 琀漀 ∀䌀㨀尀伀刀䄀䌀䰀䔀∀Ⰰ 礀漀甀 眀漀甀氀搀 昀椀渀搀 琀栀攀 渀攀眀 猀琀礀氀攀 堀䴀䰀 愀氀攀爀琀⸀氀漀最 ∀氀漀最⸀砀洀氀∀ 椀渀Ⰰ 昀漀爀 攀砀愀洀瀀氀攀Ⰰ㰀戀爀㸀ഀഀ "C:\oracle\diag\rdbms\test11g\test11g\alert\log.xml" for the test11g instance.
਍㰀戀爀㸀ഀഀ The old plain text alert.log is still available in:
਍∀䌀㨀尀漀爀愀挀氀攀尀搀椀愀最尀爀搀戀洀猀尀琀攀猀琀㄀㄀最尀琀攀猀琀㄀㄀最尀琀爀愀挀攀尀愀氀攀爀琀开琀攀猀琀㄀㄀最⸀氀漀最∀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀 ㄀㤀⸀㐀⸀㐀⸀ 倀愀爀愀洀攀琀攀爀猀 爀攀氀愀琀攀搀 琀漀 䐀䄀吀䄀䈀䄀匀䔀 一䄀䴀䔀 䄀一䐀 䐀伀䴀䄀䤀一㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍吀栀攀 搀愀琀愀戀愀猀攀渀愀洀攀Ⰰ 愀渀搀 琀栀攀 搀漀洀愀椀渀 眀栀攀爀攀 椀琀 ∀爀攀猀椀搀攀猀∀Ⰰ 愀爀攀 搀攀昀椀渀攀搀 戀礀 琀栀攀 瀀愀爀愀洀攀琀攀爀猀㨀㰀戀爀㸀ഀഀ DB_NAME
਍䐀䈀开䐀伀䴀䄀䤀一㰀戀爀㸀ഀഀ
਍吀栀攀 䐀䈀开一䄀䴀䔀 椀渀椀琀椀愀氀椀稀愀琀椀漀渀 瀀愀爀愀洀攀琀攀爀 搀攀琀攀爀洀椀渀攀猀 琀栀攀 氀漀挀愀氀 渀愀洀攀 挀漀洀瀀漀渀攀渀琀 漀昀 琀栀攀 搀愀琀愀戀愀猀攀 渀愀洀攀Ⰰ㰀戀爀㸀ഀഀ the DB_DOMAIN parameter, which is optional, indicates the domain (logical location) within a
਍渀攀琀眀漀爀欀 猀琀爀甀挀琀甀爀攀⸀ 吀栀攀 挀漀洀戀椀渀愀琀椀漀渀 漀昀 琀栀攀 猀攀琀琀椀渀最猀 昀漀爀 琀栀攀猀攀 琀眀漀 瀀愀爀愀洀攀琀攀爀猀 洀甀猀琀㰀戀爀㸀ഀഀ form a database name that is unique within a network.
਍䘀漀爀 攀砀愀洀瀀氀攀Ⰰ 愀 搀愀琀愀戀愀猀攀 眀椀琀栀 愀 最氀漀戀愀氀 搀愀琀愀戀愀猀攀 渀愀洀攀 漀昀 ∀琀攀猀琀㄀ 最⸀愀渀琀愀瀀攀砀⸀漀爀最∀Ⰰ 㰀戀爀㸀ഀഀ you would have the parameters like so:
਍㰀戀爀㸀ഀഀ DB_NAME = test10g
਍䐀䈀开䐀伀䴀䄀䤀一 㴀 愀渀琀愀瀀攀砀⸀漀爀最㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀 ㄀㤀⸀㐀⸀㔀⸀ 倀愀爀愀洀攀琀攀爀猀 爀攀氀愀琀攀搀 琀漀 倀刀伀䌀䔀匀匀䔀匀 䄀一䐀 匀䔀匀匀䤀伀一匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍倀刀伀䌀䔀匀匀䔀匀㴀洀愀砀 渀甀洀戀攀爀 漀昀 挀漀渀挀甀爀爀攀渀琀 伀匀 瀀爀漀挀攀猀猀攀猀 眀栀椀挀栀 挀愀渀 挀漀渀渀攀挀琀 琀漀 琀栀攀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ SESSIONS=specifies the maximum number of sessions that can be created in the database.
਍㰀戀爀㸀ഀഀ Example:
਍倀刀伀䌀䔀匀匀䔀匀㴀㔀  㰀戀爀㸀ഀഀ
਍吀栀攀 倀刀伀䌀䔀匀匀䔀匀 椀渀椀琀椀愀氀椀稀愀琀椀漀渀 瀀愀爀愀洀攀琀攀爀 搀攀琀攀爀洀椀渀攀猀 琀栀攀 洀愀砀椀洀甀洀 渀甀洀戀攀爀 漀昀㰀戀爀㸀ഀഀ operating system processes that can be connected to Oracle Database concurrently.
਍吀栀攀 瘀愀氀甀攀 漀昀 琀栀椀猀 瀀愀爀愀洀攀琀攀爀 洀甀猀琀 戀攀 愀 洀椀渀椀洀甀洀 漀昀 漀渀攀 昀漀爀 攀愀挀栀 戀愀挀欀最爀漀甀渀搀 瀀爀漀挀攀猀猀 瀀氀甀猀㰀戀爀㸀ഀഀ one for each user process. The number of background processes will vary according
਍琀栀攀 搀愀琀愀戀愀猀攀 昀攀愀琀甀爀攀猀 琀栀愀琀 礀漀甀 愀爀攀 甀猀椀渀最⸀ 䘀漀爀 攀砀愀洀瀀氀攀Ⰰ 椀昀 礀漀甀 愀爀攀 甀猀椀渀最 䄀搀瘀愀渀挀攀搀㰀戀爀㸀ഀഀ Queuing or the file mapping feature, you will have additional background processes.
਍䤀昀 礀漀甀 愀爀攀 甀猀椀渀最 䄀甀琀漀洀愀琀椀挀 匀琀漀爀愀最攀 䴀愀渀愀最攀洀攀渀琀Ⰰ 琀栀攀渀 愀搀搀 琀栀爀攀攀 愀搀搀椀琀椀漀渀愀氀 瀀爀漀挀攀猀猀攀猀㰀戀爀㸀ഀഀ for the database instance.
਍㰀戀爀㸀ഀഀ SESSIONS specifies the maximum number of sessions that can be created in the system.
਍䈀攀挀愀甀猀攀 攀瘀攀爀礀 氀漀最椀渀 爀攀焀甀椀爀攀猀 愀 猀攀猀猀椀漀渀Ⰰ 琀栀椀猀 瀀愀爀愀洀攀琀攀爀 攀昀昀攀挀琀椀瘀攀氀礀 搀攀琀攀爀洀椀渀攀猀 琀栀攀 洀愀砀椀洀甀洀 渀甀洀戀攀爀 漀昀 㰀戀爀㸀ഀഀ concurrent users in the system. You should always set this parameter explicitly to a value equivalent
਍琀漀 礀漀甀爀 攀猀琀椀洀愀琀攀 漀昀 琀栀攀 洀愀砀椀洀甀洀 渀甀洀戀攀爀 漀昀 挀漀渀挀甀爀爀攀渀琀 甀猀攀爀猀Ⰰ 瀀氀甀猀 琀栀攀 渀甀洀戀攀爀 漀昀 戀愀挀欀最爀漀甀渀搀 瀀爀漀挀攀猀猀攀猀Ⰰ㰀戀爀㸀 ഀഀ plus approximately 10% for recursive sessions.
਍㰀戀爀㸀ഀഀ Note: it would not be a very good idea to specify the SESSION= parameter
਍眀栀椀挀栀 椀猀 氀漀眀攀爀 琀栀愀渀 琀栀攀 倀刀伀䌀䔀匀匀䔀匀 瀀愀爀愀洀攀琀攀爀⸀㰀戀爀㸀ഀഀ
਍吀栀攀 搀攀昀愀甀氀琀 渀漀 漀昀 猀攀猀猀椀漀渀猀㨀  ⠀㄀⸀㄀ ⨀ 倀刀伀䌀䔀匀匀䔀匀⤀ ⬀ 㔀㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀 ㄀㤀⸀㐀⸀㘀⸀ 倀愀爀愀洀攀琀攀爀猀 爀攀氀愀琀攀搀 琀漀 䴀䔀䴀伀刀夀 愀渀搀 匀䜀䄀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Memory = SGA memory (like buffer cache + all pools) + All server processes and background processes PGA's
਍㰀戀爀㸀ഀഀ - 11g: (Full) Automatic Memory Management = AMM -> by using parameter "MEMORY_TARGET="
਍ⴀ ㄀ 最⼀㄀㄀最㨀 䄀甀琀漀洀愀琀椀挀 匀栀愀爀攀搀 䴀攀洀漀爀礀 䴀愀渀愀最攀洀攀渀琀 㴀 䄀匀䴀䴀 ⴀ㸀 戀礀 甀猀椀渀最 瀀愀爀愀洀攀琀攀爀∀匀䜀䄀开吀䄀刀䜀䔀吀㴀∀㰀戀爀㸀ഀഀ or
਍ⴀ ㄀㄀最⼀㄀ 最⼀㤀椀㨀 䴀愀渀甀愀氀 䴀攀洀漀爀礀 䴀愀渀愀最攀洀攀渀琀Ⰰ 眀栀攀爀攀 礀漀甀 挀愀渀 猀瀀攀挀椀昀礀 愀氀氀 琀栀攀 椀渀搀椀瘀椀搀甀愀氀 戀甀昀昀攀爀猀 愀渀搀 瀀漀漀氀猀椀稀攀猀 ⬀ 瀀最愀✀猀⸀㰀戀爀㸀ഀഀ
਍匀漀Ⰰ ㄀㄀最 䄀䴀䴀 ⠀椀猀 吀漀琀愀氀 洀攀洀漀爀礀 洀愀渀愀最攀洀攀渀琀⤀ ∀椀猀 洀漀爀攀∀ 愀甀琀漀洀愀琀椀挀 琀栀愀渀 ㄀㄀最⼀㄀ 最 䄀匀䴀䴀 ⠀愀甀琀漀 匀䜀䄀 洀愀渀愀最攀洀攀渀琀⤀ 眀栀椀挀栀 椀猀 洀漀爀攀 愀甀琀漀洀愀琀椀挀㰀戀爀㸀ഀഀ than manual configuration of 11g/10g/9i cache, pools and pga's.
਍ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀最爀攀攀渀∀㸀ഀഀ => For 11g and 10g, it is possible to use the SGA_TARGET parameter.
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
਍∀匀䜀䄀开吀䄀刀䜀䔀吀㴀愀洀漀甀渀琀开漀昀开洀攀洀漀爀礀∀ 椀猀 愀挀琀甀愀氀氀礀 愀 猀椀渀最氀攀 瀀愀爀愀洀攀琀攀爀 昀漀爀 琀栀攀 琀漀琀愀氀 匀䜀䄀 猀椀稀攀 甀渀搀攀爀 伀爀愀挀氀攀 挀漀渀琀爀漀氀Ⰰ 眀栀攀爀攀㰀戀爀㸀ഀഀ automatically all SGA components (buffer cache and all pools) are sized as needed
. ਍圀栀攀渀 甀猀椀渀最 匀䜀䄀开吀䄀刀䜀䔀吀㴀Ⰰ 琀栀攀渀 礀漀甀 搀漀 渀漀琀 渀攀攀搀 琀漀 猀瀀攀挀椀昀礀 愀氀氀 椀渀搀椀瘀椀搀甀愀氀 愀爀攀愀✀猀 氀椀欀攀㨀㰀戀爀㸀ഀഀ
਍䐀䈀开䌀䄀䌀䠀䔀开匀䤀娀䔀 ⠀䐀䔀䘀䄀唀䰀吀 戀甀昀昀攀爀 瀀漀漀氀⤀ 㰀戀爀㸀ഀഀ SHARED_POOL_SIZE (Shared Pool)
਍䰀䄀刀䜀䔀开倀伀伀䰀开匀䤀娀䔀 ⠀䰀愀爀最攀 倀漀漀氀⤀ 㰀戀爀㸀ഀഀ JAVA_POOL_SIZE (Java Pool)
਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㴀㸀 䘀漀爀 ㄀㄀最Ⰰ 椀琀 最漀攀猀 愀 猀琀攀瀀 昀甀爀琀栀攀爀Ⰰ 愀渀搀 椀琀 椀猀 瀀漀猀猀椀戀氀攀 琀漀 甀猀攀 琀栀攀 䴀䔀䴀伀刀夀开吀䄀刀䜀䔀吀 瀀愀爀愀洀攀琀攀爀⸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ "MEMORY_TARGET=amount_of_memory" controls all memory automatically (SGA with all pools and buffers, and all pga's).
਍㰀戀爀㸀ഀഀ While it is better to use MEMORY_TARGET in 11g, you can still use the SGA_TARGET parameter to control the SGA only.
਍䄀氀猀漀Ⰰ 椀琀✀猀 猀琀椀氀氀 瀀漀猀猀椀戀氀攀 琀漀 洀愀渀甀愀氀氀礀 挀漀渀昀椀最甀爀攀 愀氀氀 洀攀洀漀爀礀 愀猀 礀漀甀 猀攀攀 昀椀琀Ⰰ 戀礀 甀猀椀渀最 愀氀氀 椀渀搀椀瘀椀搀甀愀氀 瀀愀爀愀洀攀琀攀爀猀㰀戀爀㸀ഀഀ like "SHARED_POOL_SIZE=", "DB_CACHE_SIZE=" etc..
਍㰀戀爀㸀ഀഀ MEMORY_TARGET and SGA_TARGET will perform automatic memory management (memory_target for all memory, sga_target for the SGA)
਍䈀漀琀栀 瀀愀爀愀洀攀琀攀爀猀 挀愀渀 戀攀 甀猀攀搀 椀渀 挀漀渀樀甀渀挀琀椀漀渀 眀椀琀栀 愀 栀愀爀搀 甀瀀瀀攀爀 氀椀洀椀琀 昀漀爀 琀栀攀 琀漀琀愀氀 洀攀洀漀爀礀 琀栀愀琀 挀愀渀 戀攀 甀猀攀搀⸀㰀戀爀㸀ഀഀ These are: memory_max_target and sga_max_size.
਍匀漀Ⰰ 琀栀攀 昀漀氀氀漀眀椀渀最 瀀愀爀愀洀攀琀攀爀猀 洀椀最栀琀 戀攀 猀攀攀渀 愀猀 戀攀椀渀最 猀攀琀 椀渀 愀渀 猀瀀昀椀氀攀⸀漀爀愀⼀椀渀椀琀⸀漀爀愀㨀㰀戀爀㸀ഀഀ
਍㄀㄀最㨀㰀戀爀㸀ഀഀ MEMORY_TARGET=
਍䴀䔀䴀伀刀夀开䴀䄀堀开吀䄀刀䜀䔀吀㴀㰀戀爀㸀ഀഀ
਍㄀ 最 愀渀搀 ㄀㄀最㨀㰀戀爀㸀ഀഀ SGA_TARGET=
਍匀䜀䄀开䴀䄀堀开匀䤀娀䔀㴀㰀戀爀㸀ഀഀ
਍倀爀椀漀爀 琀漀 伀爀愀挀氀攀 ㄀㄀最Ⰰ 礀漀甀 挀漀甀氀搀 猀攀琀 琀栀攀 猀最愀开琀愀爀最攀琀 愀渀搀 猀最愀开洀愀砀开猀椀稀攀 瀀愀爀愀洀攀琀攀爀猀Ⰰ 愀氀氀漀眀椀渀最 伀爀愀挀氀攀 琀漀 愀氀氀漀挀愀琀攀㰀戀爀㸀ഀഀ and re-allocate RAM within the SGA. The PGA was independent from this, and was set by the pga_aggregate_target parameter.
਍㰀戀爀㸀ഀഀ In Oracle 11g you may use the memory_max_target parameter which determines the total maximum RAM for both the PGA and SGA area's
਍吀栀攀 渀攀眀 䴀䔀䴀伀刀夀ⴀ吀䄀刀䜀䔀吀 瀀愀爀愀洀攀琀攀爀Ⰰ ∀琀愀爀最攀琀猀∀ 昀漀爀 琀栀攀 猀攀琀 猀椀稀攀Ⰰ 愀渀搀 攀瘀攀渀 愀氀氀漀眀猀 刀䄀䴀 琀漀 戀攀 ∀猀琀攀愀氀攀搀∀ 昀爀漀洀 琀栀攀 匀䜀䄀㰀戀爀㸀ഀഀ and transferred to the PGA, or the other way around.
਍㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀爀攀搀∀㸀ഀഀ 19.4.7. Parameters related to ADDM and AWR:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
਍伀爀愀挀氀攀 䐀椀愀最渀漀猀琀椀挀猀 倀愀挀欀 ㄀㄀最 愀渀搀 ㄀ 最 椀渀挀氀甀搀攀猀 愀 猀攀氀昀ⴀ搀椀愀最渀漀猀琀椀挀 攀渀最椀渀攀 戀甀椀氀琀 爀椀最栀琀 椀渀琀漀 琀栀攀㰀戀爀㸀ഀഀ Oracle Database 11g kernel, called the "Automatic Database Diagnostic Monitor", or ADDM.
਍㰀戀爀㸀ഀഀ To enable ADDM to accurately diagnose performance problems, it is important that
਍椀琀 栀愀猀 搀攀琀愀椀氀攀搀 欀渀漀眀氀攀搀最攀 漀昀 搀愀琀愀戀愀猀攀 愀挀琀椀瘀椀琀椀攀猀 愀渀搀 琀栀攀 眀漀爀欀氀漀愀搀 琀栀攀 搀愀琀愀戀愀猀攀 椀猀㰀戀爀㸀ഀഀ supporting. Oracle Diagnostics Pack 11g (and 10g), therefore, includes a built in repository
਍眀椀琀栀椀渀 攀瘀攀爀礀 伀爀愀挀氀攀 ㄀㄀最 ⠀愀渀搀 ㄀ 最⤀ 䐀愀琀愀戀愀猀攀Ⰰ 挀愀氀氀攀搀 㰀䈀㸀∀䄀甀琀漀洀愀琀椀挀 圀漀爀欀氀漀愀搀 刀攀瀀漀猀椀琀漀爀礀 ⠀䄀圀刀⤀∀㰀⼀䈀㸀Ⰰ㰀戀爀㸀ഀഀ which contains operational statistics about that particular database and other relevant
਍椀渀昀漀爀洀愀琀椀漀渀⸀ 䄀琀 爀攀最甀氀愀爀 椀渀琀攀爀瘀愀氀猀 ⠀漀渀挀攀 愀渀 栀漀甀爀 戀礀 搀攀昀愀甀氀琀⤀Ⰰ 琀栀攀 䐀愀琀愀戀愀猀攀 琀愀欀攀猀 愀㰀戀爀㸀ഀഀ snapshot of all its vital statistics and workload information and stores them in AWR,
਍愀渀搀 爀攀琀愀椀渀猀 琀栀攀 猀琀愀琀椀猀琀椀挀猀 椀渀 琀栀攀 眀漀爀欀氀漀愀搀 爀攀瀀漀猀椀琀漀爀礀 昀漀爀 㠀 搀愀礀猀⸀㰀戀爀㸀ഀഀ Also, by default, ADDM runs every hour to analyze snapshots taken by AWR during that period.
਍㰀戀爀㸀ഀഀ Note: for people familiar with older Oracle versions: ADDM and AWR resembles an strongly enhanced
਍愀渀搀 愀甀琀漀洀愀琀椀挀愀氀氀礀 椀洀瀀氀攀洀攀渀琀攀搀 ∀匀吀䄀吀匀倀䄀䌀䬀∀⸀㰀戀爀㸀ഀഀ
਍匀漀Ⰰ 䄀䐀䐀䴀 攀砀愀洀椀渀攀猀 愀渀搀 愀渀愀氀礀稀攀猀 搀愀琀愀 挀愀瀀琀甀爀攀搀 椀渀 琀栀攀 䄀甀琀漀洀愀琀椀挀 圀漀爀欀氀漀愀搀 刀攀瀀漀猀椀琀漀爀礀 ⠀䄀圀刀⤀ 琀漀 搀攀琀攀爀洀椀渀攀 㰀戀爀㸀ഀഀ possible performance problems in Oracle Database. ADDM then locates the root causes of the performance problems,
਍瀀爀漀瘀椀搀攀猀 爀攀挀漀洀洀攀渀搀愀琀椀漀渀猀 昀漀爀 挀漀爀爀攀挀琀椀渀最 琀栀攀洀Ⰰ 愀渀搀 焀甀愀渀琀椀昀椀攀猀 琀栀攀 攀砀瀀攀挀琀攀搀 戀攀渀攀昀椀琀猀⸀ 㰀戀爀㸀ഀഀ
਍䄀 欀攀礀 挀漀洀瀀漀渀攀渀琀 漀昀 䄀圀刀Ⰰ 椀猀 ∀䄀挀琀椀瘀攀 匀攀猀猀椀漀渀 䠀椀猀琀漀爀礀 ⠀䄀匀䠀⤀∀⸀ 䄀匀䠀 猀愀洀瀀氀攀猀 琀栀攀㰀戀爀㸀ഀഀ current state of all active sessions periodically and stores it in memory. The data
਍挀漀氀氀攀挀琀攀搀 椀渀 洀攀洀漀爀礀 挀愀渀 戀攀 愀挀挀攀猀猀攀搀 戀礀 猀礀猀琀攀洀 瘀椀攀眀猀⸀ 吀栀椀猀 猀愀洀瀀氀攀搀 搀愀琀愀 椀猀 愀氀猀漀㰀戀爀㸀ഀഀ pushed into AWR every hour for the purposes of performance diagnostics.
਍㰀戀爀㸀ഀഀ For 11g, ADDM and AWR/ASH are part of the "Server Manageability Packs". In fact, the components are the following:
਍㰀戀爀㸀ഀഀ - The DIAGNOSTIC pack includes AWR and ADDM.
਍ⴀ 吀栀攀 吀唀一䤀一䜀 瀀愀挀欀 椀渀挀氀甀搀攀猀 匀儀䰀 吀甀渀椀渀最 䄀搀瘀椀猀漀爀Ⰰ 匀儀䰀䄀挀挀攀猀猀 䄀搀瘀椀猀漀爀Ⰰ 愀渀搀 猀漀 漀渀⸀㰀戀爀㸀ഀഀ
਍㰀䈀㸀䌀伀一吀刀伀䰀开䴀䄀一䄀䜀䔀䴀䔀一吀开倀䄀䌀䬀开䄀䌀䌀䔀匀匀 瀀愀爀愀洀攀琀攀爀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
਍吀栀攀 ∀䌀伀一吀刀伀䰀开䴀䄀一䄀䜀䔀䴀䔀一吀开倀䄀䌀䬀开䄀䌀䌀䔀匀匀∀ 瀀愀爀愀洀攀琀攀爀 搀攀琀攀爀洀椀渀攀猀 眀栀椀挀栀 漀昀 琀栀攀 愀戀漀瘀攀 挀漀洀瀀漀渀攀渀琀猀 愀爀攀 ∀猀眀椀琀挀栀攀搀 漀渀∀⸀㰀戀爀㸀ഀഀ
਍䌀伀一吀刀伀䰀开䴀䄀一䄀䜀䔀䴀䔀一吀开倀䄀䌀䬀开䄀䌀䌀䔀匀匀 㴀 笀 一伀一䔀 簀 䐀䤀䄀䜀一伀匀吀䤀䌀 簀 䐀䤀䄀䜀一伀匀吀䤀䌀⬀吀唀一䤀一䜀 紀㰀戀爀㸀ഀഀ Default: DIAGNOSTIC+TUNING
਍㰀戀爀㸀ഀഀ If set to NONE, the ADDM & AWR and TUNING pack, are switched off.
਍㰀戀爀㸀ഀഀ STATISTICS_LEVEL parameter:
਍㰀戀爀㸀ഀഀ STATISTICS_LEVEL specifies the level of collection for database and operating system statistics.
਍㰀戀爀㸀ഀഀ STATISTICS_LEVEL = { ALL | TYPICAL | BASIC }
਍䐀攀昀愀甀氀琀㨀 吀夀倀䤀䌀䄀䰀㰀戀爀㸀ഀഀ
਍䜀愀琀栀攀爀椀渀最 搀愀琀愀戀愀猀攀 猀琀愀琀椀猀琀椀挀猀 甀猀椀渀最 䄀圀刀 椀猀 攀渀愀戀氀攀搀 戀礀 搀攀昀愀甀氀琀 愀渀搀 椀猀 挀漀渀琀爀漀氀氀攀搀 戀礀 琀栀攀 匀吀䄀吀䤀匀吀䤀䌀匀开䰀䔀嘀䔀䰀 㰀戀爀㸀ഀഀ initialization parameter.
਍吀栀攀 匀吀䄀吀䤀匀吀䤀䌀匀开䰀䔀嘀䔀䰀 瀀愀爀愀洀攀琀攀爀 猀栀漀甀氀搀 戀攀 猀攀琀 琀漀 吀夀倀䤀䌀䄀䰀 漀爀 䄀䰀䰀 琀漀 攀渀愀戀氀攀 猀琀愀琀椀猀琀椀挀猀 最愀琀栀攀爀椀渀最 戀礀 䄀圀刀⸀ 㰀戀爀㸀ഀഀ The default setting is TYPICAL.
਍匀攀琀琀椀渀最 琀栀攀 匀吀䄀吀䤀匀吀䤀䌀匀开䰀䔀嘀䔀䰀 瀀愀爀愀洀攀琀攀爀 琀漀 䈀䄀匀䤀䌀 搀椀猀愀戀氀攀猀 洀愀渀礀 伀爀愀挀氀攀 䐀愀琀愀戀愀猀攀 最愀琀栀攀爀椀渀最 猀琀愀琀椀猀琀椀挀猀Ⰰ 㰀戀爀㸀ഀഀ including AWR/ASH, and is not recommended unless you want to reserve as much as possible performance for
਍琀栀攀 愀瀀瀀氀椀挀愀琀椀瘀攀 搀愀琀愀戀愀猀攀 瀀爀漀挀攀猀猀攀猀⸀㰀戀爀㸀 ഀഀ ਍ഀഀ ਍㰀戀爀㸀ഀഀ
਍㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

20. DIAGNOSTIC/PERFORMANCE TOOLS IN 9i: A FEW WORDS ON STATSPACK:

਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀䈀㸀䘀漀爀 琀栀攀 ㄀ 最⼀㄀㄀最 䄀䐀䐀䴀 愀渀搀 䄀圀刀 椀洀瀀氀攀洀攀渀琀愀琀椀漀渀Ⰰ 漀爀 琀栀攀 猀甀挀挀攀猀猀漀爀 昀漀爀 匀吀䄀吀匀倀䄀䌀䬀Ⰰ 瀀氀攀愀猀攀 猀攀攀 猀攀挀琀椀漀渀 ㈀㤀⸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
਍ഀഀ Although statspack is a typical 8i/9i Diagnostic tool, I still like to spend a few words on it.
਍䘀漀爀 ㄀ 最 愀渀搀 氀愀琀攀爀Ⰰ 礀漀甀 愀爀攀 爀攀挀漀洀洀攀渀搀攀搀 琀漀 甀猀攀 琀栀攀 渀攀眀攀爀 昀爀愀洀攀眀漀爀欀猀⸀㰀戀爀㸀ഀഀ
਍匀吀䄀吀匀倀䄀䌀䬀 椀猀 愀 瀀攀爀昀漀爀洀愀渀挀攀 搀椀愀最渀漀猀琀椀挀 琀漀漀氀Ⰰ 眀栀椀挀栀 椀猀 愀瘀愀椀氀愀戀氀攀 猀椀渀挀攀 伀爀愀挀氀攀㠀椀⸀㰀戀爀㸀ഀഀ It's widely used in Oracle 8i and 9i environments. But, from 10g onwards, a renewed framework
਍眀愀猀 椀渀琀爀漀搀甀挀攀搀 ⠀氀椀欀攀 昀漀爀 攀砀愀洀瀀氀攀 䄀䐀䐀䴀⤀⸀ 匀漀Ⰰ 椀渀 ㄀ 最 愀渀搀 ㄀㄀最Ⰰ 漀昀挀漀甀爀猀攀 琀栀攀 渀攀眀攀爀 䐀椀愀最渀漀猀琀椀挀 琀漀漀氀猀 愀爀攀 爀攀挀漀洀洀攀渀搀攀搀⸀㰀戀爀㸀ഀഀ Still, it's usefull to spend a few words on statspack, since it's so incredably easy to use.
਍䄀渀搀 眀栀漀 欀渀漀眀猀⸀⸀ 洀愀礀戀攀 礀漀甀 眀愀渀琀 琀漀 甀猀攀 椀琀 漀渀 ㄀ 最 愀猀 眀攀氀氀⸀㰀戀爀㸀ഀഀ However, correctly interpreting the reports, still requires a reasonable system and Oracle knowledge.
. ਍㰀戀爀㸀ഀഀ
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 20.1 INSTALLING:
਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ It's recommended to create a tablespace "PERFSTAT" first. Since the schema (owner) of the new
਍搀椀愀最渀漀猀琀椀挀 琀愀戀氀攀猀Ⰰ 椀猀 琀栀攀 渀攀眀 甀猀攀爀 ∀瀀攀爀昀猀琀愀琀∀Ⰰ 椀琀✀猀 渀椀挀攀 琀漀 欀攀攀瀀 愀氀氀 漀戀樀攀挀琀猀 琀漀最攀琀栀攀爀 椀渀 愀 攀愀猀礀㰀戀爀㸀ഀഀ to indentify tablespace.
਍㰀戀爀㸀ഀഀ Next, from sqlplus, run the create script
਍㰀戀爀㸀ഀഀ "$ORACLE_HOME/rdbms/admin/statscre.sql" (Unix) or "%ORACLE_HOME%\rdbms\admin\statscre.sql" (Windows).
਍㰀戀爀㸀ഀഀ This script will ask a few simple questions like who should be the owner (the suggested owner is "perfstat")
਍愀渀搀 眀栀椀挀栀 琀愀戀氀攀猀瀀愀挀攀 礀漀甀 眀愀渀琀 琀漀 甀猀攀 琀漀 猀琀漀爀攀 瀀攀爀昀猀琀愀琀✀猀 琀愀戀氀攀猀⸀㰀戀爀㸀ഀഀ
਍䄀氀琀栀漀甀最栀 猀漀洀攀 愀搀搀椀琀椀漀渀愀氀 挀漀渀昀椀最甀爀愀琀椀漀渀 ⠀愀昀琀攀爀 椀渀猀琀愀氀氀愀琀椀漀渀⤀ 挀愀渀 戀攀 搀漀渀攀Ⰰ氀椀欀攀 愀氀琀攀爀椀渀最 琀栀攀 ∀䌀漀氀氀攀挀琀椀漀渀 䰀攀瘀攀氀∀Ⰰ㰀戀爀㸀ഀഀ you are now "basically" setup to create "snapshots" and create "reports".
਍㰀戀爀㸀ഀഀ
਍ഀഀ ਍㰀䈀㸀㈀ ⸀㈀ 䄀 䘀䔀圀 圀伀刀䐀匀 伀一 䠀伀圀 䤀吀 圀伀刀䬀匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
਍夀漀甀 欀渀漀眀 琀栀愀琀 琀栀攀爀攀 愀爀攀 焀甀椀琀攀 愀 昀攀眀 搀礀渀愀洀椀挀 猀礀猀琀攀洀 ∀瘀椀攀眀猀∀ ⠀瘀␀⤀Ⰰ 眀栀椀挀栀 挀漀氀氀攀挀琀 搀愀琀愀戀愀猀攀 眀椀搀攀 猀琀愀琀椀猀琀椀挀猀Ⰰ㰀戀爀㸀ഀഀ many of which are related to performance and wait events
਍匀琀愀琀猀瀀愀挀欀 眀椀氀氀 甀猀攀 愀 渀甀洀戀攀爀 漀昀 琀爀甀攀 瀀攀爀洀愀渀攀渀琀 琀愀戀氀攀猀 眀栀椀挀栀 栀愀猀 愀 漀渀攀 琀漀 漀渀攀 挀漀爀爀攀猀瀀漀渀搀攀渀挀攀 琀漀 琀栀愀琀㰀戀爀㸀ഀഀ set of v$ views (for example v$sysstat will have a corresponding stats$sysstat table)
਍圀攀氀氀 椀琀✀猀 㰀䤀㸀愀氀洀漀猀琀㰀⼀䤀㸀 漀渀攀 琀漀 漀渀攀Ⰰ 戀攀挀愀甀猀攀 琀栀攀 猀琀愀琀猀瀀愀挀欀 琀愀戀氀攀 眀椀氀氀 栀愀瘀攀 猀漀洀攀 愀搀搀椀琀椀漀渀愀氀 挀漀氀甀洀渀猀㰀戀爀㸀ഀഀ of which (in this note) the "snap_id" column is the most interresting one.
਍㰀戀爀㸀ഀഀ When you "activate" statspack, you will create a "snapshot" of the database, meaning
਍琀栀愀琀 琀栀攀 猀攀琀 漀昀 瘀␀ 瘀椀攀眀猀 愀爀攀 焀甀攀爀椀攀搀Ⰰ 愀渀搀 琀栀攀 爀攀猀甀氀琀猀 愀爀攀 猀琀漀爀攀搀 椀渀 琀栀攀 ∀猀琀愀琀猀␀∀ 琀愀戀氀攀猀Ⰰ 眀栀攀爀攀 琀栀攀猀攀㰀戀爀㸀ഀഀ specific results are identified by a specific "SNAP_ID".
਍吀栀攀 渀攀砀琀 琀椀洀攀 礀漀甀 爀甀渀 猀琀愀琀猀瀀愀挀欀Ⰰ 愀 渀攀眀 匀一䄀倀开䤀䐀 眀椀氀氀 椀搀攀渀琀椀昀礀 琀栀攀猀攀 渀攀眀 洀攀愀猀甀爀攀洀攀渀琀猀⸀㰀戀爀㸀ഀഀ And so on.. and so on.
਍㰀戀爀㸀ഀഀ It is quite critical to your understanding of the STATSPACK utility that you realize that the information
਍挀愀瀀琀甀爀攀搀 戀礀 愀 匀吀䄀吀匀倀䄀䌀䬀 猀渀愀瀀猀栀漀琀 愀爀攀 愀挀挀甀洀甀氀愀琀攀搀 瘀愀氀甀攀猀Ⰰ 猀椀渀挀攀 洀漀猀琀 漀昀 琀栀攀 瘀␀ 瘀椀攀眀猀 挀漀渀琀愀椀渀 愀挀挀甀洀甀氀愀琀攀搀 瘀愀氀甀攀猀⸀㰀戀爀㸀ഀഀ This automatically means, that you only can compare two snapshots, to get meaningfull results.
਍䔀砀愀洀瀀氀攀猀㨀㰀戀爀㸀ഀഀ
਍㰀漀氀㸀ഀഀ
  • You could create a snapshot early in the morning, and one late in the afternoon, and then analyze the results ਍琀漀 猀攀攀 栀漀眀 琀栀攀 搀愀琀愀戀愀猀攀 栀愀猀 瀀攀爀昀漀爀洀攀搀 琀栀椀猀 搀愀礀⸀㰀⼀氀椀㸀ഀഀ
  • You could create a snapshot before a certain batch (or other program) runs, and then one when that batch has finished.
  • ਍㰀⼀漀氀㸀ഀഀ
    ਍一漀琀攀㨀㰀戀爀㸀ഀഀ Since the v$ views are cumulative, the stats$ are thus too. But an instance shutdown will "clear" many v$ views,
    ਍琀栀甀猀 挀爀攀愀琀椀渀最 愀 爀攀瀀漀爀琀 甀猀椀渀最 猀渀愀瀀猀栀漀琀猀 戀攀昀漀爀攀 愀渀搀 愀昀琀攀爀 愀 猀栀甀琀搀漀眀渀Ⰰ 眀椀氀氀 渀漀琀 最攀渀攀爀愀琀攀 瘀愀氀椀搀 爀攀猀甀氀琀猀⸀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 20.3 A FEW WORDS ON USING STATSPACK:
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ - Creating a snapshot:
    ਍㰀戀爀㸀ഀഀ Logon (using sqlplus) as perfstat and execute the 'statspack.snap' package.
    ਍㰀戀爀㸀ഀഀ SQL> execute statspack.snap;
    ਍㰀戀爀㸀ഀഀ - Creating a report:
    ਍㰀戀爀㸀ഀഀ The report will just be an ascii file, so it's easy to view the contents.
    ਍㰀戀爀㸀ഀഀ Log on as perfstat using sqlplus:
    ਍㰀戀爀㸀ഀഀ % sqlplus perfstat/perfstat
    ਍㰀戀爀㸀ഀഀ Then run the 'spreport.sql' script that lives in the "ORACLE_HOME/rdbms/admin" directory.
    ਍㰀戀爀㸀ഀഀ SQL> @?/rdbms/admin/spreport.sql
    ਍㰀戀爀㸀ഀഀ This script essentially asks three important questions:
    ਍㰀戀爀㸀ഀഀ - The begin SNAP_ID
    ਍ⴀ 吀栀攀 攀渀搀 匀一䄀倀开䤀䐀㰀戀爀㸀ഀഀ - And where you want to store the report with what name.
    ਍㰀戀爀㸀ഀഀ A short while later, you can study that report. The report will show you much information like
    ਍最攀渀攀爀愀氀 搀愀琀愀戀愀猀攀 猀琀愀琀椀猀琀椀挀猀Ⰰ 琀漀瀀 挀漀渀猀甀洀椀渀最 匀儀䰀 猀琀愀琀攀洀攀渀琀猀Ⰰ ─挀瀀甀 愀渀搀 搀甀爀愀琀椀漀渀 瀀攀爀 匀儀䰀 攀琀挀⸀⸀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㈀ ⸀㐀 伀吀䠀䔀刀 一伀吀䔀匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
    ਍ⴀ 匀椀渀挀攀 ∀攀砀攀挀甀琀攀 猀琀愀琀猀瀀愀挀欀⸀猀渀愀瀀∀ 眀椀氀氀 挀爀攀愀琀攀 愀 猀渀愀瀀猀栀漀琀Ⰰ 椀琀✀猀 攀愀猀礀 琀漀 猀挀栀攀搀甀氀攀 椀琀 昀爀漀洀 愀渀 伀匀 猀挀栀攀搀甀氀攀爀⸀㰀戀爀㸀ഀഀ But don't schedule it like "every ten minutes". That will not add any value. Once an hour, or a longer interval,
    ਍椀猀 爀攀挀漀洀洀攀渀搀攀搀⸀㰀戀爀㸀ഀഀ Also, if you need to analyze batches, it's more sane to schedule it before and after those batch(es).
    ਍㰀戀爀㸀ഀഀ - If you need to view the snap_id's and at which time they have run, use a query like:
    ਍㰀戀爀㸀ഀഀ select name,snap_id,to_char(snap_time,'DD.MM.YYYY:HH24:MI:SS')
    ਍∀䐀愀琀攀⼀吀椀洀攀∀ 昀爀漀洀 猀琀愀琀猀␀猀渀愀瀀猀栀漀琀Ⰰ瘀␀搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ
    ਍吀栀愀琀 椀渀昀漀爀洀愀琀椀漀渀 挀愀渀 戀攀 甀猀攀搀 琀漀 猀攀氀攀挀琀 琀栀攀 挀漀爀爀攀挀琀 猀琀愀爀琀 猀渀愀瀀开椀搀 愀渀搀 攀渀搀 猀渀愀瀀开椀搀 昀漀爀 礀漀甀爀 爀攀瀀漀爀琀⸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㈀㄀∀㸀㈀㄀⸀ 唀匀䤀一䜀 䄀 䌀唀刀匀伀刀 䤀一 倀䰀⼀匀儀䰀 䰀伀伀倀匀㨀㰀⼀栀㈀㸀 ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍圀攀 愀爀攀 最漀椀渀最 琀漀 椀氀氀甀猀琀爀愀琀攀 琀栀攀 甀猀攀 漀昀 愀 ∀挀甀爀猀漀爀∀ 椀渀 倀䰀匀儀䰀 氀漀漀瀀猀⸀㰀戀爀㸀ഀഀ PLSQL has more "ways" to create loops, like for example using "FOR.." or "WHILE.." loops
    ਍䈀甀琀 琀栀椀猀 猀攀挀琀椀漀渀 眀愀渀琀猀 琀漀 最椀瘀攀 愀 昀攀眀 攀砀愀洀瀀氀攀猀 甀猀椀渀最 愀 㰀䤀㸀挀甀爀猀漀爀㰀⼀䤀㸀⸀㰀戀爀㸀ഀഀ
    ਍䤀渀 洀愀渀礀 漀挀挀愀猀椀漀渀猀Ⰰ 礀漀甀 洀椀最栀琀 瘀椀攀眀 愀 挀甀爀猀漀爀 愀猀 愀 㰀䤀㸀瘀椀爀琀甀愀氀 琀愀戀氀攀㰀⼀䤀㸀Ⰰ 戀攀挀愀甀猀攀 礀漀甀 漀昀琀攀渀 ∀搀攀挀氀愀爀攀∀ 琀栀攀 挀甀爀猀漀爀㰀戀爀㸀ഀഀ as being a resultset from a query on one or more tables.
    ਍㰀戀爀㸀ഀഀ Assuming you work on a testsystem, let's create a testuser first, who will perform
    ਍愀 挀漀甀瀀氀攀 漀昀 攀砀愀洀瀀氀攀猀⸀㰀戀爀㸀ഀഀ
    ਍䌀刀䔀䄀吀䔀 唀匀䔀刀 愀氀戀攀爀琀 椀搀攀渀琀椀昀椀攀搀 戀礀 愀氀戀攀爀琀㰀戀爀㸀ഀഀ DEFAULT TABLESPACE USERS
    ਍吀䔀䴀倀伀刀䄀刀夀 吀䄀䈀䰀䔀匀倀䄀䌀䔀 吀䔀䴀倀㰀戀爀㸀ഀഀ ;
    ਍㰀戀爀㸀ഀഀ GRANT connect TO albert;
    ਍䜀刀䄀一吀 爀攀猀漀甀爀挀攀 吀伀 愀氀戀攀爀琀㬀㰀戀爀㸀ഀഀ GRANT DBA TO albert;
    ਍㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀㰀唀㸀䔀堀䄀䴀倀䰀䔀 ㄀㨀㰀⼀唀㸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䰀攀琀✀猀 甀猀攀 愀 挀甀爀猀漀爀 琀漀 漀甀琀瀀甀琀 琀栀攀 挀漀渀琀攀渀琀猀 漀昀 愀 琀愀戀氀攀 琀漀 礀漀甀爀 猀挀爀攀攀渀⸀㰀戀爀㸀ഀഀ
    ਍ⴀ 䰀攀琀猀 挀漀渀渀攀挀琀 愀猀 愀氀戀攀爀琀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 挀漀渀渀攀挀琀 愀氀戀攀爀琀⼀愀氀戀攀爀琀㰀戀爀㸀ഀഀ
    ਍ⴀ 一漀眀 愀氀戀攀爀琀 眀椀氀氀 挀爀攀愀琀攀 愀 猀椀洀瀀氀攀 琀愀戀氀攀㨀㰀戀爀㸀ഀഀ
    ਍䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀 䔀䴀倀䰀伀夀䔀䔀㰀戀爀㸀ഀഀ (
    ਍䔀䴀倀开䤀䐀 一唀䴀䈀䔀刀Ⰰ㰀戀爀㸀ഀഀ EMP_NAME VARCHAR2(20),
    ਍匀䄀䰀䄀刀夀 一唀䴀䈀䔀刀⠀㜀Ⰰ㈀⤀㰀戀爀㸀ഀഀ );
    ਍㰀戀爀㸀ഀഀ - Albert now performs a few inserts:
    ਍㰀戀爀㸀ഀഀ INSERT INTO EMPLOYEE VALUES (1,'Harry',2000);
    ਍䤀一匀䔀刀吀 䤀一吀伀 䔀䴀倀䰀伀夀䔀䔀 嘀䄀䰀唀䔀匀 ⠀㈀Ⰰ✀䨀漀栀渀✀Ⰰ㌀㄀㔀 ⤀㬀㰀戀爀㸀ഀഀ INSERT INTO EMPLOYEE VALUES (3,'Mary',4000);
    ਍䤀一匀䔀刀吀 䤀一吀伀 䔀䴀倀䰀伀夀䔀䔀 嘀䄀䰀唀䔀匀 ⠀㐀Ⰰ✀䄀爀渀漀氀搀✀Ⰰ㈀㤀  ⤀㬀㰀戀爀㸀ഀഀ
    ਍挀漀洀洀椀琀㬀㰀戀爀㸀ഀഀ
    ਍ⴀ 一漀眀 眀攀 眀愀渀琀 琀漀 漀甀琀瀀甀琀 琀栀攀 挀漀渀琀攀渀琀猀 漀昀 琀栀攀 琀愀戀氀攀 ⠀漀昀挀漀甀爀猀攀 椀琀✀猀 攀愀猀椀攀爀 甀猀椀渀最 愀 猀攀氀攀挀琀 猀琀愀琀攀洀攀渀琀Ⰰ 戀甀琀 眀攀 眀愀渀琀㰀戀爀㸀ഀഀ to demonstrate the use of a cursor).
    ਍䰀攀琀✀猀 琀爀礀 琀栀攀 昀漀氀氀漀眀椀渀最 挀漀搀攀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀攀琀 猀攀爀瘀攀爀漀甀琀瀀甀琀 漀渀㬀 ⴀⴀ 椀渀 漀爀搀攀爀 琀漀 洀愀欀攀 猀甀爀攀 猀焀氀瀀氀甀猀 猀栀漀眀猀 漀甀琀瀀甀琀⸀㰀戀爀㸀ഀഀ
    ਍ⴀⴀ 栀攀爀攀 椀猀 琀栀攀 挀漀搀攀㨀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ DECLARE cursor CURTEST IS
    ਍☀渀戀猀瀀☀渀戀猀瀀       匀䔀䰀䔀䌀吀 攀洀瀀开椀搀Ⰰ 攀洀瀀开渀愀洀攀 䘀刀伀䴀 䔀䴀倀䰀伀夀䔀䔀㬀㰀戀爀㸀ഀഀ
    ਍挀甀爀开爀攀挀 挀甀爀琀攀猀琀─爀漀眀琀礀瀀攀㬀㰀戀爀㸀ഀഀ
    ਍戀攀最椀渀㰀戀爀㸀ഀഀ   for cur_rec IN CURTEST loop
    ਍☀渀戀猀瀀  搀戀洀猀开漀甀琀瀀甀琀⸀瀀甀琀开氀椀渀攀⠀吀伀开䌀䠀䄀刀⠀挀甀爀开爀攀挀⸀攀洀瀀开椀搀⤀簀簀✀ ✀簀簀挀甀爀开爀攀挀⸀攀洀瀀开渀愀洀攀⤀㬀㰀戀爀㸀ഀഀ   end loop;
    ਍攀渀搀㬀㰀戀爀㸀ഀഀ /
    ਍㰀戀爀㸀ഀഀ ਍吀栀攀 昀椀爀猀琀 戀氀漀挀欀 椀猀 琀栀攀 挀甀爀猀漀爀 搀攀挀氀愀爀愀琀椀漀渀⸀ 夀漀甀 渀漀琀椀挀攀 琀栀愀琀 ∀䌀唀刀吀䔀匀吀∀ 椀猀 搀攀挀氀愀爀攀搀 愀猀 戀攀椀渀最 琀栀攀㰀戀爀㸀ഀഀ resultset of a query?
    ਍䠀攀爀攀 眀攀 愀氀猀漀 搀攀挀氀愀爀攀 琀栀攀 瘀愀爀椀愀戀氀攀 ∀挀甀爀开爀攀挀∀Ⰰ 眀栀椀挀栀 ⠀眀栀攀渀 愀猀猀椀最渀攀搀 瘀愀氀甀攀猀⤀ 挀漀渀琀愀椀渀猀 愀 眀栀漀氀攀 ∀爀漀眀∀㰀戀爀㸀ഀഀ from the cursor. You see? This is a very easy way to assign a whole row to variable in one time!
    ਍㰀戀爀㸀ഀഀ The second block is the "body" of the code. Here we open (implicitly) the cursor "CURTEST", and define a loop
    ਍眀栀攀爀攀 ∀挀甀爀开爀攀挀∀ 椀渀 攀愀挀栀 挀礀挀氀攀 漀昀 琀栀攀 氀漀漀瀀Ⰰ 愀琀琀愀椀渀猀 琀栀攀 瘀愀氀甀攀猀 昀爀漀洀 琀栀攀 渀攀砀琀 爀漀眀 椀渀 ∀䌀唀刀吀䔀匀吀∀⸀㰀戀爀㸀ഀഀ What we then actually do in such a cycle in the loop, is just output two values in "cur_rec" to your screen
    ਍甀猀椀渀最 琀栀攀 猀琀愀渀搀愀爀搀 伀爀愀挀氀攀 瀀爀漀挀攀搀甀爀攀 ∀搀戀洀猀开漀甀琀瀀甀琀⸀瀀甀琀开氀椀渀攀⠀⤀∀⸀㰀戀爀㸀ഀഀ
    ਍䐀椀搀 礀漀甀 渀漀琀椀挀攀 琀栀愀琀 眀攀 搀椀搀 渀漀琀 攀砀瀀氀椀挀椀琀氀礀 ∀漀瀀攀渀∀ 愀渀搀 氀愀琀攀爀 ⠀愀昀琀攀爀 琀栀攀 氀漀漀瀀 椀猀 搀漀渀攀⤀Ⰰ ∀挀氀漀猀攀∀ 琀栀攀 挀甀爀猀漀爀㼀㰀戀爀㸀ഀഀ In the "for var in cursor_name loop .. end loop" structure, the open and close of the cursor is
    ਍椀洀瀀氀椀挀椀琀氀礀 搀漀渀攀⸀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ EXAMPLE 2:
    ਍㰀戀爀㸀ഀഀ This time, we use a cursor to update a certain table, with new values and certain values from a second table.
    ਍㰀戀爀㸀ഀഀ First, albert creates the EMPBONUS table, like so:
    ਍㰀戀爀㸀ഀഀ CREATE TABLE EMPBONUS
    ਍⠀㰀戀爀㸀ഀഀ EMP_ID NUMBER,
    ਍䔀䴀倀开䈀伀一唀匀 一唀䴀䈀䔀刀⠀㜀Ⰰ㈀⤀㰀戀爀㸀ഀഀ );
    ਍㰀戀爀㸀ഀഀ What we want to do now, is fill the EMPBONUS table with emp_id's from EMPLOYEE,
    ਍愀渀搀 愀 挀愀氀挀甀氀愀琀攀搀 戀漀渀甀猀 愀洀漀甀渀琀 眀栀椀挀栀 椀猀 ㄀ ─ 漀昀 琀栀攀 攀洀瀀氀漀礀攀攀✀猀 猀愀氀愀爀礀⸀㰀戀爀㸀ഀഀ Again, using a simple query, works much faster, but again we want to demonstrate the use of a cursor.
    ਍㰀戀爀㸀ഀഀ Let's try the following code:
    ਍㰀戀爀㸀ഀഀ SQL> set serveroutput on; -- in order to make sure sqlplus shows output.
    ਍㰀戀爀㸀ഀഀ -- here is the code:
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ
    ਍䐀䔀䌀䰀䄀刀䔀 挀甀爀猀漀爀 䌀唀刀吀䔀匀吀 䤀匀㰀戀爀㸀ഀഀ    SELECT * FROM EMPLOYEE;
    ਍㰀戀爀㸀ഀഀ cur_rec curtest%rowtype;
    ਍㰀戀爀㸀ഀഀ begin
    ਍☀渀戀猀瀀  昀漀爀 挀甀爀开爀攀挀 䤀一 䌀唀刀吀䔀匀吀 㰀䈀㸀氀漀漀瀀㰀⼀䈀㸀㰀戀爀㸀ഀഀ   INSERT INTO EMPBONUS
    ਍☀渀戀猀瀀  嘀䄀䰀唀䔀匀㰀戀爀㸀ഀഀ   (cur_rec.emp_id,0.1*cur_rec.salary);
    ਍☀渀戀猀瀀  挀漀洀洀椀琀㬀㰀戀爀㸀ഀഀ   end loop;
    ਍攀渀搀㬀㰀戀爀㸀ഀഀ /
    ਍㰀戀爀㸀ഀഀ ਍䰀攀琀✀猀 猀攀攀 眀栀愀琀✀猀 椀渀 琀栀攀 䔀䴀倀䈀伀一唀匀 琀愀戀氀攀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀攀氀攀挀琀 ⨀ 昀爀漀洀 䔀䴀倀䈀伀一唀匀㬀㰀戀爀㸀ഀഀ
    ਍    䔀䴀倀开䤀䐀  䔀䴀倀开䈀伀一唀匀㰀戀爀㸀ഀഀ
    ਍☀渀戀猀瀀        ㄀ ☀渀戀猀瀀☀渀戀猀瀀       ㈀  㰀戀爀㸀ഀഀ   2    315
    ਍☀渀戀猀瀀        ㌀ ☀渀戀猀瀀☀渀戀猀瀀       㐀  㰀戀爀㸀ഀഀ   4    290
    ਍㰀戀爀㸀ഀഀ So, it worked !
    ਍ഀഀ ਍ഀഀ
    ਍㰀戀爀㸀ഀഀ MORE ON USING CURSORS:
    ਍㰀戀爀㸀ഀഀ There are two types of cursors with respect on how the cursor is opened and closed
    ਍愀渀搀 眀栀攀琀栀攀爀 礀漀甀 渀攀攀搀 琀漀 攀砀瀀氀椀挀椀琀氀礀 䘀䔀吀䌀䠀 琀栀攀 渀攀砀琀 爀漀眀 昀爀漀洀 琀栀攀 挀甀爀猀漀爀⸀㰀戀爀㸀ഀഀ
    ਍㰀漀氀㸀ഀഀ
  • The "CURSOR FOR LOOP.." structure, which we already have seen above. This one does not use FETCH
    ਍    椀渀 漀爀搀攀爀 琀漀 昀攀琀挀栀 琀栀攀 渀攀砀琀 爀漀眀 昀爀漀洀 琀栀攀 挀甀爀猀漀爀⸀ 吀栀椀猀 椀猀 椀洀瀀氀椀挀椀琀氀礀 搀漀渀攀 椀渀 琀栀攀 ∀昀漀爀⸀⸀氀漀漀瀀∀⸀㰀戀爀㸀ഀഀ Also, here you do not need to open and close the cursor.

  • ਍㰀氀椀㸀吀栀攀 ∀伀倀䔀一 挀甀爀猀漀爀Ⰰ 䘀䔀吀䌀䠀 渀攀砀琀Ⰰ 䌀䰀伀匀䔀 挀甀爀猀漀爀∀ 猀琀爀甀挀琀甀爀攀⸀㰀⼀氀椀㸀ഀഀ ਍㰀戀爀㸀ഀഀ The first type is really easy to use. The second type gives you a little more control in your code.
    ਍㰀戀爀㸀ഀഀ The following "cursor attributes" can be used (among others):
    ਍㰀戀爀㸀ഀഀ %notfound : did we just have fetched the last row in the cursor?
    ਍  ─爀漀眀挀漀甀渀琀     㨀 栀漀眀 洀愀渀礀 爀漀眀猀 愀爀攀 愀氀爀攀愀搀礀 瀀爀漀挀攀猀猀攀搀 漀爀 搀漀渀攀㼀㰀戀爀㸀ഀഀ %isopen : is the cursor still open?
    ਍㰀戀爀㸀ഀഀ As an example of the second type, let's take a look at the next example.
    ਍圀攀 愀爀攀 最漀椀渀最 琀漀 甀猀攀 愀 洀漀爀攀 攀砀琀攀渀搀攀搀 䔀䴀倀䰀伀夀䔀䔀 琀愀戀氀攀 椀渀 琀栀椀猀 攀砀愀洀瀀氀攀⸀ 匀漀 眀攀 挀漀甀氀搀 攀椀琀栀攀爀 愀搀搀 愀 挀漀氀甀洀渀Ⰰ 漀爀㰀戀爀㸀ഀഀ just drop and re-create the new EMPLOYEE table again. Let's do the latter.
    ਍㰀戀爀㸀ഀഀ SQL> connect albert/albert
    ਍㰀戀爀㸀ഀഀ DROP TABLE EMPLOYEE;
    ਍㰀戀爀㸀ഀഀ CREATE TABLE EMPLOYEE
    ਍⠀㰀戀爀㸀ഀഀ EMP_ID NUMBER,
    ਍䔀䴀倀开一䄀䴀䔀 嘀䄀刀䌀䠀䄀刀㈀⠀㈀ ⤀Ⰰ㰀戀爀㸀ഀഀ SALARY NUMBER(7,2),
    ਍䨀伀䈀 嘀䄀刀䌀䠀䄀刀㈀⠀㈀ ⤀㰀戀爀㸀ഀഀ );
    ਍㰀戀爀㸀ഀഀ - Albert now performs a few inserts:
    ਍㰀戀爀㸀ഀഀ INSERT INTO EMPLOYEE VALUES (1,'Harry',2000,'CLERK');
    ਍䤀一匀䔀刀吀 䤀一吀伀 䔀䴀倀䰀伀夀䔀䔀 嘀䄀䰀唀䔀匀 ⠀㈀Ⰰ✀䨀漀栀渀✀Ⰰ㌀㄀㔀 Ⰰ✀䐀䤀刀䔀䌀吀伀刀✀⤀㬀㰀戀爀㸀ഀഀ INSERT INTO EMPLOYEE VALUES (3,'Mary',4000,'SCIENTIST');
    ਍䤀一匀䔀刀吀 䤀一吀伀 䔀䴀倀䰀伀夀䔀䔀 嘀䄀䰀唀䔀匀 ⠀㐀Ⰰ✀䄀爀渀漀氀搀✀Ⰰ㈀㤀  Ⰰ✀䌀䰀䔀刀䬀✀⤀㬀㰀戀爀㸀ഀഀ
    ਍挀漀洀洀椀琀㬀㰀戀爀㸀ഀഀ
    ਍一漀眀Ⰰ 眀攀 眀愀渀琀 琀漀 瀀爀漀搀甀挀攀 愀 猀挀爀椀瀀琀 琀栀愀琀 眀椀氀氀 甀瀀搀愀琀攀 琀栀攀 匀䄀䰀䄀刀夀 挀漀氀甀洀渀 漀昀 琀栀攀 䔀䴀倀䰀伀夀䔀䔀 琀愀戀氀攀Ⰰ㰀戀爀㸀ഀഀ with a percentage that depends on the JOB of the employee, that is, a "CLERCK" gets another
    ਍猀愀氀愀爀礀 甀瀀搀愀琀攀 琀栀愀渀 愀 ∀䐀䤀刀䔀䌀吀伀刀∀⸀㰀戀爀㸀ഀഀ
    ਍ⴀⴀ 䠀攀爀攀 椀猀 琀栀攀 挀漀搀攀⸀ 䄀氀猀漀 渀漀琀攀 椀琀 甀猀攀猀 愀 琀礀瀀攀 ㈀ 挀甀爀猀漀爀⸀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ ਍䐀䔀䌀䰀䄀刀䔀 挀甀爀猀漀爀 䌀唀刀开䔀䴀倀 䤀匀㰀戀爀㸀ഀഀ   SELECT * FROM employee;
    ਍㰀戀爀㸀ഀഀ emp_rec CUR_EMP%rowtype;
    ਍㰀戀爀㸀ഀഀ begin
    ਍㰀戀爀㸀ഀഀ open CUR_EMP;
    ਍㰀戀爀㸀ഀഀ   loop
    ਍☀渀戀猀瀀  昀攀琀挀栀 䌀唀刀开䔀䴀倀 椀渀琀漀 攀洀瀀开爀攀挀㬀㰀戀爀㸀ഀഀ
    ਍☀渀戀猀瀀  攀砀椀琀 眀栀攀渀 䌀唀刀开䔀䴀倀─渀漀琀昀漀甀渀搀㬀㰀戀爀㸀ഀഀ
    ਍☀渀戀猀瀀☀渀戀猀瀀        椀昀    攀洀瀀开爀攀挀⸀樀漀戀㴀✀䌀䰀䔀刀䬀✀ 琀栀攀渀 攀洀瀀开爀攀挀⸀猀愀氀愀爀礀㨀㴀攀洀瀀开爀攀挀⸀猀愀氀愀爀礀⨀㄀⸀㈀㬀㰀戀爀㸀ഀഀ    elsif emp_rec.job='SCIENTIST' then emp_rec.salary:=emp_rec.salary*1.5;
    ਍☀渀戀猀瀀☀渀戀猀瀀        攀氀猀椀昀 攀洀瀀开爀攀挀⸀樀漀戀㴀✀䐀䤀刀䔀䌀吀伀刀✀ 琀栀攀渀 攀洀瀀开爀攀挀⸀猀愀氀愀爀礀㨀㴀攀洀瀀开爀攀挀⸀猀愀氀愀爀礀⨀㄀⸀㜀㬀㰀戀爀㸀ഀഀ    end if;
    ਍㰀戀爀㸀ഀഀ    update EMPLOYEE set salary=emp_rec.salary
    ਍☀渀戀猀瀀☀渀戀猀瀀        圀䠀䔀刀䔀 攀洀瀀开椀搀㴀攀洀瀀开爀攀挀⸀攀洀瀀开椀搀㬀㰀戀爀㸀ഀഀ
    ਍☀渀戀猀瀀  攀渀搀 氀漀漀瀀㬀㰀戀爀㸀ഀഀ   commit;
    ਍㰀戀爀㸀ഀഀ close cur_emp;
    ਍攀渀搀㬀㰀戀爀㸀ഀഀ /
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ Notes:
    ਍㰀戀爀㸀ഀഀ If you want to use loops in your scripts, you might also take a look at section 22.
    ਍䠀攀爀攀 眀攀 眀椀氀氀 猀栀漀眀 猀漀洀攀 攀砀愀洀瀀氀攀猀 漀昀 琀栀攀 爀攀最甀氀愀爀 ∀䘀伀刀⸀⸀∀ 愀渀搀 ∀圀䠀䤀䰀䔀⸀⸀∀ 氀漀漀瀀猀Ⰰ 眀栀椀挀栀 椀渀 洀愀渀礀 挀愀猀攀猀㰀戀爀㸀ഀഀ are much easier to use.
    ਍䈀甀琀 䤀 樀甀猀琀 眀愀渀琀攀搀 琀漀 琀漀甀挀栀 琀栀攀 猀甀戀樀攀挀琀 漀昀 愀渀 攀砀瀀氀椀挀椀琀 挀甀爀猀漀爀 椀渀 琀栀椀猀 搀漀挀甀洀攀渀琀⸀㰀戀爀㸀ഀഀ Also, if you must process very large tables, then a cursor may not be the most effective way to do that.
    ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ

    22. EXECUTING SCRIPTS FROM THE "SQL>" PROMPT:

    ਍ഀഀ ਍ഀഀ If you are at the "SQL>" prompt, you may wonder how to execute your blocks of code, or your scripts.
    ਍吀栀攀爀攀 愀爀攀 猀攀瘀攀爀愀氀 眀愀礀猀 琀漀 搀漀 琀栀愀琀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ⴀ 䤀昀 礀漀甀 栀愀瘀攀 挀爀攀愀琀攀搀 愀 瀀爀漀挀攀搀甀爀攀Ⰰ 昀甀渀挀琀椀漀渀Ⰰ 漀爀 瀀愀挀欀愀最攀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍圀攀 栀愀瘀攀 渀漀琀 搀漀渀攀 琀栀愀琀 礀攀琀 椀渀 琀栀椀猀 搀漀挀甀洀攀渀琀⸀ 䤀渀 猀攀挀琀椀漀渀 ㈀㘀 眀攀 愀爀攀 最漀椀渀最 琀漀 椀氀氀甀猀琀爀愀琀攀 琀栀愀琀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ⴀ 䤀昀 礀漀甀 栀愀瘀攀 ∀樀甀猀琀∀ 愀 戀氀漀挀欀 漀昀 挀漀搀攀 ⠀氀椀欀攀 眀攀 栀愀瘀攀 猀攀攀渀 椀渀 猀攀挀琀椀漀渀 ㈀㄀⤀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䄀㨀 䤀昀 礀漀甀 栀愀瘀攀 琀栀愀琀 挀漀搀攀 挀爀攀愀琀攀搀 椀渀 礀漀甀爀 昀愀瘀漀甀爀椀琀攀 攀搀椀琀漀爀Ⰰ 琀栀攀渀 樀甀猀琀 挀漀瀀礀 椀琀Ⰰ 愀渀搀 瀀愀猀琀攀 椀琀 愀琀㰀戀爀㸀ഀഀ the "SQL>" prompt. This really works.
    ਍㰀戀爀㸀ഀഀ B: Suppose you have created the block of code using your favourite editor. Suppose you have saved it to a file.
    ਍吀栀攀渀 礀漀甀 挀愀渀 爀甀渀 椀琀 昀爀漀洀 琀栀攀 ∀匀儀䰀㸀∀ 瀀爀漀洀瀀琀 甀猀椀渀最 琀栀攀 猀礀渀琀愀砀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䀀瀀愀琀栀开琀漀开琀栀攀开昀椀氀攀⼀昀椀氀攀开渀愀洀攀㰀戀爀㸀ഀഀ
    ਍一漀琀攀 琀栀攀 甀猀攀 漀昀 琀栀攀 ∀䀀∀ 猀礀洀戀漀氀 栀攀爀攀⸀㰀戀爀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀㨀㰀戀爀㸀ഀഀ
    ਍匀甀瀀瀀漀猀攀 椀渀 ∀䌀㨀尀琀攀猀琀∀ 䤀 栀愀瘀攀 琀栀攀 昀椀氀攀 ∀甀瀀搀愀琀攀开挀甀猀琀漀洀攀爀⸀猀焀氀∀⸀ 䤀昀 䤀 眀愀渀琀 琀漀 爀甀渀 椀琀 昀爀漀洀 琀栀攀 ∀匀儀䰀㸀∀ 瀀爀漀洀瀀琀Ⰰ㰀戀爀㸀ഀഀ I can use this statement:
    ਍㰀戀爀㸀ഀഀ SQL> @c:\test\update_customer.sql
    ਍㰀戀爀㸀ഀഀ If I already 'was' in the c:\test directory, I can simply use "SQL> @update_customer.sql" because the prompt
    ਍琀漀漀氀猀 眀椀氀氀 瀀攀爀 搀攀昀愀甀氀琀 氀漀漀欀 椀渀 琀栀攀 挀甀爀爀攀渀琀 搀椀爀攀挀琀漀爀礀 昀漀爀 琀栀攀 昀椀氀攀⸀㰀戀爀㸀ഀഀ ਍㰀栀㌀㸀䔀堀䔀䌀唀吀䤀一䜀 匀䌀刀䤀倀吀匀 䘀刀伀䴀 吀䠀䔀 伀匀 倀刀伀䴀倀吀㨀㰀⼀栀㌀㸀 ഀഀ ਍䤀渀 琀栀椀猀 猀攀挀琀椀漀渀Ⰰ 眀攀 洀椀最栀琀 愀猀 眀攀氀氀 最椀瘀攀 愀渀 攀砀愀洀瀀氀攀 漀昀 栀漀眀 琀漀 爀甀渀 愀渀 伀爀愀挀氀攀 猀焀氀瀀氀甀猀 猀挀爀椀瀀琀㰀戀爀㸀ഀഀ from the operating system prompt, or from a cron job.
    ਍㰀戀爀㸀ഀഀ Create a shell script like for example:
    ਍㰀戀爀㸀ഀഀ sqlplus /nolog << EOF
    ਍挀漀渀渀攀挀琀 ⼀ 愀猀 猀礀猀搀戀愀㰀戀爀㸀ഀഀ # YOUR STATEMENTS...
    ਍攀砀椀琀㰀戀爀㸀ഀഀ EOF
    ਍ഀഀ
    ਍␀伀刀䄀䌀䰀䔀开䠀伀䴀䔀⼀戀椀渀⼀猀焀氀瀀氀甀猀 ⴀ猀 ∀⼀ 愀猀 猀礀猀搀戀愀∀ 㰀㰀䔀伀䘀 ㄀㸀 ␀琀洀瀀开昀椀氀攀 ㈀㸀㄀㰀戀爀㸀ഀഀ set heading off feedback off
    ਍   眀栀攀渀攀瘀攀爀 猀焀氀攀爀爀漀爀 攀砀椀琀㰀戀爀㸀ഀഀ select 'DB_NAME=' || name from v\$database;
    ਍   ⸀⸀ ⌀ 瀀漀猀猀椀戀氀攀 漀琀栀攀爀 猀琀甀昀昀㰀戀爀㸀ഀഀ exit
    ਍䔀伀䘀㰀戀爀㸀ഀഀ ਍ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㈀㌀∀㸀㈀㌀⸀ 唀匀䤀一䜀 䌀伀一吀刀伀䰀匀Ⰰ 䄀一䐀 ∀䘀伀刀⸀⸀∀ 䄀一䐀 ∀圀䠀䤀䰀䔀⸀⸀∀ 䰀伀伀倀匀 䤀一 倀䰀⼀匀儀䰀㨀㰀⼀栀㈀㸀 ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍䠀攀爀攀 眀攀 眀椀氀氀 瀀爀攀猀攀渀琀 愀 昀攀眀 爀攀瀀爀攀猀攀渀琀愀琀椀瘀攀 攀砀愀洀瀀氀攀猀 漀昀 ∀氀漀漀瀀椀渀最∀ 猀琀爀甀挀琀甀爀攀猀 椀渀 倀䰀⼀匀儀䰀⸀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 23.1 USING THE "WHILE..LOOP" STRUCTURE:
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍㰀䈀㸀㰀唀㸀䔀砀愀洀瀀氀攀㨀㰀⼀唀㸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䤀 瀀爀攀猀甀洀攀 礀漀甀 愀爀攀 眀漀爀欀椀渀最 漀渀 愀 琀攀猀琀猀礀猀琀攀洀Ⰰ 猀漀 氀攀琀✀猀 眀漀爀欀 愀猀 甀猀攀爀 愀氀戀攀爀琀 愀最愀椀渀 ⠀猀攀攀 猀攀挀琀椀漀渀 ㈀㄀⤀⸀㰀戀爀㸀ഀഀ
    ਍氀攀琀✀猀 氀漀最漀渀 愀猀 愀氀戀攀爀琀 愀渀搀 挀爀攀愀琀攀 琀栀攀 䔀䴀倀䰀伀夀䔀䔀 琀愀戀氀攀㨀㰀戀爀㸀ഀഀ
    ਍䌀刀䔀䄀吀䔀 吀䄀䈀䰀䔀 䔀䴀倀䰀伀夀䔀䔀  ⴀⴀ㰀䤀㸀䤀昀 琀栀愀琀 琀愀戀氀攀 愀氀爀攀愀搀礀 攀砀椀猀琀猀Ⰰ 甀猀攀 ∀搀爀漀瀀 琀愀戀氀攀 攀洀瀀氀漀礀攀攀㬀∀㰀⼀䤀㸀㰀戀爀㸀ഀഀ (
    ਍䔀䴀倀开䤀䐀 一唀䴀䈀䔀刀⠀㘀⤀ 一伀吀 一唀䰀䰀Ⰰ㰀戀爀㸀ഀഀ EMP_NAME VARCHAR2(20) NOT NULL,
    ਍匀䄀䰀䄀刀夀 一唀䴀䈀䔀刀⠀㜀Ⰰ㈀⤀㰀戀爀㸀ഀഀ );
    ਍㰀戀爀㸀ഀഀ Suppose albert wants to insert 9999 dummy records into that table, he might use the following script.
    ਍伀昀挀漀甀爀猀攀Ⰰ 椀琀✀猀 愀 猀椀氀氀礀 攀砀愀洀瀀氀攀Ⰰ 戀甀琀 椀琀 渀椀挀攀氀礀 搀攀洀漀渀猀琀爀愀琀攀猀 琀栀攀 甀猀攀 漀昀 愀 ∀眀栀椀氀攀 嬀挀漀渀搀椀琀椀漀渀 椀猀 琀爀甀攀崀 氀漀漀瀀∀ 挀漀渀猀琀爀甀挀琀⸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ ਍ഀഀ declare
    ਍椀 渀甀洀戀攀爀 㨀㴀 ㄀㬀㰀戀爀㸀ഀഀ begin
    ਍㰀䈀㸀眀栀椀氀攀 椀㰀㄀     氀漀漀瀀㰀⼀䈀㸀㰀戀爀㸀ഀഀ   insert into EMPLOYEE
    ਍☀渀戀猀瀀 瘀愀氀甀攀猀 ⠀椀Ⰰ✀栀愀爀爀礀✀Ⰰ㈀㔀  ⤀㬀㰀戀爀㸀ഀഀ
    ਍☀渀戀猀瀀 椀 㨀㴀 椀 ⬀ ㄀㬀㰀戀爀㸀ഀഀ end loop;
    ਍挀漀洀洀椀琀㬀㰀戀爀㸀ഀഀ end;
    ਍⼀㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍ഀഀ The first piece of code is a "variable declaration". We want to use the number "i" in our code, that starts out with
    ਍琀栀攀 瘀愀氀甀攀 ∀㄀∀Ⰰ 愀渀搀 椀渀挀爀攀愀猀攀猀 搀甀爀椀渀最 攀愀挀栀 挀礀挀氀攀 漀昀 琀栀攀 氀漀漀瀀Ⰰ 甀渀琀椀氀 椀琀 最攀琀猀 琀漀 琀栀攀 瘀愀氀甀攀 漀昀 ∀㄀    ∀⸀㰀戀爀㸀ഀഀ Then the loop exits because the condition "while i<10000" is no longer true.
    ਍㰀戀爀㸀ഀഀ Here is another example using "WHILE [condition is true] LOOP"
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ Example:
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ declare -- again we start with a variable declaration
    ਍   砀 渀甀洀戀攀爀㨀㴀㔀㬀㰀戀爀㸀ഀഀ begin -- here the "body" starts:
    ਍㰀戀爀㸀ഀഀ   while x>0 loop
    ਍☀渀戀猀瀀  搀戀洀猀开漀甀琀瀀甀琀⸀瀀甀琀开氀椀渀攀⠀✀䤀 搀椀搀 琀栀椀猀 ✀簀簀吀伀开䌀䠀䄀刀⠀砀⤀簀簀✀ 琀椀洀攀猀⸀✀⤀㬀㰀戀爀㸀ഀഀ   x:=x-1;
    ਍☀渀戀猀瀀  攀渀搀 氀漀漀瀀㬀㰀戀爀㸀ഀഀ end;
    ਍⼀㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 23.2 USING THE "FOR..LOOP" STRUCTURE:
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍夀漀甀 琀礀瀀椀挀愀氀氀礀 甀猀攀 琀栀攀 ∀眀栀椀氀攀∀ 氀漀漀瀀 椀昀 礀漀甀 栀愀瘀攀 愀渀 攀砀瀀爀攀猀猀椀漀渀 琀栀愀琀 攀瘀愀氀甀愀琀攀猀 琀漀 ∀琀爀甀攀∀ 昀漀爀 愀 挀攀爀琀愀椀渀 琀椀洀攀⸀ 䄀猀 氀漀渀最 愀猀 琀栀攀 氀漀漀瀀 挀礀挀氀攀猀Ⰰ㰀戀爀㸀ഀഀ each time the expression is evaluated again and again to see if it's true or false. If it's false, then the loop exits.
    ਍夀漀甀 挀愀渀 挀氀攀愀爀氀礀 猀攀攀 琀栀愀琀 椀渀 琀栀攀 攀砀愀洀瀀氀攀猀 愀戀漀瘀攀Ⰰ 氀椀欀攀 椀渀 ∀眀栀椀氀攀 砀㸀 ∀ ⠀栀攀爀攀 琀栀攀 ∀攀砀瀀爀猀攀猀猀椀漀渀 椀猀 砀㸀 ⤀⸀㰀戀爀㸀ഀഀ But you may not even know beforehand when the expression exactly evaluates to "true" or "false".
    ਍匀甀瀀瀀漀猀攀 猀漀洀攀眀栀攀爀攀 攀氀猀攀 椀渀 礀漀甀爀 挀漀搀攀Ⰰ 礀漀甀 栀愀瘀攀 愀 瘀愀爀椀愀戀氀攀 ∀瘀开瀀爀漀挀攀攀搀∀⸀ 䤀渀猀椀搀攀 礀漀甀爀 眀栀椀氀攀 氀漀漀瀀Ⰰ 琀栀攀爀攀 挀愀渀 戀攀㰀戀爀㸀ഀഀ all sorts of statements that may affect the value of "v_proceed". At a certain cycle, it may attain the value "false".
    ਍䤀昀 礀漀甀 挀爀攀愀琀攀搀 礀漀甀爀 氀漀漀瀀 氀椀欀攀 琀栀椀猀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ while v_proceed loop
    ਍☀渀戀猀瀀 㰀䤀㸀 搀漀 愀氀氀 猀漀爀琀猀 漀昀 猀琀愀琀攀洀攀渀琀猀⸀⸀ 愀氀猀漀 猀琀愀琀攀洀攀渀琀猀 琀栀愀琀 愀氀琀攀爀 琀栀攀 瘀愀氀甀攀 漀昀 瘀开瀀爀漀挀攀攀搀㰀⼀䤀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Then the loop exits when "v_proceed" is "false".
    ਍㰀戀爀㸀ഀഀ So, typically, you use "while" when a certain expression evaluates to "true" (or "false") and you know, or
    ਍搀漀渀琀 欀渀漀眀Ⰰ 眀栀攀渀 琀栀攀 攀砀瀀爀攀猀猀椀漀渀 攀瘀愀氀甀愀琀攀猀 琀漀 琀栀攀 椀渀瘀攀爀猀攀 瘀愀氀甀攀⸀㰀戀爀㸀ഀഀ
    ਍吀礀瀀椀挀愀氀氀礀Ⰰ 甀猀椀渀最 琀栀攀 ∀䘀伀刀⸀⸀ 䰀伀伀倀∀Ⰰ 礀漀甀 愀氀爀攀愀搀礀 欀渀漀眀 戀攀昀漀爀攀栀愀渀搀 琀栀攀 ∀爀愀渀最攀∀ 昀漀爀 眀栀椀挀栀 琀栀攀 氀漀漀瀀 洀甀猀琀 爀甀渀⸀㰀戀爀㸀ഀഀ Here is a very simple example that demonstates the "FOR.. LOOP" structure:
    ਍㰀戀爀㸀ഀഀ ਍猀攀琀 猀攀爀瘀攀爀漀甀琀瀀甀琀 漀渀㰀戀爀㸀ഀഀ
    ਍搀攀挀氀愀爀攀㰀戀爀㸀ഀഀ   -- nothing to declare
    ਍戀攀最椀渀㰀戀爀㸀ഀഀ   for x in 0..4 loop
    ਍☀渀戀猀瀀  搀戀洀猀开漀甀琀瀀甀琀⸀瀀甀琀开氀椀渀攀⠀✀䤀 搀椀搀 琀栀椀猀 ✀簀簀吀伀开䌀䠀䄀刀⠀砀⤀簀簀✀ 琀椀洀攀猀⸀✀⤀㬀㰀戀爀㸀ഀഀ   end loop;
    ਍攀渀搀㬀㰀戀爀㸀ഀഀ /
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㈀㌀⸀㌀ 唀匀䤀一䜀 吀䠀䔀 ∀䰀伀伀倀⸀⸀ 䔀一䐀 䰀伀伀倀∀ 匀吀刀唀䌀吀唀刀䔀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Maybe the following looping control is the "King of all Oracle loops". It's very simple to use.
    ਍䤀琀 愀氀眀愀礀猀 栀愀猀 琀栀攀 昀漀氀氀漀眀椀渀最 猀琀爀甀挀琀甀爀攀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀氀漀漀瀀㰀⼀䈀㸀㰀戀爀㸀ഀഀ   statements (which must be repeated)
    ਍㰀䤀㸀眀愀礀 琀漀 攀瘀愀氀甀愀琀攀 椀昀 琀栀攀 氀漀漀瀀 洀甀猀琀 攀砀椀琀 漀爀 渀漀琀㰀⼀䤀㸀㰀戀爀㸀ഀഀ end loop;
    ਍㰀戀爀㸀ഀഀ So, you always start simply with "loop", and you end the code with "end loop".
    ਍䈀甀琀Ⰰ 愀猀 眀椀琀栀 愀氀氀 氀漀漀瀀猀Ⰰ 礀漀甀 渀攀攀搀 琀漀 栀愀瘀攀 愀 眀愀礀 琀栀愀琀 攀瘀愀氀甀愀琀攀猀 眀栀攀琀栀攀爀 琀栀攀 氀漀漀瀀 洀甀猀琀 攀砀椀琀 漀爀 渀漀琀⸀㰀戀爀㸀ഀഀ There are a few variants here, and the most used are:
    ਍㰀戀爀㸀ഀഀ loop
    ਍☀渀戀猀瀀         猀琀愀琀攀洀攀渀琀猀㬀㰀戀爀㸀ഀഀ if condition then exit;
    ਍攀渀搀 氀漀漀瀀㬀㰀戀爀㸀ഀഀ
    ਍愀渀搀㰀戀爀㸀ഀഀ
    ਍氀漀漀瀀㰀戀爀㸀ഀഀ   statements;
    ਍㰀䤀㸀攀砀椀琀 眀栀攀渀 挀漀渀搀椀琀椀漀渀㬀㰀⼀䤀㸀㰀戀爀㸀ഀഀ end loop;
    ਍㰀戀爀㸀ഀഀ A few examples will make it clear.
    ਍㰀戀爀㸀ഀഀ Example 1:
    ਍㰀戀爀㸀ഀഀ ਍搀攀挀氀愀爀攀㰀戀爀㸀ഀഀ   x number:=5;
    ਍㰀戀爀㸀ഀഀ begin
    ਍☀渀戀猀瀀  㰀䈀㸀氀漀漀瀀㰀⼀䈀㸀㰀戀爀㸀ഀഀ   dbms_output.put_line('I did this '||TO_CHAR(x)||' times.');
    ਍☀渀戀猀瀀  砀㨀㴀砀ⴀ㄀㬀㰀戀爀㸀ഀഀ   if x=0 then exit;
    ਍☀渀戀猀瀀  攀渀搀 椀昀㬀㰀戀爀㸀ഀഀ   end loop;
    ਍攀渀搀㬀㰀戀爀㸀ഀഀ /
    ਍㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀㰀唀㸀䔀砀愀洀瀀氀攀 ㈀㨀㰀⼀唀㸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍搀攀挀氀愀爀攀㰀戀爀㸀ഀഀ   x number:=5;
    ਍㰀戀爀㸀ഀഀ begin
    ਍☀渀戀猀瀀  㰀䈀㸀氀漀漀瀀㰀⼀䈀㸀㰀戀爀㸀ഀഀ   dbms_output.put_line('I did this '||TO_CHAR(x)||' times.');
    ਍☀渀戀猀瀀  砀㨀㴀砀ⴀ㄀㬀㰀戀爀㸀ഀഀ   exit when x=0; -- here we don't have the "if" test to evaluate if x=0
    ਍☀渀戀猀瀀  㰀䈀㸀攀渀搀 氀漀漀瀀㬀㰀⼀䈀㸀㰀戀爀㸀ഀഀ end;
    ਍⼀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㈀㐀∀㸀㈀㐀⸀ 䠀伀圀 吀伀 倀唀吀 匀儀䰀倀䰀唀匀 伀唀吀倀唀吀 䤀一 䄀 匀䠀䔀䰀䰀 嘀䄀刀䤀䄀䈀䰀䔀㨀㰀⼀栀㈀㸀 ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍匀甀瀀瀀漀猀攀 礀漀甀 眀愀渀琀 琀漀 瀀氀愀挀攀 猀漀洀攀 猀焀氀瀀氀甀猀 漀甀琀瀀甀琀 椀渀琀漀 愀 猀栀攀氀氀 瘀愀爀椀愀戀氀攀⸀㰀戀爀㸀ഀഀ Here, you should think of a normal sh or ksh shell variable of UNIX or Linux.
    ਍吀栀攀 昀漀氀氀漀眀椀渀最 攀砀愀洀瀀氀攀 猀栀漀眀猀 愀 猀挀爀椀瀀琀 琀栀愀琀 眀椀氀氀 搀漀 樀甀猀琀 琀栀愀琀⸀㰀戀爀㸀ഀഀ Ofcourse, the method works best if only one value is returned into that variable.
    ਍㰀戀爀㸀ഀഀ Example: a sh, ksh or bash script:
    ਍㰀戀爀㸀ഀഀ login='dbuser/password@DBNAME'
    ਍㰀戀爀㸀ഀഀ code=`sqlplus -s $login << EOF
    ਍匀䔀䰀䔀䌀吀 渀愀洀攀 昀爀漀洀 倀䔀刀匀伀一 眀栀攀爀攀 椀搀㴀㄀㬀  㰀䤀㸀⌀ 猀甀瀀瀀漀猀攀 眀攀 栀愀瘀攀 琀栀攀 琀愀戀氀攀 倀䔀刀匀伀一Ⰰ 愀渀搀 眀攀 漀渀氀礀 眀愀渀琀 琀栀攀 渀愀洀攀 漀昀 椀搀㴀㄀㰀⼀䤀㸀㰀戀爀㸀ഀഀ exit
    ਍䔀伀䘀怀㰀戀爀㸀ഀഀ echo $code # now the variable code should contain that name
    ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ

    25. INSTANCE STARTUP OPTIONS:

    ਍ഀഀ ਍ഀഀ The following is important if you just want to manually startup an Instance,
    ਍愀渀搀 漀瀀琀椀漀渀愀氀氀礀 漀瀀攀渀 琀栀攀 䐀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ
    ਍䤀昀 愀渀 䤀渀猀琀愀渀挀攀 椀猀 搀漀眀渀Ⰰ 愀渀搀 琀栀攀 搀愀琀愀戀愀猀攀 挀氀漀猀攀搀Ⰰ 琀栀攀渀 琀栀攀 昀漀氀氀漀眀椀渀最 猀琀愀爀琀甀瀀 漀瀀琀椀漀渀猀 挀愀渀 戀攀 甀猀攀搀⸀㰀戀爀㸀ഀഀ Here, a SQLPLUS session is assumed and all environment variable (like ORACLE_SID) are set.
    ਍㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀匀儀䰀㸀 猀琀愀爀琀甀瀀 渀漀洀漀甀渀琀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
      ਍㰀氀椀㸀吀栀攀 椀渀猀琀愀渀挀攀 椀猀 猀琀愀爀琀攀搀 愀渀搀 琀栀攀 瀀昀椀氀攀⼀猀瀀昀椀氀攀 椀猀 爀攀愀搀⸀ 匀漀 愀氀氀 椀渀椀琀 瀀愀爀愀洀攀琀攀爀猀 愀爀攀 欀渀漀眀渀㰀戀爀㸀ഀഀ to the instance, like for example SGA parameters. ਍㰀氀椀㸀䠀漀眀攀瘀攀爀Ⰰ 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀 椀猀 㰀唀㸀一伀吀㰀⼀唀㸀 爀攀愀搀⸀㰀⼀氀椀㸀ഀഀ
    • Also, all databases files stay closed.
    • ਍㰀⼀甀氀㸀ഀഀ SQL> startup mount
      ਍㰀甀氀㸀ഀഀ
    • The instance is started and the pfile/spfile is read. So all init parameters are known
      ਍琀漀 琀栀攀 椀渀猀琀愀渀挀攀Ⰰ 氀椀欀攀 昀漀爀 攀砀愀洀瀀氀攀 匀䜀䄀 瀀愀爀愀洀攀琀攀爀猀⸀㰀⼀氀椀㸀ഀഀ
    • The controlfile is opened and read, so the instance "knows" all locations of all database files.
    • ਍㰀氀椀㸀䈀甀琀Ⰰ 愀氀氀 搀愀琀愀戀愀猀攀猀 昀椀氀攀猀 猀琀愀礀 挀氀漀猀攀搀⸀㰀⼀氀椀㸀ഀഀ
    ਍唀猀甀愀氀氀礀Ⰰ 琀栀椀猀 椀猀 琀栀攀 猀琀愀琀攀 椀猀 眀栀攀爀攀 礀漀甀 戀攀最椀渀 愀 刀䴀䄀一 爀攀猀琀漀爀攀⼀爀攀挀漀瘀攀爀礀 猀攀猀猀椀漀渀Ⰰ㰀戀爀㸀ഀഀ if for example, you have lost database files, but the controlfiles and online logs are still good.
    ਍㰀戀爀㸀ഀഀ SQL> startup
    ਍㰀甀氀㸀ഀഀ
  • The instance is started and the init.ora/spfile.ora is read.
  • ਍㰀氀椀㸀吀栀攀 挀漀渀琀爀漀氀昀椀氀攀 椀猀 漀瀀攀渀攀搀 愀渀搀 爀攀愀搀⸀㰀⼀氀椀㸀ഀഀ
  • All database files are opened, and the database is ready for use.
  • ਍㰀⼀甀氀㸀ഀഀ
    ਍匀漀洀攀琀椀洀攀猀 礀漀甀 猀琀愀爀琀 愀渀 椀渀猀琀愀渀挀攀 愀渀搀 氀攀琀 椀琀 爀攀愀搀 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀Ⰰ 愀渀搀 琀栀攀渀 瀀攀爀昀漀爀洀 猀漀洀攀㰀戀爀㸀ഀഀ further configuration (for example, if you need to configure archive mode.)
    ਍䘀爀漀洀 琀栀愀琀 瀀栀愀猀攀Ⰰ 椀琀 椀猀 攀愀猀礀 琀漀 漀瀀攀渀 琀栀攀 搀愀琀愀戀愀猀攀 愀渀搀 攀渀琀攀爀 琀栀攀 瀀爀漀搀甀挀琀椀漀渀 猀琀愀琀攀⸀㰀戀爀㸀ഀഀ
    ਍ⴀ 匀甀瀀瀀漀猀攀 礀漀甀 昀椀爀猀琀 猀琀愀爀琀攀搀 琀栀攀 椀渀猀琀愀渀挀攀 ⠀愀渀搀 氀攀琀 椀琀 爀攀愀搀 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀⤀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀匀儀䰀㸀 猀琀愀爀琀甀瀀 洀漀甀渀琀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍ⴀ 一攀砀琀Ⰰ 礀漀甀 眀愀渀琀 琀漀 漀瀀攀渀 琀栀攀 搀愀琀愀戀愀猀攀 愀渀搀 洀愀欀攀 椀琀 爀攀愀搀礀 昀漀爀 甀猀攀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀匀儀䰀㸀 愀氀琀攀爀 搀愀琀愀戀愀猀攀 漀瀀攀渀㬀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㈀㘀∀㸀㈀㘀⸀ 䄀 䘀䔀圀 㤀椀Ⰰ㄀ 最Ⰰ㄀㄀最 刀䴀䄀一 一伀吀䔀匀㨀㰀⼀栀㈀㸀 ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍夀漀甀 洀椀最栀琀 挀漀渀猀椀搀攀爀 琀栀椀猀 猀攀挀琀椀漀渀 漀渀氀礀 愀猀 愀 瘀攀爀礀 ∀氀椀最栀琀∀ 愀渀搀 猀椀洀瀀氀攀 猀琀攀瀀ⴀ甀瀀 琀漀 刀䴀䄀一⸀㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍ഀഀ ਍㰀䈀㸀㈀㘀⸀㄀ 伀嘀䔀刀嘀䤀䔀圀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ ਍刀䴀䄀一 椀猀 挀漀渀猀椀搀攀爀攀搀 琀漀 戀攀 㰀䈀㸀琀栀攀㰀⼀䈀㸀 洀漀猀琀 椀洀瀀漀爀琀愀渀琀 戀愀挀欀甀瀀⼀爀攀挀漀瘀攀爀礀 琀漀漀氀 昀漀爀 伀爀愀挀氀攀 搀愀琀愀戀愀猀攀猀⸀㰀戀爀㸀ഀഀ
    ਍圀椀琀栀 爀洀愀渀Ⰰ 礀漀甀 挀愀渀 洀愀欀攀 昀甀氀氀Ⰰ 漀爀 椀渀挀爀攀洀攀渀琀愀氀Ⰰ 戀愀挀欀甀瀀猀 漀昀 愀渀 漀瀀攀渀 愀渀搀 漀渀氀椀渀攀 搀愀琀愀戀愀猀攀Ⰰ 椀昀 琀栀愀琀 搀愀琀愀戀愀猀攀㰀戀爀㸀ഀഀ is running in archive mode
    ਍䄀氀漀渀最猀椀搀攀 琀漀 挀爀攀愀琀椀渀最 愀 戀愀挀欀甀瀀 漀昀 琀栀攀 搀愀琀愀戀愀猀攀Ⰰ 礀漀甀 挀愀渀 戀愀挀欀甀瀀 琀栀攀 ∀愀爀挀栀椀瘀攀搀 爀攀搀漀氀漀最猀∀ 愀猀 眀攀氀氀 ⠀漀昀琀攀渀 搀漀渀攀 椀渀㰀戀爀㸀ഀഀ the same script).
    ਍㰀戀爀㸀ഀഀ Although graphical interfaces exists to "RMAN" (like the the "Enterprise Manager"), many DBA's just use
    ਍椀琀 昀爀漀洀 琀栀攀 伀匀 瀀爀漀洀瀀琀Ⰰ 漀爀 甀猀攀 椀琀 昀爀漀洀 ⠀猀挀栀攀搀甀氀攀搀⤀ 伀匀 猀栀攀氀氀 猀挀爀椀瀀琀猀⸀㰀戀爀㸀ഀഀ
    ਍夀漀甀 挀愀渀 甀猀攀 琀栀攀 ∀爀洀愀渀∀ 瀀爀漀洀瀀琀 琀漀漀氀Ⰰ 樀甀猀琀 昀爀漀洀 琀栀攀 伀匀 挀漀洀洀愀渀搀氀椀渀攀Ⰰ 氀椀欀攀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ % rman (on unix/linux)
    ਍䌀㨀尀㸀 爀洀愀渀       ⠀漀渀 圀椀渀搀漀眀猀⤀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ This will then bring you to the RMAN> prompt.
    ਍刀䴀䄀一㸀㰀戀爀㸀ഀഀ
    ਍䘀爀漀洀 栀攀爀攀Ⰰ 礀漀甀 挀愀渀 椀猀猀甀攀 愀 眀栀漀氀攀 爀愀渀最攀 漀昀 挀漀洀洀愀渀搀猀Ⰰ 氀椀欀攀 䈀䄀䌀䬀唀倀Ⰰ 刀䔀匀吀伀刀䔀Ⰰ 㰀戀爀㸀ഀഀ RECOVER, and reporting commands like LIST, REPORT etc..
    ਍㰀戀爀㸀ഀഀ But before you can do anything with the "target" database (the database you want to backup),
    ਍礀漀甀 渀攀攀搀 琀漀 挀漀渀渀攀挀琀 ⠀愀甀琀栀攀渀琀椀挀愀琀攀⤀ 琀漀 琀栀攀 琀愀爀最攀琀 搀愀琀愀戀愀猀攀 ⠀愀渀搀 漀瀀琀椀漀渀愀氀氀礀 琀漀 琀栀攀 挀愀琀愀氀漀最Ⰰ 漀渀 眀栀椀挀栀 洀漀爀攀 氀愀琀攀爀⤀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一 洀愀椀渀琀愀椀渀猀 愀 爀攀挀漀爀搀 漀昀 搀愀琀愀戀愀猀攀 昀椀氀攀猀 愀渀搀 戀愀挀欀甀瀀猀 昀漀爀 攀愀挀栀 搀愀琀愀戀愀猀攀 漀渀 眀栀椀挀栀 椀琀 瀀攀爀昀漀爀洀猀 漀瀀攀爀愀琀椀漀渀猀⸀ 㰀戀爀㸀ഀഀ This metadata is called the RMAN repository.
    ਍ⴀⴀ 吀栀攀 挀漀渀琀爀漀氀昀椀氀攀⠀猀⤀ 漀昀 琀栀攀 琀愀爀最攀琀 搀愀琀愀戀愀猀攀Ⰰ 㰀䈀㸀愀氀眀愀礀猀㰀⼀䈀㸀 挀漀渀琀愀椀渀猀 琀栀攀 刀䴀䄀一 戀愀挀欀甀瀀 䴀䔀吀䄀䐀䄀吀䄀 ⠀爀攀瀀漀猀椀琀漀爀礀⤀⸀㰀戀爀㸀ഀഀ -- Optionally, you can have a separate dedicated (rman) database, which is called "the catalog".
    ਍㰀戀爀㸀ഀഀ Having a seperate, dedicated RMAN catalog database, can be handy of you have a lot of databases,
    ਍愀渀搀 礀漀甀 眀愀渀琀 猀漀洀攀 ∀挀攀渀琀爀愀氀 猀琀漀爀愀最攀∀ 昀漀爀 愀氀氀 洀攀琀愀搀愀琀愀 ⠀眀栀椀挀栀 礀漀甀 挀愀渀 焀甀攀爀礀 昀漀爀 愀氀氀 猀漀爀琀猀 漀昀 愀搀洀椀渀 椀渀昀漀⤀㰀戀爀㸀ഀഀ But, the controlfile of each target database, will also hold it's metadata, and even is leading information.
    ਍一漀琀攀㨀 琀栀攀 挀愀琀愀氀漀最 搀漀攀猀 渀漀琀 攀瘀攀渀 戀攀 愀 搀攀搀椀挀愀琀攀搀 搀愀琀愀戀愀猀攀㨀 攀瘀攀渀 愀 搀攀搀椀挀愀琀攀搀 ∀琀愀戀氀攀猀瀀愀挀攀∀ 椀渀 猀漀洀攀 搀愀琀愀戀愀猀攀Ⰰ㰀戀爀㸀ഀഀ might be sufficient.
    ਍㰀戀爀㸀ഀഀ So, before you can "work" with RMAN, or planning to do "something" with the target, you need to connect
    ਍琀漀 琀栀攀 琀愀爀最攀琀Ⰰ 愀渀搀 漀瀀琀椀漀渀愀氀氀礀 愀氀猀漀 琀漀 琀栀攀 ∀挀愀琀愀氀漀最∀ ⠀椀昀 礀漀甀 甀猀攀 漀渀攀⤀⸀㰀戀爀㸀ഀഀ So, to connect to the target database (and optionally, the catalog) here are a few examples:
    ਍䠀攀爀攀 眀攀 愀猀猀甀洀攀 琀栀愀琀 搀愀琀愀戀愀猀攀 ∀倀刀伀䐀∀ 椀猀 琀栀攀 琀愀爀最攀琀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ $ export ORACLE_SID=PROD
    ਍␀ 爀洀愀渀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 挀漀渀渀攀挀琀 琀愀爀最攀琀 ⼀㰀戀爀㸀ഀഀ RMAN> connect target system/password@SID
    ਍刀䴀䄀一㸀 挀漀渀渀攀挀琀 琀愀爀最攀琀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀匀䤀䐀 挀愀琀愀氀漀最 爀洀愀渀⼀爀洀愀渀䀀刀䌀䄀吀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ In the first example, we just connect (using os authentication) to the target (and we do not have
    ਍愀 猀攀瀀愀爀愀琀攀 挀愀琀愀氀漀最 搀愀琀愀戀愀猀攀⤀⸀㰀戀爀㸀ഀഀ In the second example, we connect as user "system" to the target (and we do not have
    ਍愀 猀攀瀀愀爀愀琀攀 挀愀琀愀氀漀最 搀愀琀愀戀愀猀攀⤀⸀㰀戀爀㸀ഀഀ In the last example, we connect to the target as system, and apparantly we connect to the catalog database (RCAT)
    ਍甀猀椀渀最 琀栀攀 愀挀挀漀甀渀琀 ∀爀洀愀渀∀⸀㰀戀爀㸀ഀഀ
    ਍伀爀 礀漀甀 挀愀渀 愀氀猀漀 挀愀氀氀 爀洀愀渀 昀爀漀洀 琀栀攀 瀀爀漀洀瀀琀Ⰰ 愀渀搀 瀀愀猀猀 挀漀渀渀攀挀琀 瀀愀爀愀洀攀琀攀爀猀 漀渀 琀栀攀 猀愀洀攀 挀漀洀洀愀渀搀氀椀渀攀Ⰰ 氀椀欀攀㨀㰀戀爀㸀ഀഀ
    ਍㰀戀㸀␀ 爀洀愀渀 琀愀爀最攀琀 猀礀猀⼀瀀愀猀猀眀漀爀搀䀀倀刀伀䐀 挀愀琀愀氀漀最 爀洀愀渀⼀爀洀愀渀䀀刀䌀䄀吀㰀⼀戀㸀 ⠀甀渀椀砀⤀㰀戀爀㸀ഀഀ
    ਍漀爀㰀戀爀㸀ഀഀ
    ਍㰀戀㸀䌀㨀尀㸀 爀洀愀渀 琀愀爀最攀琀 猀礀猀⼀瀀愀猀猀眀漀爀搀䀀倀刀伀䐀 挀愀琀愀氀漀最 爀洀愀渀⼀爀洀愀渀䀀刀䌀䄀吀㰀⼀戀㸀 ⠀眀椀渀搀漀眀猀⤀㰀戀爀㸀ഀഀ
    ਍伀渀挀攀 挀漀渀渀攀挀琀攀搀Ⰰ 礀漀甀 挀漀甀氀搀 甀猀攀 挀漀洀洀愀渀搀猀 氀椀欀攀㨀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 戀愀挀欀甀瀀 搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ
    ਍漀爀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 戀愀挀欀甀瀀 椀渀挀爀攀洀攀渀琀愀氀 氀攀瘀攀氀   搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ
    ਍䈀漀琀栀 挀漀洀洀愀渀搀猀 搀漀 琀栀攀 猀愀洀攀 琀栀椀渀最㨀 眀攀 甀猀攀搀 琀栀攀 戀愀挀欀甀瀀 挀漀洀洀愀渀搀Ⰰ 琀漀 洀愀欀攀 愀 昀甀氀氀 搀愀琀愀戀愀猀攀 戀愀挀欀甀瀀㰀戀爀㸀ഀഀ (full is equivalent to "incremental level 0").
    ਍䄀渀 ∀爀洀愀渀 猀挀爀椀瀀琀∀ 挀漀甀氀搀 氀漀漀欀 氀椀欀攀 琀栀椀猀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ run {
    ਍☀渀戀猀瀀      愀氀氀漀挀愀琀攀 挀栀愀渀渀攀氀 琀㄀ 搀攀瘀椀挀攀 琀礀瀀攀 搀椀猀欀 䘀伀刀䴀䄀吀 ✀⼀戀愀挀欀甀瀀猀⼀漀爀愀开搀昀─琀开猀─猀开猀─瀀✀✀㬀㰀戀爀㸀ഀഀ   backup incremental level 0 database;
    ਍☀渀戀猀瀀      爀攀氀攀愀猀攀 挀栀愀渀渀攀氀 琀㄀㬀㰀戀爀㸀ഀഀ   }
    ਍㰀戀爀㸀ഀഀ ਍䄀猀 礀漀甀 挀愀渀 猀攀攀Ⰰ 愀渀 爀洀愀渀 猀挀爀椀瀀琀 猀琀愀爀琀猀 眀椀琀栀 ∀爀甀渀∀Ⰰ 昀漀氀氀漀眀攀搀 戀礀 爀攀氀愀琀攀搀 猀琀愀琀攀洀攀渀琀猀 戀攀琀眀攀攀渀 笀 紀⸀㰀戀爀㸀ഀഀ First, you might define one ore more disk (or tape) "channels", which are server sessions.
    ਍䤀渀 琀栀攀 愀氀氀漀挀愀琀攀 挀栀愀渀渀攀氀 挀漀洀洀愀渀搀Ⰰ 礀漀甀 愀氀猀漀 猀攀攀 琀栀攀 ∀昀漀爀洀愀琀∀ ⠀漀爀 氀漀挀愀琀椀漀渀⤀ 愀猀 琀漀 眀栀攀爀攀 琀栀攀 戀愀挀欀甀瀀猀 猀栀漀甀氀搀 戀攀 猀琀漀爀攀搀⸀㰀戀爀㸀ഀഀ However, it's much more common to have that configured as a socalled persistent setting, like in the following command:
    ਍㰀戀爀㸀ഀഀ RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backups/ora_df%t_s%s_s%p';
    ਍㰀戀爀㸀ഀഀ The "body" of the script are ofcourse the backup statements (database, or archive logs, or other objects).
    ਍吀栀攀渀Ⰰ 椀昀 礀漀甀 栀愀瘀攀 漀瀀攀渀攀搀 挀栀愀渀渀攀氀猀Ⰰ 礀漀甀 愀氀猀漀 挀氀漀猀攀 琀栀攀 挀栀愀渀渀攀氀猀Ⰰ 猀漀 琀栀攀 猀攀爀瘀攀爀 猀攀猀猀椀漀渀猀 眀椀氀氀 攀砀椀琀⸀㰀戀爀㸀ഀഀ
    ਍匀甀挀栀 愀 猀挀爀椀瀀琀 愀猀 猀栀漀眀渀 愀戀漀瘀攀Ⰰ 礀漀甀 挀漀甀氀搀 琀礀瀀攀 椀渀 昀爀漀洀 琀栀攀 爀洀愀渀 瀀爀漀洀瀀琀Ⰰ 愀渀搀 愀昀琀攀爀 礀漀甀 栀愀瘀攀 攀渀琀攀爀攀搀 琀栀攀 氀愀猀琀㰀戀爀㸀ഀഀ "}", it will execute.
    ਍伀昀挀漀甀爀猀攀Ⰰ 礀漀甀 挀愀渀 瀀氀愀挀攀 猀甀挀栀 愀 猀挀爀椀瀀琀 椀渀 愀 猀栀攀氀氀 猀挀爀椀瀀琀 愀猀 眀攀氀氀⸀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㈀㘀⸀㈀ 匀伀䴀䔀 倀䔀刀匀䤀匀吀䔀一吀 刀䴀䄀一 䌀伀一䘀䤀䜀唀刀䄀吀䤀伀一 匀䔀吀吀䤀一䜀匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ The script shown above, is for certain situations, quite incomplete
    ਍夀漀甀 欀渀漀眀 琀栀愀琀 礀漀甀 渀攀攀搀 琀漀 戀愀挀欀甀瀀 琀栀攀 愀爀挀栀椀瘀攀搀 爀攀搀漀氀漀最猀 愀猀 眀攀氀氀⸀ 䄀渀搀 栀愀瘀椀渀最 愀 ∀挀漀渀琀爀漀氀昀椀氀攀∀ 戀愀挀欀甀瀀Ⰰ 椀猀 挀爀椀琀椀挀愀氀⸀㰀戀爀㸀ഀഀ
    ਍夀漀甀 挀愀渀 挀漀渀昀椀最甀爀攀 刀䴀䄀一 琀漀 甀猀攀 挀攀爀琀愀椀渀 猀攀琀琀椀渀最猀Ⰰ 眀栀椀挀栀 愀爀攀 琀栀攀渀 瀀攀爀猀椀猀琀攀渀琀 漀瘀攀爀 椀琀✀猀 猀攀猀猀椀漀渀猀⸀㰀戀爀㸀ഀഀ If you want to view the current settings, use the "SHOW ALL" command, as in:
    ਍㰀戀爀㸀ഀഀ RMAN> show all;
    ਍㰀戀爀㸀ഀഀ This will show you a list of all current settings.
    ਍伀渀攀 椀洀瀀漀爀琀愀渀琀 猀攀琀琀椀渀最 椀猀 琀栀攀 ∀挀漀渀琀爀漀氀昀椀氀攀 愀甀琀漀戀愀挀欀甀瀀∀ 猀攀琀琀椀渀最⸀ 夀漀甀 洀椀最栀琀 昀椀渀搀 昀爀漀洀 琀栀攀 氀椀猀琀Ⰰ 琀栀愀琀 椀琀✀猀 ∀伀䘀䘀∀⸀㰀戀爀㸀ഀഀ If you switch it to "ON", then every RMAN backup, will also include the most current controlfile as a backup.
    ਍一漀爀洀愀氀氀礀Ⰰ 琀栀愀琀 眀漀甀氀搀 戀攀 最爀攀愀琀⸀ 䄀猀 愀渀 愀氀琀攀爀渀愀琀椀瘀攀Ⰰ 礀漀甀 挀愀渀 瀀甀琀 愀 挀漀渀琀爀漀氀昀椀氀攀 戀愀挀欀甀瀀 愀猀 琀栀攀 氀愀猀琀 猀琀愀琀攀洀攀渀琀㰀戀爀㸀ഀഀ in your script, but that's quite cumbersome.
    ਍㰀戀爀㸀ഀഀ Here are a few examples on how to set the persistent configuration (stored in the metadata repository):
    ਍㰀戀爀㸀ഀഀ ਍刀䴀䄀一㸀 挀漀渀昀椀最甀爀攀 挀漀渀琀爀漀氀昀椀氀攀 愀甀琀漀戀愀挀欀甀瀀 漀渀㬀㰀戀爀㸀ഀഀ RMAN> configure default device type to disk;
    ਍刀䴀䄀一㸀 挀漀渀昀椀最甀爀攀 挀栀愀渀渀攀氀 搀攀瘀椀挀攀 琀礀瀀攀 搀椀猀欀 昀漀爀洀愀琀 ✀⼀搀甀洀瀀猀⼀漀爀愀戀愀挀欀甀瀀猀⼀戀愀挀欀甀瀀─搀开䐀䈀开─甀开─猀开─瀀✀㬀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ But if you want, you can always overide some setting, in some of your scripts, like for example the
    ਍眀栀攀爀攀 漀渀 搀椀猀欀 琀栀攀 戀愀挀欀甀瀀猀 愀爀攀 猀琀漀爀攀搀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ RUN
    ਍笀 㰀戀爀㸀ഀഀ   ALLOCATE CHANNEL disk1 DEVICE TYPE DISK FORMAT '/disk1/%d_backups/%U';
    ਍☀渀戀猀瀀  䄀䰀䰀伀䌀䄀吀䔀 䌀䠀䄀一一䔀䰀 搀椀猀欀㈀ 䐀䔀嘀䤀䌀䔀 吀夀倀䔀 䐀䤀匀䬀 䘀伀刀䴀䄀吀 ✀⼀搀椀猀欀㈀⼀─搀开戀愀挀欀甀瀀猀⼀─唀✀㬀㰀戀爀㸀ഀഀ   ALLOCATE CHANNEL disk3 DEVICE TYPE DISK FORMAT '/disk3/%d_backups/%U';
    ਍☀渀戀猀瀀  䈀䄀䌀䬀唀倀 䐀䄀吀䄀䈀䄀匀䔀㬀 㰀戀爀㸀ഀഀ   RELEASE CHANNEL disk1;
    ਍☀渀戀猀瀀  刀䔀䰀䔀䄀匀䔀 䌀䠀䄀一一䔀䰀 搀椀猀欀㈀㬀㰀戀爀㸀ഀഀ   RELEASE CHANNEL disk3;
    ਍紀 㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Note that here the backup is "spreaded" along several backup disks, shortening overall runtime
    ਍㰀戀爀㸀ഀഀ More on channels:
    ਍䴀愀渀甀愀氀氀礀 愀氀氀漀挀愀琀攀搀 挀栀愀渀渀攀氀猀 ⠀愀氀氀漀挀愀琀攀搀 戀礀 甀猀椀渀最 䄀䰀䰀伀䌀䄀吀䔀⤀ 猀栀漀甀氀搀 戀攀 搀椀猀琀椀渀最甀椀猀栀攀搀 昀爀漀洀 愀甀琀漀洀愀琀椀挀愀氀氀礀 㰀戀爀㸀ഀഀ allocated channels (specified by using CONFIGURE). Manually allocated channels apply only to the RUN job
    ਍椀渀 眀栀椀挀栀 礀漀甀 椀猀猀甀攀 琀栀攀 挀漀洀洀愀渀搀⸀ 䄀甀琀漀洀愀琀椀挀 挀栀愀渀渀攀氀猀 愀瀀瀀氀礀 琀漀 㰀䈀㸀愀渀礀 刀䴀䄀一 樀漀戀㰀⼀䈀㸀 椀渀 眀栀椀挀栀 礀漀甀 搀漀 渀漀琀 洀愀渀甀愀氀氀礀 㰀戀爀㸀ഀഀ allocate channels. You can always override automatic channel configurations by manually allocating channels within a RUN command.
    ਍㰀戀爀㸀ഀഀ This explains why you will not alwayssee an "allocate channel" command in a run job.
    ਍㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 26.3 SOME SIMPLE RMAN BACKUP EXAMPLES:
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍䠀攀爀攀 愀爀攀 樀甀猀琀 愀 昀攀眀 刀䴀䄀一 戀愀挀欀甀瀀 猀挀爀椀瀀琀 攀砀愀洀瀀氀攀猀⸀㰀戀爀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀猀 ㄀ 愀渀搀 ㈀ 愀爀攀 漀氀搀Ⰰ 琀爀愀搀椀琀椀漀渀愀氀 攀砀愀洀瀀氀攀猀Ⰰ 渀漀琀 甀猀椀渀最 㰀䈀㸀椀渀挀爀攀洀攀渀琀愀氀 戀愀挀欀甀瀀猀㰀⼀䈀㸀⸀㰀戀爀㸀ഀഀ Here, we just make a full backup of the database, and backup all archived redologs.
    ਍吀栀椀猀 眀漀爀欀猀Ⰰ 戀甀琀 洀漀猀琀 眀椀氀氀 愀最爀攀攀 琀栀愀琀 甀猀椀渀最 椀渀挀爀攀洀攀渀琀愀氀 戀愀挀欀甀瀀猀 洀椀最栀琀 戀攀 瘀攀爀礀 戀攀渀攀昀椀挀椀愀氀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀吀爀愀搀椀琀椀漀渀愀氀 㤀椀 猀琀礀氀攀 爀洀愀渀 戀愀挀欀甀瀀 猀挀爀椀瀀琀猀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀 ㄀㨀 爀洀愀渀 猀挀爀椀瀀琀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ RMAN> run {
    ਍☀渀戀猀瀀      愀氀氀漀挀愀琀攀 挀栀愀渀渀攀氀 琀㄀ 琀礀瀀攀 搀椀猀欀 䘀伀刀䴀䄀吀 ✀⼀搀椀猀欀㄀⼀戀愀挀欀甀瀀猀⼀─唀✀㬀㰀戀爀㸀ഀഀ   backup database tag full_251109 ; You may also "tag" (or name) a backup
    ਍☀渀戀猀瀀      猀焀氀 ✀愀氀琀攀爀 猀礀猀琀攀洀 愀爀挀栀椀瘀攀 氀漀最 挀甀爀爀攀渀琀✀㬀   㰀䤀㸀⌀ 䨀甀猀琀 戀攀昀漀爀攀 戀愀挀欀甀瀀Ⰰ 氀攀琀✀猀 愀爀挀栀椀瘀攀 琀栀攀 挀甀爀爀攀渀琀 爀攀搀漀氀漀最㰀⼀䤀㸀㰀戀爀㸀ഀഀ   backup archivelog all delete input ; # Are you sure to delete all archives after backup ?
    ਍☀渀戀猀瀀      爀攀氀攀愀猀攀 挀栀愀渀渀攀氀 琀㄀㬀㰀戀爀㸀ഀഀ   }
    ਍㰀⼀䈀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀 ㈀㨀 爀洀愀渀 猀挀爀椀瀀琀 ⠀甀猀椀渀最 猀戀琀Ⰰ 漀爀 琀栀愀琀 椀猀Ⰰ∀琀愀瀀攀∀⤀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ RMAN> run {
    ਍☀渀戀猀瀀      愀氀氀漀挀愀琀攀 挀栀愀渀渀攀氀 琀㄀ 琀礀瀀攀 ✀猀戀琀开琀愀瀀攀✀ 瀀愀爀洀猀  ✀䔀一嘀㴀⠀琀搀瀀漀开漀瀀琀昀椀氀攀㴀⼀甀猀爀⼀琀椀瘀漀氀椀⼀琀猀洀⼀挀氀椀攀渀琀⼀漀爀愀挀氀攀⼀戀椀渀㘀㐀⼀琀搀瀀漀⸀漀瀀琀⤀✀㬀㰀戀爀㸀ഀഀ   backup database tag full_251109 ;
    ਍☀渀戀猀瀀      猀焀氀 ✀愀氀琀攀爀 猀礀猀琀攀洀 愀爀挀栀椀瘀攀 氀漀最 挀甀爀爀攀渀琀✀㬀 㰀戀爀㸀ഀഀ   backup archivelog all;
    ਍☀渀戀猀瀀      爀攀氀攀愀猀攀 挀栀愀渀渀攀氀 琀㄀㬀㰀戀爀㸀ഀഀ   }
    ਍㰀⼀䈀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ 10g style rman backup scripts:
    ਍㰀戀爀㸀ഀഀ On 10g/11g, you can still use backups scripts as shown in examples 1 and 2.
    ਍䈀甀琀Ⰰ 攀砀愀洀瀀氀攀猀 ㌀ 愀渀搀 㐀 愀爀攀 愀 戀椀琀 洀漀爀攀 ∀洀漀搀攀爀渀∀Ⰰ 愀渀搀 洀椀最栀琀 戀攀 愀 戀攀琀琀攀爀 猀漀氀甀琀椀漀渀 椀渀 洀愀渀礀 猀椀琀甀愀琀椀漀渀猀⸀㰀戀爀㸀 ഀഀ It uses incremental backups.
    ਍㰀戀爀㸀ഀഀ An incremental backup, contains all changed blocks, with respect to the former backup.
    ਍匀漀Ⰰ 椀昀 礀漀甀 洀愀欀攀 愀 昀甀氀氀 戀愀挀欀甀瀀 ⠀氀攀瘀攀氀  ⤀Ⰰ 愀琀 琀椀洀攀㴀琀 Ⰰ 愀渀搀 猀漀洀攀 琀椀洀攀 氀愀琀攀爀 愀渀 椀渀挀爀攀洀攀渀琀愀氀 戀愀挀欀甀瀀 ⠀氀攀瘀攀氀 ㄀⤀ 愀琀 琀椀洀攀㴀琀㄀Ⰰ㰀戀爀㸀ഀഀ the latter backup will contain all changes that a possible large number of archived redologs will hold as well,
    ਍搀甀爀椀渀最 琀栀攀 椀渀琀攀爀瘀愀氀 琀㄀ⴀ琀 ⸀㰀戀爀㸀ഀഀ It means you do not have to have so much "attention" to those archived redologs (they are still important ofcourse).
    ਍伀渀氀礀 琀栀攀 愀爀挀栀椀瘀攀搀 爀攀搀漀氀漀最猀 琀栀愀琀 眀攀爀攀 挀爀攀愀琀攀搀 愀昀琀攀爀 琀栀攀 氀攀瘀攀氀 ㄀ 戀愀挀欀甀瀀Ⰰ 愀爀攀 椀洀瀀漀爀琀愀渀琀 昀漀爀 昀甀氀氀 爀攀挀漀瘀攀爀礀⸀㰀戀爀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀 ㌀㨀 氀攀瘀攀氀   爀洀愀渀 猀挀爀椀瀀琀 ⠀昀甀氀氀 戀愀挀欀甀瀀⤀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ RMAN> run {
    ਍☀渀戀猀瀀      戀愀挀欀甀瀀 椀渀挀爀攀洀攀渀琀愀氀 氀攀瘀攀氀   愀猀 挀漀洀瀀爀攀猀猀攀搀 戀愀挀欀甀瀀猀攀琀 搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ   }
    ਍㰀⼀䈀㸀ഀഀ
    ਍一漀琀攀 琀栀愀琀 琀栀攀 戀愀猀椀挀 挀漀洀洀愀渀搀 椀猀 ∀䈀䄀䌀䬀唀倀 䐀䄀吀䄀䈀䄀匀䔀∀Ⰰ 戀甀琀 愀氀氀 猀漀爀琀猀 漀昀 漀瀀琀椀漀渀猀 挀愀渀 戀攀 瀀氀愀挀攀搀 椀渀 戀攀琀眀攀攀渀㰀戀爀㸀ഀഀ those keywords (BACKUP and DATABASE). Here, we have specified to compress the full backup.
    ਍㰀戀爀㸀ഀഀ Example 4: level 1 rman script (incremental backup)
    ਍㰀戀爀㸀ഀഀ ਍刀䴀䄀一㸀 爀甀渀 笀㰀戀爀㸀ഀഀ   backup incremental level 1 as compressed backupset database;
    ਍☀渀戀猀瀀      紀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ A full database backup, corresponds to an INCREMENTAL LEVEL 0 backup.
    ਍䄀渀 椀渀挀爀攀洀攀渀琀愀氀 戀愀挀欀甀瀀Ⰰ 挀漀爀爀攀猀瀀漀渀搀猀 琀漀 愀渀 䤀一䌀刀䔀䴀䔀一吀䄀䰀 䰀䔀嘀䔀䰀 ㄀ 戀愀挀欀甀瀀⸀㰀戀爀㸀ഀഀ
    ਍䄀渀 椀渀挀爀攀洀攀渀琀愀氀 䰀䔀嘀䔀䰀 ㄀ 戀愀挀欀甀瀀Ⰰ 眀椀氀氀 漀渀氀礀 戀愀挀欀甀瀀 琀栀攀 挀栀愀渀最攀搀 搀愀琀愀戀愀猀攀 戀氀漀挀欀猀 琀栀愀琀 栀愀瘀攀 戀攀攀渀 挀栀愀渀最攀搀 猀椀渀挀攀㰀戀爀㸀ഀഀ the former LEVEL 0 or LEVEL 1 backup.
    ਍匀漀Ⰰ 椀渀 昀愀挀琀 眀椀琀栀 愀渀 椀渀挀爀攀洀攀渀琀愀氀 氀攀瘀攀氀 ㄀Ⰰ 礀漀甀 漀渀氀礀 挀愀瀀琀甀爀攀 愀氀氀 挀栀愀渀最攀猀 挀漀洀瀀愀爀攀搀 㰀戀爀㸀ഀഀ to the former backup (level 0 or level 1).
    ਍㰀戀爀㸀ഀഀ RMAN will always chooses incremental backups over archived logs,
    ਍愀猀 愀瀀瀀氀礀椀渀最 挀栀愀渀最攀猀 愀琀 愀 戀氀漀挀欀 氀攀瘀攀氀 椀猀 昀愀猀琀攀爀 琀栀愀渀 爀攀愀瀀瀀氀礀椀渀最 椀渀搀椀瘀椀搀甀愀氀 挀栀愀渀最攀猀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀匀瀀攀挀椀昀礀椀渀最 琀栀攀 搀攀昀愀甀氀琀 戀愀挀欀甀瀀 氀漀挀愀琀椀漀渀猀 昀漀爀 搀椀猀欀 戀愀挀欀甀瀀猀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍ⴀⴀ㸀 一漀琀 甀猀椀渀最 愀 䘀氀愀猀栀 刀攀挀漀瘀攀爀礀 䄀爀攀愀 ⠀㄀ 最⤀ 漀爀 䘀愀猀琀 爀攀挀漀瘀攀爀礀 䄀爀攀愀 ⠀㄀㄀最⤀㨀㰀戀爀㸀ഀഀ
    ਍夀漀甀 洀椀最栀琀 眀漀渀搀攀爀 眀栀攀爀攀 琀栀攀 搀椀猀欀 戀愀猀攀搀 戀愀挀欀甀瀀猀 眀椀氀氀 戀攀 猀琀漀爀攀搀Ⰰ 猀椀渀挀攀 琀栀攀 愀氀氀漀挀愀琀攀 挀栀愀渀渀攀氀 猀琀愀琀攀洀攀渀琀㰀戀爀㸀ഀഀ usually does not refer to a disk location.
    ਍䤀琀✀猀 甀猀甀愀氀氀礀 栀愀渀搀氀攀搀 戀礀 猀攀琀琀椀渀最 愀 瀀攀爀猀椀猀琀攀渀琀 爀洀愀渀 猀攀琀琀椀渀最 氀椀欀攀 昀漀爀 攀砀愀洀瀀氀攀㨀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 䌀伀一䘀䤀䜀唀刀䔀 䌀䠀䄀一一䔀䰀 䐀䔀嘀䤀䌀䔀 吀夀倀䔀 䐀䤀匀䬀 䘀伀刀䴀䄀吀 ✀⼀戀愀挀欀甀瀀⼀漀爀愀开搀昀─琀开猀─猀开猀─瀀✀㬀㰀戀爀㸀ഀഀ
    ਍䠀攀爀攀 礀漀甀 猀攀攀 琀栀攀 氀漀挀愀琀椀漀渀 猀攀瀀挀椀昀椀攀搀 愀猀 ∀⼀戀愀挀欀甀瀀∀Ⰰ 眀栀椀氀攀 猀漀洀攀 愀搀搀椀琀椀漀渀愀氀 昀椀氀攀 瀀愀爀愀洀攀琀攀爀猀㰀戀爀㸀ഀഀ determine the format of a 'backup piece', like %t is replaced with a four byte time stamp, %s
    ਍眀椀琀栀 琀栀攀 戀愀挀欀甀瀀 猀攀琀 渀甀洀戀攀爀Ⰰ 愀渀搀 ─瀀 眀椀琀栀 琀栀攀 戀愀挀欀甀瀀 瀀椀攀挀攀 渀甀洀戀攀爀⸀㰀戀爀㸀ഀഀ
    ਍夀漀甀 挀愀渀 愀氀猀漀 挀漀渀昀椀最甀爀攀 愀渀 䄀匀䴀 搀椀猀欀 最爀漀甀瀀 愀猀 礀漀甀爀 搀攀猀琀椀渀愀琀椀漀渀Ⰰ 愀猀 椀渀 琀栀攀 昀漀氀氀漀眀椀渀最 攀砀愀洀瀀氀攀㨀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 䌀伀一䘀䤀䜀唀刀䔀 䌀䠀䄀一一䔀䰀 䐀䔀嘀䤀䌀䔀 吀夀倀䔀 䐀䤀匀䬀 䘀伀刀䴀䄀吀 ✀⬀搀最爀漀甀瀀㄀✀㬀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ --> Using a "Flash Recovery Area" (10g) or "Fast recovery Area" (11g):
    ਍㰀戀爀㸀ഀഀ Then this will be the default location for all your RMAN backups, unless you override it.
    ਍㰀戀爀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀 㔀㨀 甀渀椀砀 猀栀攀氀氀 猀挀爀椀瀀琀 甀猀椀渀最 爀洀愀渀 椀渀 琀栀攀 琀爀愀搀椀琀椀漀渀愀氀 眀愀礀⸀㰀戀爀㸀ഀഀ
    ਍⌀℀⼀甀猀爀⼀戀椀渀⼀欀猀栀㰀戀爀㸀ഀഀ
    ਍攀砀瀀漀爀琀 伀刀䄀䌀䰀䔀开匀䤀䐀㴀倀刀伀䐀㰀戀爀㸀ഀഀ export ORACLE_HOME=/opt/oracle/product/10.2
    ਍㰀戀爀㸀ഀഀ # Add date to be used in logfile
    ਍攀砀瀀漀爀琀 吀䐀䄀夀㴀怀搀愀琀攀 ⬀─愀怀㰀戀爀㸀ഀഀ export backup_dir = /dumps/oracle/backup
    ਍攀砀瀀漀爀琀 䰀伀䜀䘀䤀䰀䔀㴀␀戀愀挀欀甀瀀开搀椀爀⼀瀀爀漀搀⸀氀漀最㰀戀爀㸀ഀഀ
    ਍攀挀栀漀 ∀䈀愀挀欀甀瀀 匀琀愀爀琀攀搀 愀琀 怀搀愀琀攀怀 尀渀∀ 㸀␀䰀伀䜀䘀䤀䰀䔀㰀戀爀㸀ഀഀ
    ਍␀伀刀䄀䌀䰀䔀开䠀伀䴀䔀⼀戀椀渀⼀爀洀愀渀 㰀㰀✀℀✀ ㄀㸀㸀 ␀䰀伀䜀䘀䤀䰀䔀 ㈀㸀☀㄀㰀戀爀㸀ഀഀ
    ਍⌀ 挀漀渀渀攀挀琀 琀漀 琀栀攀 搀愀琀愀戀愀猀攀⸀ 䌀栀愀渀最攀 琀栀椀猀 琀漀 匀礀猀 氀漀最漀渀 椀昀 渀漀琀 甀猀椀渀最 ⼀㰀戀爀㸀ഀഀ
    ਍挀漀渀渀攀挀琀 琀愀爀最攀琀 ⼀㰀戀爀㸀ഀഀ
    ਍⌀ 䄀氀氀漀挀愀琀攀 䐀椀猀欀 挀栀愀渀渀攀氀猀⸀ 夀漀甀 洀椀最栀琀 愀氀氀漀挀愀琀攀 洀漀爀攀 椀昀 礀漀甀 栀愀瘀攀 猀甀昀昀椀挀椀攀渀琀 爀攀猀漀甀爀挀攀猀㨀ഀഀ
    ਍爀甀渀 笀㰀戀爀㸀ഀഀ allocate channel t1 type disk;
    ਍愀氀氀漀挀愀琀攀 挀栀愀渀渀攀氀 琀㈀ 琀礀瀀攀 搀椀猀欀㬀㰀戀爀㸀ഀഀ
    ਍⌀戀愀挀欀甀瀀 琀栀攀 眀栀漀氀攀 猀漀甀爀挀攀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ # Use tags for easy identification from other backups
    ਍戀愀挀欀甀瀀 琀愀最 眀栀漀氀攀开搀愀琀愀戀愀猀攀开漀瀀攀渀 昀漀爀洀愀琀 ✀␀戀愀挀欀甀瀀开搀椀爀⼀搀昀开─甀✀ 搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ
    ਍⌀ 愀爀挀栀椀瘀攀 琀栀攀 挀甀爀爀攀渀琀 爀攀搀漀氀漀最昀椀氀攀㰀戀爀㸀ഀഀ sql 'alter system archive log current';
    ਍㰀戀爀㸀ഀഀ #backup the archived logs
    ਍戀愀挀欀甀瀀 愀爀挀栀椀瘀攀氀漀最 愀氀氀 昀漀爀洀愀琀 ✀␀戀愀挀欀甀瀀开搀椀爀⼀愀氀开─甀✀㬀㰀戀爀㸀ഀഀ
    ਍⌀ 戀愀挀欀甀瀀 愀 挀漀瀀礀 漀昀 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀 琀栀愀琀 挀漀渀琀愀椀渀猀 爀攀挀漀爀搀猀 昀漀爀 琀栀攀 戀愀挀欀甀瀀猀 樀甀猀琀 洀愀搀攀㰀戀爀㸀ഀഀ backup current controlfile format '$backup_dir/cf_%u';
    ਍紀㰀戀爀㸀ഀഀ exit
    ਍㰀戀爀㸀ഀഀ echo "Backup Finished at `date` \n" >>$LOGFILE
    ਍㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 26.4 SOME SIMPLE RMAN RESTORE AND RECOVERY EXAMPLES:
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍刀䴀䄀一 栀愀猀 椀琀✀猀 洀攀琀愀搀愀琀愀Ⰰ 愀渀搀 琀栀甀猀 椀琀 ∀欀渀漀眀猀∀ 眀栀愀琀 ∀琀漀 搀漀∀ 眀栀攀渀 礀漀甀 渀攀攀搀 琀漀 爀攀猀琀漀爀攀 愀渀搀 爀攀挀漀瘀攀爀 愀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ
    ਍䔀猀瀀攀挀椀愀氀氀礀 椀渀 ㄀㄀最Ⰰ 琀栀攀 最爀愀瀀栀椀挀愀氀 䔀渀琀攀爀瀀爀椀猀攀 䴀愀渀愀最攀爀 ⠀䔀䴀⤀Ⰰ 栀愀猀 猀漀洀攀 爀攀愀氀氀礀 渀椀昀琀礀 昀攀愀琀甀爀攀猀 琀漀 最攀琀 礀漀甀㰀戀爀㸀ഀഀ out of trouble when a restore and recovery is needed. But working from the EM is not a subject in this document.
    ਍䄀最愀椀渀Ⰰ 椀昀 爀攀猀琀漀爀攀 愀渀搀 爀攀挀漀瘀攀爀礀 猀甀戀樀攀挀琀猀 愀爀攀 椀洀瀀漀爀琀愀渀琀 昀漀爀 礀漀甀 ⠀眀栀椀挀栀 椀猀 琀爀甀攀 椀昀 礀漀甀 愀爀攀 愀 䐀䈀䄀⤀Ⰰ㰀戀爀㸀ഀഀ and you use 11g, then you should investigate all options that are available in 11G EM.
    ਍㰀戀爀㸀ഀഀ Here we will only show a few simple and traditional examples using RMAN for a restore and recovery.
    ਍ഀഀ
    ਍㰀䈀㸀㰀唀㸀倀䄀刀吀 ㄀⸀ 䌀伀䴀倀䰀䔀吀䔀 刀䔀䌀伀嘀䔀刀夀㨀㰀⼀唀㸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀 ㄀㨀 刀攀猀琀漀爀攀 愀渀搀 刀攀挀漀瘀攀礀 漀昀 愀渀 攀渀琀椀爀攀 搀愀琀愀戀愀猀攀 ⠀搀愀琀愀戀愀猀攀 昀椀氀攀猀 漀渀氀礀⤀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀䤀洀瀀漀爀琀愀渀琀㨀 眀攀 猀琀椀氀氀 栀愀瘀攀 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀猀⸀ 伀渀氀礀 搀愀琀愀戀愀猀攀昀椀氀攀猀 愀爀攀 氀漀猀琀⸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍匀甀瀀瀀漀猀攀 礀漀甀 栀愀瘀攀 挀爀愀猀栀 漀昀 猀漀洀攀 猀漀爀琀Ⰰ 氀椀欀攀 愀 搀椀猀欀挀爀愀猀栀⸀ 䤀昀 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀猀 愀渀搀 漀渀氀椀渀攀 爀攀搀漀 氀漀最猀 愀爀攀 猀琀椀氀氀 瀀爀攀猀攀渀琀Ⰰ㰀戀爀㸀ഀഀ a whole database recovery can be achieved by running the script below.
    ਍䤀昀 礀漀甀 栀愀瘀攀 愀氀猀漀 氀漀猀琀 愀氀氀 挀漀渀琀爀漀氀昀椀氀攀猀 愀渀搀 漀渀氀椀渀攀 爀攀搀漀氀漀最猀Ⰰ 琀栀攀 爀攀猀琀漀爀攀 眀椀氀氀 戀攀 愀 氀椀琀琀氀攀 洀漀爀攀 椀渀瘀漀氀瘀攀搀Ⰰ㰀戀爀㸀ഀഀ than what is shown below.
    ਍㰀戀爀㸀ഀഀ ਍爀甀渀 笀㰀戀爀㸀ഀഀ   startup mount;
    ਍☀渀戀猀瀀  爀攀猀琀漀爀攀 搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ   recover database;
    ਍☀渀戀猀瀀  愀氀琀攀爀 搀愀琀愀戀愀猀攀 漀瀀攀渀㬀㰀戀爀㸀ഀഀ }
    ਍㰀⼀䈀㸀ഀഀ
    ਍䔀砀瀀氀愀渀愀琀椀漀渀㨀㰀戀爀㸀ഀഀ Since the database is damaged (like missing dbf files), you cannot open the database.
    ਍䄀渀礀眀愀礀Ⰰ 椀琀 猀栀漀甀氀搀 渀漀琀 戀攀 漀瀀攀渀攀渀攀搀 ⠀愀渀搀 漀昀挀漀甀爀猀攀 椀琀 挀愀渀渀漀琀 戀攀 漀瀀攀渀攀渀攀搀⤀⸀ 匀甀瀀瀀漀猀攀 礀漀甀 眀愀渀琀 琀漀 爀攀猀琀漀爀攀㰀戀爀㸀ഀഀ over corrupt files, then those files should not be active in anyway.
    ਍䈀甀琀 眀攀 猀琀椀氀氀 渀攀攀搀 琀栀攀 ∀䤀渀猀琀愀渀挀攀∀ 琀漀 戀攀 甀瀀Ⰰ 愀渀搀 琀栀愀琀 眀椀氀氀 戀攀 愀挀栀椀攀瘀攀搀 甀猀椀渀最 㰀䈀㸀∀猀琀愀爀琀甀瀀 洀漀甀渀琀∀㰀⼀䈀㸀⸀㰀戀爀㸀ഀഀ Note that starting the instance using "startup mount", implies that a good controlfile is available,
    ਍愀渀搀 愀琀 琀栀攀 猀愀洀攀 琀椀洀攀Ⰰ 琀栀愀琀 挀漀洀洀愀渀搀 眀椀氀氀 㰀䈀㸀 渀漀琀 漀瀀攀渀㰀⼀䈀㸀 琀栀攀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ Next, we use the "restore database" command. Since RMAN knows where to find all backups,
    ਍椀琀 眀椀氀氀 愀瀀瀀氀礀 琀栀攀 氀愀猀琀 昀甀氀氀 戀愀挀欀甀瀀Ⰰ 愀渀搀 椀昀 瀀爀攀猀攀渀琀Ⰰ 椀琀 琀栀攀渀 愀瀀瀀氀椀攀猀 琀栀攀 搀椀昀昀攀爀攀渀琀椀愀氀 戀愀挀欀甀瀀猀⸀㰀戀爀㸀ഀഀ After all of the above is ready, the database is very likely to be in an inconsistent state, and the last
    ਍愀爀挀栀椀瘀攀搀 爀攀搀漀氀漀最猀 渀攀攀搀猀 琀漀 戀攀 愀瀀瀀氀椀攀搀⸀ 吀栀椀猀 椀猀 挀愀氀氀攀搀 ∀爀攀挀漀瘀攀爀礀∀⸀㰀戀爀㸀ഀഀ
    ਍䤀渀 猀漀洀攀 挀愀猀攀猀Ⰰ 椀琀 洀椀最栀琀 愀氀猀漀 戀攀 琀栀愀琀 愀昀琀攀爀 琀栀攀 昀甀氀氀 戀愀挀欀甀瀀 爀攀猀琀漀爀攀Ⰰ 愀渀搀 漀瀀琀椀漀渀愀氀氀礀 琀栀攀 搀椀昀昀攀爀攀渀琀椀愀氀 戀愀挀欀甀瀀 爀攀猀琀漀爀攀Ⰰ㰀戀爀㸀ഀഀ that no archived redologs need to be applied, and the last step will then be that the recovery process
    ਍甀猀攀猀 琀栀攀 ∀漀渀氀椀渀攀∀ 爀攀搀漀氀漀最猀 昀漀爀 琀栀攀 氀愀猀琀 猀琀攀瀀猀 漀昀 爀攀挀漀瘀攀爀礀⸀㰀戀爀㸀ഀഀ Obviously then, in this case, the last differential backup that was performed, already contained almost
    ਍愀氀氀 挀栀愀渀最攀 瘀攀挀琀漀爀猀Ⰰ 猀漀 昀漀爀 琀栀攀 氀愀猀琀 猀琀攀瀀Ⰰ 爀洀愀渀 甀猀攀猀 琀栀攀 漀渀氀椀渀攀 氀漀最猀 昀漀爀 琀栀攀 氀愀琀攀猀琀 琀爀愀渀猀愀挀琀椀漀渀猀⸀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ Example 2: Restore and Recovery of a tablespace (except system or undo):
    ਍㰀戀爀㸀ഀഀ Important: We still have system, undo, redo, and controlfiles. Only database files of a tablespace are lost.
    ਍㰀戀爀㸀ഀഀ Suppose you have a problem with the SALES tablespace. If you need to restore it, you can use a script
    ਍猀椀洀椀氀愀爀 琀漀 眀栀愀琀 椀猀 猀栀漀眀渀 戀攀氀漀眀⸀㰀戀爀㸀ഀഀ If it is just an ordinary user tablespace, the database itself can stay online and open.
    ਍䈀甀琀Ⰰ 琀栀愀琀 瀀愀爀琀椀挀甀氀愀爀 琀愀戀氀攀猀瀀愀挀攀 渀攀攀搀猀 琀漀 戀攀 椀渀 愀 挀氀漀猀攀搀 猀琀愀琀攀Ⰰ 戀攀昀漀爀攀 礀漀甀 挀愀渀 爀攀猀琀漀爀攀 椀琀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ run {
    ਍☀渀戀猀瀀  猀焀氀 ✀䄀䰀吀䔀刀 吀䄀䈀䰀䔀匀倀䄀䌀䔀 匀䄀䰀䔀匀 伀䘀䘀䰀䤀一䔀 䤀䴀䴀䔀䐀䤀䄀吀䔀✀㬀㰀戀爀㸀ഀഀ   restore tablespace SALES;
    ਍☀渀戀猀瀀  爀攀挀漀瘀攀爀 琀愀戀氀攀猀瀀愀挀攀 匀䄀䰀䔀匀㬀㰀戀爀㸀ഀഀ   sql 'ALTER TABLESPACE SALES ONLINE';
    ਍紀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀㰀唀㸀倀䄀刀吀 ㈀⸀ 䤀一䌀伀䴀倀䰀䔀吀䔀 刀䔀䌀伀嘀䔀刀夀㨀㰀⼀唀㸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䄀猀 礀漀甀 眀漀甀氀搀 攀砀瀀攀挀琀Ⰰ 刀䴀䄀一 愀氀氀漀眀猀 椀渀挀漀洀瀀氀攀琀攀 爀攀挀漀瘀攀爀礀 琀漀 愀 猀瀀攀挀椀昀椀攀搀 搀愀琀攀⼀琀椀洀攀Ⰰ 匀䌀一 漀爀 猀攀焀甀攀渀挀攀 渀甀洀戀攀爀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀䤀洀瀀漀爀琀愀渀琀㨀 眀攀 猀琀椀氀氀 栀愀瘀攀 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀猀 愀渀搀 爀攀搀漀氀漀最猀⸀ 伀渀氀礀 搀愀琀愀戀愀猀攀昀椀氀攀猀 愀爀攀 氀漀猀琀⸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䤀渀 琀栀椀猀 挀愀猀攀Ⰰ 琀栀攀 搀愀琀愀戀愀猀攀 最攀琀猀 爀攀猀琀漀爀攀搀 琀漀 愀 琀椀洀攀 瀀爀椀漀爀 琀漀 挀栀愀渀最攀猀 琀栀愀琀 愀爀攀 猀琀漀爀攀搀 椀渀 琀栀攀 漀渀氀椀渀攀 爀攀搀漀氀漀最猀⸀㰀戀爀㸀ഀഀ RMAN will make the database consistent, after restore and recovery, but the restored databases lives with
    ਍愀 洀愀砀 匀礀猀琀攀洀 䌀栀愀渀最攀 一甀洀戀攀爀 ⠀匀䌀一⤀ 琀栀愀琀 椀猀 氀漀眀攀爀 琀栀愀渀 琀栀攀 匀䌀一 愀琀 琀栀攀 琀椀洀攀 漀昀 挀爀愀猀栀⸀㰀戀爀㸀ഀഀ Since in all restore scenario's sofar in this note, we have assumed that the "online redologs" were not affected
    ਍戀礀 琀栀攀 挀爀愀猀栀Ⰰ 愀渀搀 漀渀氀礀 搀愀琀愀戀愀猀攀 昀椀氀攀猀 愀爀攀 挀漀爀爀甀瀀琀 漀爀 洀椀猀猀椀渀最 ⠀瀀漀猀猀椀戀氀礀 搀甀攀 琀漀 愀 搀椀猀欀挀爀愀猀栀⤀⸀㰀戀爀㸀ഀഀ So, the online redologs are "more in the future" than the restored database files.
    ਍吀栀椀猀 猀椀琀甀愀琀椀漀渀 洀甀猀琀 戀攀 爀攀猀漀氀瘀攀搀 戀礀 挀氀攀愀爀椀渀最Ⰰ 漀爀 爀攀猀攀琀琀椀渀最Ⰰ 琀栀攀 漀渀氀椀渀攀 爀攀搀漀氀漀最猀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ run {
    ਍☀渀戀猀瀀  猀琀愀爀琀甀瀀 洀漀甀渀琀㬀㰀戀爀㸀ഀഀ   set until time 'Nov 15 2008 09:00:00';
    ਍☀渀戀猀瀀  ⌀ 猀攀琀 甀渀琀椀氀 猀挀渀 ㄀   㬀       ⌀ 愀氀琀攀爀渀愀琀椀瘀攀氀礀Ⰰ 礀漀甀 挀愀渀 猀瀀攀挀椀昀礀 匀䌀一㰀戀爀㸀ഀഀ   # set until sequence 9923; # alternatively, you can specify log sequence number
    ਍☀渀戀猀瀀  爀攀猀琀漀爀攀 搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ   recover database;
    ਍☀渀戀猀瀀  愀氀琀攀爀 搀愀琀愀戀愀猀攀 漀瀀攀渀 爀攀猀攀琀氀漀最猀㬀㰀戀爀㸀ഀഀ }
    ਍㰀⼀䈀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㈀㘀⸀㔀 匀伀䴀䔀 一伀吀䔀匀 伀一 ∀䈀䄀䌀䬀唀倀 匀䔀吀∀ 䄀一䐀 ∀䌀伀倀夀∀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Format of the backup:
    ਍㰀戀爀㸀ഀഀ Usually, what you will create for backups using RMAN, will be "backup sets".
    ਍㰀戀爀㸀ഀഀ But, actually, you can create either "backup sets" or "image copies".
    ਍㰀戀爀㸀ഀഀ
      ਍㰀氀椀㸀 䈀愀挀欀甀瀀 猀攀琀猀 愀爀攀 氀漀最椀挀愀氀 攀渀琀椀琀椀攀猀 瀀爀漀搀甀挀攀搀 戀礀 琀栀攀 刀䴀䄀一 䈀䄀䌀䬀唀倀 挀漀洀洀愀渀搀⸀ 䤀琀 椀猀 猀琀漀爀攀搀 椀渀 愀渀 爀洀愀渀 猀瀀攀挀椀昀椀挀 昀漀爀洀愀琀Ⰰ㰀戀爀㸀ഀഀ and will only contain the used blocks of the datafiles, thereby saving space. ਍ഀഀ
    • Image copies are exact byte-for-byte copies of files. It does not save in space the way a backup set does.
      ਍刀䴀䄀一 眀椀氀氀 挀爀攀愀琀攀 ∀椀洀愀最攀 挀漀瀀椀攀猀∀Ⰰ 眀栀攀渀 礀漀甀 甀猀攀 琀栀攀 ∀䄀匀 䌀伀倀夀∀ 漀瀀琀椀漀渀 眀椀琀栀 琀栀攀 䈀䄀䌀䬀唀倀 挀漀洀洀愀渀搀⸀㰀⼀氀椀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ Both Backup sets and image copies are recorded in the RMAN repository.
    ਍䄀猀 猀愀椀搀 戀攀昀漀爀攀Ⰰ 甀猀甀愀氀氀礀 琀栀攀 搀攀昀愀甀氀琀 琀礀瀀攀 漀昀 ∀戀愀挀欀甀瀀 猀攀琀∀ 眀椀氀氀 戀攀 甀猀攀搀 戀礀 爀洀愀渀⸀㰀戀爀㸀ഀഀ Image copy backups, can only be created on disk.
    ਍㰀戀爀㸀ഀഀ If you want to change the "default" type, you can use commands like:
    ਍㰀戀爀㸀ഀഀ RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY; # image copies
    ਍刀䴀䄀一㸀 䌀伀一䘀䤀䜀唀刀䔀 䐀䔀嘀䤀䌀䔀 吀夀倀䔀 䐀䤀匀䬀 䈀䄀䌀䬀唀倀 吀夀倀䔀 吀伀 䈀䄀䌀䬀唀倀匀䔀吀㬀 ⌀ 甀渀挀漀洀瀀爀攀猀猀攀搀 戀愀挀欀甀瀀猀攀琀㰀戀爀㸀ഀഀ
    ਍匀漀洀攀 攀砀愀洀瀀氀攀猀㨀㰀戀爀㸀ഀഀ
    ਍夀漀甀 搀漀 渀漀琀 渀攀攀搀 琀漀 甀猀攀 琀栀攀 爀洀愀渀 猀挀爀椀瀀琀 猀琀爀甀挀琀甀爀攀 ⠀㰀䤀㸀爀甀渀 笀 猀琀愀琀攀洀攀渀琀猀 紀㰀⼀䤀㸀⤀Ⰰ 戀甀琀 礀漀甀 挀愀渀 甀猀攀 搀椀爀攀挀琀 挀漀洀洀愀渀搀猀 愀猀 眀攀氀氀⸀㰀戀爀㸀ഀഀ Returning to the differences of creating "image copies" or "backup sets", here are a few examples:
    ਍㰀戀爀㸀ഀഀ RMAN> BACKUP AS COPY DATABASE; #image copies
    ਍㰀戀爀㸀ഀഀ RMAN> BACKUP DATABASE; # backup set
    ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㈀㘀⸀㘀 匀倀䔀䌀䤀䘀夀䤀一䜀 吀䠀䔀 䈀䄀䌀䬀唀倀 䰀伀䌀䄀吀䤀伀一匀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Using Persistent settings:
    ਍㰀戀爀㸀ഀഀ We already have seen that using 'persistent' configuration settings, you can determine where
    ਍瀀攀爀 搀攀昀愀甀氀琀 琀栀攀 戀愀挀欀甀瀀猀 眀椀氀氀 戀攀 猀琀漀爀攀搀Ⰰ 氀椀欀攀 昀漀爀 攀砀愀洀瀀氀攀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backups/%U';
    ਍刀䴀䄀一㸀 䌀伀一䘀䤀䜀唀刀䔀 䌀䠀䄀一一䔀䰀 䐀䔀嘀䤀䌀䔀 吀夀倀䔀 䐀䤀匀䬀 䘀伀刀䴀䄀吀 ✀挀㨀尀爀戀欀甀瀀尀搀愀琀愀开─猀开─瀀开─唀⸀戀愀欀✀㬀㰀戀爀㸀ഀഀ RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '+dgroup1';
    ਍ഀഀ
    ਍刀䴀䄀一㸀 䌀伀一䘀䤀䜀唀刀䔀 䌀伀一吀刀伀䰀䘀䤀䰀䔀 䄀唀吀伀䈀䄀䌀䬀唀倀 伀一㬀㰀戀爀㸀ഀഀ RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/controlbck/cf%F';
    ਍㰀戀爀㸀ഀഀ ਍䤀昀 礀漀甀 栀愀瘀攀 猀攀琀 猀椀洀椀氀愀爀 猀攀琀琀椀渀最猀 愀猀 愀戀漀瘀攀Ⰰ 礀漀甀 搀漀 渀漀琀 渀攀攀搀 琀漀 猀瀀攀挀椀昀礀 氀漀挀愀琀椀漀渀猀 椀渀 琀栀攀 戀愀挀欀甀瀀 挀漀洀洀愀渀搀猀 愀渀搀 猀挀爀椀瀀琀猀⸀㰀戀爀㸀ഀഀ Specifically, if you specify explicitly a channel in the run block (allocate channel t1 DEVICE type DISK;)
    ਍眀椀琀栀漀甀琀 琀栀攀 䘀伀刀䴀䄀吀 猀瀀攀挀椀昀椀挀愀琀椀漀渀Ⰰ 琀栀攀渀 礀漀甀爀 猀挀爀椀瀀琀猀 洀椀最栀琀 昀愀椀氀⸀㰀戀爀㸀ഀഀ
    ਍匀漀Ⰰ 漀爀 甀猀攀 䘀伀刀䴀䄀吀 椀渀 琀栀攀 瀀攀爀猀椀猀琀攀渀琀 猀攀琀琀椀渀最猀Ⰰ 漀爀 甀猀攀 愀 挀漀洀瀀氀攀琀攀 䘀伀刀䴀䄀吀 椀渀 琀栀攀 䄀䰀䰀伀䌀䄀吀䔀⼀䌀伀一䘀䤀䜀唀刀䔀 挀栀愀渀渀攀氀Ⰰ 漀爀㰀戀爀㸀ഀഀ use a complete FORMAT in the BACKUP command.
    ਍㰀戀爀㸀ഀഀ Using the FORMAT clause:
    ਍㰀戀爀㸀ഀഀ You can also specify a FORMAT clause with the individual BACKUP command to direct the output
    ਍琀漀 愀 猀瀀攀挀椀昀椀挀 氀漀挀愀琀椀漀渀 漀昀 礀漀甀爀 挀栀漀椀挀攀Ⰰ 氀椀欀攀 昀漀爀 攀砀愀洀瀀氀攀㨀㰀戀爀㸀ഀഀ
    ਍䈀䄀䌀䬀唀倀 䐀䄀吀䄀䈀䄀匀䔀 䘀伀刀䴀䄀吀㴀∀⼀戀愀挀欀甀瀀猀⼀戀愀挀欀甀瀀开─唀∀㬀㰀戀爀㸀ഀഀ
    ਍䈀愀挀欀甀瀀猀 椀渀 琀栀椀猀 挀愀猀攀 愀爀攀 猀琀漀爀攀搀 眀椀琀栀 最攀渀攀爀愀琀攀搀 甀渀椀焀甀攀 昀椀氀攀渀愀洀攀猀 椀渀 琀栀攀 氀漀挀愀琀椀漀渀 ⼀戀愀挀欀甀瀀猀⼀⸀㰀戀爀㸀ഀഀ That notice that the %U, used to generate a unique string at that point in the filename, is required.
    ਍㰀戀爀㸀ഀഀ You can also use the FORMAT clause to backup to an ASM diskgroup. like so:
    ਍㰀戀爀㸀ഀഀ RMAN> BACKUP DATABASE FORMAT '+dgroup1';
    ਍㰀戀爀㸀ഀഀ Because ASM controls all filenames, you do not need to specify names any further.
    ਍ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ

    27. HOW TO SEE IF THE DATABASE IS DOING A LARGE ROLLBACK:

    ਍ഀഀ ਍㰀戀爀㸀ഀഀ Remember, this note is about SQL only, and does not say anything about using Graphical tools like the EM.
    ਍㰀戀爀㸀ഀഀ If you have a large transaction, that gets interrupted in some way, and the database will then
    ਍爀漀氀氀戀愀挀欀 昀爀漀洀 琀栀攀 唀一䐀伀 琀愀戀氀攀猀瀀愀挀攀Ⰰ 椀琀 眀漀甀氀搀 戀攀 渀椀挀攀 琀漀 猀攀攀 眀栀攀爀攀 椀琀 ∀椀猀 渀漀眀∀ 愀渀搀 栀漀眀 洀甀挀栀㰀戀爀㸀ഀഀ undo blocks "are still to go".
    ਍伀渀攀 眀愀礀 琀漀 猀攀攀 琀栀愀琀 椀猀 甀猀椀渀最 琀栀攀 昀漀氀氀漀眀椀渀最 焀甀攀爀礀⸀ 夀漀甀 眀椀氀氀 猀攀攀 琀栀攀 渀甀洀戀攀爀 漀昀 甀渀搀漀 戀氀漀挀欀猀 最攀琀猀 氀漀眀攀爀㰀戀爀㸀ഀഀ and lower as time pass by.
    ਍㰀戀爀㸀ഀഀ ਍匀䔀䰀䔀䌀吀 愀⸀猀椀搀Ⰰ 愀⸀猀愀搀搀爀Ⰰ 戀⸀猀攀猀开愀搀搀爀Ⰰ 愀⸀甀猀攀爀渀愀洀攀Ⰰ 戀⸀砀椀搀甀猀渀Ⰰ 戀⸀甀猀攀搀开甀爀攀挀Ⰰ 戀⸀甀猀攀搀开甀戀氀欀㰀戀爀㸀ഀഀ FROM v$session a, v$transaction b
    ਍圀䠀䔀刀䔀 愀⸀猀愀搀搀爀 㴀 戀⸀猀攀猀开愀搀搀爀㬀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ This is the same query as was already shown in section 3.4
    ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ

    28. A FEW SIMPLE WAYS TO CLONE A 10g/11g DATABASE:

    ਍ഀഀ ਍ഀഀ ਍㰀䈀㸀倀爀漀戀氀攀洀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍ഀഀ Suppose on Server "A" you have the database "PROD10G" running. This is the "source" database.
    ਍㰀戀爀㸀ഀഀ Now, you want to quicly "clone" that database to Server "B",
    ਍眀栀攀爀攀 椀琀 眀椀氀氀 甀猀攀 琀栀攀 搀愀琀愀戀愀猀攀渀愀洀攀 ∀吀䔀匀吀㄀ 䜀∀⸀㰀戀爀㸀ഀഀ Here we assume that Server B also has Oracle installed, which is on the same level as on Server A.
    ਍㰀戀爀㸀ഀഀ ਍吀栀攀爀攀 愀爀攀 愀琀 氀攀愀猀琀 㐀 洀攀琀栀漀搀猀 愀瘀愀椀氀愀戀氀攀Ⰰ 渀愀洀攀氀礀㨀㰀戀爀㸀ഀഀ
    ਍ⴀ ㄀⸀ 甀猀椀渀最 琀栀攀 最漀漀搀 漀氀搀 ∀挀爀攀愀琀攀 挀漀渀琀爀漀氀昀椀氀攀∀ 猀琀愀琀攀洀攀渀琀Ⰰ㰀戀爀㸀ഀഀ - 2. using the "expdp" datapump utility,
    ਍ⴀ ㌀⸀ 挀氀漀渀椀渀最 甀猀椀渀最 刀䴀䄀一Ⰰ㰀戀爀㸀ഀഀ - 4. using "transportable tablespaces" method.
    ਍㰀戀爀㸀ഀഀ Here, we will only touch on methods 1&2&3.
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ

    Method 1: using the "create controlfile" statement.

    ਍ഀഀ ਍ഀഀ Here we are not using RMAN, or exp, or expdp, to clone the database. Assuming the database is down,
    ਍圀攀 ∀猀椀洀瀀氀礀∀ 甀猀攀 猀挀瀀 ⠀漀爀 漀琀栀攀爀 挀漀瀀礀 琀漀漀氀⤀Ⰰ 琀漀 挀漀瀀礀 愀氀氀 搀愀琀愀戀愀猀攀 昀椀氀攀猀 昀爀漀洀 匀攀爀瘀攀爀䄀 琀漀 匀攀爀瘀攀爀䈀⸀㰀戀爀㸀ഀഀ Then, we use a script, containing the CREATE CONTROLFILE command, to "revive" the database on the other Server.
    ਍㰀戀爀㸀ഀഀ One drawback is, that the source database needs to be shutdown before the copy phase takes place,
    ਍椀渀 漀爀搀攀爀 琀漀 栀愀瘀攀 挀漀渀猀椀猀琀攀渀琀 昀椀氀攀猀⸀ 匀漀Ⰰ 栀攀爀攀 眀攀 栀愀瘀攀 愀 挀氀攀愀渀氀礀 猀栀甀琀搀漀眀渀 搀愀琀愀戀愀猀攀Ⰰ 愀渀搀 琀栀甀猀㰀戀爀㸀ഀഀ we deal with "cold" database files, which we can easily copy from one Server to the other Server.
    ਍㰀戀爀㸀ഀഀ ਍一漀琀攀㨀ഀഀ A similar, but more elaborate, procedure can even be followed using an open database in archive mode.
    ਍䈀甀琀Ⰰ 猀椀渀挀攀 琀栀椀猀 椀猀 愀 戀椀琀 挀甀洀戀攀爀猀漀洀攀Ⰰ 愀氀琀攀爀渀愀琀椀瘀攀猀 甀猀椀渀最 ∀攀砀瀀搀瀀⼀椀洀瀀搀瀀∀Ⰰ 漀爀 甀猀椀渀最 刀䴀䄀一Ⰰ 愀爀攀 樀甀猀琀 猀椀洀瀀氀礀 戀攀琀琀攀爀⸀㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍ⴀ 伀渀 匀攀爀瘀攀爀 䈀Ⰰ 挀爀攀愀琀攀 愀 猀椀洀椀氀愀爀 搀椀爀攀挀琀漀爀礀 猀琀爀甀挀琀甀爀攀 琀漀 栀漀氀搀 琀栀攀 挀氀漀渀攀✀猀 搀愀琀愀戀愀猀攀 昀椀氀攀猀Ⰰ 愀渀搀 氀漀最昀椀氀攀猀⸀㰀戀爀㸀ഀഀ For example, that could be something like "/data/oradata/test10g" for the database files,
    ਍愀渀搀 猀漀洀攀琀栀椀渀最 氀椀欀攀 ∀⼀搀愀琀愀⼀漀爀愀搀愀琀愀⼀愀搀洀椀渀⼀琀攀猀琀㄀ 最∀ 琀漀 栀漀氀搀 琀栀攀 戀搀甀洀瀀Ⰰ 挀搀甀洀瀀Ⰰ 瀀昀椀氀攀Ⰰ 愀搀甀洀瀀 搀椀爀攀挀琀漀爀椀攀猀⸀㰀戀爀㸀㰀⼀氀椀㸀ഀഀ
    ਍ⴀ 䌀爀攀愀琀攀 愀渀 椀渀椀琀⸀漀爀愀 昀椀氀攀 昀漀爀 吀䔀匀吀㄀ 䜀Ⰰ 甀猀椀渀最 琀栀攀 椀渀椀琀⸀漀爀愀 漀昀 倀刀伀䐀㄀ 䜀⸀ 伀昀挀漀甀爀猀攀Ⰰ 礀漀甀 渀攀攀搀 琀漀 攀搀椀琀㰀戀爀㸀ഀഀ that init.ora later on, so that it correctly has the right databasename, and filesystem paths.
    ਍䤀昀 礀漀甀 搀漀渀✀琀 栀愀瘀攀 愀渀 椀渀椀琀⸀漀爀愀Ⰰ 琀栀攀渀 礀漀甀 猀甀爀攀氀礀 栀愀瘀攀 琀栀攀 猀瀀昀椀氀攀⸀漀爀愀 漀昀 倀刀伀䐀㄀ 䜀⸀㰀戀爀㸀ഀഀ Then, simply create an init.ora, using a similar statement as was shown in section 10, like for example:
    ਍㰀戀爀㸀ഀഀ CREATE PFILE='/tmp/init.ora'
    ਍䘀刀伀䴀 匀倀䘀䤀䰀䔀㴀✀⼀搀愀琀愀⼀漀爀愀搀愀琀愀⼀愀搀洀椀渀⼀瀀爀漀搀㄀ 最⼀瀀昀椀氀攀⼀猀瀀昀椀氀攀⸀漀爀愀✀㬀㰀戀爀㸀ഀഀ
    ਍ⴀ 挀漀瀀礀 琀栀攀 椀渀椀琀⸀漀爀愀 昀椀氀攀 漀瘀攀爀 琀漀 匀攀爀瘀攀爀 䈀Ⰰ 甀猀椀渀最 ∀猀挀瀀∀ ⠀漀爀 猀椀洀椀氀愀爀 挀漀洀洀愀渀搀⤀Ⰰ㰀戀爀㸀ഀഀ to for example "/data/oradata/admin/test10g/pfile".
    ਍㰀戀爀㸀ഀഀ scp init.ora oracle@ServerB:/data/oradata/admin/test10g/pfile
    ਍㰀戀爀㸀ഀഀ - On ServerB, edit the init.ora and change stuff like the database name, the filepaths of the (to be created), ਍挀漀渀琀爀漀氀攀昀椀氀攀猀Ⰰ 琀栀攀 氀漀挀愀琀椀漀渀 漀昀 琀栀攀 ∀戀愀挀欀最爀漀甀渀搀开搀甀洀瀀开搀攀猀琀∀ 攀琀挀⸀⸀㰀戀爀㸀ഀഀ
    ਍ⴀ 伀渀 匀攀爀瘀攀爀䄀Ⰰ 琀栀攀 猀漀甀爀挀攀 洀愀挀栀椀渀攀Ⰰ 渀漀眀 氀攀琀✀猀 挀爀攀愀琀攀 琀栀攀 ∀䌀刀䔀䄀吀䔀 䌀伀一吀刀伀䰀䘀䤀䰀䔀⸀⸀∀ 猀挀爀椀瀀琀⸀㰀戀爀㸀ഀഀ Start a sqlplus session, logon, and use the statement:
    ਍㰀戀爀㸀ഀഀ ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/tmp/cc.sql';
    ਍㰀戀爀㸀ഀഀ This will produce an ascii file, which is editable.
    ਍㰀戀爀㸀ഀഀ - copy the newly created script over to ServerB, for example to the directory
    ਍眀栀攀爀攀 琀栀攀 搀愀琀愀戀愀猀攀昀椀氀攀猀 眀椀氀氀 愀氀猀漀 戀攀 猀琀漀爀攀搀㨀㰀戀爀㸀ഀഀ
    ਍猀挀瀀 挀挀⸀猀焀氀 漀爀愀挀氀攀䀀匀攀爀瘀攀爀䈀㨀⼀搀愀琀愀⼀漀爀愀搀愀琀愀⼀琀攀猀琀㄀ 最㰀戀爀㸀ഀഀ
    ਍ഀഀ - On ServerB, edit the cc.sql script:
    ਍㰀戀爀㸀ഀഀ Usually, the script has two large similar sections, which almost are identical.
    ਍䤀昀 礀漀甀 搀漀 渀漀琀 欀渀漀眀 眀栀愀琀 愀 洀攀愀渀Ⰰ 琀栀攀渀 樀甀猀琀 戀爀漀眀猀攀 琀栀爀漀甀最栀 琀栀攀 猀挀爀椀瀀琀⸀ 䈀甀琀 洀愀礀戀攀 礀漀甀 漀渀氀礀 栀愀瘀攀 漀渀攀 猀攀挀琀椀漀渀⸀㰀戀爀㸀ഀഀ Anyway, just leave one block and get rid of all comments.
    ਍䄀氀猀漀Ⰰ 挀栀愀渀最攀 愀氀氀 昀椀氀攀瀀愀琀栀猀 琀漀 爀攀猀攀洀戀氀攀 琀栀攀 渀攀眀 猀椀琀甀愀琀椀漀渀 愀琀 匀攀爀瘀攀爀䈀⸀㰀戀爀㸀ഀഀ
    ਍䔀猀瀀攀挀椀愀氀氀礀Ⰰ 礀漀甀 渀攀攀搀 琀漀 䐀䔀䰀䔀吀䔀 琀栀攀 氀愀猀琀 氀椀渀攀猀 眀栀椀挀栀 猀栀漀甀氀搀 爀攀猀攀洀戀氀攀 琀栀椀猀㨀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀爀攀搀∀㸀ഀഀ ਍刀䔀䌀伀嘀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 唀匀䤀一䜀 䈀䄀䌀䬀唀倀 䌀伀一吀刀伀䰀䘀䤀䰀䔀㰀戀爀㸀ഀഀ
    ਍䄀䰀吀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 伀倀䔀一 刀䔀匀䔀吀䰀伀䜀匀㬀㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍䴀愀欀攀 猀甀爀攀 琀栀愀琀 琀栀漀猀攀 琀眀漀 氀椀渀攀猀 愀爀攀 最漀渀攀⸀ 䄀氀猀漀Ⰰ 搀漀渀✀琀 栀愀瘀攀 愀渀礀 戀氀愀渀欀 氀椀渀攀猀 椀渀 琀栀攀 猀挀爀椀瀀琀⸀㰀戀爀㸀ഀഀ Get rid of the STARTUP NOMOUNT command too.
    ਍㰀戀爀㸀ഀഀ Your create controlfile script should resemble the one that's shown below:
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ CREATE CONTROLFILE SET DATABASE "TEST10G" RESETLOGS NOARCHIVELOG
    ਍    䴀䄀堀䰀伀䜀䘀䤀䰀䔀匀 ㄀㘀㰀戀爀㸀ഀഀ MAXLOGMEMBERS 3
    ਍    䴀䄀堀䐀䄀吀䄀䘀䤀䰀䔀匀 ㄀  㰀戀爀㸀ഀഀ MAXINSTANCES 8
    ਍    䴀䄀堀䰀伀䜀䠀䤀匀吀伀刀夀 ㈀㤀㈀㰀戀爀㸀ഀഀ LOGFILE
    ਍  䜀刀伀唀倀 ㄀ ✀⼀搀愀琀愀⼀漀爀愀搀愀琀愀⼀琀攀猀琀㄀ 最⼀刀䔀䐀伀 ㄀⸀䰀伀䜀✀  匀䤀娀䔀 㔀 䴀Ⰰ㰀戀爀㸀ഀഀ GROUP 2 '/data/oradata/test10g/REDO02.LOG' SIZE 50M,
    ਍  䜀刀伀唀倀 ㌀ ✀⼀搀愀琀愀⼀漀爀愀搀愀琀愀⼀琀攀猀琀㄀ 最⼀刀䔀䐀伀 ㌀⸀䰀伀䜀✀  匀䤀娀䔀 㔀 䴀㰀戀爀㸀ഀഀ DATAFILE
    ਍  ✀⼀搀愀琀愀⼀漀爀愀搀愀琀愀⼀琀攀猀琀㄀ 最⼀匀夀匀吀䔀䴀 ㄀⸀䐀䈀䘀✀Ⰰ㰀戀爀㸀ഀഀ '/data/oradata/test10g/UNDOTBS01.DBF',
    ਍  ✀⼀搀愀琀愀⼀漀爀愀搀愀琀愀⼀琀攀猀琀㄀ 最⼀匀夀匀䄀唀堀 ㄀⸀䐀䈀䘀✀Ⰰ㰀戀爀㸀ഀഀ '/data/oradata/test10g/USERS01.DBF',
    ਍  ✀⼀搀愀琀愀⼀漀爀愀搀愀琀愀⼀琀攀猀琀㄀ 最⼀䔀堀䄀䴀倀䰀䔀 ㄀⸀䐀䈀䘀✀㰀戀爀㸀ഀഀ CHARACTER SET WE8MSWIN1252
    ਍㬀㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Ofcourse, you may have a lot more datafiles and redologs than my simple example. But make sure, the "structure"
    ਍爀攀愀氀氀礀 爀攀猀攀洀戀氀攀猀 琀栀攀 猀琀爀甀挀琀甀爀攀 愀猀 猀栀漀眀渀 愀戀漀瘀攀Ⰰ 愀渀搀 琀栀愀琀 琀栀攀爀攀 愀爀攀 渀漀 戀氀愀渀欀 氀椀渀攀猀Ⰰ 愀渀搀 琀栀愀琀 琀栀攀 猀挀爀椀瀀琀 樀甀猀琀 猀琀愀爀琀猀㰀戀爀㸀ഀഀ with "CREATE CONTROLFILE..", and that the "RECOVER DATABASE USING BACKUP CONTROLFILE" and "ALTER DATABASE OPEN RESETLOGS"
    ਍氀椀渀攀猀 愀爀攀 一伀吀 琀栀攀爀攀⸀㰀戀爀㸀ഀഀ
    ਍一漀琀攀 琀栀攀 ∀匀䔀吀 䐀䄀吀䄀䈀䄀匀䔀∀ 欀攀礀眀漀爀搀猀Ⰰ 戀攀挀愀甀猀攀 琀栀愀琀✀猀 栀漀眀 礀漀甀 挀愀渀 挀栀愀渀最攀 愀 䐀愀琀愀戀愀猀攀 渀愀洀攀⸀㰀戀爀㸀ഀഀ
    ਍䄀氀猀漀 渀漀琀攀Ⰰ 琀栀愀琀 愀琀 琀栀攀 搀攀猀琀椀渀愀琀椀漀渀 匀攀爀瘀攀爀Ⰰ 琀栀攀 搀愀琀愀搀椀爀攀挀琀漀爀椀攀猀 搀漀攀猀 渀漀琀 䠀䄀嘀䔀 琀漀 戀攀 攀砀愀挀琀氀礀 琀栀攀 猀愀洀攀㰀戀爀㸀ഀഀ as it is on the source Server. For example, if the source machine uses oracle datadirectories like
    ਍⼀甀 ㄀⼀搀愀琀愀Ⰰ ⼀甀 ㈀⼀搀愀琀愀Ⰰ ⼀甀 ㌀⼀搀愀琀愀 攀琀挀⸀⸀Ⰰ 戀甀琀 礀漀甀 搀漀 渀漀琀 栀愀瘀攀 琀栀愀琀 猀琀爀甀挀琀甀爀攀 漀渀 琀栀攀 搀攀猀琀椀渀愀琀椀漀渀Ⰰ㰀戀爀㸀ഀഀ then simply edit the "CREATE CONTROLFILE" script to reflect the correct directories used
    ਍愀琀 琀栀攀 搀攀猀琀椀渀愀琀椀漀渀 匀攀爀瘀攀爀⸀㰀戀爀㸀ഀഀ
    ਍ⴀ 一漀眀 椀琀猀 琀椀洀攀 琀漀 挀漀瀀礀 琀栀攀 搀愀琀愀戀愀猀攀昀椀氀攀猀 漀昀 倀刀伀䐀㄀ 䜀 漀渀 匀攀爀瘀攀爀䄀⸀㰀戀爀㸀ഀഀ Start a sqlplus session and logon. Shutdown the database cleanly using:
    ਍㰀戀爀㸀ഀഀ SQL> shutdown immediate;
    ਍㰀戀爀㸀ഀഀ After the database has been closed, copy all databasefiles (except controlfiles) to ServerB.
    ਍㰀戀爀㸀ഀഀ scp * oracle@ServerB:/data/oradata/test10g/
    ਍㰀戀爀㸀ഀഀ Here I copied all files (database, redolog, and controlfiles) to SeverB.
    ਍䄀琀 匀攀爀瘀攀爀䈀Ⰰ 䤀 挀愀渀 樀甀猀琀 搀攀氀攀琀攀 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀猀 愀昀琀攀爀 琀栀攀 挀漀瀀礀 椀猀 爀攀愀搀礀⸀㰀戀爀㸀ഀഀ
    ਍䄀猀 愀 氀愀猀琀 挀栀攀挀欀Ⰰ 挀栀攀挀欀 琀栀攀 瀀攀爀洀椀猀猀椀漀渀猀 漀渀 琀栀攀 昀椀氀攀猀 愀渀搀 搀椀爀攀挀琀漀爀椀攀猀⸀㰀戀爀㸀ഀഀ ਍䤀昀 琀栀愀琀✀猀 愀氀氀 伀䬀Ⰰ 愀渀搀 琀栀攀 椀渀椀琀⸀漀爀愀 椀猀 伀䬀 愀猀 眀攀氀氀Ⰰ 眀攀 挀愀渀 攀砀攀挀甀琀攀 琀栀攀 䌀刀䔀䄀吀䔀 䌀伀一吀刀伀䰀䘀䤀䰀䔀 猀挀爀椀瀀琀⸀㰀戀爀㸀ഀഀ
    ਍伀渀 匀攀爀瘀攀爀䈀㨀㰀戀爀㸀ഀഀ
    ਍ⴀ 䜀漀 琀漀 琀栀攀 搀愀琀愀戀愀猀攀 搀愀琀愀 搀椀爀攀挀琀漀爀礀㰀戀爀㸀ഀഀ
    ਍挀搀 ⼀搀愀琀愀⼀漀爀愀搀愀琀愀⼀琀攀猀琀㄀ 最㰀戀爀㸀ഀഀ
    ਍ⴀ 匀攀琀 琀栀攀 匀䤀䐀 琀漀 瀀漀椀渀琀 琀漀 吀䔀匀吀㄀ 䜀㨀㰀戀爀㸀ഀഀ
    ਍攀砀瀀漀爀琀 伀刀䄀䌀䰀䔀开匀䤀䐀㴀吀䔀匀吀㄀ 䜀㰀戀爀㸀ഀഀ
    ਍ⴀ 匀琀愀爀琀 猀焀氀瀀氀甀猀⸀㰀戀爀㸀ഀഀ
    ਍猀焀氀瀀氀甀猀 ⼀渀漀氀漀最㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 挀漀渀渀攀挀琀 ⼀ 愀猀 猀礀猀搀戀愀㰀戀爀㸀ഀഀ
    ਍ⴀ 匀琀愀爀琀 琀栀攀 椀渀猀琀愀渀挀攀 甀猀椀渀最 琀栀攀 渀攀眀 椀渀椀琀⸀漀爀愀 昀椀氀攀Ⰰ 戀甀琀 搀漀 渀漀琀 洀漀甀渀琀 琀栀攀 搀愀琀愀戀愀猀攀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀琀愀爀琀甀瀀 渀漀洀漀甀渀琀 瀀昀椀氀攀㴀✀⼀搀愀琀愀⼀漀爀愀搀愀琀愀⼀愀搀洀椀渀⼀琀攀猀琀㄀ 最⼀瀀昀椀氀攀⼀椀渀椀琀⸀漀爀愀✀㰀戀爀㸀ഀഀ
    ਍ⴀ 伀渀攀 琀栀攀 椀渀猀琀愀渀挀攀 栀愀猀 猀琀愀爀琀攀搀Ⰰ 氀攀琀✀猀 挀爀攀愀琀攀 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䀀挀挀⸀琀砀琀㰀戀爀㸀ഀഀ
    ਍䌀漀渀琀爀漀氀 昀椀氀攀 挀爀攀愀琀攀搀⸀㰀戀爀㸀ഀഀ
    ਍圀攀爀攀 搀漀渀攀 ℀ 吀栀攀 吀䔀匀吀㄀ 䜀 搀愀琀愀戀愀猀攀 椀猀 挀爀攀愀琀攀搀 愀渀搀 漀瀀攀渀攀搀⸀㰀戀爀㸀ഀഀ
    ਍䤀昀 礀漀甀 栀愀瘀攀 攀爀爀漀爀猀Ⰰ 椀琀✀猀 甀猀甀愀氀氀礀 搀甀攀 琀漀 眀爀漀渀最 搀椀爀攀挀琀漀爀椀攀猀 愀渀搀 渀愀洀攀猀 椀渀 琀栀攀 椀渀椀琀⸀漀爀愀 昀椀氀攀Ⰰ 漀爀 椀渀 琀栀攀 猀挀爀椀瀀琀⸀㰀戀爀㸀ഀഀ
    ਍一漀琀攀㨀 渀漀琀椀挀攀 琀栀愀琀 䤀 昀椀爀猀琀 眀攀渀琀 琀漀 琀栀攀 搀愀琀愀搀椀爀攀挀琀漀爀礀Ⰰ 眀栀攀爀攀 䤀 猀琀漀爀攀搀 琀栀攀 ∀挀挀⸀猀焀氀∀ 猀挀爀椀瀀琀 愀猀 眀攀氀氀 愀猀 琀栀攀 搀愀琀愀戀愀猀攀昀椀氀攀猀⸀㰀戀爀㸀ഀഀ This avoids a possible error with terminal/character settings, because sometimes it is seen that executing
    ਍愀 猀挀爀椀瀀琀 椀渀 琀栀攀 昀漀爀洀 漀昀 ∀䀀尀瀀愀琀栀尀猀挀爀椀瀀琀∀ 眀栀攀爀攀 琀栀攀 ∀䀀尀∀ 眀漀爀欀猀 渀漀琀 瀀爀漀瀀攀爀氀礀⸀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ Windows:
    ਍㰀戀爀㸀ഀഀ The above example works not only in Unix environments, but for example on Windows as well.
    ਍伀渀氀礀Ⰰ 椀渀 圀椀渀搀漀眀猀 礀漀甀 愀氀猀漀 渀攀攀搀 琀漀 挀爀攀愀琀攀 愀渀 䤀渀猀琀愀渀挀攀 昀椀爀猀琀Ⰰ 戀攀昀漀爀攀 礀漀甀 攀砀攀挀甀琀攀 愀渀礀 猀挀爀椀瀀琀⸀㰀戀爀㸀ഀഀ This is so, because in Windows, any instance is equivalent to a Windows "service".
    ਍䤀渀 圀椀渀搀漀眀猀Ⰰ 甀猀攀 愀 挀漀洀洀愀渀搀 猀椀洀椀氀愀爀 琀漀 琀栀攀 攀砀愀洀瀀氀攀 戀攀氀漀眀Ⰰ 昀椀爀猀琀⸀㰀戀爀㸀ഀഀ
    ਍䌀㨀尀㸀 漀爀愀搀椀洀 ⴀ渀攀眀 ⴀ猀椀搀 吀䔀匀吀㄀ 䜀 ⴀ䤀一吀倀圀䐀 洀礀瀀愀猀猀眀漀爀搀 ⴀ匀吀䄀刀吀䴀伀䐀䔀 䄀唀吀伀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ Cloning a 11g database to another Server:
    ਍㰀戀爀㸀ഀഀ The procedure is almost identical to what we have seen above.
    ਍䠀漀眀攀瘀攀爀Ⰰ 琀栀攀爀攀 愀爀攀 愀 昀攀眀 琀栀椀渀最猀 琀漀 琀愀欀攀 椀渀琀漀 愀挀挀漀甀渀琀⸀㰀戀爀㸀ഀഀ
    ਍㄀⸀ 䄀䐀刀㨀㰀戀爀㸀ഀഀ
    ਍伀渀氀礀Ⰰ 礀漀甀 渀攀攀搀 琀漀 琀愀欀攀 琀栀攀 渀攀眀 䐀䤀䄀䜀一伀匀吀䤀䌀匀 瀀愀爀愀搀椀最洀 椀渀琀漀 愀挀挀漀甀渀琀⸀㰀戀爀㸀ഀഀ Instead of the 9i or 10g like "bdump", "cdump" etc.. log/trace directories, Oracle 11g uses "ADR",
    ਍眀栀椀挀栀 椀猀 猀栀漀爀琀 昀漀爀 䄀甀琀漀洀愀琀椀挀 䐀椀愀最渀漀猀琀椀挀 刀攀瀀漀猀椀琀漀爀礀⸀㰀戀爀㸀ഀഀ
    ਍吀栀攀 愀氀攀爀琀 氀漀最 愀渀搀 愀氀氀 琀爀愀挀攀 昀椀氀攀猀 昀漀爀 戀愀挀欀最爀漀甀渀搀 愀渀搀 猀攀爀瘀攀爀 瀀爀漀挀攀猀猀攀猀 愀爀攀 眀爀椀琀琀攀渀 琀漀 琀栀攀㰀戀爀㸀ഀഀ Automatic Diagnostic Repository (ADR), the location of which is specified by the DIAGNOSTIC_DEST
    ਍椀渀椀琀椀愀氀椀稀愀琀椀漀渀 瀀愀爀愀洀攀琀攀爀⸀ 㰀戀爀㸀ഀഀ
    ਍㈀⸀ 䘀愀猀琀 刀攀挀漀瘀攀爀礀 䄀爀攀愀㨀㰀戀爀㸀ഀഀ
    ਍吀栀攀 䘀氀愀猀栀 刀攀挀漀瘀攀爀礀 愀爀攀愀Ⰰ 椀猀 渀漀眀 挀愀氀氀攀搀 琀栀攀 䘀愀猀琀 爀攀挀漀瘀攀爀礀 䄀爀攀愀⸀㰀戀爀㸀ഀഀ
    ਍伀昀挀漀甀爀猀攀Ⰰ 椀昀 礀漀甀 挀爀攀愀琀攀 愀渀 椀渀椀琀⸀漀爀愀 昀爀漀洀 愀渀 ㄀㄀最 猀瀀昀椀氀攀⸀漀爀愀Ⰰ 礀漀甀 眀漀甀氀搀 栀愀瘀攀 猀攀攀渀 琀栀漀猀攀 搀椀昀昀攀爀攀渀挀攀猀Ⰰ㰀戀爀㸀ഀഀ and you automatically would have created the neccessary structures on the target machine.
    ਍ഀഀ
    ਍㰀戀爀㸀ഀഀ Note that in this procedure, we had the "luxury" to shutdown the source database, so that
    ਍眀攀 栀愀瘀攀 愀 昀甀氀氀礀 挀漀渀猀椀猀琀攀渀琀 猀攀琀 漀昀 昀椀氀攀猀Ⰰ 眀栀椀挀栀 眀攀 挀漀瀀椀攀搀 漀瘀攀爀 琀漀 匀攀爀瘀攀爀䈀⸀㰀戀爀㸀ഀഀ After the copy to ServerB is ready, the original database can be immediately brought online again.
    ਍㰀戀爀㸀ഀഀ So, in this case, we do not need to RECOVER anything.
    ਍㰀戀爀㸀ഀഀ If you cannot close the source database, because it's strictly 24 x 7, or the filecopy is expected
    ਍琀漀 琀愀欀攀 琀漀漀 洀甀挀栀 琀椀洀攀Ⰰ 琀栀攀渀 礀漀甀 挀愀渀 挀漀渀猀椀搀攀爀 愀渀 刀䴀䄀一Ⰰ 漀爀 愀渀 攀砀瀀搀瀀 戀愀猀攀搀 挀氀漀渀椀渀最 瀀爀漀挀攀搀甀爀攀⸀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ

    Method 2: using the "expdp" and "impdp" utilities.

    ਍ഀഀ ਍ഀഀ In this method, the source database stays open and online. However, if it is anticipated
    ਍琀栀愀琀 愀 栀甀最攀 愀洀漀甀渀琀 漀昀 搀愀琀愀 椀猀 椀渀瘀漀氀瘀攀搀Ⰰ 愀渀搀 礀漀甀 洀椀最栀琀 渀漀琀 栀愀瘀攀 猀甀昀昀椀挀椀攀渀琀 猀瀀愀挀攀 昀漀爀 琀栀攀㰀戀爀㸀ഀഀ exportfile, you might consider option 2.3, which avoids using a dump file altogheter.
    ਍㰀戀爀㸀ഀഀ However, using expdp and impdp in the traditional way, that is, using dumpfiles, then
    ਍伀爀愀挀氀攀 渀攀攀搀猀 愀 ∀搀椀爀攀挀琀漀爀礀∀ 漀戀樀攀挀琀⸀ 䤀琀 椀猀 愀 琀爀甀攀 氀漀挀愀琀椀漀渀 漀渀 愀 昀椀氀攀猀礀猀琀攀洀Ⰰ 眀栀椀挀栀㰀戀爀㸀ഀഀ simply needs to be "registered" in the Oracle metadata.
    ਍㰀戀爀㸀ഀഀ Just select a suitable location on some filesystem. In the examples below, I just used
    ਍琀栀攀 ∀⼀栀漀洀攀⼀漀爀愀挀氀攀⼀搀甀洀瀀∀ 搀椀爀攀挀琀漀爀礀⸀㰀戀爀㸀ഀഀ Keep in mind that the directory needs sufficiently free space, enough to hold the
    ਍攀砀瀀漀爀琀昀椀氀攀 ⠀愀琀 猀漀甀爀挀攀 愀渀搀 搀攀猀琀椀渀愀琀椀漀渀 匀攀爀瘀攀爀⤀⸀㰀戀爀㸀ഀഀ
    ਍ⴀ 刀攀最椀猀琀攀爀椀渀最 琀栀攀 搀椀爀攀挀琀漀爀礀 眀椀琀栀椀渀 伀爀愀挀氀攀 ⠀愀琀 琀愀爀最攀琀 愀渀搀 搀攀猀琀椀渀愀琀椀漀渀 匀攀爀瘀攀爀⤀㨀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ ਍匀儀䰀㸀 䌀刀䔀䄀吀䔀 伀刀 刀䔀倀䰀䄀䌀䔀 䐀䤀刀䔀䌀吀伀刀夀 䈀䄀䌀䬀唀倀䐀䤀刀 䄀匀 ✀⼀栀漀洀攀⼀漀爀愀挀氀攀⼀搀甀洀瀀✀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䜀刀䄀一吀 䄀䰀䰀 伀一 䈀䄀䌀䬀唀倀䐀䤀刀 吀伀 倀唀䈀䰀䤀䌀㬀 ⴀⴀ 漀渀氀礀 昀漀爀 琀攀猀琀Ⰰ 漀琀栀攀爀眀椀猀攀 琀椀最栀琀攀渀 猀攀挀甀爀椀琀礀⸀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍甀猀椀渀最 琀栀攀 ∀攀砀瀀搀瀀∀ 愀渀搀 ∀椀洀瀀搀瀀∀ 甀琀椀氀椀琀椀攀猀Ⰰ 栀攀爀攀 琀漀漀Ⰰ 眀攀 挀愀渀 搀椀猀琀椀渀最甀椀猀栀 戀攀琀眀攀攀渀 猀攀瘀攀爀愀氀 挀愀猀攀猀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀㈀⸀㄀ 䔀砀瀀漀爀琀椀渀最 愀渀搀 椀洀瀀漀爀琀椀渀最 琀漀 琀栀攀 猀愀洀攀 猀挀栀攀洀愀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䤀昀 琀栀攀 搀愀琀愀戀愀猀攀 漀戀樀攀挀琀猀 ⠀琀愀戀氀攀猀Ⰰ 椀渀搀攀砀攀猀Ⰰ 瀀愀挀欀愀最攀猀 攀琀挀⸀⸀⤀ 愀爀攀 攀昀昀攀挀琀椀瘀攀氀礀 爀攀猀椀搀椀渀最㰀戀爀㸀ഀഀ in one schema (account), we can choose to export and import the whole database,
    ਍漀爀 樀甀猀琀 琀栀攀 漀戀樀攀挀琀猀 ⠀愀渀搀 搀愀琀愀⤀ 漀昀 琀栀愀琀 㰀䤀㸀漀渀攀㰀⼀䤀㸀 猀挀栀攀洀愀⸀ 䤀渀 琀栀椀猀 挀愀猀攀Ⰰ 眀攀 攀砀瀀搀瀀 樀甀猀琀 琀栀愀琀 猀挀栀攀洀愀⸀㰀戀爀㸀ഀഀ Here, we shall do the latter.
    ਍㰀戀爀㸀ഀഀ
      ਍㰀氀椀㸀 伀渀 戀漀琀栀 匀攀爀瘀攀爀猀Ⰰ 椀昀 渀攀攀搀攀搀Ⰰ 挀爀攀愀琀攀 愀 搀椀爀攀挀琀漀爀礀 漀戀樀攀挀琀 猀椀洀椀氀愀爀 愀猀 琀漀 眀栀愀琀 眀愀猀 猀栀漀眀渀 愀戀漀瘀攀⸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀 伀渀 琀栀攀 琀愀爀最攀琀Ⰰ 挀爀攀愀琀攀 琀栀攀 伀爀愀挀氀攀 搀愀琀愀戀愀猀攀 眀椀琀栀 琀愀戀氀攀猀瀀愀挀攀猀 猀椀洀椀氀愀爀 愀猀 琀漀 眀栀愀琀 琀栀攀 猀漀甀爀挀攀 栀愀猀⸀㰀戀爀㸀ഀഀ This should not be too much work, since a database and it's objects can be simply scripted
      ਍眀椀琀栀 琀漀愀搀 漀爀 漀琀栀攀爀 甀琀椀氀椀琀椀攀猀⸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀䌀爀攀愀琀攀 琀栀攀 猀愀洀攀 猀挀栀攀洀愀 愀琀 琀栀攀 琀愀爀最攀琀 伀爀愀挀氀攀 椀渀猀琀愀氀氀⸀ 匀甀瀀瀀漀猀攀 琀栀攀 猀挀栀攀洀愀 椀猀 ∀䠀刀∀⸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀 䄀琀 琀栀攀 猀漀甀爀挀攀 洀愀挀栀椀渀攀Ⰰ 氀漀最漀渀 愀猀 甀猀攀爀 漀爀愀挀氀攀 愀渀搀 挀栀攀挀欀 椀昀 琀栀攀 ␀伀刀䄀䌀䰀䔀开䠀伀䴀䔀 愀渀搀 ␀伀刀䄀䌀䰀䔀开匀䤀䐀㰀戀爀㸀ഀഀ environment variables are in place. ਍㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀䌀爀攀愀琀攀 琀栀攀 攀砀瀀漀爀琀㨀㰀戀爀㸀ഀഀ
      ਍␀ 攀砀瀀搀瀀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀匀䤀䐀 猀挀栀攀洀愀猀㴀䠀刀 搀椀爀攀挀琀漀爀礀㴀䈀䄀䌀䬀唀倀䐀䤀刀 搀甀洀瀀昀椀氀攀㴀䠀刀⸀搀洀瀀 氀漀最昀椀氀攀㴀攀砀瀀䠀刀⸀氀漀最㰀戀爀㸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀䘀爀漀洀 猀攀爀瘀攀爀䄀Ⰰ 猀挀瀀 琀栀攀 䠀刀⸀搀洀瀀 昀椀氀攀 琀漀 猀攀爀瘀攀爀䈀Ⰰ 昀漀爀 攀砀愀洀瀀氀攀 氀椀欀攀 猀漀㨀㰀戀爀㸀ഀഀ
      ਍嬀漀爀愀挀氀攀䀀匀攀爀瘀攀爀䄀 ⼀栀漀洀攀⼀漀爀愀挀氀攀⼀搀甀洀瀀 ␀崀 猀挀瀀 䠀刀⸀搀洀瀀 漀爀愀挀氀攀䀀匀攀爀瘀攀爀䈀㨀⼀栀漀洀攀⼀漀爀愀挀氀攀⼀搀甀洀瀀㰀戀爀㸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀 䄀琀 琀栀攀 搀攀猀琀椀渀愀琀椀漀渀 匀攀爀瘀攀爀Ⰰ 氀漀最漀渀 愀猀 漀爀愀挀氀攀 愀渀搀 挀栀攀挀欀 琀栀攀 攀渀瘀椀爀漀渀洀攀渀琀 瘀愀爀椀愀戀氀攀猀⸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀 倀攀爀昀漀爀洀 琀栀攀 椀洀瀀漀爀琀㨀㰀戀爀㸀ഀഀ
      ਍␀ 椀洀瀀搀瀀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀匀䤀䐀 猀挀栀攀洀愀猀㴀䠀刀 搀椀爀攀挀琀漀爀礀㴀䈀䄀䌀䬀唀倀䐀䤀刀 搀甀洀瀀昀椀氀攀㴀䠀刀⸀搀洀瀀 氀漀最昀椀氀攀㴀椀洀瀀䠀刀⸀氀漀最㰀戀爀㸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀匀挀愀渀 琀栀攀 ∀椀洀瀀䠀刀⸀氀漀最∀ 氀漀最昀椀氀攀 昀漀爀 攀爀爀漀爀猀⸀㰀⼀氀椀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ 2.2 Exporting and importing to different schema's:
    ਍㰀戀爀㸀ഀഀ If the database objects (tables, indexes, packages etc..) are effectively residing
    ਍椀渀 漀渀攀 猀挀栀攀洀愀 ⠀愀挀挀漀甀渀琀⤀Ⰰ 眀攀 愀最愀椀渀 挀愀渀 猀椀洀瀀氀礀 攀砀瀀搀瀀 樀甀猀琀 琀栀愀琀 漀渀攀 猀挀栀攀洀愀⸀㰀戀爀㸀ഀഀ However, in many cases it is desired that at the target Server, a different schema
    ਍猀栀漀甀氀搀 戀攀 甀猀攀搀⸀ 吀栀椀猀 椀猀 渀漀 瀀爀漀戀氀攀洀⸀ 圀攀 挀愀渀 昀漀氀氀漀眀 愀氀氀 漀昀 琀栀攀 愀戀漀瘀攀Ⰰ 眀椀琀栀 琀栀攀 攀砀挀攀瀀琀椀漀渀㰀戀爀㸀ഀഀ of the statements as shown below.
    ਍㰀戀爀㸀ഀഀ Suppose the source schema is called "HR", and the schema at the target is called "HR2".
    ਍㰀戀爀㸀ഀഀ
      ਍㰀氀椀㸀 䌀爀攀愀琀攀 琀栀攀 攀砀瀀漀爀琀㨀㰀戀爀㸀ഀഀ
      ਍␀ 攀砀瀀搀瀀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀匀䤀䐀 猀挀栀攀洀愀猀㴀䠀刀 搀椀爀攀挀琀漀爀礀㴀䈀䄀䌀䬀唀倀䐀䤀刀 搀甀洀瀀昀椀氀攀㴀䠀刀⸀搀洀瀀 氀漀最昀椀氀攀㴀攀砀瀀䠀刀⸀氀漀最㰀戀爀㸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀䘀爀漀洀 猀攀爀瘀攀爀䄀Ⰰ 猀挀瀀 琀栀攀 䠀刀⸀搀洀瀀 昀椀氀攀 琀漀 猀攀爀瘀攀爀䈀Ⰰ 昀漀爀 攀砀愀洀瀀氀攀 氀椀欀攀 猀漀㨀㰀戀爀㸀ഀഀ
      ਍嬀漀爀愀挀氀攀䀀匀攀爀瘀攀爀䄀 ⼀栀漀洀攀⼀漀爀愀挀氀攀⼀搀甀洀瀀 ␀崀 猀挀瀀 䠀刀⸀搀洀瀀 漀爀愀挀氀攀䀀匀攀爀瘀攀爀䈀㨀⼀栀漀洀攀⼀漀爀愀挀氀攀⼀搀甀洀瀀㰀戀爀㸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀 䄀琀 琀栀攀 搀攀猀琀椀渀愀琀椀漀渀 匀攀爀瘀攀爀Ⰰ 氀漀最漀渀 愀猀 漀爀愀挀氀攀 愀渀搀 挀栀攀挀欀 琀栀攀 攀渀瘀椀爀漀渀洀攀渀琀 瘀愀爀椀愀戀氀攀猀⸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀 倀攀爀昀漀爀洀 琀栀攀 椀洀瀀漀爀琀㨀㰀戀爀㸀ഀഀ
      ਍␀ 椀洀瀀搀瀀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀匀䤀䐀 搀椀爀攀挀琀漀爀礀㴀䈀䄀䌀䬀唀倀䐀䤀刀 搀甀洀瀀昀椀氀攀㴀䠀刀⸀搀洀瀀 氀漀最昀椀氀攀㴀椀洀瀀䠀刀㈀⸀氀漀最 刀䔀䴀䄀倀开匀䌀䠀䔀䴀䄀㴀✀䠀刀✀㨀✀䠀刀㈀✀㰀戀爀㸀㰀⼀氀椀㸀ഀഀ
    ਍ഀഀ With the old "exp" and "imp" utilities, at using "imp", you could use the "FROMUSER" and "TOUSER"
    ਍挀氀愀甀猀攀猀Ⰰ 椀渀 漀爀搀攀爀 琀漀 椀洀瀀漀爀琀 琀栀攀 漀戀樀攀挀琀猀 愀渀搀 搀愀琀愀 琀漀 愀渀漀琀栀攀爀 猀挀栀攀洀愀⸀㰀戀爀㸀ഀഀ
    ਍䘀漀爀 琀栀攀 猀愀洀攀 瀀甀爀瀀漀猀攀Ⰰ 眀椀琀栀 ∀椀洀瀀搀瀀∀Ⰰ 甀猀攀 琀栀攀 ∀刀䔀䴀䄀倀开匀䌀䠀䔀䴀䄀∀ 挀氀愀甀猀攀⸀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ 2.3 Exporting and importing using the network:
    ਍㰀戀爀㸀ഀഀ In sections 2.1 and 2.2, we used "expdp" on the source Server to create an intermediate dumpfile.
    ਍一攀砀琀Ⰰ 眀攀 渀攀攀搀攀搀 琀漀 琀爀愀渀猀昀攀爀 琀栀愀琀 搀甀洀瀀昀椀氀攀 昀爀漀洀 琀栀攀 猀漀甀爀挀攀 匀攀爀瘀攀爀 琀漀 琀栀攀 搀攀猀琀椀渀愀琀椀漀渀 匀攀爀瘀攀爀⸀㰀戀爀㸀ഀഀ Next, we used "impdp" on the destination Server, using the copy of that dumpfile.
    ਍㰀戀爀㸀ഀഀ There might be various reasons why you can't or do not want to use an intermediate dumpfile
    ਍愀琀 愀氀氀⸀㰀戀爀㸀ഀഀ
    ਍吀栀椀猀 椀猀 椀渀搀攀攀搀 瀀漀猀猀椀戀氀攀⸀ 䄀氀氀 眀攀 渀攀攀搀 琀漀 搀漀 椀猀 挀爀攀愀琀攀 愀 ∀搀愀琀愀戀愀猀攀 氀椀渀欀∀ 漀渀 琀栀攀 搀攀猀琀椀渀愀琀椀漀渀 匀攀爀瘀攀爀Ⰰ㰀戀爀㸀ഀഀ that "points" to the Oracle instance at the source Server.
    ਍㰀戀爀㸀ഀഀ In section 7.8, we have seen a simple example of such a "database link".
    ਍䤀昀 渀攀攀搀攀搀Ⰰ 琀愀欀攀 愀 氀漀漀欀 愀琀 猀攀挀琀椀漀渀 㜀⸀㠀 愀最愀椀渀⸀㰀戀爀㸀ഀഀ
    ਍吀漀 愀瀀瀀氀礀 椀琀 椀渀 漀甀爀 猀椀琀甀愀琀椀漀渀Ⰰ 眀攀 猀栀漀甀氀搀 甀猀攀 愀 瀀爀漀挀攀搀甀爀攀 氀椀欀攀 琀栀攀 昀漀氀氀漀眀椀渀最㨀㰀戀爀㸀ഀഀ
    ਍䄀琀 琀栀攀 搀攀猀琀椀渀愀琀椀漀渀 匀攀爀瘀攀爀 䤀渀猀琀愀渀挀攀Ⰰ 挀爀攀愀琀攀 愀 搀愀琀愀戀愀猀攀 氀椀渀欀 眀栀椀挀栀 甀猀攀猀 琀栀攀 猀挀栀攀洀愀 愀琀 琀栀攀 猀漀甀爀挀攀 椀渀猀琀愀渀挀攀⸀㰀戀爀㸀ഀഀ
    ਍䘀漀爀 攀砀愀洀瀀氀攀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 挀爀攀愀琀攀 搀愀琀愀戀愀猀攀 氀椀渀欀 䠀刀䰀䤀一䬀 挀漀渀渀攀挀琀 琀漀 䠀刀 椀搀攀渀琀椀昀椀攀搀 戀礀 㰀䤀㸀瀀愀猀猀眀漀爀搀㰀⼀䤀㸀  甀猀椀渀最 ✀猀漀甀爀挀攀搀戀✀㬀㰀戀爀㸀ഀഀ
    ਍圀漀爀欀椀渀最 昀爀漀洀 琀栀攀 搀攀猀琀椀渀愀琀椀漀渀 猀攀爀瘀攀爀 椀渀猀琀愀渀挀攀Ⰰ 椀琀 猀栀漀甀氀搀 渀漀眀 愀氀爀攀愀搀礀 戀攀 瀀漀猀猀椀戀氀礀 琀漀 焀甀攀爀礀㰀戀爀㸀ഀഀ the tables and views which reside in the HR schema, in the source instance.
    ਍㰀戀爀㸀ഀഀ Now, let's do the import:
    ਍㰀戀爀㸀ഀഀ $ impdp system/password@SID DIRECTORY=BACKUPDIR NETWORK_LINK=HRLINK remap_schema=HR:HR2
    ਍㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ ਍㰀栀㐀㸀䴀攀琀栀漀搀 ㌀㨀 甀猀椀渀最 琀栀攀 刀䴀䄀一 ∀搀甀瀀氀椀挀愀琀攀 搀愀琀愀戀愀猀攀∀ 挀漀洀洀愀渀搀⸀㰀⼀栀㐀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍夀漀甀 挀愀渀 甀猀攀 刀䴀䄀一 琀漀 猀椀洀瀀氀礀 搀甀瀀氀椀挀愀琀攀 愀 搀愀琀愀戀愀猀攀 琀漀 猀漀洀攀 琀愀爀最攀琀 椀渀猀琀愀渀挀攀㰀戀爀㸀ഀഀ on a second Server.
    ਍䄀氀琀栀漀甀最栀 琀栀攀 洀攀琀栀漀搀 椀猀 漀爀椀最椀渀愀氀氀礀 椀渀琀攀渀搀攀搀 琀漀 挀爀攀愀琀攀 愀 匀琀愀渀搀戀礀 搀愀琀愀戀愀猀攀 椀渀 䐀愀琀愀䜀甀愀爀搀Ⰰ 眀攀 挀愀渀 愀氀猀漀㰀戀爀㸀ഀഀ use it to simply duplicate a database, and not configure anything furher for Dataguard. ਍㰀戀爀㸀ഀഀ Suppose you have Server1, with an instance supporting the DB1 database.
    ਍一漀眀Ⰰ 漀渀 匀攀爀瘀攀爀 ㈀Ⰰ 礀漀甀 栀愀瘀攀 椀渀猀琀愀氀氀攀搀 琀栀攀 伀爀愀挀氀攀 搀愀琀愀戀愀猀攀 猀漀昀琀眀愀爀攀 琀漀漀⸀㰀戀爀㸀ഀഀ Suppose it's your intention to create a DB2 database, on Server2, which is a copy of DB1.
    ਍吀栀攀 昀漀氀氀漀眀椀渀最 洀攀琀栀漀搀 洀椀最栀琀 眀漀爀欀 昀漀爀 礀漀甀⸀ 吀栀攀 渀攀砀琀 戀愀猀椀挀 氀椀猀琀椀渀最 瀀爀漀戀愀戀氀礀 渀攀攀搀猀 猀漀洀攀 爀攀昀椀渀攀洀攀渀琀Ⰰ㰀戀爀㸀ഀഀ but the "skeleton" of the method is like this:
    ਍㰀戀爀㸀ഀഀ !! Important: try this first on two Test Servers !!
    ਍㰀戀爀㸀ഀഀ
      ਍㰀氀椀㸀䴀愀欀攀 漀爀 洀漀搀椀昀礀 琀栀攀 匀儀䰀一攀琀 昀椀氀攀猀 ⠀琀渀猀渀愀洀攀猀Ⰰ 氀椀猀琀攀渀攀爀⤀ 漀渀 戀漀琀栀 匀攀爀瘀攀爀猀Ⰰ 猀漀 琀栀愀琀 椀渀 瀀爀椀渀挀椀瀀氀攀㰀戀爀㸀ഀഀ DB1 can "reach" DB2, and the otherway around, using SQLNet identifiers. ਍ഀഀ
    • Copy the init.ora of SRCDB to Server2, to the same location. See section 10 to find out
      ਍栀漀眀 琀漀 挀爀攀愀琀攀 愀渀 椀渀椀琀⸀漀爀愀 昀爀漀洀 愀 猀瀀昀椀氀攀⸀漀爀愀⸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀䌀爀攀愀琀攀 愀 搀椀爀攀挀琀漀爀礀 猀琀爀甀挀琀甀爀攀 漀渀 匀攀爀瘀攀爀㈀Ⰰ 猀椀洀椀氀愀爀 琀漀 眀栀愀琀 攀砀椀猀琀猀 漀渀 匀攀爀瘀攀爀㄀Ⰰ 眀椀琀栀 爀攀猀瀀攀挀琀 琀漀㰀戀爀㸀ഀഀ database files, logfiles etc..
    • ਍ഀഀ
    • On Server2, you also use the same "oracle" account and group (uid,gid), just as it is on Server1.
    • ਍ഀഀ
    • chown all datadirectories etc.. to the user:group, just as it is on Server1.
    • ਍ഀഀ
    • On Server 2, edit the "init.ora" to reflect the situation as it will be on Server2, that is,
      ਍搀愀琀愀戀愀猀攀 渀愀洀攀Ⰰ 挀漀渀琀爀漀氀昀椀氀攀 氀漀挀愀琀椀漀渀猀Ⰰ 攀琀挀⸀⸀㰀⼀氀椀㸀ഀഀ ਍㰀氀椀㸀䤀琀 眀漀甀氀搀 戀攀 最爀攀愀琀 椀昀 礀漀甀 愀氀爀攀愀搀礀 甀猀攀搀 愀 瀀愀猀猀眀漀爀搀 昀椀氀攀 漀渀 匀攀爀瘀攀爀㄀⸀ 䤀昀 猀漀Ⰰ 挀爀攀愀琀攀 漀渀攀 琀漀漀 漀渀 匀攀爀瘀攀爀㈀㰀戀爀㸀ഀഀ using the same password for sys.
    • ਍ഀഀ
    • start the "auxilary instance" on Server2, using "startup nomount pfile=path_to_pfile"
    • ਍㰀氀椀㸀 一漀眀 猀琀愀爀琀 愀渀 刀䴀䄀一 猀攀猀猀椀漀渀 氀椀欀攀 猀漀㨀㰀戀爀㸀ഀഀ
      ਍刀䴀䄀一㸀 挀漀渀渀攀挀琀 琀愀爀最攀琀 猀礀猀䀀䐀䈀㄀㰀戀爀㸀ഀഀ RMAN> connect catalog catalogowner@catalogdb
      ਍刀䴀䄀一㸀 挀漀渀渀攀挀琀 愀甀砀椀氀椀愀爀礀 猀礀猀䀀䐀䈀㈀㰀戀爀㸀ഀഀ RMAN> duplicate target database for standby from active database;
      ਍㰀⼀氀椀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ Due to the "for standby" keywords, the database will get a unique DBID.
    ਍㰀戀爀㸀ഀഀ Per default, RMAN does not recover the database. Use the DORECOVER option of the DUPLICATE command
    ਍琀漀 猀瀀攀挀椀昀礀 琀栀愀琀 刀䴀䄀一 猀栀漀甀氀搀 爀攀挀漀瘀攀爀 琀栀攀 猀琀愀渀搀戀礀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ Or you can recover using archived logs.
    ਍㰀戀爀㸀ഀഀ In an RMAN For using the active database option, in a Data Guard setup, a script like below can be used:
    ਍㰀戀爀㸀ഀഀ RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE
    ਍䐀伀刀䔀䌀伀嘀䔀刀㰀戀爀㸀ഀഀ SPFILE
    ਍匀䔀吀 ∀搀戀开甀渀椀焀甀攀开渀愀洀攀∀㴀∀匀伀唀吀䠀∀ 䌀伀䴀䴀䔀一吀 ✀✀吀栀攀 匀琀愀渀搀戀礀✀✀㰀戀爀㸀ഀഀ SET LOG_ARCHIVE_DEST_2="service=SOUTH ASYNC REGISTER
    ਍嘀䄀䰀䤀䐀开䘀伀刀㴀⠀漀渀氀椀渀攀开氀漀最昀椀氀攀Ⰰ瀀爀椀洀愀爀礀开爀漀氀攀⤀∀㰀戀爀㸀ഀഀ SET FAL_SERVER="CENTRAL" COMMENT "Is primary"
    ਍一伀䘀䤀䰀䔀一䄀䴀䔀䌀䠀䔀䌀䬀㬀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ ਍ഀഀ

    29. A FEW NOTES ON 10G/11G ADDM and AWR:

    ਍ഀഀ ਍ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 29.1 ADDM, AWR and ASH: What is it?
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ ਍伀爀愀挀氀攀 䐀椀愀最渀漀猀琀椀挀猀 倀愀挀欀 ㄀㄀最 ⠀愀渀搀 ㄀ 最⤀ 椀渀挀氀甀搀攀猀 愀 猀攀氀昀ⴀ搀椀愀最渀漀猀琀椀挀 攀渀最椀渀攀 戀甀椀氀琀 爀椀最栀琀 椀渀琀漀 琀栀攀㰀戀爀㸀ഀഀ Oracle Database 11g kernel, called the "Automatic Database Diagnostic Monitor" ADDM.
    ਍㰀戀爀㸀ഀഀ To enable ADDM to accurately diagnose performance problems, it is important that
    ਍椀琀 栀愀猀 搀攀琀愀椀氀攀搀 欀渀漀眀氀攀搀最攀 漀昀 搀愀琀愀戀愀猀攀 愀挀琀椀瘀椀琀椀攀猀 愀渀搀 琀栀攀 眀漀爀欀氀漀愀搀 琀栀攀 搀愀琀愀戀愀猀攀 椀猀㰀戀爀㸀ഀഀ supporting. Oracle Diagnostics Pack 11g (and 10g), therefore, includes a built in repository
    ਍眀椀琀栀椀渀 攀瘀攀爀礀 伀爀愀挀氀攀 ㄀㄀最 ⠀愀渀搀 ㄀ 最⤀ 䐀愀琀愀戀愀猀攀Ⰰ 挀愀氀氀攀搀 㰀䈀㸀∀䄀甀琀漀洀愀琀椀挀 圀漀爀欀氀漀愀搀 刀攀瀀漀猀椀琀漀爀礀∀㰀⼀䈀㸀 ⠀䄀圀刀⤀Ⰰ㰀戀爀㸀ഀഀ which contains operational statistics about that particular database and other relevant
    ਍椀渀昀漀爀洀愀琀椀漀渀⸀ 䄀琀 爀攀最甀氀愀爀 椀渀琀攀爀瘀愀氀猀 ⠀漀渀挀攀 愀渀 栀漀甀爀 戀礀 搀攀昀愀甀氀琀⤀Ⰰ 琀栀攀 䐀愀琀愀戀愀猀攀 琀愀欀攀猀 愀㰀戀爀㸀ഀഀ snapshot of all its vital statistics and workload information and stores them in AWR,
    ਍愀渀搀 爀攀琀愀椀渀猀 琀栀攀 猀琀愀琀椀猀琀椀挀猀 椀渀 琀栀攀 眀漀爀欀氀漀愀搀 爀攀瀀漀猀椀琀漀爀礀 昀漀爀 㠀 搀愀礀猀⸀㰀戀爀㸀ഀഀ Also, by default, ADDM runs every hour to analyze snapshots taken by AWR during that period.
    ਍㰀戀爀㸀ഀഀ Per default, all AWR objects are stored in the SYSAUX tablespace.
    ਍㰀戀爀㸀ഀഀ Note: for people familiar with older Oracle versions: ADDM and AWR resembles an strongly enhanced
    ਍愀渀搀 愀甀琀漀洀愀琀椀挀愀氀氀礀 椀洀瀀氀攀洀攀渀琀攀搀 ∀匀吀䄀吀匀倀䄀䌀䬀∀⸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍匀漀Ⰰ 䄀䐀䐀䴀 攀砀愀洀椀渀攀猀 愀渀搀 愀渀愀氀礀稀攀猀 搀愀琀愀 挀愀瀀琀甀爀攀搀 椀渀 琀栀攀 䄀甀琀漀洀愀琀椀挀 圀漀爀欀氀漀愀搀 刀攀瀀漀猀椀琀漀爀礀 ⠀䄀圀刀⤀ 琀漀 搀攀琀攀爀洀椀渀攀 㰀戀爀㸀ഀഀ possible performance problems in Oracle Database. ADDM then locates the root causes of the performance problems,
    ਍瀀爀漀瘀椀搀攀猀 爀攀挀漀洀洀攀渀搀愀琀椀漀渀猀 昀漀爀 挀漀爀爀攀挀琀椀渀最 琀栀攀洀Ⰰ 愀渀搀 焀甀愀渀琀椀昀椀攀猀 琀栀攀 攀砀瀀攀挀琀攀搀 戀攀渀攀昀椀琀猀⸀ 㰀戀爀㸀ഀഀ
    ਍䄀 欀攀礀 挀漀洀瀀漀渀攀渀琀 漀昀 䄀圀刀Ⰰ 椀猀 䄀挀琀椀瘀攀 匀攀猀猀椀漀渀 䠀椀猀琀漀爀礀 ⠀䄀匀䠀⤀⸀ 䄀匀䠀 猀愀洀瀀氀攀猀 琀栀攀㰀戀爀㸀ഀഀ current state of all active sessions every second and stores it in memory. The data
    ਍挀漀氀氀攀挀琀攀搀 椀渀 洀攀洀漀爀礀 挀愀渀 戀攀 愀挀挀攀猀猀攀搀 戀礀 猀礀猀琀攀洀 瘀椀攀眀猀⸀ 吀栀椀猀 猀愀洀瀀氀攀搀 搀愀琀愀 椀猀 愀氀猀漀㰀戀爀㸀ഀഀ pushed into AWR every hour for the purposes of performance diagnostics.
    ਍㰀戀爀㸀ഀഀ Gathering database statistics using AWR is enabled by default and is controlled by the STATISTICS_LEVEL initialization parameter.
    ਍吀栀攀 匀吀䄀吀䤀匀吀䤀䌀匀开䰀䔀嘀䔀䰀 瀀愀爀愀洀攀琀攀爀 猀栀漀甀氀搀 戀攀 猀攀琀 琀漀 吀夀倀䤀䌀䄀䰀 漀爀 䄀䰀䰀 琀漀 攀渀愀戀氀攀 猀琀愀琀椀猀琀椀挀猀 最愀琀栀攀爀椀渀最 戀礀 䄀圀刀⸀ 㰀戀爀㸀ഀഀ The default setting is TYPICAL. Setting the STATISTICS_LEVEL parameter to BASIC disables many Oracle Database features,
    ਍椀渀挀氀甀搀椀渀最 䄀圀刀Ⰰ 愀渀搀 椀猀 渀漀琀 爀攀挀漀洀洀攀渀搀攀搀⸀ 㰀戀爀㸀ഀഀ
    ਍伀瘀攀爀瘀椀攀眀 䄀爀挀栀椀琀攀挀琀甀爀攀㨀㰀戀爀㸀ഀഀ
    ਍㰀椀洀最 猀爀挀㴀∀愀搀搀洀愀眀爀⸀樀瀀最∀ 愀氀椀最渀㴀∀挀攀渀琀爀攀∀⼀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 29.2 Relevant INITIALIZATION Parameters:
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍ഀഀ
    ਍ഀഀ 1. 10g/11g: STATISTICS_LEVEL
    ਍㰀戀爀㸀ഀഀ ਍匀吀䄀吀䤀匀吀䤀䌀匀开䰀䔀嘀䔀䰀 㴀 笀 䄀䰀䰀 簀 吀夀倀䤀䌀䄀䰀 簀 䈀䄀匀䤀䌀 紀㰀戀爀㸀ഀഀ Default: TYPICAL
    ਍㰀戀爀㸀ഀഀ STATISTICS_LEVEL specifies the level of collection for database and operating system statistics.
    ਍吀栀攀 伀爀愀挀氀攀 䐀愀琀愀戀愀猀攀 挀漀氀氀攀挀琀猀 琀栀攀猀攀 猀琀愀琀椀猀琀椀挀猀 昀漀爀 愀 瘀愀爀椀攀琀礀 漀昀 瀀甀爀瀀漀猀攀猀Ⰰ 椀渀挀氀甀搀椀渀最 洀愀欀椀渀最 猀攀氀昀ⴀ洀愀渀愀最攀洀攀渀琀 搀攀挀椀猀椀漀渀猀⸀㰀戀爀㸀ഀഀ
    ਍吀栀攀 搀攀昀愀甀氀琀 猀攀琀琀椀渀最 漀昀 吀夀倀䤀䌀䄀䰀 攀渀猀甀爀攀猀 挀漀氀氀攀挀琀椀漀渀 漀昀 愀氀氀 洀愀樀漀爀 猀琀愀琀椀猀琀椀挀猀 爀攀焀甀椀爀攀搀 昀漀爀 搀愀琀愀戀愀猀攀 㰀戀爀㸀ഀഀ self-management functionality and provides best overall performance.
    ਍㰀戀爀㸀ഀഀ When the STATISTICS_LEVEL parameter is set to ALL, additional statistics are added to the set of statistics
    ਍挀漀氀氀攀挀琀攀搀 眀椀琀栀 琀栀攀 吀夀倀䤀䌀䄀䰀 猀攀琀琀椀渀最⸀ 吀栀攀 愀搀搀椀琀椀漀渀愀氀 猀琀愀琀椀猀琀椀挀猀 愀爀攀 琀椀洀攀搀 伀匀 猀琀愀琀椀猀琀椀挀猀 愀渀搀 瀀氀愀渀 攀砀攀挀甀琀椀漀渀 猀琀愀琀椀猀琀椀挀猀⸀㰀戀爀㸀ഀഀ
    ਍匀攀琀琀椀渀最 琀栀攀 匀吀䄀吀䤀匀吀䤀䌀匀开䰀䔀嘀䔀䰀 瀀愀爀愀洀攀琀攀爀 琀漀 䈀䄀匀䤀䌀 搀椀猀愀戀氀攀猀 琀栀攀 挀漀氀氀攀挀琀椀漀渀 漀昀 洀愀渀礀 漀昀 琀栀攀 椀洀瀀漀爀琀愀渀琀 猀琀愀琀椀猀琀椀挀猀 㰀戀爀㸀ഀഀ required by Oracle Database features and functionality.
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㈀⸀ ㄀㄀最㨀 䌀伀一吀刀伀䰀开䴀䄀一䄀䜀䔀䴀䔀一吀开倀䄀䌀䬀开䄀䌀䌀䔀匀匀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍吀栀攀 䌀伀一吀刀伀䰀开䴀䄀一䄀䜀䔀䴀䔀一吀开倀䄀䌀䬀开䄀䌀䌀䔀匀匀 瀀愀爀愀洀攀琀攀爀 ⠀㄀㄀最Ⰰ 渀漀琀 ㄀ 最⤀ 猀瀀攀挀椀昀椀攀猀 眀栀椀挀栀 漀昀 琀栀攀 匀攀爀瘀攀爀 䴀愀渀愀最攀愀戀椀氀椀琀礀 倀愀挀欀猀 猀栀漀甀氀搀 戀攀 愀挀琀椀瘀攀⸀ 㰀戀爀㸀ഀഀ
    ਍ⴀ 吀栀攀 䐀䤀䄀䜀一伀匀吀䤀䌀 瀀愀挀欀 椀渀挀氀甀搀攀猀 䄀圀刀Ⰰ 䄀䐀䐀䴀Ⰰ 愀渀搀 猀漀 漀渀⸀ 㰀戀爀㸀ഀഀ - The TUNING pack includes SQL Tuning Advisor, SQLAccess Advisor, and so on.
    ਍ 㰀戀爀㸀ഀഀ A license for DIAGNOSTIC is required for enabling the TUNING pack.
    ਍ 㰀戀爀㸀ഀഀ CONTROL_MANAGEMENT_PACK_ACCESS = { NONE | DIAGNOSTIC | DIAGNOSTIC+TUNING }
    ਍䐀攀昀愀甀氀琀㨀 䐀䤀䄀䜀一伀匀吀䤀䌀⬀吀唀一䤀一䜀 㰀戀爀㸀ഀഀ
    ਍䤀昀 猀攀琀 琀漀 一伀一䔀Ⰰ 琀栀漀猀攀 昀攀愀琀甀爀攀猀 愀爀攀 猀眀椀琀挀栀攀搀 漀昀昀⸀ 㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 29.3 How you can Interact or use ADDM:
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀漀氀㸀ഀഀ
  • Using Enterprise Manager Grid or DB Control
  • ਍㰀氀椀㸀唀猀椀渀最 倀䰀匀儀䰀 䄀倀䤀 䐀䈀䴀匀 瀀愀挀欀愀最攀猀㰀⼀氀椀㸀ഀഀ
  • Ready supplied scripts (that will ask for parameters, for example start and end snapshot id's)
    ਍   氀椀欀攀 琀栀攀 猀挀爀椀瀀琀 ∀䀀㼀⼀爀搀戀洀猀⼀愀搀洀椀渀⼀愀搀搀洀爀瀀琀∀㰀⼀氀椀㸀ഀഀ
  • View the many DBA_ADDM* and DBA_ADVISOR* views
  • ਍㰀⼀漀氀㸀ഀഀ ਍㴀㸀 唀猀椀渀最 琀栀攀 䔀渀琀攀爀瀀爀椀猀攀 䴀愀渀愀最攀爀 椀猀 琀栀攀 洀漀猀琀 攀愀猀礀 眀愀礀⸀ 䠀攀爀攀 礀漀甀 挀愀渀 椀洀洀攀搀椀愀琀攀氀礀 猀攀攀 琀栀攀 ∀䄀䐀䐀䴀 昀椀渀搀椀渀最猀∀Ⰰ 愀猀 猀栀漀眀渀㰀戀爀㸀ഀഀ in the figure below. Also, using the EM, you can create and otherwise manage AWR snapshots.
    ਍㰀戀爀㸀ഀഀ
    ਍唀猀椀渀最 䄀䐀䐀䴀 瘀椀愀 琀栀攀 䔀渀琀攀爀瀀爀椀猀攀 䴀愀渀愀最攀爀 㨀㰀戀爀㸀ഀഀ
    ਍㰀椀洀最 猀爀挀㴀∀愀搀搀洀愀眀爀开㈀⸀樀瀀最∀ 愀氀椀最渀㴀∀挀攀渀琀爀攀∀⼀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ => Using PLSQL API DBMS Packages:
    ਍㰀戀爀㸀ഀഀ There are many packages for controlling ADDM and AWR.
    ਍䠀攀爀攀 椀猀 愀 瘀攀爀礀 猀椀洀瀀氀攀 攀砀愀洀瀀氀攀 漀渀 栀漀眀 琀漀 愀渀愀氀礀稀攀 琀栀攀 搀愀琀愀戀愀猀攀Ⰰ 甀猀椀渀最 琀眀漀 猀渀愀瀀猀栀漀琀猀Ⰰ 愀渀搀 栀漀眀 琀漀 爀攀琀爀椀攀瘀攀㰀戀爀㸀ഀഀ the report.
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ DBMS_ADDM.ANALYZE_DB (
    ਍   琀愀猀欀开渀愀洀攀           䤀一 伀唀吀 嘀䄀刀䌀䠀䄀刀㈀Ⰰ㰀戀爀㸀ഀഀ begin_snapshot IN NUMBER,
    ਍   攀渀搀开猀渀愀瀀猀栀漀琀        䤀一     一唀䴀䈀䔀刀Ⰰ㰀戀爀㸀ഀഀ db_id IN NUMBER := NULL);
    ਍㰀戀爀㸀ഀഀ var tname VARCHAR2(60);
    ਍䈀䔀䜀䤀一⸀㰀戀爀㸀ഀഀ :tname := 'my_database_analysis_mode_task';
    ਍  䐀䈀䴀匀开䄀䐀䐀䴀⸀䄀一䄀䰀夀娀䔀开䐀䈀⠀㨀琀渀愀洀攀Ⰰ ㄀㄀Ⰰ ㄀㈀⤀㬀㰀戀爀㸀ഀഀ END.
    ਍㰀戀爀㸀ഀഀ To see a report:
    ਍㰀戀爀㸀ഀഀ SET LONG 100000
    ਍匀䔀吀 倀䄀䜀䔀匀䤀娀䔀 㔀    㰀戀爀㸀ഀഀ SELECT DBMS_ADDM.GET_REPORT(:tname) FROM DUAL;
    ਍ഀഀ ਍ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍ഀഀ

    30. A FEW connect STRING EXAMPLES:

    ਍ഀഀ ਍ഀഀ Just a few examples:
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㴀㸀 刀䴀䄀一 ⬀ 吀愀爀最攀琀 搀愀琀愀戀愀猀攀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍ഀഀ $ export ORACLE_SID=PROD
    ਍␀ 爀洀愀渀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 挀漀渀渀攀挀琀 琀愀爀最攀琀 ⼀㰀戀爀㸀ഀഀ RMAN> connect target sys/password
    ਍刀䴀䄀一㸀 挀漀渀渀攀挀琀 琀愀爀最攀琀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀匀䤀䐀㰀戀爀㸀ഀഀ RMAN> connect catalog username/password@catalog
    ਍刀䴀䄀一㸀 挀漀渀渀攀挀琀 琀愀爀最攀琀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀匀䤀䐀 挀愀琀愀氀漀最 爀洀愀渀⼀爀洀愀渀䀀刀䌀䄀吀㰀戀爀㸀ഀഀ
    ਍␀ 爀洀愀渀 琀愀爀最攀琀 猀礀猀⼀瀀愀猀猀眀漀爀搀䀀瀀爀漀搀㄀ 挀愀琀愀氀漀最 爀洀愀渀⼀爀洀愀渀䀀爀挀愀琀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀㴀㸀 䌀漀渀渀攀挀琀 搀愀琀愀戀愀猀攀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ⴀ㸀 唀猀椀渀最 渀漀氀漀最 愀渀搀 瀀爀漀瘀椀搀攀 挀爀攀搀攀渀琀椀愀氀猀 氀愀琀攀爀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍␀ 猀焀氀瀀氀甀猀 ⼀渀漀氀漀最㰀戀爀㸀ഀഀ SQL> connect / as sysdba
    ਍㰀戀爀㸀ഀഀ $ sqlplus /nolog
    ਍匀儀䰀㸀 挀漀渀渀攀挀琀 猀礀猀⼀瀀愀猀猀眀漀爀搀 愀猀 猀礀猀搀戀愀㰀戀爀㸀ഀഀ SQL> connect sys/password@TEST11g as sysdba
    ਍㰀戀爀㸀ഀഀ connect / AS sysdba
    ਍挀漀渀渀攀挀琀 ⼀ 䄀匀 猀礀猀漀瀀攀爀㰀戀爀㸀ഀഀ connect /@net_service_name AS sysdba
    ਍挀漀渀渀攀挀琀 ⼀䀀渀攀琀开猀攀爀瘀椀挀攀开渀愀洀攀 䄀匀 猀礀猀漀瀀攀爀㰀戀爀㸀ഀഀ
    ਍刀䔀䴀伀吀䔀开䰀伀䜀䤀一开倀䄀匀匀圀伀刀䐀䘀䤀䰀䔀㴀攀砀挀氀甀猀椀瘀攀㰀戀爀㸀ഀഀ
    ਍䜀爀愀渀琀 甀猀攀爀 猀挀漀琀琀 匀夀匀䐀䈀䄀⸀㰀戀爀㸀ഀഀ
    ਍䌀伀一一䔀䌀吀 猀挀漀琀琀⼀琀椀最攀爀 䄀匀 匀夀匀䐀䈀䄀ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ⴀ㸀 䌀愀氀氀椀渀最 猀焀氀瀀氀甀猀 昀爀漀洀 伀匀 瀀爀漀洀瀀琀 愀渀搀 瀀爀漀瘀椀搀攀 挀爀攀搀攀渀琀椀愀氀猀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍␀ 猀焀氀瀀氀甀猀 猀礀猀⼀瀀愀猀猀眀漀爀搀 愀猀 猀礀猀搀戀愀㰀戀爀㸀ഀഀ $ sqlplus sys/password@SID as sysdba
    ਍␀ 猀焀氀瀀氀甀猀 ✀⼀ 愀猀 猀礀猀搀戀愀✀ 㰀戀爀㸀ഀഀ
    ਍␀ 猀焀氀瀀氀甀猀 甀猀攀爀渀愀洀攀䀀尀ᴀ洠礀栀漀猀琀㨀㄀㔀㈀㈀⼀漀爀挀氀尀ᴀ㰠戀爀㸀ഀഀ
    ਍愀氀戀攀爀琀䀀∀搀戀栀漀猀琀⸀攀砀愀洀瀀氀攀⸀挀漀洀⼀漀爀挀氀⸀攀砀愀洀瀀氀攀⸀挀漀洀∀㰀戀爀㸀ഀഀ albert@"192.0.2.1/orcl.example.com"
    ਍愀氀戀攀爀琀䀀∀嬀㈀  ㄀㨀 䐀䈀㠀㨀 㨀 㨀㨀㈀  䌀㨀㐀㄀㜀䄀崀⼀漀爀挀氀⸀攀砀愀洀瀀氀攀⸀挀漀洀∀㰀戀爀㸀ഀഀ ਍ഀഀ
    ਍㰀戀爀㸀ഀഀ -> No tnsnames.ora:
    ਍㰀戀爀㸀ഀഀ $ sqlplus user/password@(description=(address_list=(address=.......SID)))
    ਍␀ 猀焀氀瀀氀甀猀 ∀甀猀攀爀⼀瀀愀猀猀眀漀爀搀䀀⠀䐀䔀匀䌀刀䤀倀吀䤀伀一㴀⠀䄀䐀䐀刀䔀匀匀㴀⠀倀刀伀吀伀䌀伀䰀㴀吀䌀倀⤀⠀䠀漀猀琀㴀栀漀猀琀渀愀洀攀⸀渀攀琀眀漀爀欀⤀⠀倀漀爀琀㴀㄀㔀㈀㄀⤀⤀⠀䌀伀一一䔀䌀吀开䐀䄀吀䄀㴀⠀匀䤀䐀㴀爀攀洀漀琀攀开匀䤀䐀⤀⤀⤀∀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍ⴀ㸀 䘀爀漀洀 愀 猀栀攀氀氀 猀挀爀椀瀀琀㨀㰀戀爀㸀ഀഀ
    ਍␀伀刀䄀䌀䰀䔀开䠀伀䴀䔀⼀戀椀渀⼀猀焀氀瀀氀甀猀 ⴀ猀 ∀⼀ 愀猀 猀礀猀搀戀愀∀ 㰀㰀䔀伀䘀 ㄀㸀 ␀琀洀瀀开昀椀氀攀 ㈀㸀㄀㰀戀爀㸀ഀഀ set heading off feedback off
    ਍   眀栀攀渀攀瘀攀爀 猀焀氀攀爀爀漀爀 攀砀椀琀㰀戀爀㸀ഀഀ select 'DB_NAME=' || name from v\$database;
    ਍   ⸀⸀ ⌀ 瀀漀猀猀椀戀氀攀 漀琀栀攀爀 猀琀甀昀昀㰀戀爀㸀ഀഀ exit
    ਍䔀伀䘀㰀戀爀㸀ഀഀ
    ਍␀ 猀焀氀瀀氀甀猀 ⼀渀漀氀漀最 㰀㰀 䔀伀䘀㰀戀爀㸀ഀഀ connect / as sysdba
    ਍猀琀愀爀琀甀瀀㰀戀爀㸀ഀഀ EOF
    ਍ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍ഀഀ

    31. UNSTRUCTURED PLSQL .txt FILE:

    ਍ഀഀ ਍ഀഀ Quite some time ago, I created (or compiled actually) a note that touches on PLSQL.
    ਍䤀琀✀猀 焀甀椀琀攀 漀氀搀Ⰰ 戀甀琀 猀琀椀氀氀 栀愀猀 焀甀椀琀攀 渀椀挀攀 椀渀昀漀Ⰰ 愀渀搀 攀砀愀洀瀀氀攀猀Ⰰ 䤀 戀攀氀椀攀瘀攀⸀㰀戀爀㸀ഀഀ
    ਍䤀 礀漀甀 眀漀甀氀搀 氀椀欀攀 琀漀 琀爀礀 椀琀Ⰰ 琀栀攀渀 甀猀攀 㰀愀 栀爀攀昀㴀∀瀀氀猀焀氀⸀琀砀琀∀㸀琀栀椀猀 氀椀渀欀⸀㰀⼀愀㸀㰀戀爀㸀ഀഀ ਍ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍ഀഀ ਍ഀഀ

    32. HOW TO SOLVE BLOCK CORRUPTION:

    ਍ഀഀ ਍ഀഀ ਍吀栀攀爀攀 愀爀攀 猀攀瘀攀爀愀氀 琀漀漀氀猀 琀漀 搀攀琀攀挀琀Ⰰ 愀渀搀 ∀猀漀氀瘀攀∀Ⰰ 伀爀愀挀氀攀 戀氀漀挀欀 挀漀爀爀甀瀀琀椀漀渀猀⸀㰀戀爀㸀ഀഀ Among which are:
    ਍㰀漀氀㸀ഀഀ
  • The "dbv" OS prompt utility, to "scan" files.
  • ਍㰀氀椀㸀吀栀攀 匀儀䰀 猀琀愀琀攀洀攀渀琀 ∀䄀一䄀䰀夀娀䔀 吀䄀䈀䰀䔀 嬀琀愀戀氀攀开渀愀洀攀崀 嘀䄀䰀䤀䐀䄀吀䔀 匀吀刀唀䌀吀唀刀䔀∀ ⠀眀椀琀栀 漀瀀琀椀漀渀愀氀 挀氀愀甀猀攀猀 氀椀猀琀攀搀⤀⸀㰀⼀氀椀㸀ഀഀ
  • Viewing rman or expdp logs when creating backups.
  • ਍㰀氀椀㸀匀漀洀攀 瘀␀ 愀渀搀 䐀䈀䄀开 瘀椀攀眀猀Ⰰ 氀椀欀攀 ∀嘀␀䐀䄀吀䄀䈀䄀匀䔀开䈀䰀伀䌀䬀开䌀伀刀刀唀倀吀䤀伀一∀⸀㰀⼀氀椀㸀ഀഀ
  • Inspecting the logging/diagnosing facility (watching ORA-600, ORA-01578, ORA-01110 entries).
  • ਍㰀氀椀㸀攀砀攀挀甀琀椀渀最 琀栀攀 倀䰀匀儀䰀 瀀爀漀挀攀搀甀爀攀 䐀䈀䴀匀开刀䔀倀䄀䤀刀⸀匀䬀䤀倀开䌀伀刀刀唀倀吀开䈀䰀伀䌀䬀匀⠀⤀ 愀猀 愀 焀甀椀挀欀 昀椀砀⸀㰀⼀氀椀㸀ഀഀ
  • executing the PLSQL procedure DBMS_REPAIR.FIX_CORRUPT_BLOCKS() to try to repair.
  • ਍㰀氀椀㸀唀猀椀渀最 琀栀攀 匀䔀吀 䔀嘀䔀一吀猀 瀀愀爀愀洀攀琀攀爀 琀漀 猀欀椀瀀 琀爀漀甀戀氀攀猀漀洀攀 戀氀漀挀欀猀⸀㰀⼀氀椀㸀ഀഀ
  • Historically, in the past you could use the "BBED" utility.
  • ਍㰀氀椀㸀唀猀椀渀最 猀洀愀爀琀 焀甀攀爀椀攀猀 琀漀 焀甀攀爀礀 ∀愀爀漀甀渀搀∀ 戀愀搀 戀氀漀挀欀猀⸀㰀⼀氀椀㸀ഀഀ
  • and other methods....
  • ਍㰀⼀漀氀㸀ഀഀ ਍儀甀椀琀攀 猀漀洀攀 琀椀洀攀 愀最漀Ⰰ 䤀 挀爀攀愀琀攀搀 愀 渀漀琀攀 琀栀愀琀 琀漀甀挀栀攀猀 琀栀漀猀攀 猀甀戀樀攀挀琀猀⸀㰀戀爀㸀ഀഀ It's actually targeted for 10g/11g. But if you would like to try it, then use this link.
    ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ

    33. BIRDS-EYE VIEW ON INSTANCE STRUCTURE AND PROCESSES:

    ਍ഀഀ ਍ഀഀ ਍ഀഀ Overview Instance structure and processes:
    ਍㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ

    34. Appendices:

    ਍ഀഀ ਍㰀䈀㸀䄀瀀瀀攀渀搀椀砀 ㄀⸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䤀琀✀猀 洀愀礀 氀漀漀欀 眀攀椀爀搀Ⰰ 戀甀琀 琀栀攀 昀漀氀氀漀眀椀渀最 搀漀挀 椀猀 愀渀 䔀砀挀攀氀 昀椀氀攀⸀ 䤀琀 挀漀渀琀愀椀渀猀 猀漀洀攀 昀愀挀琀猀 愀戀漀甀琀 伀爀愀挀氀攀 ㄀ 最⼀㄀㄀最⸀㰀戀爀㸀ഀഀ If you would like to try it, use this link (.xls file).
    ਍㰀戀爀㸀ഀഀ
    ਍㰀栀㄀㸀倀愀爀琀 ㈀㨀㰀⼀栀㄀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    Main Contents Part 2: Specific 12C

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍ഀഀ
    ਍ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㌀㔀∀㸀㌀㔀⸀ ∀䔀䴀 䌀氀漀甀搀 䌀漀渀琀爀漀氀 ㄀㈀挀∀ 漀爀 ∀䔀䴀 䐀愀琀愀戀愀猀攀 䔀砀瀀爀攀猀猀 椀渀琀攀爀昀愀挀攀 ㄀㈀挀∀㨀㰀⼀栀㈀㸀 ഀഀ ਍ഀഀ EM Database Express:
    ਍㰀戀爀㸀ഀഀ ਍圀栀攀渀 礀漀甀 栀愀瘀攀 樀甀猀琀 愀 猀椀渀最氀攀 椀渀猀琀愀渀挀攀 琀漀 洀愀渀愀最攀Ⰰ 琀栀攀渀 礀漀甀 挀愀渀 甀猀攀 琀栀攀 搀攀昀愀甀氀琀㰀戀爀㸀ഀഀ and "lightweight" webbased Enterprise Manager "Express 12c".
    ਍䄀琀 琀栀攀 椀渀猀琀愀氀氀 漀昀 琀栀攀 搀愀琀愀戀愀猀攀 猀漀昀琀眀愀爀攀 ㄀㈀挀 瀀氀甀猀 搀愀琀愀戀愀猀攀Ⰰ 椀琀 眀椀氀氀 戀攀 猀攀琀甀瀀 愀甀琀漀洀愀琀椀挀愀氀氀礀⸀㰀戀爀㸀ഀഀ
    ਍唀猀攀㨀㰀戀爀㸀ഀഀ
    ਍栀琀琀瀀猀㨀⼀⼀栀漀猀琀渀愀洀攀㨀瀀漀爀琀渀愀洀攀⼀攀洀㰀戀爀㸀ഀഀ
    ਍䰀椀欀攀 栀琀琀瀀猀㨀⼀⼀猀琀愀爀戀漀猀猀⸀愀渀琀愀瀀攀砀⸀渀氀㨀㔀㔀  ⼀攀洀㰀戀爀㸀ഀഀ
    ਍䘀椀渀搀椀渀最 琀栀攀 瀀漀爀琀 椀昀 礀漀甀 昀漀爀最漀琀 椀琀Ⰰ 甀猀椀渀最 猀焀氀瀀氀甀猀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀攀氀攀挀琀 搀戀洀猀开砀搀戀⸀最攀琀䠀琀琀瀀倀漀爀琀⠀⤀ 昀爀漀洀 搀甀愀氀㬀㰀戀爀㸀ഀഀ
    ਍䜀䔀吀䠀吀吀倀倀伀刀吀㰀戀爀㸀ഀഀ -----------
    ਍        㠀 㠀 㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀攀氀攀挀琀 搀戀洀猀开砀搀戀开挀漀渀昀椀最⸀最攀琀䠀琀琀瀀猀倀漀爀琀⠀⤀ 昀爀漀洀 搀甀愀氀㬀㰀戀爀㸀ഀഀ
    ਍ 䜀䔀吀䠀吀吀倀匀倀伀刀吀䴀㰀戀爀㸀ഀഀ ------------
    ਍         㔀㔀  㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ The latter port is the https port.
    ਍䈀攀 猀甀爀攀 琀栀愀琀 匀匀䰀 愀渀搀 吀䰀匀 椀猀 攀渀愀戀氀攀搀 椀渀 礀漀甀爀 戀爀漀眀猀攀爀⸀㰀戀爀㸀ഀഀ
    ਍伀爀 甀猀攀 愀 瀀爀漀洀瀀琀 挀漀洀洀愀渀搀㨀㰀戀爀㸀ഀഀ
    ਍␀ 氀猀渀爀挀琀氀 猀琀愀琀甀猀 簀 最爀攀瀀 ⴀ椀 栀琀琀瀀㰀戀爀㸀ഀഀ C:\> lsnrctl status | find "HTTP"
    ਍ഀഀ
    ਍㰀䈀㸀䔀䴀 䌀氀漀甀搀 䌀漀渀琀爀漀氀 ㄀㈀挀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍吀栀椀猀 椀猀 愀 洀漀爀攀 攀氀愀戀漀爀愀琀攀 搀椀猀琀爀椀戀甀琀攀搀 攀渀瘀椀爀漀渀洀攀渀琀Ⰰ 眀椀琀栀 䴀愀渀愀最攀洀攀渀琀 䄀最攀渀琀猀 漀渀 䤀渀猀琀愀渀挀攀猀Ⰰ㰀戀爀㸀ഀഀ which collect information and communicate with the Oracle Management Service(s) (OMS), and
    ਍愀 挀攀渀琀爀愀氀 爀攀瀀漀猀椀琀漀爀礀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ
    ਍吀栀椀猀 椀猀 琀栀攀 愀爀挀栀椀琀攀挀琀甀爀攀 漀昀 挀栀漀椀挀攀 昀漀爀 氀愀爀最攀爀 攀渀瘀椀爀漀渀洀攀渀琀猀⸀㰀戀爀㸀ഀഀ
    ਍夀漀甀 挀愀渀 挀漀渀渀攀挀琀 眀椀琀栀 礀漀甀爀 戀爀漀眀猀攀爀 琀漀 愀渀 伀爀愀挀氀攀 䴀愀渀愀最攀洀攀渀琀 匀攀爀瘀攀爀 愀渀搀 洀愀渀愀最攀 琀栀攀 攀渀瘀椀爀漀渀洀攀渀琀⸀㰀戀爀㸀ഀഀ
    ਍䈀攀昀漀爀攀 ∀椀洀瀀氀攀洀攀渀琀椀渀最∀ 愀渀礀 漀昀 琀栀攀 椀渀昀爀愀猀琀爀甀挀琀甀爀攀 ⠀漀洀猀Ⰰ 爀攀瀀漀猀椀琀漀爀礀 搀戀Ⰰ 愀最攀渀琀猀 攀琀挀⸀⸀⤀Ⰰ㰀戀爀㸀ഀഀ there are "package" and kernel parameter requirements for each supported Unix or Linux OS.
    ਍㰀䤀㸀匀攀攀 琀栀攀 伀爀愀挀氀攀 搀漀挀甀洀攀渀琀愀琀椀漀渀⸀㰀⼀䤀㸀㰀戀爀㸀ഀഀ
    ਍䘀漀爀 愀渀礀 瀀氀愀琀昀漀爀洀Ⰰ 猀瀀攀挀椀昀椀挀 甀猀攀爀猀⼀最爀漀甀瀀猀 渀攀攀搀 琀漀 戀攀 猀攀琀甀瀀⸀㰀戀爀㸀ഀഀ
    ਍䜀爀漀甀瀀㨀 漀椀渀猀琀愀氀氀㰀戀爀㸀ഀഀ User: oracle (oracle:oinstall)
    ਍㰀戀爀ഀഀ Various middleware accounts are setup, and the default superuser is SYSMAN.
    ਍㰀戀爀㸀ഀഀ Start Cloud Control:
    ਍㰀戀爀㸀ഀഀ Starting Cloud Control and All Its Components.
    ਍㰀戀爀㸀ഀഀ =>Database:
    ਍㰀戀爀㸀ഀഀ -Set the ORACLE_HOME environment variable to the Management Repository database home directory.
    ਍ⴀ匀攀琀 琀栀攀 伀刀䄀䌀䰀䔀开匀䤀䐀 攀渀瘀椀爀漀渀洀攀渀琀 瘀愀爀椀愀戀氀攀 琀漀 琀栀攀 䴀愀渀愀最攀洀攀渀琀 刀攀瀀漀猀椀琀漀爀礀 搀愀琀愀戀愀猀攀 匀䤀䐀 ⠀搀攀昀愀甀氀琀 椀猀 愀猀搀戀⤀⸀㰀戀爀㸀ഀഀ -Start the Net Listener:
    ਍␀倀刀伀䴀倀吀㸀 ␀伀刀䄀䌀䰀䔀开䠀伀䴀䔀⼀戀椀渀⼀氀猀渀爀挀琀氀 猀琀愀爀琀㰀戀爀㸀ഀഀ -Start the Management Repository database instance:
    ਍伀刀䄀䌀䰀䔀开䠀伀䴀䔀⼀戀椀渀⼀猀焀氀瀀氀甀猀 ⼀渀漀氀漀最㰀戀爀㸀ഀഀ SQL> connect SYS as SYSDBA
    ਍匀儀䰀㸀 猀琀愀爀琀甀瀀㰀戀爀㸀ഀഀ SQL> quit
    ਍㰀戀爀㸀ഀഀ =>OMS:
    ਍㰀戀爀㸀ഀഀ $ OMS_HOME/bin/emctl start oms
    ਍㰀戀爀㸀ഀഀ =>Agent:
    ਍㰀戀爀㸀ഀഀ $ AGENT_HOME/bin/emctl start agent
    ਍㰀戀爀㸀ഀഀ Stopping Cloud Control and All Its Components.
    ਍㰀戀爀㸀ഀഀ $ emctl stop oms -all
    ਍␀攀洀挀琀氀 猀琀漀瀀 愀最攀渀琀㰀戀爀㸀ഀഀ shutdown the database
    ਍㰀戀爀㸀ഀഀ -Listing targets of an agent:
    ਍㰀戀爀㸀ഀഀ Change directory to the AGENT_HOME/bin directory (UNIX) or the AGENT_HOME\bin directory (Windows).
    ਍㰀戀爀㸀ഀഀ $ emctl config agent listtargets
    ਍㰀戀爀㸀ഀഀ -To identify the console port assigned to the Enterprise Manager Cloud Control Console, run the following command:
    ਍㰀戀爀㸀ഀഀ $ OMS_HOME/bin/emctl status oms -details
    ਍␀ 漀洀猀瘀昀礀 猀栀漀眀 漀瀀洀渀㰀戀爀㸀ഀഀ $ omsvfy show ports
    ਍㰀戀爀㸀ഀഀ - Loggin on:
    ਍㰀戀爀㸀ഀഀ https://[oms_host_name]:[console_port]/em
    ਍㰀戀爀㸀ഀഀ Ports: often 7788, 7799
    ਍㰀戀爀㸀ഀഀ Start / Stop / Check Agent:
    ਍㰀戀爀㸀ഀഀ D:\app\oracle\agent12c\core\12.1.0.3.0\BIN> call emctl status agent
    ਍ഀഀ
    ਍㰀䤀㸀䐀椀猀瀀氀愀礀猀 洀甀挀栀 漀甀琀瀀甀琀 漀渀 猀琀愀琀甀猀 攀琀挀⸀⸀㰀⼀䤀㸀䴀戀爀㸀ഀഀ
    ਍ⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀ㰀戀爀㸀ഀഀ
    ਍䐀㨀尀愀瀀瀀尀漀爀愀挀氀攀尀愀最攀渀琀㄀㈀挀尀挀漀爀攀尀㄀㈀⸀㄀⸀ ⸀㌀⸀ 尀䈀䤀一㸀 㰀䈀㸀攀洀挀琀氀 猀琀漀瀀 愀最攀渀琀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍伀爀愀挀氀攀 䔀渀琀攀爀瀀爀椀猀攀 䴀愀渀愀最攀爀 䌀氀漀甀搀 䌀漀渀琀爀漀氀 ㄀㈀挀 刀攀氀攀愀猀攀 ㌀㰀戀爀㸀ഀഀ Copyright (c) 1996, 2013 Oracle Corporation. All rights reserved.
    ਍吀栀攀 伀爀愀挀氀攀愀最攀渀琀㄀㈀挀䄀最攀渀琀 猀攀爀瘀椀挀攀 椀猀 猀琀漀瀀瀀椀渀最⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀㰀戀爀㸀ഀഀ The Oracleagent12cAgent service was stopped successfully.
    ਍ഀഀ
    ਍䐀㨀尀愀瀀瀀尀漀爀愀挀氀攀尀愀最攀渀琀㄀㈀挀尀挀漀爀攀尀㄀㈀⸀㄀⸀ ⸀㌀⸀ 尀䈀䤀一㸀 㰀䈀㸀攀洀挀琀氀 挀氀攀愀爀猀琀愀琀攀 愀最攀渀琀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍伀爀愀挀氀攀 䔀渀琀攀爀瀀爀椀猀攀 䴀愀渀愀最攀爀 䌀氀漀甀搀 䌀漀渀琀爀漀氀 ㄀㈀挀 刀攀氀攀愀猀攀 ㌀㰀戀爀㸀ഀഀ Copyright (c) 1996, 2013 Oracle Corporation. All rights reserved.
    ਍䔀䴀䐀 挀氀攀愀爀猀琀愀琀攀 挀漀洀瀀氀攀琀攀搀 猀甀挀挀攀猀猀昀甀氀氀礀㰀戀爀㸀ഀഀ
    ਍䐀㨀尀愀瀀瀀尀漀爀愀挀氀攀尀愀最攀渀琀㄀㈀挀尀挀漀爀攀尀㄀㈀⸀㄀⸀ ⸀㌀⸀ 尀䈀䤀一㸀 㰀䈀㸀攀洀挀琀氀 猀琀愀爀琀 愀最攀渀琀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍伀爀愀挀氀攀 䔀渀琀攀爀瀀爀椀猀攀 䴀愀渀愀最攀爀 䌀氀漀甀搀 䌀漀渀琀爀漀氀 ㄀㈀挀 刀攀氀攀愀猀攀 ㌀㰀戀爀㸀ഀഀ Copyright (c) 1996, 2013 Oracle Corporation. All rights reserved.
    ਍吀栀攀 伀爀愀挀氀攀愀最攀渀琀㄀㈀挀䄀最攀渀琀 猀攀爀瘀椀挀攀 椀猀 猀琀愀爀琀椀渀最⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀㰀戀爀㸀ഀഀ The Oracleagent12cAgent service was started successfully.
    ਍㰀戀爀㸀ഀഀ ਍䐀㨀尀愀瀀瀀尀漀爀愀挀氀攀尀愀最攀渀琀㄀㈀挀尀挀漀爀攀尀㄀㈀⸀㄀⸀ ⸀㌀⸀ 尀䈀䤀一㸀 㰀䈀㸀攀洀挀琀氀 甀瀀氀漀愀搀 愀最攀渀琀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍伀爀愀挀氀攀 䔀渀琀攀爀瀀爀椀猀攀 䴀愀渀愀最攀爀 䌀氀漀甀搀 䌀漀渀琀爀漀氀 ㄀㈀挀 刀攀氀攀愀猀攀 ㌀㰀戀爀㸀ഀഀ Copyright (c) 1996, 2013 Oracle Corporation. All rights reserved.
    ਍ⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀ㰀戀爀㸀ഀഀ EMD upload completed successfully
    ਍ഀഀ ਍ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㌀㘀∀㸀㌀㘀⸀ 䌀伀一吀䄀䤀一䔀刀 䐀䄀吀䄀䈀䄀匀䔀 䄀一䐀 倀䰀唀䜀䜀䄀䈀䰀䔀 䐀䄀吀䄀䈀䄀匀䔀匀 䤀一 ㄀㈀䌀㨀㰀⼀栀㈀㸀 ഀഀ ਍ഀഀ Either with the DBCA, or SQL Statement, you can specify if you want a container Database or "classical" Database",
    ਍愀琀 琀栀攀 琀椀洀攀 琀栀愀琀 礀漀甀 挀爀攀愀琀攀 琀栀攀 搀愀琀愀戀愀猀攀㨀㰀戀爀㸀ഀഀ
    ਍䌀刀䔀䄀吀䔀 䐀䄀吀䄀䈀䄀匀䔀 ⸀⸀⸀ 䔀一䄀䈀䰀䔀 倀䰀唀䜀䜀䄀䈀䰀䔀 䐀䄀吀䄀䈀䄀匀䔀㰀戀爀㸀ഀഀ
    ਍夀漀甀 挀愀渀 挀爀攀愀琀攀 愀 䌀漀渀琀愀椀渀攀爀 䐀愀琀愀戀愀猀攀 ⠀䌀䐀䈀⤀Ⰰ 眀栀椀挀栀 挀愀渀 猀甀瀀瀀漀爀琀 漀爀 栀漀氀搀 洀甀氀琀椀瀀氀攀 ∀瀀氀甀最最愀戀氀攀∀ 搀愀琀愀戀愀猀攀猀 ⠀倀䐀䈀✀猀⤀⸀㰀戀爀㸀ഀഀ Each PDB has the "look and feel" as a ordinary database.
    ਍㰀戀爀㸀ഀഀ If you do not specify the ENABLE PLUGGABLE DATABASE clause, then the newly created database
    ਍椀猀 愀 渀漀渀ⴀ䌀䐀䈀 ⠀挀氀愀猀猀椀挀愀氀 搀愀琀愀戀愀猀攀 氀椀欀攀 椀渀 ㄀ 最⼀㄀㄀最Ⰰ 愀渀搀 愀氀氀 漀琀栀攀爀 瀀爀攀瘀椀漀甀猀 瘀攀爀猀椀漀渀猀⤀⸀㰀戀爀㸀ഀഀ
    ਍吀栀甀猀 琀栀攀 ∀䌀䐀䈀∀ 挀愀渀 戀攀 瘀椀攀眀攀搀 愀猀 琀栀攀 ⠀爀漀漀琀⤀ 挀漀渀琀愀椀渀攀爀Ⰰ 眀栀椀挀栀 挀愀渀 栀漀氀搀 ∀倀䐀䈀∀ 挀漀渀琀愀椀渀攀爀猀⸀㰀戀爀㸀ഀഀ This way, you can have a PDB for the sales application, or a PDB for the finance department etc..
    ਍㰀戀爀㸀ഀഀ This architecture is called the "multi-tenant environment".
    ਍ഀഀ
    ਍伀瘀攀爀瘀椀攀眀 䄀爀挀栀椀琀攀挀琀甀爀攀 䌀䐀䈀 愀渀搀 漀瀀琀椀漀渀愀氀 倀䐀䈀✀猀 椀渀 ㄀㈀挀刀㄀㨀㰀戀爀㸀ഀഀ
    ਍㰀椀洀最 猀爀挀㴀∀挀搀戀瀀搀戀⸀樀瀀最∀ 愀氀椀最渀㴀∀挀攀渀琀爀攀∀⼀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ Note: Above shows the 12cR1 architecture. In higher releases,
    ਍琀栀攀 愀爀挀栀椀琀攀挀琀甀爀攀 洀椀最栀琀 挀栀愀渀最攀 琀漀 愀 挀攀爀琀愀椀渀 攀砀琀攀渀琀⸀㰀戀爀㸀ഀഀ
    ਍ഀഀ So the CDB is the "container", and it can be represented by the "root" CDB$ROOT.
    ਍㰀戀爀㸀ഀഀ If the database is indeed a CDB, instead of the classical type, then we also have:
    ਍㰀戀爀㸀ഀഀ - A read-only template PDB$SEED for creating new user PDB's.
    ਍ⴀ 䌀漀洀洀漀渀 甀猀攀爀猀 ⠀愀挀挀漀甀渀琀猀⤀ 椀渀 䌀䐀䈀␀刀伀伀吀 眀栀椀挀栀 椀渀 瀀爀椀渀挀椀瀀氀攀 愀爀攀 瘀愀氀椀搀 攀瘀攀爀礀眀栀攀爀攀 ⠀愀氀氀 倀䐀䈀✀猀⤀⸀㰀戀爀㸀ഀഀ - (local) PDB accounts only appplicable for that PDB.
    ਍ⴀ ⠀氀漀挀愀氀⤀ 倀䐀䈀 䄀搀洀椀渀椀猀琀爀愀琀漀爀⸀㰀戀爀㸀ഀഀ - Plugging and un-plugging a PDB at will.
    ਍ⴀ 䤀渀 椀琀猀 甀渀瀀氀甀最最攀搀 猀琀愀琀攀Ⰰ 愀 倀䐀䈀 椀猀 愀 猀攀氀昀ⴀ挀漀渀琀愀椀渀攀搀 猀攀琀 漀昀 搀愀琀愀 昀椀氀攀猀 愀渀搀 愀渀 堀䴀䰀 洀攀琀愀搀愀琀愀 昀椀氀攀⸀㰀戀爀㸀ഀഀ - The table definitions, index definitions, constraints etc.. and data all reside within the PDB's.
    ਍ⴀ 䴀愀渀礀 琀攀挀栀渀椀焀甀攀猀 氀椀欀攀 瀀氀甀最最椀渀最 愀渀 攀砀椀猀琀椀渀最 倀䐀䈀 椀渀琀漀 㰀䤀㸀愀渀漀琀栀攀爀㰀⼀䤀㸀 䌀䐀䈀⸀㰀戀爀㸀ഀഀ
    ਍吀栀攀 䌀䐀䈀 栀愀猀 椀琀✀猀 匀夀匀吀䔀䴀Ⰰ 匀夀匀䄀唀堀Ⰰ 唀一䐀伀Ⰰ 吀䔀䴀倀 琀愀戀氀攀猀瀀愀挀攀猀 愀渀搀 搀愀琀愀昀椀氀攀猀Ⰰ 瀀氀甀猀 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀猀 愀渀搀 刀䔀䐀伀⸀㰀戀爀㸀ഀഀ Each PDB has a private SYSTEM, SYSAUX, optionally TEMP, and datafile(s).
    ਍㰀戀爀㸀ഀഀ So, the UNDO, REDO and controlfiles are "global", as well as the logging facilities (alert.log),
    ਍眀栀椀挀栀 椀猀 ∀最氀漀戀愀氀∀ 琀漀漀⸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ ਍ഀഀ
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 36.1 Connecting to a PDB or CDB:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍吀栀椀猀 焀甀椀琀攀 琀栀攀 猀愀洀攀 愀猀 愀渀礀 昀漀爀洀攀爀 瘀攀爀猀椀漀渀 ⠀㄀㄀最Ⰰ ㄀ 最 攀琀挀⸀⸀⸀⤀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䌀伀一一 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀挀搀戀㄀㰀戀爀㸀ഀഀ Connected.
    ਍㰀戀爀㸀ഀഀ ਍匀儀䰀㸀 䌀伀一一 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀⼀⼀氀漀挀愀氀栀漀猀琀㨀㄀㔀㈀㄀⼀挀搀戀㄀㰀戀爀㸀ഀഀ Connected.
    ਍㰀戀爀㸀ഀഀ SQL> SHOW CON_NAME
    ਍㰀戀爀㸀ഀഀ CDB$ROOT
    ਍㰀戀爀㸀ഀഀ When you are a common user, you can "go" to any container if you have sufficient permissions.
    ਍㰀戀爀㸀ഀഀ SQL> ALTER SESSION SET container = pdb1;
    ਍㰀戀爀㸀ഀഀ SQL> SHOW CON_NAME
    ਍㰀戀爀㸀ഀഀ PDB1
    ਍㰀戀爀㸀ഀഀ Each pluggable database registers itself a service to the listener, so the CONNECT statement works as well.
    ਍㰀戀爀㸀ഀഀ SQL> CONN system/password@pdb1
    ਍䌀漀渀渀攀挀琀攀搀⸀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䌀伀一一 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀⼀⼀氀漀挀愀氀栀漀猀琀㨀㄀㔀㈀㄀⼀瀀搀戀㄀㰀戀爀㸀ഀഀ Connected.
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㌀㘀⸀㈀ 䴀攀琀愀搀愀琀愀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ All global metadata is in the root. Per PDB, there exists also local metadata or the dictionary.
    ਍䤀渀搀攀攀搀Ⰰ 愀氀氀 倀䐀䈀✀猀 栀愀瘀攀 愀 猀礀猀琀攀洀 愀渀搀 猀礀猀愀甀砀 琀愀戀氀攀猀瀀愀挀攀⸀㰀戀爀㸀ഀഀ In a PDB, also links exists that point to general metadata in the root.
    ਍㰀戀爀㸀ഀഀ V$DATABASE
    ਍㰀戀爀㸀ഀഀ This v$ view is well-know from all former versions as well.
    ਍㰀戀爀㸀ഀഀ Example:
    ਍㰀戀爀㸀ഀഀ SQL> SELECT NAME, CDB, CON_ID FROM V$DATABASE;
    ਍㰀戀爀㸀 ഀഀ NAME....CDB....CON_ID
    ਍䌀䐀䈀㄀⸀⸀⸀⸀夀䔀匀⸀⸀⸀⸀ 㰀戀爀㸀ഀഀ
    ਍吀栀攀 ∀䌀伀一开䤀䐀∀ 椀猀 琀栀攀 ∀挀漀渀琀愀椀渀攀爀开椀搀∀⸀㰀戀爀㸀ഀഀ
    ਍嘀攀爀礀 甀猀攀昀甀氀氀 愀爀攀 琀栀攀 昀漀氀氀漀眀椀渀最 瘀椀攀眀猀㨀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ V$CONTAINERS
    ਍嘀␀倀䐀䈀匀 㰀戀爀㸀ഀഀ V$SERVICES
    ਍䌀䐀䈀开倀䐀䈀匀㰀戀爀㸀ഀഀ DBA_PDBS
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍䈀甀琀 愀氀洀漀猀琀 愀氀氀 眀攀氀氀ⴀ欀渀漀眀 䐀䈀䄀开 ⠀漀爀 唀匀䔀刀开 漀爀 䄀䰀䰀开⤀ 瘀椀攀眀猀 栀愀瘀攀 愀 䌀䐀䈀开 攀焀甀椀瘀愀氀攀渀琀 瘀椀攀眀⸀㰀戀爀㸀ഀഀ
    ਍䄀氀猀漀Ⰰ 洀愀渀礀 䐀䈀䄀开 愀渀搀 嘀␀ 瘀椀攀眀猀 栀愀瘀攀 愀 䌀伀一开䤀䐀 挀漀氀甀洀渀 眀栀椀挀栀 攀渀愀戀氀攀猀 礀漀甀 琀漀 猀攀氀攀挀琀 漀爀 稀漀漀洀 椀渀㰀戀爀㸀ഀഀ into a particular PDB. For example:
    ਍㰀戀爀㸀ഀഀ SQL> select name from v$datafile where con_id=3;
    ਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 36.3 Creating a PDB:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍唀猀攀 琀栀攀 ∀䌀刀䔀䄀吀䔀 倀䰀唀䜀䜀䄀䈀䰀䔀 䐀䄀吀䄀䈀䄀匀䔀∀ 猀琀愀琀攀洀攀渀琀 琀漀 挀爀攀愀琀攀 愀 倀䐀䈀 漀爀 琀漀 挀氀漀渀攀 愀渀 攀砀椀猀琀椀渀最 漀渀攀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ⴀ 䌀爀攀愀琀椀渀最 愀 倀䐀䈀 昀爀漀洀 猀挀爀愀琀挀栀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䤀昀 甀猀椀渀最 伀䴀䘀 ⠀伀爀愀挀氀攀 䴀愀渀愀最攀搀 昀椀氀攀猀⤀Ⰰ 琀栀攀渀 琀栀攀 猀琀愀琀攀洀攀渀琀 椀猀 爀攀愀氀氀礀 瘀攀爀礀 猀椀洀瀀氀攀㨀㰀戀爀㸀ഀഀ
    ਍䌀刀䔀䄀吀䔀 倀䰀唀䜀䜀䄀䈀䰀䔀 䐀䄀吀䄀䈀䄀匀䔀 洀礀瀀搀戀㰀戀爀㸀ഀഀ ADMIN USER scott IDENTIFIED BY tiger
    ਍㰀戀爀㸀ഀഀ Otherwise, the statement is like for example (using the seed template):
    ਍㰀戀爀㸀ഀഀ CREATE PLUGGABLE DATABASE salespdb
    ਍䄀䐀䴀䤀一 唀匀䔀刀 猀挀漀琀琀 䤀䐀䔀一吀䤀䘀䤀䔀䐀 䈀夀 琀椀最攀爀㰀戀爀㸀ഀഀ ROLES = (dba)
    ਍  䐀䔀䘀䄀唀䰀吀 吀䄀䈀䰀䔀匀倀䄀䌀䔀 猀愀氀攀猀㰀戀爀㸀ഀഀ DATAFILE '/disk1/oracle/dbs/salespdb/sales01.dbf' SIZE 250M AUTOEXTEND ON
    ਍  䘀䤀䰀䔀开一䄀䴀䔀开䌀伀一嘀䔀刀吀 㴀 ⠀✀⼀搀椀猀欀㄀⼀漀爀愀挀氀攀⼀搀戀猀⼀瀀搀戀猀攀攀搀⼀✀Ⰰ㰀戀爀㸀ഀഀ '/disk1/oracle/dbs/salespdb/')
    ਍匀吀伀刀䄀䜀䔀 ⠀䴀䄀堀匀䤀娀䔀 ㈀䜀⤀㰀戀爀㸀ഀഀ PATH_PREFIX = '/disk1/oracle/dbs/salespdb/';
    ਍㰀戀爀㸀ഀഀ A PDB has it's own SYSTEM and SYSAUX tablespaces, and optionally a TEMP tablespace.
    ਍伀琀栀攀爀眀椀猀攀 椀琀 甀猀攀猀 琀栀攀 爀漀漀琀 挀漀渀琀愀椀渀攀爀✀猀 吀䔀䴀倀 昀椀氀攀⸀㰀戀爀㸀ഀഀ There is one UNDO tablespace for the CDB. All pluggable databases in the CDB use the same UNDO tablespace.
    ਍ഀഀ
    ਍ഀഀ ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 36.4 Unplugging and Plugging a PDB:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍䄀 倀䐀䈀 眀椀氀氀 最攀琀 甀渀瀀氀甀最最攀搀 戀礀 挀漀渀渀攀挀琀椀渀最 琀漀 琀栀攀 爀漀漀琀 䌀䐀䈀 愀渀搀 椀猀猀甀椀渀最 琀栀攀 䄀䰀吀䔀刀 倀䰀唀䜀䜀䄀䈀䰀䔀 䐀䄀吀䄀䈀䄀匀䔀 猀琀愀琀攀洀攀渀琀㰀戀爀㸀ഀഀ to specify an XML file that will contain all metadata about the PDB after it is unplugged.
    ਍吀栀愀琀 堀䴀䰀 昀椀氀攀Ⰰ 挀漀渀琀愀椀渀猀 愀氀氀 渀攀攀搀攀搀 椀渀昀漀爀洀愀琀椀漀渀 琀漀 攀渀愀戀氀攀 愀 䌀刀䔀䄀吀䔀 倀䰀唀䜀䜀䄀䈀䰀䔀 䐀䄀吀䄀䈀䄀匀䔀 猀琀愀琀攀洀攀渀琀 漀渀 愀 琀愀爀最攀琀 䌀䐀䈀㰀戀爀㸀ഀഀ in order to plug in the PDB.
    ਍ഀഀ
    ਍ⴀ 唀渀瀀氀甀最最椀渀最 攀砀愀洀瀀氀攀猀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 愀氀琀攀爀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 瀀搀戀㄀ 挀氀漀猀攀 椀洀洀攀搀椀愀琀攀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 愀氀琀攀爀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 瀀搀戀㄀ 甀渀瀀氀甀最 椀渀琀漀 ✀⼀甀 ㄀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀漀爀愀搀愀琀愀⼀瀀搀戀㄀⸀砀洀氀✀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 搀爀漀瀀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 瀀搀戀㄀ 欀攀攀瀀 搀愀琀愀昀椀氀攀猀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀攀氀攀挀琀 瀀搀戀开渀愀洀攀Ⰰ 猀琀愀琀甀猀 昀爀漀洀 挀搀戀开瀀搀戀猀 眀栀攀爀攀 瀀搀戀开㴀✀倀䐀䈀㄀✀㬀㰀戀爀㸀ഀഀ
    ਍一漀 爀漀眀猀 昀漀甀渀搀⸀ഀഀ
    ਍ⴀ 倀氀甀最最椀渀最 攀砀愀洀瀀氀攀猀㨀㰀戀爀㸀ഀഀ
    ਍吀栀攀 搀愀琀愀昀椀氀攀猀Ⰰ 愀渀搀 砀洀氀 昀椀氀攀Ⰰ 漀昀 瀀搀戀㄀ 愀氀爀攀愀搀礀 攀砀椀猀琀 漀昀挀漀甀爀猀攀⸀ 夀漀甀 挀愀渀 瀀氀甀最 椀琀 椀渀琀漀 琀栀攀 挀甀爀爀攀渀琀 漀爀 漀琀栀攀爀 䌀䐀䈀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 挀爀攀愀琀攀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 瀀搀戀㄀ 甀猀椀渀最 ✀⼀甀 ㄀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀漀爀愀搀愀琀愀⼀瀀搀戀㄀⸀砀洀氀✀㰀戀爀㸀ഀഀ NOCOPY
    ਍吀䔀䴀倀䘀䤀䰀䔀 刀䔀唀匀䔀㬀㰀戀爀㸀ഀഀ
    ਍䠀愀瘀椀渀最 愀渀 甀渀瀀氀甀最最攀搀 瀀搀戀Ⰰ 礀漀甀 挀愀渀 洀漀瘀攀 琀栀攀 昀椀氀攀猀 愀猀 眀攀氀氀 琀漀 愀 渀攀眀 氀漀挀愀琀椀漀渀 眀栀椀氀攀 瀀氀甀最最椀渀最 椀渀琀漀 猀漀洀攀 䌀䐀䈀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 挀爀攀愀琀攀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 瀀搀戀㈀ 甀猀椀渀最 ✀⼀甀 ㄀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀漀爀愀搀愀琀愀⼀瀀搀戀㈀⸀砀洀氀✀㰀戀爀㸀ഀഀ COPY
    ਍䘀䤀䰀䔀开一䄀䴀䔀开䌀伀一嘀䔀刀吀㴀⠀✀⼀甀 ㄀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀漀爀愀搀愀琀愀⼀挀搀戀㄀⼀瀀搀戀㈀✀Ⰰ✀⼀甀 ㄀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀漀爀愀搀愀琀愀⼀挀搀戀㈀⼀瀀搀戀㈀✀⤀㬀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    37. CLONING A DATABASE IN 12C:

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ Method 1. Cloning a PDB from an existing one:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍䌀刀䔀䄀吀䔀 倀䰀唀䜀䜀䄀䈀䰀䔀 䐀䄀吀䄀䈀䄀匀䔀 瀀搀戀㈀ 䘀刀伀䴀 瀀搀戀㄀㰀戀爀㸀ഀഀ FILE_NAME_CONVERT = ('/u01/oracle/dbs/pdb1/', '/u01/oracle/dbs/pdb2/')
    ਍倀䄀吀䠀开倀刀䔀䘀䤀堀 㴀 ✀⼀甀 ㄀⼀漀爀愀挀氀攀⼀搀戀猀⼀瀀搀戀㈀⼀✀㬀㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍㰀䈀㸀䴀攀琀栀漀搀 ㈀⸀ 䄀 倀䐀䈀 挀氀漀渀椀渀最 漀瀀攀爀愀琀椀漀渀 眀椀琀栀椀渀 琀栀攀 猀愀洀攀 䌀䐀䈀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ ਍㄀⸀唀猀攀 匀儀䰀⨀倀氀甀猀 琀漀 挀氀漀猀攀 琀栀攀 倀䐀䈀 琀栀愀琀 礀漀甀 眀愀渀琀 琀漀 挀氀漀渀攀⸀㰀戀爀㸀ഀഀ
    ਍⸀ 漀爀愀攀渀瘀ഀഀ
    ਍嬀攀渀琀攀爀 挀搀戀㄀ 愀琀 琀栀攀 瀀爀漀洀瀀琀崀㰀戀爀㸀ഀഀ
    ਍猀焀氀瀀氀甀猀 ⼀ 愀猀 猀礀猀搀戀愀㰀戀爀㸀ഀഀ
    ਍愀氀琀攀爀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 瀀搀戀㄀ 挀氀漀猀攀 椀洀洀攀搀椀愀琀攀㬀㰀戀爀㸀ഀഀ
    ਍愀氀琀攀爀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 瀀搀戀㄀ 漀瀀攀渀 爀攀愀搀 漀渀氀礀㬀㰀戀爀㸀ഀഀ
    ਍攀砀椀琀㰀戀爀㸀ഀഀ
    ਍㈀⸀ 䌀爀攀愀琀攀 搀椀爀攀挀琀漀爀礀 昀漀爀 琀栀攀 挀漀瀀礀⸀㰀戀爀㸀ഀഀ
    ਍挀搀 ⼀猀琀愀最攀㰀戀爀㸀ഀഀ mkdir pdb1_clone
    ਍㰀戀爀㸀ഀഀ Maybe you need to use "chown" too, if you are not "oracle".
    ਍㰀戀爀㸀ഀഀ From the CDB:
    ਍㰀戀爀㸀ഀഀ alter system set db_create_file_dest='/stage/pdb1_clone'; ਍㰀戀爀㸀ഀഀ 3. Make the clone:
    ਍㰀戀爀㸀ഀഀ Use SQL*Plus to clone the PDB within the same CDB.
    ਍㰀戀爀㸀ഀഀ create pluggable database pdb1_clone from pdb1;
    ਍㰀戀爀㸀ഀഀ alter pluggable database pdb1_clone open;
    ਍㰀戀爀㸀ഀഀ connect system/oracle@localhost:1521/pdb1_clone;
    ਍㰀戀爀㸀ഀഀ show con_name;
    ਍㰀戀爀㸀ഀഀ 4. Set pdb1 to read/write:
    ਍㰀戀爀㸀ഀഀ connect / as sysdba
    ਍㰀戀爀㸀ഀഀ alter session set container=cdb$root;
    ਍㰀戀爀㸀ഀഀ alter pluggable database pdb1 close immediate;
    ਍㰀戀爀㸀ഀഀ alter pluggable database pdb1 open;
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀䴀攀琀栀漀搀 ㌀⸀ 䌀氀漀渀椀渀最 愀 ㄀㈀挀 渀漀渀ⴀ䌀䐀䈀 琀漀 愀 倀䐀䈀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Suppose we have a non-cdb database running in 12c named TEST.
    ਍圀攀 洀甀猀琀 最攀渀攀爀愀琀攀 愀 猀漀挀愀氀氀攀搀 ∀洀愀渀椀昀攀猀琀 昀椀氀攀∀⸀ 匀栀甀琀搀漀眀渀 琀栀攀 搀愀琀愀戀愀猀攀 愀渀搀 琀栀攀渀 爀攀猀琀愀爀琀 椀琀 椀渀 刀攀愀搀ⴀ伀渀氀礀 洀漀搀攀⸀㰀戀爀㸀ഀഀ
    ਍伀渀 吀䔀匀吀㨀㰀戀爀㸀ഀഀ
    ਍猀栀甀琀搀漀眀渀 椀洀洀攀搀椀愀琀攀㬀㰀戀爀㸀ഀഀ
    ਍猀琀愀爀琀甀瀀 洀漀甀渀琀㬀㰀戀爀㸀ഀഀ
    ਍愀氀琀攀爀 搀愀琀愀戀愀猀攀 漀瀀攀渀 爀攀愀搀 漀渀氀礀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 攀砀攀挀 搀戀洀猀开瀀搀戀⸀搀攀猀挀爀椀戀攀㰀戀爀㸀ഀഀ (pdb_descr_file=>'/disk1/app/oracle/noncdb_test.xml');
    ਍㰀戀爀㸀ഀഀ PL/SQL procedure successfully completed.
    ਍㰀戀爀㸀ഀഀ shutdown immediate;
    ਍㰀戀爀㸀ഀഀ On the CDB:
    ਍㰀戀爀㸀ഀഀ sqlplus sys/oracle as sysdba
    ਍㰀戀爀㸀ഀഀ Set a suitable OMF dir:
    ਍㰀戀爀㸀ഀഀ alter system set db_create_file_dest='/disk2/app/oracle/oradata/cdb12c/noncdb_test';
    ਍㰀戀爀㸀ഀഀ create pluggable database noncdb_test
    ਍甀猀椀渀最 ✀⼀搀椀猀欀㄀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀渀漀渀挀搀戀开琀攀猀琀⸀砀洀氀✀ 挀漀瀀礀㬀㰀戀爀㸀ഀഀ
    ਍倀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 挀爀攀愀琀攀搀⸀ 㰀戀爀㸀ഀഀ
    ਍愀氀琀攀爀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 渀漀渀挀搀戀开琀攀猀琀 漀瀀攀渀㬀㰀戀爀㸀ഀഀ
    ਍䰀漀最漀渀 琀漀 琀栀椀猀 倀䐀䈀 愀猀 猀礀猀⸀㰀戀爀㸀ഀഀ Next, run:
    ਍㰀戀爀㸀ഀഀ @?/rdbms/admin/noncdb_to_pdb.sql
    ਍㰀戀爀㸀ഀഀ After a while, when the script has finished, you are ready to go.
    ਍ഀഀ ਍⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀ഀഀ ਍ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    38. FORCED FULL DATABASE CACHING IN 12C:

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 38.1 Recap 10g/11g memory parameters:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍ഀഀ In 10g/11g, the most important init.ora/spfile.ora parameter for controlling memory, were:
    ਍㰀戀爀㸀ഀഀ ਍⌀ 䔀砀愀洀瀀氀攀 ㄀ 最 猀攀琀琀椀渀最㨀㰀戀爀㸀ഀഀ sga_target=287309824
    ਍ 㰀戀爀㸀ഀഀ # Example 11g setting:
    ਍洀攀洀漀爀礀开琀愀爀最攀琀㴀㈀㠀㜀㌀ 㤀㠀㈀㐀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ In 11g: (Full) Automatic Memory Management = AMM -, by using parameter "MEMORY_TARGET="
    ਍䠀攀爀攀 琀栀攀 攀渀最椀渀攀 昀甀氀氀礀 愀甀琀漀洀愀琀椀挀愀氀氀礀 搀攀琀攀爀洀椀渀攀猀 琀栀攀 猀椀稀攀 漀昀 愀氀氀 挀愀挀栀攀猀Ⰰ 戀甀昀昀攀爀猀 愀渀搀 愀氀氀 瀀漀漀氀猀⸀㰀戀爀㸀ഀഀ
    ਍䤀渀 ㄀ 最㨀 䄀甀琀漀洀愀琀椀挀 匀䜀䄀 洀愀渀愀最攀洀攀渀琀Ⰰ 戀礀 甀猀椀渀最 瀀愀爀愀洀攀琀攀爀 ∀匀䜀䄀开吀䄀刀䜀䔀吀㴀∀㰀戀爀㸀ഀഀ Here the enigine fully automatically determines the sizes for all structures within the SGA.
    ਍㰀戀爀㸀ഀഀ Note: in 10g/11g, if you would have reasons to configure memory in a manual way, it would still be possible
    ਍戀礀 甀猀椀渀最 琀栀攀 椀渀搀椀瘀椀搀甀愀氀 ㄀ 最⼀㄀㄀最 瀀愀爀愀洀攀琀攀爀猀㨀㰀戀爀㸀ഀഀ
    ਍䐀䈀开䌀䄀䌀䠀䔀开匀䤀娀䔀㴀 ⠀䐀䔀䘀䄀唀䰀吀 戀甀昀昀攀爀 瀀漀漀氀⤀ 㰀戀爀㸀ഀഀ SHARED_POOL_SIZE= (Shared Pool)
    ਍䰀䄀刀䜀䔀开倀伀伀䰀开匀䤀娀䔀㴀 ⠀䰀愀爀最攀 倀漀漀氀⤀ 㰀戀爀㸀ഀഀ JAVA_POOL_SIZE= (Java Pool)
    ਍瀀最愀开愀最最爀攀最愀琀攀开琀愀爀最攀琀㴀 ⠀瀀最愀 猀椀稀攀猀Ⰰ 愀最最爀攀最愀琀攀 倀䜀䄀 洀攀洀漀爀礀 愀瘀愀椀氀愀戀氀攀 琀漀 愀氀氀 猀攀爀瘀攀爀 瀀爀漀挀攀猀猀攀猀 愀琀琀愀挀栀攀搀 琀漀 琀栀攀 椀渀猀琀愀渀挀攀⸀⤀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 38.2 12c memory parameters:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍䴀漀猀琀 渀漀琀愀戀氀礀Ⰰ 琀栀攀 ∀䴀䔀䴀伀刀夀开吀䄀刀䜀䔀吀㴀∀ 椀猀 猀琀椀氀氀 琀栀攀 洀愀椀渀 瀀愀爀愀洀攀琀攀爀⸀㰀戀爀㸀ഀഀ As in 11g, MEMORY_TARGET specifies the Oracle systemwide usable memory.
    ਍吀栀攀 搀愀琀愀戀愀猀攀 琀甀渀攀猀 洀攀洀漀爀礀 琀漀 琀栀攀 䴀䔀䴀伀刀夀开吀䄀刀䜀䔀吀 瘀愀氀甀攀Ⰰ 爀攀搀甀挀椀渀最 漀爀 攀渀氀愀爀最椀渀最 琀栀攀 匀䜀䄀 愀渀搀 倀䜀䄀 愀猀 渀攀攀搀攀搀⸀㰀戀爀㸀ഀഀ
    ਍吀栀攀 ㄀ 最⼀㄀㄀最 ∀匀䜀䄀开吀䄀刀䜀䔀吀∀ 猀琀椀氀氀 攀砀椀猀琀猀 椀渀 ㄀㈀䌀Ⰰ 愀渀搀 挀愀渀 戀攀 瀀氀愀挀攀搀 琀漀 愀甀琀漀琀甀渀攀 琀栀攀 匀䜀䄀 愀猀 渀攀攀搀攀搀Ⰰ㰀戀爀㸀ഀഀ but structures as PGA and others are out of the scope of this parameter.
    ਍ഀഀ
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 38.3 Forced full database caching:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍ഀഀ The new 12c feature Full Database Caching, means that Oracle will keep all objects in the buffer cache.
    ਍一漀 搀愀琀愀戀愀猀攀 瀀愀最攀 琀栀攀渀 眀椀氀氀 戀攀 ∀瀀愀最攀搀 漀甀琀∀ 愀渀礀洀漀爀攀⸀㰀戀爀㸀ഀഀ It's not "the answer" for all situations. Keep in mind that:
    ਍㰀戀爀㸀ഀഀ - In a multi-tenant environment, force full database caching mode applies
    ਍琀漀 琀栀攀 攀渀琀椀爀攀 挀漀渀琀愀椀渀攀爀 搀愀琀愀戀愀猀攀 ⠀䌀䐀䈀⤀Ⰰ 椀渀挀氀甀搀椀渀最 愀氀氀 漀昀 椀琀猀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀猀 ⠀倀䐀䈀猀⤀⸀㰀戀爀㸀ഀഀ - The actual database size must be smaller than the buffer cache.
    ਍ⴀ 䤀琀 洀椀最栀琀 栀攀氀瀀 椀洀瀀爀漀瘀攀 瀀攀爀昀漀爀洀愀渀挀攀 眀栀攀渀 琀愀戀氀攀 猀挀愀渀猀 愀爀攀 漀昀琀攀渀 甀猀攀搀Ⰰ 愀渀搀⼀漀爀 䰀伀䈀 搀愀琀愀 愀挀挀攀猀猀㰀戀爀㸀ഀഀ plays an important role.
    ਍㰀戀爀㸀ഀഀ In 12c, you must have the SGA_TARGET or MEMORY_TARGET parameter in effect.
    ਍㰀戀爀㸀ഀഀ To enable Full Database Caching, use the statement:
    ਍㰀戀爀㸀ഀഀ SQL> ALTER DATABASE FORCE FULL DATABASE CACHING;
    ਍㰀戀爀㸀ഀഀ The database must be "mounted", but not open, when using this statement.
    ਍㰀戀爀㸀ഀഀ If you would change the memory parameters, in such a way that the DB does not fit in cache anymore,
    ਍琀栀攀 搀愀琀愀戀愀猀攀 攀渀最椀渀攀 椀琀猀攀氀昀 琀甀爀渀猀 椀琀 ∀漀昀昀∀⸀㰀戀爀㸀ഀഀ
    ਍吀漀 猀琀漀瀀 挀愀挀栀椀渀最Ⰰ 眀栀攀渀 琀栀攀 搀愀琀愀戀愀猀攀 椀猀 洀漀甀渀琀攀搀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䄀䰀吀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 一伀 䘀伀刀䌀䔀 䘀唀䰀䰀 䐀䄀吀䄀䈀䄀匀䔀 䌀䄀䌀䠀䤀一䜀㬀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㌀㤀∀㸀㌀㤀⸀ 䌀刀䔀䄀吀䔀 䄀 䐀䄀吀䄀䈀䄀匀䔀 唀匀䔀刀 䤀一 ㄀㈀䌀㨀㰀⼀栀㈀㸀 ഀഀ ਍ഀഀ Oracle 12c without container databases (CDB, PDB's), works the same as 10g/11g
    ਍眀椀琀栀 爀攀猀瀀攀挀琀 琀漀 挀爀攀愀琀椀渀最 甀猀攀爀 愀挀挀漀甀渀琀猀⸀㰀戀爀㸀ഀഀ
    ਍䰀攀琀✀猀 爀攀瘀椀攀眀 琀栀攀 猀琀愀渀搀愀爀搀 ㄀ 最⼀㄀㄀最 ⠀愀渀搀 瀀爀攀瘀椀漀甀猀 瘀攀爀猀椀漀渀猀⤀ 挀爀攀愀琀攀 愀渀搀 最爀愀渀琀 猀琀愀琀攀洀攀渀琀猀 愀最愀椀渀㨀㰀戀爀㸀ഀഀ ਍ഀഀ ਍㰀栀㌀㸀匀漀洀攀 攀砀愀洀瀀氀攀猀 漀昀 琀栀攀 ㄀ 最⼀㄀㄀最 洀攀琀栀漀搀Ⰰ 瘀愀氀椀搀 昀漀爀 ㄀㈀挀 琀漀漀㨀㰀⼀栀㌀㸀 ഀഀ ਍ഀഀ ਍㰀䈀㸀ⴀⴀ 䔀堀䄀䴀倀䰀䔀 匀吀䄀一䐀䄀刀䐀 䐀䄀吀䄀䈀䄀匀䔀 唀匀䔀刀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䌀刀䔀䄀吀䔀 唀匀䔀刀 愀氀戀攀爀琀 椀搀攀渀琀椀昀椀攀搀 戀礀 愀氀戀攀爀琀㰀戀爀㸀ഀഀ DEFAULT TABLESPACE SALESDATA -- salesdata is a tablespace
    ਍吀䔀䴀倀伀刀䄀刀夀 吀䄀䈀䰀䔀匀倀䄀䌀䔀 吀䔀䴀倀㰀戀爀㸀ഀഀ QUOTA 100M ON SALESDATA
    ਍儀唀伀吀䄀 ㈀ 䴀 伀一 唀匀䔀刀匀㰀戀爀㸀ഀഀ ;
    ਍㰀戀爀㸀ഀഀ ਍䌀刀䔀䄀吀䔀 唀匀䔀刀 樀眀愀爀搀㰀戀爀㸀ഀഀ IDENTIFIED BY h3in3ken
    ਍    䐀䔀䘀䄀唀䰀吀 吀䄀䈀䰀䔀匀倀䄀䌀䔀 搀愀琀愀开琀猀㰀戀爀㸀ഀഀ QUOTA 100M ON test_ts
    ਍    儀唀伀吀䄀 㔀  䬀 伀一 搀愀琀愀开琀猀㰀戀爀㸀ഀഀ TEMPORARY TABLESPACE temp_ts
    ਍    倀刀伀䘀䤀䰀䔀 挀氀攀爀欀㬀  ⴀⴀ 椀猀 愀 爀攀猀漀甀爀挀攀 瀀爀漀昀椀氀攀㰀戀爀㸀ഀഀ
    ਍䜀刀䄀一吀 挀漀渀渀攀挀琀 吀伀 樀眀愀爀搀㬀㰀戀爀㸀ഀഀ
    ਍ⴀⴀ 䜀刀䄀一吀 猀琀愀渀搀愀爀搀 爀漀氀攀猀㨀㰀戀爀㸀ഀഀ
    ਍䜀刀䄀一吀 挀漀渀渀攀挀琀 吀伀 愀氀戀攀爀琀㬀㰀戀爀㸀ഀഀ GRANT resource TO albert;
    ਍㰀戀爀㸀ഀഀ -- GRANT specific privileges:
    ਍㰀戀爀㸀ഀഀ GRANT create trigger TO albert;
    ਍䜀刀䄀一吀 挀爀攀愀琀攀 猀攀焀甀攀渀挀攀 吀伀 愀氀戀攀爀琀㬀㰀戀爀㸀ഀഀ GRANT create procedure TO albert;
    ਍㰀戀爀㸀ഀഀ -- DROP the user (including all objects):
    ਍㰀戀爀㸀ഀഀ DROP USER albert cascade;
    ਍㰀戀爀㸀ഀഀ -- EXAMPLE DIRECTORY SERVICE (external) USER:
    ਍㰀戀爀㸀ഀഀ CREATE USER global_user
    ਍䤀䐀䔀一吀䤀䘀䤀䔀䐀 䜀䰀伀䈀䄀䰀䰀夀 䄀匀 ✀䌀一㴀愀氀戀攀爀琀猀Ⰰ 伀唀㴀猀愀氀攀猀Ⰰ 伀㴀愀渀琀愀瀀攀砀Ⰰ 䌀㴀一䰀✀㰀戀爀㸀 ഀഀ DEFAULT TABLESPACE users
    ਍儀唀伀吀䄀 㔀  䴀 伀一 甀猀攀爀猀㬀㰀戀爀㸀 ഀഀ ਍ഀഀ ਍㰀栀㌀㸀匀漀洀攀 攀砀瀀氀椀挀椀琀 ㄀㈀挀 攀砀愀洀瀀氀攀猀 椀昀 甀猀椀渀最 䌀䐀䈀⼀倀䐀䈀✀猀㨀㰀⼀栀㌀㸀 ഀഀ ਍ഀഀ All of the above works in 12c too, in a non CDB/PDB database.
    ਍䠀漀眀攀瘀攀爀Ⰰ 椀昀 礀漀甀 栀愀瘀攀 愀 ∀洀甀氀琀椀ⴀ琀攀渀愀渀琀∀ 搀愀琀愀戀愀猀攀 ⠀猀攀攀 猀攀挀琀椀漀渀 ㌀㘀⤀Ⰰ㰀戀爀㸀ഀഀ using containers, there exists differences between "common" CDB users, and (local) PDB users.
    ਍㰀漀氀㸀ഀഀ
  • There can be "database wide" (global) "common" users.
    ਍吀栀攀 甀猀攀爀 椀猀 瀀爀攀猀攀渀琀 椀渀 愀氀氀 挀漀渀琀愀椀渀攀爀猀 ⠀琀栀攀 爀漀漀琀 愀渀搀 愀氀氀 倀䐀䈀猀⤀⸀㰀戀爀㸀ഀഀ You must be connected to the CDB$ROOT if you want to create such a user.
  • ਍㰀氀椀㸀䄀渀搀 琀栀攀爀攀 挀愀渀 戀攀 ⠀氀漀挀愀氀⤀ 倀䐀䈀 甀猀攀爀猀Ⰰ 昀漀爀 甀猀椀渀最 琀栀愀琀 倀䐀䈀 漀渀氀礀⸀㰀戀爀㸀ഀഀ The user is only present in a specific PDB. The same username
    ਍挀愀渀 戀攀 爀攀甀猀攀搀 椀渀 洀甀氀琀椀瀀氀攀 倀䐀䈀猀Ⰰ 戀甀琀 琀栀攀礀 愀爀攀 甀渀爀攀氀愀琀攀搀⸀㰀⼀氀椀㸀ഀഀ ਍ഀഀ For version 12.1, a common username must be preceded by "c##:". However, by using the init/spfile
    ਍瀀愀爀愀洀攀琀攀爀 㰀䈀㸀∀开挀漀洀洀漀渀开甀猀攀爀开瀀爀攀昀椀砀∀㰀⼀䈀㸀 礀漀甀 挀愀渀 挀栀愀渀最攀 椀琀 琀漀 愀渀漀琀栀攀爀 瀀爀攀昀椀砀Ⰰ 漀爀 攀瘀攀渀 琀漀 渀甀氀氀⸀㰀戀爀㸀ഀഀ For a local PDB account, you should not prefix the accountname with "c##:".
    ਍㰀戀爀㸀ഀഀ Here are a few examples:
    ਍㰀戀爀㸀ഀഀ SQL> CONN / AS SYSDBA
    ਍㰀戀爀㸀ഀഀ -- Create the common user using the CONTAINER clause.
    ਍匀儀䰀㸀 䌀刀䔀䄀吀䔀 唀匀䔀刀 挀⌀⌀愀搀洀椀渀 䤀䐀䔀一吀䤀䘀䤀䔀䐀 䈀夀 瀀愀猀猀眀漀爀搀㄀ 䌀伀一吀䄀䤀一䔀刀㴀䄀䰀䰀 ⴀⴀ椀猀 搀攀昀愀甀氀琀 愀渀礀眀愀礀㬀㰀戀爀㸀ഀഀ GRANT CREATE SESSION TO c##admin CONTAINER=ALL;
    ਍㰀戀爀㸀ഀഀ SQL> CONN / AS SYSDBA
    ਍㰀戀爀㸀ഀഀ -- Create a PDB user.
    ਍ⴀⴀ 匀眀椀琀挀栀 挀漀渀琀愀椀渀攀爀 眀栀椀氀攀 挀漀渀渀攀挀琀攀搀 琀漀 愀 挀漀洀洀漀渀 甀猀攀爀⸀㰀戀爀㸀ഀഀ SQL> ALTER SESSION SET CONTAINER = pdb1;
    ਍㰀戀爀㸀ഀഀ -- Create the local user using the CONTAINER clause.
    ਍匀儀䰀㸀 䌀刀䔀䄀吀䔀 唀匀䔀刀 琀攀猀琀瀀搀戀㄀ 䤀䐀䔀一吀䤀䘀䤀䔀䐀 䈀夀 瀀愀猀猀眀漀爀搀㄀ 䌀伀一吀䄀䤀一䔀刀㴀䌀唀刀刀䔀一吀㬀㰀戀爀㸀ഀഀ GRANT CREATE SESSION TO testpdb1 CONTAINER=CURRENT;
    ਍㰀戀爀㸀ഀഀ The local PDC equivalent of the DBA role, is the PDB_DBA role.
    ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㐀 ∀㸀㐀 ⸀ 䄀匀䴀 䤀一 ㄀ 最⼀㄀㄀最 䄀一䐀 ㄀㈀䌀㨀㰀⼀栀㈀㸀 ഀഀ ਍ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    40.1 General concepts of ASM for 10g/11g/12c:

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀䤀㸀⠀䄀 琀攀砀琀 昀爀漀洀 洀攀 昀爀漀洀 愀渀漀琀栀攀爀 渀漀琀攀⸀⸀⸀⤀㰀⼀䤀㸀㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍㰀䈀㸀㄀⸀ 䤀渀琀爀漀搀甀挀琀椀漀渀⸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ ਍䄀匀䴀 椀猀 猀栀漀爀琀 昀漀爀 ∀䄀甀琀漀洀愀琀椀挀 匀琀漀爀愀最攀 䴀愀渀愀最攀洀攀渀琀∀⸀ഀഀ
    ਍䤀昀 礀漀甀 眀愀渀琀 琀漀 甀猀攀 ㄀ 最⼀㄀㄀最 刀䄀䌀Ⰰ  漀爀 樀甀猀琀 愀 ㄀ 最⼀㄀㄀最 匀椀渀最氀攀 䤀渀猀琀愀渀挀攀 䐀愀琀愀戀愀猀攀Ⰰ 琀栀攀 甀猀攀 漀昀 䄀匀䴀 昀漀爀 搀愀琀愀戀愀猀攀 猀琀漀爀愀最攀㰀戀爀㸀ഀഀ (e.g. database files) is certainly recommended in most cases.
    ਍㰀戀爀㸀ഀഀ The more complex your database is (in terms of the number of database files, and or size), the "more advisable" the use of ASM becomes.
    ਍䤀昀 礀漀甀 眀愀渀琀 琀漀 甀猀攀 刀䄀䌀Ⰰ 礀漀甀 洀甀猀琀 甀猀攀 猀漀洀攀 猀漀爀琀 漀昀 猀栀愀爀攀搀 猀琀漀爀愀最攀 ⠀愀挀挀攀猀猀椀戀氀攀 戀礀 洀甀氀琀椀瀀氀攀 渀漀搀攀猀⤀Ⰰ 琀栀愀琀 椀猀Ⰰ㰀戀爀㸀ഀഀ or raw devices, or a cluster filesystem, or ASM.
    ਍㰀戀爀㸀ഀഀ We can describe ASM as a "Database File System" which provides cluster file system- and Volume Manager capabilities,
    ਍琀栀愀琀 愀爀攀 椀渀琀攀最爀愀琀攀搀 椀渀琀漀 琀栀攀 伀爀愀挀氀攀 搀愀琀愀戀愀猀攀 ㄀ 最 欀攀爀渀攀氀⸀㰀戀爀㸀ഀഀ
    ਍䄀 昀攀眀 昀愀挀琀猀㨀㰀戀爀㸀ഀഀ
      ਍㰀氀椀㸀圀攀 愀爀攀 搀攀愀氀椀渀最 眀椀琀栀 伀爀愀挀氀攀 ㄀ 最 漀爀 栀椀最栀攀爀⸀ 匀漀Ⰰ 椀琀猀 渀漀琀 愀瘀愀椀氀愀戀氀攀 漀渀 㤀椀⸀㰀⼀氀椀㸀ഀഀ
    1. On each node, a "small" "lightweight" additional Oracle ASM Instance (+ASM) is needed.
      ਍䘀爀漀洀 愀 搀椀猀琀愀渀挀攀Ⰰ 䤀琀 ∀氀漀漀欀猀∀ 氀椀欀攀 愀 渀漀爀洀愀氀 洀漀甀渀琀攀搀 伀爀愀挀氀攀 椀渀猀琀愀渀挀攀Ⰰ 戀甀琀 椀琀猀 猀瀀攀挀椀愀氀椀稀攀搀 昀漀爀 䄀匀䴀 ⠀瘀漀氀甀洀攀⼀搀椀猀欀⤀ 猀攀爀瘀椀挀攀猀⸀㰀戀爀㸀ഀഀ The ASM instance has hardly a dictionary, and it will not mount and open a "true database" as a regular instance would do,
      ਍戀甀琀 椀渀猀琀攀愀搀 椀琀 眀椀氀氀 洀漀甀渀琀 搀椀猀欀最爀漀甀瀀⠀猀⤀⸀㰀⼀氀椀㸀ഀഀ
    2. 10g: If you are using ASM for database storage, you will (or must) use RMAN for backup/recovery purposes.
      ਍一漀琀攀㨀 琀栀攀爀攀 愀爀攀 愀 昀攀眀 漀琀栀攀爀 洀攀琀栀漀搀猀 琀漀 洀愀渀椀瀀甀氀愀琀攀 ⠀戀愀挀欀甀瀀⤀ 昀椀氀攀猀 氀椀欀攀 ∀䐀䈀䴀匀开䘀䤀䰀䔀开䘀刀䄀一匀䘀䔀刀∀ 漀爀 ∀瘀椀爀琀甀愀氀 昀琀瀀∀⸀㰀戀爀㸀ഀഀ But your regular filesystem file backup utilities (unix/linux), like tar, cpio, cp etc… will not work on ASM.
      ਍䄀猀 昀爀漀洀 ㄀ 最刀㈀Ⰰ 琀栀攀 ∀䄀匀䴀䌀䴀䐀∀ 挀漀洀洀愀渀搀 琀漀漀氀 椀猀 愀瘀愀椀氀愀戀氀攀 琀栀愀琀 挀愀渀 戀攀 甀猀攀搀 琀漀 戀爀漀眀猀攀 ⠀氀猀Ⰰ 挀搀 挀漀洀洀愀渀搀猀⤀ 琀栀攀 䄀匀䴀 猀礀猀琀攀洀⸀㰀⼀氀椀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀㨀 匀甀瀀瀀漀猀攀 礀漀甀 栀愀瘀攀 㘀 氀漀挀愀氀 爀愀眀 瀀愀爀琀椀琀椀漀渀猀 漀渀 愀 唀渀椀砀 猀礀猀琀攀洀⸀ 一漀眀 椀琀 椀猀 瀀漀猀猀椀戀氀攀 琀漀 愀猀猀椀最渀 琀栀攀洀㰀戀爀㸀ഀഀ to ASM and create one or more entities called a "diskgroup" on which you can store database files.
    ਍㰀戀爀㸀ഀഀ
    When you make disks available to ASM (meaning that you create one or more "diskgroups"; see later),
    ਍礀漀甀 昀椀爀猀琀 挀漀渀渀攀挀琀 琀漀 琀栀攀 䄀匀䴀 椀渀猀琀愀渀挀攀Ⰰ 愀渀搀 甀猀攀 ∀猀瀀攀挀椀愀氀∀ 匀儀䰀 匀琀愀琀攀洀攀渀琀猀 琀漀 挀爀攀愀琀攀 琀栀攀 渀攀挀攀猀猀愀爀礀 漀戀樀攀挀琀猀⸀㰀戀爀㸀ഀഀ So SQL statements, when attached to the ASM instance, is your primary interface to create and manage objects,
    ਍愀渀搀 琀漀 爀攀琀爀椀攀瘀攀 椀渀昀漀爀洀愀琀椀漀渀⸀㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍ഀഀ ਍㰀䈀㸀㈀⸀ 吀栀攀 䄀匀䴀 漀戀樀攀挀琀猀㨀 ∀搀椀猀欀最爀漀甀瀀∀Ⰰ ∀昀愀椀氀甀爀攀 最爀漀甀瀀∀Ⰰ ∀搀椀猀欀∀⸀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ The objects we talk about with ASM are: "diskgroup", "failure group", and "disk".
    ਍㰀戀爀㸀ഀഀ - A disk could be a LUN exposed to the OS as a disk, or it could even be a local raw partition/disk.
    ਍㰀戀爀㸀ഀഀ - A failure group, is a number of disks that share (this sounds weird) a "common point of failure".
    ਍吀栀椀猀 椀猀 爀攀愀氀氀礀 渀漀琀 愀 搀椀昀昀椀挀甀氀琀 挀漀渀挀攀瀀琀⸀ 吀愀欀攀 愀 氀漀漀欀 愀琀 琀栀攀 昀椀最甀爀攀 戀攀氀漀眀⸀㰀戀爀㸀ഀഀ Here you see a set of blue an red disks, each on their own diskcontroller. These are examples
    ਍漀昀 昀愀椀氀甀爀攀 最爀漀甀瀀猀Ⰰ 戀攀挀愀甀猀攀 昀漀爀 攀砀愀洀瀀氀攀Ⰰ 琀栀攀 爀攀搀 搀椀猀欀猀 愀氀氀 猀栀愀爀攀 琀栀愀琀 猀愀洀攀 漀渀攀 挀漀渀琀爀漀氀氀攀爀⸀㰀戀爀㸀ഀഀ As you will see later, when we create a 'diskgroup", you can tell ASM that ASM itself should
    ਍琀愀欀攀 洀攀愀猀甀爀攀猀 琀漀 最甀愀爀愀渀琀攀攀 爀攀搀甀渀搀愀渀挀礀 ⠀瘀椀愀 琀栀攀 挀氀愀甀猀攀 刀䔀䐀唀一䐀䄀一䌀夀 ∀渀漀爀洀愀氀∀Ⰰ 漀爀 ∀栀椀最栀∀⤀Ⰰ 漀爀 琀栀愀琀 愀渀 攀砀琀攀爀渀愀氀㰀戀爀㸀ഀഀ facility takes care for redundancy, and in this case, it's not ASM itself that will take care
    ਍漀昀 爀攀搀甀渀搀愀渀挀礀⸀ 吀栀椀猀 挀漀甀氀搀 戀攀 琀栀攀 挀愀猀攀 椀昀 礀漀甀 甀猀攀 愀 猀漀爀琀 漀昀 刀䄀䤀䐀∀一∀ 猀礀猀琀攀洀⸀㰀戀爀㸀ഀഀ
    ਍ⴀ 䄀 搀椀猀欀最爀漀甀瀀 椀猀 愀 猀攀琀 漀昀 搀椀猀欀猀Ⰰ 洀愀渀愀最攀搀 戀礀 䄀匀䴀 愀猀 愀 甀渀椀琀Ⰰ 眀栀攀爀攀 爀攀搀甀渀搀愀渀挀礀 椀猀 最愀爀愀渀琀攀攀搀Ⰰ㰀戀爀㸀ഀഀ if you have specified two or more failuregroups, or if you have specified that redundancy
    ਍椀猀 琀愀欀攀渀 挀愀爀攀 漀昀 戀礀 猀漀洀攀 ∀攀砀琀攀爀渀愀氀∀ 昀愀挀椀氀椀琀礀 ⠀氀椀欀攀 愀 刀䄀䤀䐀㔀 猀礀猀琀攀洀⤀⸀㰀戀爀㸀ഀഀ
    ਍ഀഀ Disks and Failure groups:
    ਍㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍䰀攀琀✀猀 琀愀欀攀 愀 氀漀漀欀 愀琀 愀 昀攀眀 攀砀愀洀瀀氀攀猀 眀栀椀挀栀 眀椀氀氀 洀愀欀攀 琀栀椀渀最猀 挀氀攀愀爀⸀㰀戀爀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀 ㄀㨀㰀戀爀㸀ഀഀ
    ਍␀ 攀砀瀀漀爀琀 伀刀䄀䌀䰀䔀开匀䤀䐀㴀⬀䄀匀䴀㰀戀爀㸀ഀഀ $ sqlplus /nolog
    ਍匀儀䰀㸀 挀漀渀渀攀挀琀 ⼀ 愀猀 猀礀猀搀戀愀㰀戀爀㸀ഀഀ
    ਍一漀眀 氀攀琀✀猀 挀爀攀愀琀攀 愀 搀椀猀欀最爀漀甀瀀 挀愀氀氀攀搀 ∀搀猀欀最爀瀀㄀∀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䌀刀䔀䄀吀䔀 䐀䤀匀䬀䜀刀伀唀倀 搀猀欀最爀瀀㄀㰀戀爀㸀ഀഀ NORMAL REDUNDANCY
    ਍䘀䄀䤀䰀䜀刀伀唀倀 昀愀椀氀最爀瀀㄀ 䐀䤀匀䬀㰀戀爀㸀ഀഀ '/dev/d1',
    ਍✀⼀搀攀瘀⼀搀㈀✀Ⰰ㰀戀爀㸀ഀഀ FAILGROUP failgrp2 DISK
    ਍✀⼀搀攀瘀⼀搀㌀✀Ⰰ㰀戀爀㸀ഀഀ /dev/d4' ;
    ਍㰀戀爀㸀ഀഀ Although it may appear as such, d3 and d4 are not mirrors of d1 and d2. Rather, ASM uses all the disks
    ਍琀漀 挀爀攀愀琀攀 愀 昀愀甀氀琀ⴀ琀漀氀攀爀愀渀琀 猀礀猀琀攀洀⸀ 䘀漀爀 椀渀猀琀愀渀挀攀Ⰰ 愀渀 攀砀琀攀渀琀 漀渀 琀栀攀 搀椀猀欀最爀漀甀瀀 洀椀最栀琀㰀戀爀㸀ഀഀ be created in d1 with a copy maintained on d4. Another extent may be created on d3
    ਍眀椀琀栀 挀漀瀀礀 漀渀 搀㈀Ⰰ 愀渀搀 猀漀 漀渀⸀ 䘀愀椀氀甀爀攀 漀昀 愀 猀瀀攀挀椀昀椀挀 搀椀猀欀 愀氀氀漀眀猀 愀 挀漀瀀礀㰀戀爀㸀ഀഀ on another disk to be used so that the operation can continue. For example, you could lose
    ਍琀栀攀 挀漀渀琀爀漀氀氀攀爀 昀漀爀 戀漀琀栀 搀椀猀欀猀 搀㄀ 愀渀搀 搀㈀Ⰰ 愀渀搀 琀栀攀 猀礀猀琀攀洀 眀漀甀氀搀 挀漀渀琀椀渀甀攀 琀漀 漀瀀攀爀愀琀攀⸀㰀戀爀㸀ഀഀ
    ਍䤀渀 琀栀攀 ∀刀䔀䐀唀一䐀䄀一䌀夀∀ 挀氀愀甀猀攀 漀昀 琀栀攀 猀琀愀琀攀洀攀渀琀Ⰰ 礀漀甀 挀愀渀 猀瀀攀挀椀昀礀㨀㰀戀爀㸀ഀഀ
    ਍一伀刀䴀䄀䰀㨀 猀琀爀椀瀀椀渀最 漀昀 攀砀琀攀渀搀猀 椀猀 椀渀 瀀氀愀挀攀Ⰰ 愀渀搀 漀昀 愀渀礀 攀砀琀攀渀琀Ⰰ ㈀ 挀漀瀀椀攀猀 攀砀椀猀琀猀⸀㰀戀爀㸀ഀഀ HIGH: striping is in place, and, of any extent, 3 copies exists.
    ਍䔀堀吀䔀刀一䄀䰀㨀 䤀琀✀猀 渀漀琀 䄀匀䴀 琀栀愀琀 眀椀氀氀 琀愀欀攀 挀愀爀攀 漀昀 爀攀搀甀渀搀愀渀挀礀Ⰰ 戀甀琀 椀渀猀琀攀愀搀 琀栀攀 搀攀瘀椀挀攀 ⠀攀⸀最⸀ 刀䄀䤀䐀㔀 愀爀爀愀礀⤀Ⰰ㰀戀爀㸀ഀഀ will provide for redundancy.
    ਍㰀戀爀㸀ഀഀ Example 2:
    ਍㰀戀爀㸀ഀഀ Yes, this looks a lot like example 1, but please take a furher look.
    ਍㰀戀爀㸀ഀഀ SQL> CREATE DISKGROUP DATA1 NORMAL REDUNDANCY
    ਍䘀䄀䤀䰀䜀刀伀唀倀 挀漀渀琀爀漀氀氀攀爀㄀ 䐀䤀匀䬀㰀戀爀㸀ഀഀ '/devices/diska1',
    ਍ ✀⼀搀攀瘀椀挀攀猀⼀搀椀猀欀愀㈀✀Ⰰ㰀戀爀㸀ഀഀ '/devices/diska3',
    ਍ ✀⼀搀攀瘀椀挀攀猀⼀搀椀猀欀愀㐀✀Ⰰ㰀戀爀㸀ഀഀ FAILGROUP controller2 DISK
    ਍ ✀⼀搀攀瘀椀挀攀猀⼀搀椀猀欀戀㄀✀Ⰰ㰀戀爀㸀ഀഀ '/devices/diskb2',
    ਍ ✀⼀搀攀瘀椀挀攀猀⼀搀椀猀欀戀㌀✀Ⰰ㰀戀爀㸀ഀഀ '/devices/diskb4';
    ਍㰀戀爀㸀ഀഀ In this example, the diskgroup "DATA1" is composed of eight disks that are defined
    ਍愀猀 戀攀氀漀渀最椀渀最 琀漀 攀椀琀栀攀爀 昀愀椀氀甀爀攀 最爀漀甀瀀 挀漀渀琀爀漀氀氀攀爀㄀ 漀爀 挀漀渀琀爀漀氀氀攀爀㈀ ⠀礀漀甀 挀愀渀 挀愀氀氀 琀栀攀洀 愀猀 礀漀甀 氀椀欀攀⤀⸀㰀戀爀㸀ഀഀ Since NORMAL REDUNDANCY level is specified for the disk group, then Automatic Storage Management
    ਍瀀爀漀瘀椀搀攀猀 爀攀搀甀渀搀愀渀挀礀 昀漀爀 愀氀氀 昀椀氀攀猀 挀爀攀愀琀攀搀 椀渀 䐀䄀吀䄀㄀Ⰰ 琀栀愀琀 椀猀Ⰰ ㈀ 眀愀礀 洀椀爀爀漀爀椀渀最 椀猀 椀渀 瀀氀愀挀攀Ⰰ㰀戀爀㸀ഀഀ or in other words, 2 copies exists.
    ਍倀氀攀愀猀攀 渀漀琀攀 琀栀愀琀 愀挀琀甀愀氀氀礀 琀栀攀 㰀䈀㸀攀砀琀攀渀琀猀㰀⼀䈀㸀 漀昀 琀栀攀 昀椀氀攀 愀爀攀 愀挀琀甀愀氀氀礀 洀椀爀爀漀爀爀攀搀 漀瘀攀爀 琀栀攀 琀眀漀 昀愀椀氀甀爀攀 最爀漀甀瀀猀⸀㰀戀爀㸀ഀഀ
    ਍圀栀攀渀 礀漀甀 挀爀攀愀琀攀 愀 搀椀猀 最爀漀甀瀀Ⰰ 礀漀甀 挀愀渀 猀攀琀 琀栀攀 伀爀愀挀氀攀 䄀匀䴀 愀氀氀漀挀愀琀椀漀渀 甀渀椀琀 猀椀稀攀 眀椀琀栀 琀栀攀 㰀䈀㸀䄀唀开匀䤀娀䔀㰀⼀䈀㸀㰀戀爀㸀ഀഀ disk group attribute. The values can be 1, 2, 4, 8, 16, 32, or 64 MB.
    ਍㰀戀爀㸀ഀഀ The upper statement could therefore also have been in a form as shown below:
    ਍㰀戀爀㸀ഀഀ CREATE DISKGROUP data NORMAL REDUNDANCY
    ਍  䘀䄀䤀䰀䜀刀伀唀倀 挀漀渀琀爀漀氀氀攀爀㄀ 䐀䤀匀䬀㰀戀爀㸀ഀഀ '/devices/diska1' NAME diska1,
    ਍    ✀⼀搀攀瘀椀挀攀猀⼀搀椀猀欀愀㈀✀ 一䄀䴀䔀 搀椀猀欀愀㈀Ⰰ㰀戀爀㸀ഀഀ '/devices/diska3' NAME diska3,
    ਍    ✀⼀搀攀瘀椀挀攀猀⼀搀椀猀欀愀㐀✀ 一䄀䴀䔀 搀椀猀欀愀㐀㰀戀爀㸀ഀഀ FAILGROUP controller2 DISK
    ਍    ✀⼀搀攀瘀椀挀攀猀⼀搀椀猀欀戀㄀✀ 一䄀䴀䔀 搀椀猀欀戀㄀Ⰰ㰀戀爀㸀ഀഀ '/devices/diskb2' NAME diskb2,
    ਍    ✀⼀搀攀瘀椀挀攀猀⼀搀椀猀欀戀㌀✀ 一䄀䴀䔀 搀椀猀欀戀㌀Ⰰ㰀戀爀㸀ഀഀ '/devices/diskb4' NAME diskb4
    ਍  㰀䈀㸀䄀吀吀刀䤀䈀唀吀䔀 ✀愀甀开猀椀稀攀✀㴀✀㐀䴀✀㰀⼀䈀㸀Ⰰ㰀戀爀㸀ഀഀ 'compatible.asm' = '11.2',
    ਍    ✀挀漀洀瀀愀琀椀戀氀攀⸀爀搀戀洀猀✀ 㴀 ✀㄀㄀⸀㈀✀Ⰰ㰀戀爀㸀ഀഀ 'compatible.advm' = '11.2';
    ਍㰀戀爀㸀ഀഀ Example 3:
    ਍㰀戀爀㸀ഀഀ Suppose you only have two raw disks, but you still want 2 way mirroring of extents (and thus the files they comprise)
    ਍礀漀甀爀 搀椀猀欀最爀漀甀瀀 挀漀甀氀搀 戀攀 愀猀 猀椀洀瀀氀攀 愀猀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䌀刀䔀䄀吀䔀 䐀䤀匀䬀䜀刀伀唀倀 䐀䄀吀䄀㄀ 一伀刀䴀䄀䰀 刀䔀䐀唀一䐀䄀一䌀夀 㰀戀爀㸀ഀഀ FAILGROUP grp1 DISK
    ਍ ✀⼀搀攀瘀⼀爀愀眀⼀爀愀眀㌀✀Ⰰ㰀戀爀㸀ഀഀ FAILGROUP grp2 DISK
    ਍ ✀⼀搀攀瘀⼀爀愀眀⼀爀愀眀㔀✀㬀㰀戀爀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀 㐀㨀㰀戀爀㸀ഀഀ
    ਍匀甀瀀瀀漀猀攀 礀漀甀 栀愀瘀攀 ∀攀砀琀攀爀渀愀氀∀ 爀攀搀甀渀搀愀渀挀礀 椀渀 瀀氀愀挀攀⸀ 匀漀 䄀匀䴀 椀琀猀攀氀昀 搀漀攀猀 渀漀琀 渀攀攀搀 ∀琀漀 眀漀爀爀礀 愀戀漀甀琀 爀攀搀甀渀搀愀渀挀礀∀⸀㰀戀爀㸀ഀഀ In that case, you DO NOT SPECIFY FAILGROUPS
    ਍䔀砀愀洀瀀氀攀猀 漀昀 琀栀漀猀攀 猀琀愀琀攀洀攀渀琀猀 愀爀攀㨀㰀戀爀㸀ഀഀ
    ਍䌀刀䔀䄀吀䔀 䐀䤀匀䬀䜀刀伀唀倀 搀愀琀愀 䔀堀吀䔀刀一䄀䰀 刀䔀䐀唀一䐀䄀一䌀夀 㰀戀爀㸀ഀഀ DISK '/dev/d1', '/dev/d2', '/dev/d3';
    ਍㰀戀爀㸀ഀഀ Example 5: Create a Fast Recovery Area diskgroup
    ਍㰀戀爀㸀ഀഀ CREATE DISKGROUP fra NORMAL REDUNDANCY
    ਍䐀䤀匀䬀 ✀⼀搀攀瘀椀挀攀猀⼀搀椀猀欀挀⨀✀㬀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 3. Creation of Database objects and viewing them in ASM.
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍一漀眀 琀栀愀琀 礀漀甀 栀愀瘀攀 搀椀猀欀最爀漀甀瀀猀 愀渀搀 䄀匀䴀 爀甀渀渀椀渀最Ⰰ 礀漀甀 眀愀渀琀 琀漀 挀爀攀愀琀攀 琀愀戀氀攀猀瀀愀挀攀猀 漀渀 猀甀挀栀 愀 搀椀猀欀最爀漀甀瀀⸀㰀戀爀㸀ഀഀ Also, you want to take a view on "how it all looks like".
    ਍㰀戀爀㸀ഀഀ Here are some examples. These examples are done through a sqlplus session to the Regular Database instance.
    ਍㰀戀爀㸀ഀഀ Remember that when creating ASM objects like diskgroups, that should be done through a session to the ASM instance.
    ਍䈀甀琀 漀渀挀攀 琀栀攀 渀攀攀搀攀搀 搀椀猀欀最爀漀甀瀀猀 愀爀攀 椀渀 瀀氀愀挀攀 愀渀搀 礀漀甀 眀愀渀琀 琀漀 挀爀攀愀琀攀 琀愀戀氀攀猀瀀愀挀攀猀 漀爀 漀渀氀椀渀攀 爀攀搀漀 氀漀最昀椀氀攀猀㰀戀爀㸀ഀഀ for your regular Database, you just connect to the regular Database instead of ASM.
    ਍㰀戀爀㸀ഀഀ SQL> CREATE TABLESPACE USER_DATA DATAFILE '+dskgrp1/user_data_01'
    ਍匀䤀娀䔀 ㄀ ㈀㐀䴀㬀㰀戀爀㸀ഀഀ /
    ਍㰀戀爀㸀ഀഀ ਍䤀渀 琀栀攀 愀戀漀瘀攀 攀砀愀洀瀀氀攀Ⰰ 礀漀甀 攀昀昀攀挀琀椀瘀攀氀礀 猀愀礀 琀栀愀琀 礀漀甀 眀愀渀琀 愀 琀愀戀氀攀猀瀀愀挀攀 ∀唀匀䔀刀开䐀䄀吀䄀∀㰀戀爀㸀ഀഀ in the diskgroup "dskgrp1". How ASM deals with all details, is left to ASM.
    ਍㰀戀爀㸀ഀഀ SQL> CREATE TABLESPACE my_ts DATAFILE '+disk_group_1' SIZE 100M AUTOEXTEND ON;
    ਍㰀戀爀㸀ഀഀ In the above example, you want to create a tablespace "my_ts" of initially 100M to be created in the diskgroup "disk_group_1".
    ਍䄀最愀椀渀Ⰰ 愀氀氀 搀攀琀愀椀氀猀 愀爀攀 氀攀昀琀 琀漀 䄀匀䴀⸀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 挀爀攀愀琀攀 琀愀戀氀攀猀瀀愀挀攀 吀䔀匀吀 搀愀琀愀昀椀氀攀 ✀⬀伀刀䄀䜀㈀✀ 㬀㰀戀爀㸀ഀഀ
    ਍ഀഀ Above we created the tablespace "test" on the diskgroup "ORAG2".
    ਍一漀眀 礀漀甀 眀愀渀琀 琀漀 琀愀欀攀 愀 氀漀漀欀 栀漀眀 琀栀椀猀 愀氀氀 氀漀漀欀猀 氀椀欀攀Ⰰ 猀漀 礀漀甀 琀愀欀攀 愀 氀漀漀欀 愀琀 琀栀攀 甀猀甀愀氀 瘀␀搀愀琀愀昀椀氀攀 瘀椀攀眀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀攀氀攀挀琀 渀愀洀攀 昀爀漀洀 瘀␀搀愀琀愀昀椀氀攀㬀㰀戀爀㸀ഀഀ
    ਍一䄀䴀䔀㰀戀爀㸀ഀഀ ----------------------------------------------
    ਍⬀伀刀䄀䐀䜀⼀爀愀挀⼀搀愀琀愀昀椀氀攀⼀猀礀猀琀攀洀⸀㈀㘀㐀⸀㘀   ㄀㘀㤀㔀㔀㰀戀爀㸀ഀഀ +ORADG/rac/datafile/undotbs1.265.600016969
    ਍⬀伀刀䄀䐀䜀⼀爀愀挀⼀搀愀琀愀昀椀氀攀⼀猀礀猀愀甀砀⸀㈀㘀㘀⸀㘀   ㄀㘀㤀㜀㜀㰀戀爀㸀ഀഀ +ORADG/rac/datafile/users.268.600016987
    ਍⬀伀刀䄀䐀䜀⼀爀愀挀⼀搀愀琀愀昀椀氀攀⼀琀攀猀琀⸀㈀㔀㘀⸀㘀  ㄀㌀㜀㘀㐀㜀㰀戀爀㸀ഀഀ
    ਍伀爀 礀漀甀 挀愀渀 甀猀攀 琀栀攀 漀琀栀攀爀 爀攀氀攀瘀愀渀琀 瘀␀ 瘀椀攀眀猀 愀猀 眀攀氀氀Ⰰ 氀椀欀攀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀攀氀攀挀琀 渀愀洀攀 昀爀漀洀 瘀␀挀漀渀琀爀漀氀昀椀氀攀㬀㰀戀爀㸀ഀഀ
    ਍⬀䐀䄀吀䄀㄀⼀爀愀挀 ⼀挀漀渀琀爀漀氀昀椀氀攀⼀挀甀爀爀攀渀琀⸀㈀㘀㄀⸀㌀㰀戀爀㸀ഀഀ +DATA1/rac0/controlfile/current.260.3
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ Any Oracle ASM file is completely contained within a single diskgroup.
    ਍䈀甀琀Ⰰ 愀 挀攀爀琀愀椀渀 搀椀猀欀最爀漀甀瀀 洀椀最栀琀 挀漀渀琀愀椀渀 昀椀氀攀猀 戀攀氀漀渀最椀渀最 琀漀 猀攀瘀攀爀愀氀 搀愀琀愀戀愀猀攀猀Ⰰ㰀戀爀㸀ഀഀ and a single database can use files from multiple disk groups.
    ਍㰀戀爀㸀ഀഀ An ASM diskgroup can not only hold datafiles. The following list shows what can be stored in a diskgroup:
    ਍㰀戀爀㸀ഀഀ -Control files
    ਍ⴀ䐀愀琀愀 昀椀氀攀猀Ⰰ 琀攀洀瀀漀爀愀爀礀 搀愀琀愀 昀椀氀攀猀Ⰰ 愀渀搀 搀愀琀愀 昀椀氀攀 挀漀瀀椀攀猀㰀戀爀㸀ഀഀ -SPFILEs
    ਍ⴀ伀渀氀椀渀攀 爀攀搀漀 氀漀最猀Ⰰ 愀爀挀栀椀瘀攀 氀漀最猀Ⰰ 愀渀搀 䘀氀愀猀栀戀愀挀欀 氀漀最猀㰀戀爀㸀ഀഀ -RMAN backups
    ਍ⴀ䐀椀猀愀猀琀攀爀 爀攀挀漀瘀攀爀礀 挀漀渀昀椀最甀爀愀琀椀漀渀猀㰀戀爀㸀ഀഀ -Change tracking bitmaps
    ਍ⴀ䐀愀琀愀 倀甀洀瀀 搀甀洀瀀猀攀琀猀㰀戀爀㸀ഀഀ
    ਍䄀匀䴀 最攀渀攀爀愀琀攀猀 昀椀氀攀渀愀洀攀猀 愀挀挀漀爀搀椀渀最 琀漀 琀栀攀 昀漀氀氀漀眀椀渀最 猀挀栀攀洀攀㨀㰀戀爀㸀ഀഀ
    ਍⬀搀椀猀欀䜀爀漀甀瀀一愀洀攀⼀搀愀琀愀戀愀猀攀一愀洀攀⼀昀椀氀攀吀礀瀀攀⼀昀椀氀攀吀礀瀀攀吀愀最⸀昀椀氀攀⸀椀渀挀愀爀渀愀琀椀漀渀㰀戀爀㸀ഀഀ
    ਍䄀戀漀瘀攀 礀漀甀 栀愀瘀攀 猀攀攀渀 猀漀洀攀 氀椀猀琀椀渀最猀Ⰰ 戀甀琀 栀攀爀攀 愀爀攀 愀 昀攀眀 攀砀愀洀瀀氀攀猀㨀㰀戀爀㸀ഀഀ
    ਍⬀伀刀䄀䐀䜀⼀爀愀挀⼀搀愀琀愀昀椀氀攀⼀猀礀猀琀攀洀⸀㈀㘀㐀⸀㘀   ㄀㘀㤀㔀㔀㰀戀爀㸀ഀഀ +dgroup2/test/controlfile/Current.256.541956472
    ਍⬀搀愀琀愀⼀漀爀挀氀⼀䌀伀一吀刀伀䰀䘀䤀䰀䔀⼀䌀甀爀爀攀渀琀⸀㈀㔀㘀⸀㔀㐀㄀㤀㔀㘀㈀㄀㤀㰀戀爀㸀ഀഀ
    ਍吀攀洀瀀氀愀琀攀猀㨀㰀戀爀㸀ഀഀ
    ਍吀攀洀瀀氀愀琀攀猀 愀爀攀 挀漀氀氀攀挀琀椀漀渀猀 漀昀 㰀䈀㸀愀琀琀爀椀戀甀琀攀 瘀愀氀甀攀猀㰀⼀䈀㸀 琀栀愀琀 愀爀攀 甀猀攀搀 昀漀爀 瘀愀爀椀漀甀猀 琀栀椀渀最猀Ⰰ㰀戀爀㸀ഀഀ like file mirroring, and striping attributes etc.. for an Oracle ASM file when it is created.
    ਍圀栀攀渀 挀爀攀愀琀椀渀最 愀 昀椀氀攀Ⰰ 礀漀甀 挀愀渀 椀渀挀氀甀搀攀 愀 琀攀洀瀀氀愀琀攀 渀愀洀攀 愀渀搀 愀猀猀椀最渀 搀攀猀椀爀攀搀 愀琀琀爀椀戀甀琀攀猀㰀戀爀㸀ഀഀ based on an individual file rather than the file type.
    ਍䈀甀琀 愀 㰀䈀㸀搀攀昀愀甀氀琀 琀攀洀瀀氀愀琀攀㰀⼀䈀㸀 椀猀 瀀爀漀瘀椀搀攀搀 昀漀爀 攀瘀攀爀礀 伀爀愀挀氀攀 昀椀氀攀 琀礀瀀攀Ⰰ 猀漀 礀漀甀 搀漀 渀漀琀 渀攀攀搀㰀戀爀㸀ഀഀ to do anything special. But if you must do so, you can customize templates to meet unique requirements.
    ਍ഀഀ ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㐀⸀ 䴀漀甀渀琀椀渀最 愀渀搀 甀渀洀漀甀渀琀椀渀最 䄀匀䴀 搀椀猀欀最爀漀甀瀀猀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ ਍䄀 搀椀猀欀 最爀漀甀瀀 挀漀渀猀椀猀琀猀 漀昀 愀 最爀漀甀瀀椀渀最 漀昀 搀椀猀欀猀 琀栀愀琀 愀爀攀 洀愀渀愀最攀搀 琀漀最攀琀栀攀爀 愀猀 愀 甀渀椀琀⸀ 吀栀攀猀攀 搀椀猀欀猀 愀爀攀 爀攀昀攀爀爀攀搀 㰀戀爀㸀ഀഀ to as ASM disks. Files written on ASM disks are ASM files, whose names are automatically generated
    ਍戀礀 䄀甀琀漀洀愀琀椀挀 匀琀漀爀愀最攀 䴀愀渀愀最攀洀攀渀琀⸀ 夀漀甀 挀愀渀 猀瀀攀挀椀昀礀 甀猀攀爀ⴀ昀爀椀攀渀搀氀礀 愀氀椀愀猀 渀愀洀攀猀 昀漀爀 䄀匀䴀 昀椀氀攀猀Ⰰ㰀戀爀㸀ഀഀ but you must create a hierarchical directory structure for these alias names.
    ਍㰀戀爀㸀ഀഀ An +ASM instance is a lightweigth instance which uses less resources compared to a regular instance.
    ਍䤀琀 甀猀攀猀 椀琀✀猀 漀眀渀 伀刀䄀䌀䰀䔀开䠀伀䴀䔀 愀渀搀 愀氀猀漀 栀愀猀 愀 猀洀愀氀氀 椀渀椀琀⸀漀爀愀⼀猀瀀昀椀氀攀⸀漀爀愀⸀㰀戀爀㸀ഀഀ The following parameters relating to disks and disgroups are often used:
    ਍㰀戀爀㸀ഀഀ ਍䄀匀䴀开䐀䤀匀䬀匀吀刀䤀一䜀㰀戀爀㸀ഀഀ Limits the set of disks that Automatic Storage Management considers for discovery.
    ਍䐀攀昀愀甀氀琀㨀 一唀䰀䰀⸀ 吀栀椀猀 搀攀昀愀甀氀琀 挀愀甀猀攀猀 䄀匀䴀 琀漀 昀椀渀搀 愀氀氀 漀昀 琀栀攀 搀椀猀欀猀 椀渀 愀 瀀氀愀琀昀漀爀洀ⴀ猀瀀攀挀椀昀椀挀 氀漀挀愀琀椀漀渀 琀漀 眀栀椀挀栀 㰀戀爀㸀ഀഀ it has read/write access.).
    ਍䔀砀愀洀瀀氀攀㨀 ⼀搀攀瘀⼀爀愀眀⼀⨀㰀戀爀㸀ഀഀ
    ਍䄀匀䴀开䐀䤀匀䬀䜀刀伀唀倀匀㰀戀爀㸀ഀഀ Lists the names of disk groups to be mounted by an ASM instance at startup,
    ਍漀爀 眀栀攀渀 琀栀攀 䄀䰀吀䔀刀 䐀䤀匀䬀䜀刀伀唀倀 䄀䰀䰀 䴀伀唀一吀 猀琀愀琀攀洀攀渀琀 椀猀 甀猀攀搀⸀㰀戀爀㸀ഀഀ Default: NULL (If this parameter is not specified, then no disk groups are mounted.)
    ਍㰀戀爀㸀ഀഀ -- Mounting and Dismounting Disk Groups:
    ਍㰀戀爀㸀ഀഀ Disk groups that are specified in the ASM_DISKGROUPS initialization parameter are mounted automatically
    ਍愀琀 䄀匀䴀 椀渀猀琀愀渀挀攀 猀琀愀爀琀甀瀀⸀ 吀栀椀猀 洀愀欀攀猀 琀栀攀洀 愀瘀愀椀氀愀戀氀攀 琀漀 愀氀氀 搀愀琀愀戀愀猀攀 椀渀猀琀愀渀挀攀猀 爀甀渀渀椀渀最 漀渀 琀栀攀 猀愀洀攀 渀漀搀攀 㰀戀爀㸀ഀഀ as Automatic Storage Management. The disk groups are dismounted at ASM instance shutdown.
    ਍䄀甀琀漀洀愀琀椀挀 匀琀漀爀愀最攀 䴀愀渀愀最攀洀攀渀琀 愀氀猀漀 愀甀琀漀洀愀琀椀挀愀氀氀礀 洀漀甀渀琀猀 愀 搀椀猀欀 最爀漀甀瀀 眀栀攀渀 礀漀甀 椀渀椀琀椀愀氀氀礀 挀爀攀愀琀攀 椀琀Ⰰ 㰀戀爀㸀ഀഀ and dismounts a disk group if you drop it.
    ਍㰀戀爀㸀ഀഀ There may be times that you want to mount or dismount disk groups manually. For these actions use
    ਍琀栀攀 䄀䰀吀䔀刀 䐀䤀匀䬀䜀刀伀唀倀 ⸀⸀⸀ 䴀伀唀一吀 漀爀 䄀䰀吀䔀刀 䐀䤀匀䬀䜀刀伀唀倀 ⸀⸀⸀ 䐀䤀匀䴀伀唀一吀 猀琀愀琀攀洀攀渀琀⸀ 夀漀甀 挀愀渀 洀漀甀渀琀 漀爀 搀椀猀洀漀甀渀琀 㰀戀爀㸀ഀഀ disk groups by name, or specify ALL.
    ਍㰀戀爀㸀ഀഀ If you try to dismount a disk group that contains open files, the statement will fail, unless you also
    ਍猀瀀攀挀椀昀礀 琀栀攀 䘀伀刀䌀䔀 挀氀愀甀猀攀⸀㰀戀爀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀猀㨀㰀戀爀㸀ഀഀ
    ਍吀栀攀 昀漀氀氀漀眀椀渀最 猀琀愀琀攀洀攀渀琀 搀椀猀洀漀甀渀琀猀 愀氀氀 搀椀猀欀 最爀漀甀瀀猀 琀栀愀琀 愀爀攀 挀甀爀爀攀渀琀氀礀 洀漀甀渀琀攀搀 琀漀 琀栀攀 䄀匀䴀 椀渀猀琀愀渀挀攀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䄀䰀吀䔀刀 䐀䤀匀䬀䜀刀伀唀倀 䄀䰀䰀 䐀䤀匀䴀伀唀一吀㬀㰀戀爀㸀ഀഀ
    ਍吀栀攀 昀漀氀氀漀眀椀渀最 猀琀愀琀攀洀攀渀琀 洀漀甀渀琀猀 搀椀猀欀 最爀漀甀瀀 搀最爀漀甀瀀㄀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䄀䰀吀䔀刀 䐀䤀匀䬀䜀刀伀唀倀 搀最爀漀甀瀀㄀ 䴀伀唀一吀㬀 㰀戀爀㸀ഀഀ ਍ഀഀ ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㔀⸀ 嘀␀䄀匀䴀开 瘀椀攀眀猀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ An ASM instance has no dictionary. But on all disks that are part of diskgroups,
    ਍琀栀攀 䄀匀䴀 椀渀猀琀愀渀挀攀 眀椀氀氀 眀爀椀琀攀 洀攀琀愀搀愀琀愀 椀渀昀漀爀洀愀琀椀漀渀 椀渀 琀栀攀 昀椀爀猀琀 戀氀漀挀欀猀 漀昀 琀栀攀 搀椀猀欀猀Ⰰ㰀戀爀㸀ഀഀ (like e.g. to which diskgroup this disk is part of), and this information can be presented
    ਍琀栀爀漀甀最栀 琀栀攀 猀漀挀愀氀氀攀搀 ∀瘀␀䄀匀䴀开∀ 瘀椀攀眀猀⸀㰀戀爀㸀ഀഀ Here are a few examples of the v$ASM views:
    ਍㰀戀爀㸀ഀഀ V$ASM_ALIAS Shows every alias for every disk group mounted by the ASM instance.
    ਍㰀戀爀㸀 ഀഀ V$ASM_CLIENT Shows which database instance(s) are using any ASM disk groups that are being mounted by this ASM instance.
    ਍㰀戀爀㸀 ഀഀ V$ASM_DISK Lists each disk discovered by the ASM instance, including disks that are not part of any ASM disk group.
    ਍㰀戀爀㸀 ഀഀ V$ASM_DISKGROUP Describes information about ASM disk groups mounted by the ASM instance.
    ਍㰀戀爀㸀ഀഀ V$ASM_FILE Lists each ASM file in every ASM disk group mounted by the ASM instance.
    ਍㰀戀爀㸀 ഀഀ V$ASM_OPERATION Like its counterpart in a normal Instance, V$SESSION_LONGOPS, it shows each long-running ASM operation in the ASM instance.
    ਍㰀戀爀㸀 ഀഀ V$ASM_TEMPLATE Lists each template present in every ASM disk group mounted by the ASM instance.
    ਍㰀戀爀㸀ഀഀ V$ASM_DISK_IOSTAT List IO statistics for each ASM client, or instance.
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㘀⸀ 䘀爀攀攀 匀瀀愀挀攀 ⼀ 唀猀攀搀 匀瀀愀挀攀 䐀椀猀欀猀 䄀匀䴀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ select substr(name,1,15), total_mb, free_mb
    ਍昀爀漀洀 瘀␀愀猀洀开搀椀猀欀㬀㰀戀爀㸀ഀഀ
    ਍猀攀氀攀挀琀㰀戀爀㸀ഀഀ name,decode(type,'NORMAL',2,'HIGH',3,'EXTERN',1) Redundancy,
    ਍⠀琀漀琀愀氀开洀戀⼀搀攀挀漀搀攀⠀琀礀瀀攀Ⰰ✀一伀刀䴀䄀䰀✀Ⰰ㈀Ⰰ✀䠀䤀䜀䠀✀Ⰰ㌀Ⰰ✀䔀堀吀䔀刀一✀Ⰰ㄀⤀⤀ 吀漀琀愀氀开䴀䈀Ⰰ㰀戀爀㸀ഀഀ (free_mb/decode(type,'NORMAL',2,'HIGH',3,'EXTERN',1)) Free_MB,
    ਍⠀⠀昀爀攀攀开洀戀⼀搀攀挀漀搀攀⠀琀礀瀀攀Ⰰ✀一伀刀䴀䄀䰀✀Ⰰ㈀Ⰰ✀䠀䤀䜀䠀✀Ⰰ㌀Ⰰ✀䔀堀吀䔀刀一✀Ⰰ㄀⤀⤀⼀⠀琀漀琀愀氀开洀戀⼀搀攀挀漀搀攀⠀琀礀瀀攀Ⰰ✀一伀刀䴀䄀䰀✀Ⰰ㈀Ⰰ✀䠀䤀䜀䠀✀Ⰰ㌀Ⰰ✀䔀堀吀䔀刀一✀Ⰰ㄀⤀⤀⤀⨀㄀   ∀─䘀爀攀攀∀㰀戀爀㸀ഀഀ from v$asm_diskgroup;
    ਍㰀戀爀㸀ഀഀ ASMCMD> lsdg
    ਍ഀഀ
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ 7. Moving files to ASM:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍ഀഀ 1. Using RMAN, and Database mounted.
    ਍ⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀ㰀戀爀㸀ഀഀ
    ਍␀ 猀焀氀瀀氀甀猀 ✀⼀愀猀 猀礀猀搀戀愀✀㰀戀爀㸀ഀഀ SQL> shutdown immediate;
    ਍匀儀䰀㸀 猀琀愀爀琀甀瀀 洀漀甀渀琀㬀ഀഀ
    ਍匀儀䰀㸀 猀攀氀攀挀琀 昀椀氀攀⌀Ⰰ 渀愀洀攀 昀爀漀洀 瘀␀搀愀琀愀昀椀氀攀㬀㰀戀爀㸀ഀഀ
    ਍㐀⸀⸀⸀⸀⼀搀椀猀欀㄀⼀漀爀愀搀愀琀愀⼀甀猀攀爀猀 ㄀⸀搀戀昀㰀戀爀㸀ഀഀ
    ਍␀ 爀洀愀渀 琀愀爀最攀琀㴀⼀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 挀漀瀀礀 搀愀琀愀昀椀氀攀 㐀 琀漀 ✀⬀䐀䜀刀伀唀倀㈀✀㬀㰀戀爀㸀ഀഀ
    ਍一漀眀 甀瀀搀愀琀攀 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀猀㨀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 猀眀椀琀挀栀 搀愀琀愀昀椀氀攀 㐀 琀漀 挀漀瀀礀㬀㰀戀爀㸀ഀഀ
    ਍吀栀攀 搀愀琀愀戀愀猀攀 洀愀礀 渀漀眀 戀攀 漀瀀攀渀攀搀⸀㰀戀爀㸀ഀഀ
    ਍㈀⸀ 唀猀椀渀最 刀䴀䄀一Ⰰ 愀渀搀 䐀愀琀愀戀愀猀攀 漀瀀攀渀⸀㰀戀爀㸀ഀഀ ---------------------------------
    ਍㰀戀爀㸀ഀഀ Same as above, but place the tablespace offline, perform the same steps,
    ਍愀渀搀 瀀氀愀挀攀 琀栀攀 琀愀戀氀攀猀瀀愀挀攀 漀渀氀椀渀攀 愀最愀椀渀⸀㰀戀爀㸀ഀഀ
    ਍㌀⸀ 唀猀椀渀最 䄀匀䴀䌀䴀䐀 挀瀀 挀漀洀洀愀渀搀Ⰰ 愀渀搀 䐀愀琀愀戀愀猀攀 漀瀀攀渀⸀㰀戀爀㸀ഀഀ ----------------------------------------------
    ਍㰀戀爀㸀ഀഀ SQL> alter system switch logfile;
    ਍㰀戀爀㸀ഀഀ SQL> select file_name, file_id from dba_data_files;
    ਍㰀戀爀㸀ഀഀ /disk1/oracle/oradata/test.dbf 6
    ਍㰀戀爀㸀ഀഀ SQL> alter database datafile 6 offline;
    ਍㰀戀爀㸀ഀഀ SQL> select file_name, file_id, online_status from dba_data_files where file_id=6;
    ਍㰀戀爀㸀ഀഀ /disk1/oracle/oradata/test.dbf 6 RECOVER
    ਍㰀戀爀㸀ഀഀ ASMCMD> cp /disk1/oracle/oradata/test1.dbf +DISKGRP1/PROD/DATAFILE/test.dbf
    ਍㰀戀爀㸀ഀഀ ASMCMD> cd +DISKGRP1/ASM/DATAFILE
    ਍䄀匀䴀䌀䴀䐀㸀 氀猀 ⴀ氀琀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 愀氀琀攀爀 搀愀琀愀戀愀猀攀 爀攀渀愀洀攀 昀椀氀攀 ✀⼀搀椀猀欀㄀⼀漀爀愀挀氀攀⼀漀爀愀搀愀琀愀⼀琀攀猀琀⸀搀戀昀✀ 琀漀 ✀⬀䐀䤀匀䬀䜀刀倀㄀⼀倀刀伀䐀⼀䐀䄀吀䄀䘀䤀䰀䔀⼀琀攀猀琀⸀搀戀昀✀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 愀氀琀攀爀 搀愀琀愀戀愀猀攀 爀攀挀漀瘀攀爀 搀愀琀愀昀椀氀攀 㘀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 愀氀琀攀爀 搀愀琀愀戀愀猀攀 搀愀琀愀昀椀氀攀 㘀 漀渀氀椀渀攀㬀㰀戀爀㸀ഀഀ ਍ഀഀ ਍㰀戀爀㸀ഀഀ ਍㰀栀㌀㸀㐀 ⸀㈀ 䄀匀䴀 琀漀漀氀猀 愀渀搀 猀瀀攀挀椀愀氀 挀漀洀洀愀渀搀猀⼀愀挀琀椀漀渀猀㨀㰀⼀栀㌀㸀 ഀഀ ਍ഀഀ ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀㄀⸀ 䄀匀䴀䌀䴀䐀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ It's a OS prompt utility. If you have logged on to the Host running the ASM Instance,
    ਍愀渀搀 礀漀甀 栀愀瘀攀 猀攀琀 琀栀攀 挀漀爀爀攀挀琀 攀渀瘀椀爀漀渀洀攀渀琀 瘀愀爀椀愀戀氀攀猀Ⰰ 礀漀甀 挀愀渀 猀琀愀爀琀 椀琀 眀椀琀栀 琀栀攀 ∀愀猀洀挀洀搀∀ 挀漀洀洀愀渀搀⸀㰀戀爀㸀ഀഀ You must log in as a user that has SYSASM or SYSDBA privileges through operating system authentication.
    ਍㰀戀爀㸀ഀഀ For example on unix:
    ਍㰀戀爀㸀ഀഀ $ asmcmd
    ਍伀爀ഀഀ $ asmcmd --privilege sysasm
    ਍㰀戀爀㸀ഀഀ ASMCMD> ਍㰀戀爀㸀ഀഀ As of 10g, relatively simple navigation, listing, browsing commands were available like "cd", "ls" and some others.
    ਍伀瘀攀爀 琀椀洀攀Ⰰ 渀漀眀 椀渀 ㄀㈀挀Ⰰ 琀栀攀 挀漀洀洀愀渀搀猀攀琀 栀愀猀 椀渀挀爀攀愀猀攀搀Ⰰ 愀渀搀 眀攀 眀椀氀氀 琀愀欀攀 琀栀愀琀 愀猀 漀甀爀 攀渀瘀椀爀漀渀洀攀渀琀 椀猀 琀栀椀猀 猀攀挀琀椀漀渀⸀㰀戀爀㸀ഀഀ
    ਍夀漀甀 挀愀渀 ∀最爀漀甀瀀∀ 琀栀攀 挀漀洀洀愀渀搀猀 椀渀琀漀 焀甀椀琀攀 愀 昀攀眀 挀愀琀愀最漀爀椀攀猀Ⰰ 氀椀欀攀 ∀䤀渀猀琀愀渀挀攀 洀愀渀愀最攀洀攀渀琀∀Ⰰ 漀爀 ∀昀椀氀攀 洀愀渀愀最攀洀攀渀琀∀ 挀愀琀攀最漀爀椀攀猀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀匀漀洀攀 昀椀氀攀 洀愀渀愀最攀洀攀渀琀 攀砀愀洀瀀氀攀猀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍吀栀攀 ∀昀椀氀攀 洀愀渀愀最攀洀攀渀琀∀ 挀漀洀洀愀渀搀猀 愀爀攀 樀甀猀琀 氀椀欀攀 琀栀攀 漀渀攀猀 椀渀 甀渀椀砀⼀氀椀渀甀砀 ⠀氀猀Ⰰ 洀欀搀椀爀Ⰰ 搀甀Ⰰ 挀搀 攀琀挀⸀⸀⤀Ⰰ 愀氀琀栀漀甀最栀 洀漀爀攀 氀椀洀椀琀攀搀⸀㰀戀爀㸀ഀഀ Here are a few examples:
    ਍㰀戀爀㸀ഀഀ ASMCMD [+] > ls +data/orcl/datafile
    ਍㰀戀爀㸀ഀഀ EXAMPLE.265.691577295
    ਍匀夀匀䄀唀堀⸀㈀㔀㜀⸀㘀㤀㄀㔀㜀㜀㄀㐀㤀㰀戀爀㸀ഀഀ SYSTEM.256.691577149
    ਍唀一䐀伀吀䈀匀㄀⸀㈀㔀㠀⸀㘀㤀㄀㔀㜀㜀㄀㔀㄀㰀戀爀㸀ഀഀ USERS.259.691577151
    ਍㰀戀爀㸀ഀഀ You can also "create" directories using the "mkdir" command, for various types of storage.
    ਍㰀戀爀㸀ഀഀ Many commands, like "cp" and "lsof", are certainly very useful. For example, the "cp" command was added since 11gR1.
    ਍㰀戀爀㸀ഀഀ You can use the cp command to: ਍ⴀ䌀漀瀀礀 昀椀氀攀猀 昀爀漀洀 愀 搀椀猀欀 最爀漀甀瀀 琀漀 琀栀攀 漀瀀攀爀愀琀椀渀最 猀礀猀琀攀洀⸀㰀戀爀㸀ഀഀ -Copy files from a disk group to another disk group.
    ਍ⴀ䌀漀瀀礀 昀椀氀攀猀 昀爀漀洀 琀栀攀 漀瀀攀爀愀琀椀渀最 猀礀猀琀攀洀 琀漀 愀 搀椀猀欀 最爀漀甀瀀⸀㰀戀爀㸀ഀഀ
    ਍䔀砀愀洀瀀氀攀猀㨀㰀戀爀㸀ഀഀ
    ਍䄀匀䴀䌀䴀䐀 嬀⬀崀 㸀 挀瀀 ⬀搀愀琀愀⼀漀爀挀氀⼀搀愀琀愀昀椀氀攀⼀搀愀琀愀㄀⸀㈀㘀㔀⸀㘀㤀㄀㔀㜀㜀㈀㤀㔀 ⼀戀愀挀欀甀瀀猀⼀搀愀琀愀㄀⸀戀愀欀㰀戀爀㸀ഀഀ
    ਍䄀匀䴀䌀䴀䐀 嬀⬀崀 㸀 挀瀀 ⬀䐀䄀吀䄀⼀漀爀挀氀⼀搀愀琀愀昀椀氀攀⼀琀攀猀琀⸀㈀㘀㜀⸀㜀㔀㈀㐀㈀㐀㔀㤀㄀ ⬀䐀䄀吀䄀 ㈀⼀伀刀䌀䰀⼀䐀䄀吀䄀䘀䤀䰀䔀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ Some Instance management examples:
    ਍㰀戀爀㸀ഀഀ Startup/Shutdown:
    ਍㰀戀爀㸀ഀഀ Traditionally, using sqlplus with sysasm privilege:
    ਍㰀戀爀㸀 ഀഀ $ sqlplus / as asmdba
    ਍猀琀愀爀琀甀瀀㰀戀爀㸀ഀഀ
    ਍伀爀 甀猀椀渀最 䄀匀䴀䌀䴀䐀 ⠀愀猀 漀昀 ㄀㄀最刀㄀⤀㨀㰀戀爀㸀ഀഀ
    ਍愀猀洀挀洀搀㸀 猀琀愀爀琀甀瀀㰀戀爀㸀ഀഀ
    ਍吀栀攀 猀栀甀琀搀漀眀渀 猀攀焀甀攀渀挀攀 甀猀椀渀最 䄀匀䴀䌀䴀䐀 椀猀 愀氀猀漀 焀甀椀琀攀 猀椀洀椀氀愀爀 琀漀 猀焀氀瀀氀甀猀⸀㰀戀爀㸀ഀഀ
    ਍䴀愀渀礀 攀砀愀洀瀀氀攀猀 愀爀攀 愀瘀愀椀氀愀戀氀攀 椀渀 琀栀攀 伀爀愀挀氀攀 漀渀氀椀渀攀 搀漀挀猀⸀㰀戀爀㸀ഀഀ As of Oracle 11g, ASMCMD has a very extensive commandset, and you might want to do more explorations.
    ਍䘀漀爀 昀甀爀琀栀攀爀 椀渀昀漀爀洀愀琀椀漀渀Ⰰ 瀀氀攀愀猀攀 瘀椀猀椀琀 琀栀攀 伀爀愀挀氀攀 愀爀琀椀挀氀攀猀 漀渀 䄀匀䴀䌀䴀䐀⸀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    40.3 Copy a controlfile on ASM to another Diskgroup:

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍匀甀瀀瀀漀猀攀 礀漀甀 栀愀瘀攀 漀渀氀礀 漀渀攀 挀漀渀琀爀漀氀昀椀氀攀⸀ 吀漀 最攀琀 爀攀搀甀渀搀愀渀挀礀Ⰰ 礀漀甀 挀愀渀 甀猀攀 琀栀椀猀 瀀爀漀挀攀搀甀爀攀㨀㰀戀爀㸀ഀഀ
    ਍⸀ 漀爀愀攀渀瘀 ⠀猀攀琀 琀栀攀 搀愀琀愀戀愀猀攀 猀椀搀 ⼀ 攀渀瘀椀爀漀渀洀攀渀琀㰀戀爀㸀ഀഀ
    ਍猀焀氀瀀氀甀猀 ⼀ 愀猀 猀礀猀搀戀愀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀攀氀攀挀琀 渀愀洀攀 昀爀漀洀 瘀␀挀漀渀琀爀漀氀昀椀氀攀㬀㰀戀爀㸀ഀഀ
    ਍⬀䐀䄀吀䄀䐀䤀匀䬀⼀吀䔀匀吀⼀挀漀渀琀爀漀氀昀椀氀攀⼀挀甀爀爀攀渀琀⸀㈀㘀㤀⸀㜀㔀㠀 㐀㘀㔀㔀㌀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 攀砀椀琀㰀戀爀㸀ഀഀ
    ਍匀栀甀琀搀漀眀渀 琀栀攀 搀琀愀戀愀猀攀㨀㰀戀爀㸀ഀഀ
    ਍伀爀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀猀栀甀琀搀漀眀渀 椀洀洀攀搀椀愀琀攀㬀㰀戀爀㸀ഀഀ
    ਍伀爀Ⰰ 椀渀 甀猀椀渀最 漀渀攀 渀漀搀攀 刀䄀䌀Ⰰ 漀爀 䠀䄀匀Ⰰ 漀爀 伀爀愀挀氀攀 刀攀猀琀愀爀琀㨀㰀戀爀㸀ഀഀ
    ਍␀ 猀爀瘀挀琀氀 猀琀漀瀀 搀愀琀愀戀愀猀攀 ⴀ搀 吀䔀匀吀㰀戀爀㸀ഀഀ
    ਍一漀眀Ⰰ 甀猀攀 刀䴀䄀一 琀漀 挀漀瀀礀 琀栀攀 挀漀渀琀爀漀氀 昀椀氀攀㨀㰀戀爀㸀ഀഀ
    ਍␀ 爀洀愀渀 琀愀爀最攀琀 ⼀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 猀琀愀爀琀甀瀀 渀漀洀漀甀渀琀㬀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 爀攀猀琀漀爀攀 挀漀渀琀爀漀氀昀椀氀攀 琀漀 ✀⬀䰀伀䜀䐀䤀匀䬀✀ 昀爀漀洀 ✀⬀䐀䄀吀䄀䐀䤀匀䬀⼀吀䔀匀吀⼀挀漀渀琀爀漀氀昀椀氀攀⼀挀甀爀爀攀渀琀⸀㈀㘀㤀⸀㜀㔀㠀 㐀㘀㔀㔀㌀✀㬀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 攀砀椀琀㰀戀爀㸀ഀഀ
    ਍一漀眀 眀攀 洀甀猀琀 最攀琀 琀栀攀 渀愀洀攀 漀昀 琀栀椀猀 挀漀渀琀爀漀氀昀椀氀攀 挀漀瀀礀Ⰰ 愀渀搀 瀀甀琀 椀琀 椀渀 琀栀攀 猀瀀昀椀氀攀㨀㰀戀爀㸀ഀഀ
    ਍⸀ 漀爀愀攀渀瘀 ⠀猀攀琀 琀栀攀 ⬀䄀匀䴀 猀椀搀⤀㰀戀爀㸀ഀഀ
    ਍␀ 愀猀洀挀洀搀 ⴀ瀀㰀戀爀㸀ഀഀ
    ਍䄀匀䴀䌀䴀䐀㸀 挀搀 䰀伀䜀䐀䤀匀䬀⼀吀䔀匀吀⼀䌀伀一吀刀伀䰀䘀䤀䰀䔀㰀戀爀㸀ഀഀ
    ਍䄀匀䴀䌀䴀䐀 嬀⬀䰀伀䜀䐀䤀匀䬀⼀吀䔀匀吀⼀䌀伀一吀刀伀䰀䘀䤀䰀䔀崀 㸀 氀猀 ⴀ氀㰀戀爀㸀ഀഀ
    ਍挀甀爀爀攀渀琀⸀㈀㘀㌀⸀㜀㔀㠀㄀㈀㘀㠀㜀㔀㰀戀爀㸀ഀഀ
    ਍䄀匀䴀䌀䴀䐀 嬀⬀䰀伀䜀䐀䤀匀䬀⼀吀䔀匀吀⼀䌀伀一吀刀伀䰀䘀䤀䰀䔀崀 㸀 攀砀椀琀 㰀戀爀㸀ഀഀ
    ਍␀ 猀焀氀瀀氀甀猀 ⼀ 愀猀 猀礀猀搀戀愀㰀戀爀㸀ഀഀ
    ਍吀栀攀 椀渀猀琀愀渀挀攀 椀猀 猀琀愀爀琀攀搀 戀甀琀 猀琀椀氀氀 椀渀 甀渀洀漀甀渀琀 猀琀愀琀甀猀⸀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 愀氀琀攀爀 猀礀猀琀攀洀 猀攀琀 挀漀渀琀爀漀氀开昀椀氀攀猀㴀✀⬀䐀䄀吀䄀䐀䤀匀䬀⼀吀䔀匀吀⼀挀漀渀琀爀漀氀昀椀氀攀⼀挀甀爀爀攀渀琀⸀㈀㘀㤀⸀㜀㔀㠀 㐀㘀㔀㔀㌀✀Ⰰ✀⬀䰀伀䜀䐀䤀匀䬀⼀吀䔀匀吀⼀䌀伀一吀刀伀䰀䘀䤀䰀䔀⼀挀甀爀爀攀渀琀⸀㈀㘀㌀⸀㜀㔀㠀㄀㈀㘀㠀㜀㔀✀ 猀挀漀瀀攀㴀猀瀀昀椀氀攀㬀㰀戀爀㸀ഀഀ
    ਍刀攀猀琀愀爀琀 琀栀攀 搀愀琀愀戀愀猀攀 椀渀 琀栀攀 甀猀甀愀氀 洀愀渀渀攀爀⸀㰀戀爀㸀ഀഀ
    ਍䄀昀琀攀爀 琀栀椀猀 瀀爀漀挀攀搀甀爀攀 椀猀 挀漀洀瀀氀攀琀攀搀Ⰰ 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀 椀猀 洀甀氀琀椀瀀氀攀砀攀搀 戀攀琀眀攀攀渀 琀眀漀 搀椀猀欀最爀漀甀瀀猀⸀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    41. RMAN IN 12C:

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍䤀渀 琀栀椀猀 渀漀琀攀Ⰰ 刀䴀䄀一 愀氀爀攀愀搀礀 眀愀猀 愀氀爀攀愀搀礀 ∀挀漀瘀攀爀攀搀∀ 昀漀爀 ㄀ 最⼀㄀㄀最 椀渀 猀攀挀琀椀漀渀 ㈀㘀㨀 㰀䄀 栀爀攀昀㴀∀⌀猀攀挀琀椀漀渀㈀㘀∀㸀∀㈀㘀⸀ 䄀 䘀䔀圀 㤀椀Ⰰ㄀ 最Ⰰ㄀㄀最 刀䴀䄀一 一伀吀䔀匀∀⸀㰀⼀䄀㸀㰀戀爀㸀ഀഀ This treated some basic RMAN theory for Oracle 10g/11g.
    ਍㰀戀爀㸀ഀഀ I like to repeat it to a certain extend, but this time fully from the 12c perspective.
    ਍㰀戀爀㸀ഀഀ -You need to read section 26 first, since this section leans on the theory of section 26.
    ਍吀栀愀琀✀猀 渀漀琀 眀愀猀琀攀搀 琀椀洀攀Ⰰ 猀椀渀挀攀 愀氀氀 漀昀 猀攀挀琀椀漀渀 ㈀㘀 椀猀 爀攀甀猀愀戀氀攀 椀渀 ㄀㈀挀⸀㰀戀爀㸀ഀഀ
    ਍ⴀ夀漀甀 渀攀攀搀 琀漀 欀渀漀眀 琀栀攀 戀愀猀椀挀猀 漀昀 愀 䌀䐀䈀 愀渀搀 倀䐀䈀✀猀 愀猀 眀攀氀氀㨀 猀攀攀 猀攀挀琀椀漀渀 ㌀㘀⸀㰀戀爀㸀ഀഀ
    ਍吀栀攀 洀漀爀攀 爀攀挀攀渀琀 琀栀攀 伀爀愀挀氀攀 瘀攀爀猀椀漀渀 椀猀Ⰰ 琀栀攀 洀漀爀攀 ∀渀愀琀甀爀愀氀∀ 椀琀 椀猀 琀漀 瀀攀爀昀漀爀洀 愀挀琀椀漀渀猀 昀爀漀洀 琀栀攀 䜀爀椀搀Ⰰ 漀爀 䔀䴀 䌀漀渀琀爀漀氀Ⰰ㰀戀爀㸀ഀഀ although a webbased EM was already available "since ancient 9i times".
    ਍㰀戀爀㸀ഀഀ Next to RMAN, we can also use (logical) Database exports (exp/imp or expdp/impdp), and many "Flashback" options.
    ਍吀栀椀猀 猀攀挀琀椀漀渀 栀漀眀攀瘀攀爀Ⰰ 漀渀氀礀 搀攀愀氀猀 眀椀琀栀 刀䴀䄀一⸀㰀戀爀㸀ഀഀ
    ਍䘀漀爀 ∀瀀漀椀渀琀 椀渀 琀椀洀攀∀ 爀攀挀漀瘀攀爀礀 ⠀攀⸀最 椀渀 琀攀猀琀猀⤀Ⰰ 礀漀甀 挀愀渀 甀猀攀 琀栀攀 匀䌀一 椀搀攀渀琀椀昀椀攀爀⸀㰀戀爀㸀ഀഀ When possible, you can find the current one by using:
    ਍㰀戀爀㸀ഀഀ ਍猀攀氀攀挀琀 琀椀洀攀猀琀愀洀瀀开琀漀开猀挀渀⠀猀礀猀搀愀琀攀⤀ 昀爀漀洀 瘀␀搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ ਍ഀഀ ਍㰀栀㌀㸀㐀㄀⸀㄀ 儀甀椀挀欀 漀瘀攀爀瘀椀攀眀 䈀愀挀欀甀瀀⼀刀攀猀琀漀爀攀 䌀䐀䈀 愀渀搀 倀䐀䈀✀猀㨀㰀⼀栀㌀㸀 ഀഀ ਍ഀഀ You can perform backup and recovery operations on the root, or a single pluggable database (PDB) or on multiple PDBs.
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ ਍㴀㸀䌀漀渀渀攀挀琀椀渀最 甀猀椀渀最 刀䴀䄀一 琀漀 愀 䌀䐀䈀 漀爀 倀䐀䈀㨀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ ਍ⴀⴀ挀漀渀渀攀挀琀椀渀最 琀漀 琀栀攀 䌀䐀䈀 爀漀漀琀㨀㰀戀爀㸀ഀഀ
    ਍䌀漀渀渀攀挀琀 琀漀 琀栀攀 ∀琀愀爀最攀琀∀ 搀愀琀愀戀愀猀攀 甀猀椀渀最 ∀猀礀猀∀ 漀爀 挀漀洀洀漀渀 甀猀攀爀Ⰰ ⠀漀爀 漀瀀攀爀愀琀椀渀最 猀礀猀琀攀洀 愀甀琀栀攀渀琀椀挀愀琀椀漀渀⤀Ⰰ㰀戀爀㸀ഀഀ with SYSDBA or SYSBACKUP privilege.
    ਍㰀戀爀㸀ഀഀ ਍␀ 爀洀愀渀 琀愀爀最攀琀 猀礀猀㰀戀爀㸀ഀഀ
    ਍␀ 爀洀愀渀 琀愀爀最攀琀 ⼀㰀戀爀㸀ഀഀ
    ਍␀ 爀洀愀渀 琀愀爀最攀琀 挀⌀⌀愀搀洀椀渀䀀伀刀䌀䰀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀  䌀伀一一䔀䌀吀 吀䄀刀䜀䔀吀 ∀猀礀猀 䄀匀 匀夀匀䈀䄀䌀䬀唀倀∀㬀 㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ --connecting to a PDB:
    ਍㰀戀爀㸀ഀഀ Connect as a local user or common user with the SYSDBA privilege.
    ਍㰀戀爀㸀ഀഀ ਍␀ 爀洀愀渀 琀愀爀最攀琀 瀀爀戀㄀愀搀洀椀渀䀀瀀爀戀㄀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ => Backup CDB or PDB's:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍ഀഀ -- Backup only the root of CDB:
    ਍㰀戀爀㸀ഀഀ ਍刀䴀䄀一㸀 䈀䄀䌀䬀唀倀 䐀䄀吀䄀䈀䄀匀䔀 刀伀伀吀㬀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ -- Backup the whole CDB and putting it in archivelog mode:
    ਍㰀戀爀㸀ഀഀ ਍漀爀愀攀渀瘀㰀戀爀㸀ഀഀ [enter cdb1 at the prompt]
    ਍㰀戀爀㸀ഀഀ sqlplus / as sysdba
    ਍㰀戀爀㸀ഀഀ shutdown immediate;
    ਍㰀戀爀㸀ഀഀ startup mount;
    ਍㰀戀爀㸀ഀഀ alter database archivelog;
    ਍㰀戀爀㸀ഀഀ alter database open;
    ਍㰀戀爀㸀ഀഀ alter pluggable database all open;
    ਍㰀戀爀㸀ഀഀ alter system set db_recovery_file_dest_size = 10G scope=both;
    ਍㰀戀爀㸀ഀഀ Set ORACLE_SID = cdb1
    ਍㰀戀爀㸀ഀഀ $ rman target /
    ਍㰀戀爀㸀ഀഀ RMAN> configure channel device type disk format '/backups/db_backup_files/cdb1/%U';
    ਍㰀戀爀㸀ഀഀ RMAN> configure controlfile autobackup on;
    ਍㰀戀爀㸀ഀഀ RMAN> backup database plus archivelog;
    ਍㰀⼀䈀㸀ഀഀ
    ਍ഀഀ
    ਍ⴀⴀ 䈀愀挀欀甀瀀 漀渀攀 漀爀 洀漀爀攀 倀䐀䈀✀猀㨀㰀戀爀㸀ഀഀ
    ਍ⴀ䤀昀 礀漀甀 愀爀攀 挀漀渀渀攀挀琀攀搀 琀漀 琀栀攀 爀漀漀琀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ RMAN> BACKUP PLUGGABLE DATABASE PDB1;
    ਍㰀戀爀㸀ഀഀ RMAN> BACKUP PLUGGABLE DATABASE PDB1, PDB2;
    ਍㰀⼀䈀㸀ഀഀ
    ਍ⴀ䤀昀 礀漀甀 愀爀攀 挀漀渀渀攀挀琀攀搀 琀漀 倀䐀䈀㄀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ RMAN> BACKUP DATABASE;
    ਍㰀⼀䈀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    41.2 Quick overview Restore of a whole database:

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍伀戀瘀椀漀甀猀氀礀Ⰰ 礀漀甀 眀椀氀氀 渀漀琀椀挀攀 爀攀愀氀 焀甀椀挀欀 眀栀愀琀 猀漀爀琀 漀昀 昀椀氀攀⠀猀⤀ 愀爀攀 洀椀猀猀椀渀最 漀爀 搀愀洀愀最攀搀⸀㰀戀爀㸀ഀഀ You can always look into the diagnostics files and alert.log.
    ਍㰀戀爀㸀ഀഀ -Validate the database with RMAN:
    ਍㰀戀爀㸀ഀഀ An alternative is to "validate" the database using RMAN.
    ਍㰀戀爀㸀ഀഀ ਍刀䴀䄀一㸀 嘀䄀䰀䤀䐀䄀吀䔀 䐀䄀吀䄀䈀䄀匀䔀㬀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ This will report which datafile id is missing or damaged.
    ਍㰀戀爀㸀ഀഀ ਍刀䴀䄀一㸀 刀䔀倀伀刀吀 匀䌀䠀䔀䴀䄀㬀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ This will also show which tablespace has problems.
    ਍㰀戀爀㸀ഀഀ -Usuable v$ views:
    ਍㰀戀爀㸀ഀഀ Many v$ views will help too, like for example:
    ਍㰀戀爀㸀ഀഀ ਍匀䔀䰀䔀䌀吀 䘀䤀䰀䔀⌀Ⰰ 匀吀䄀吀唀匀Ⰰ 䔀刀刀伀刀Ⰰ 刀䔀䌀伀嘀䔀刀Ⰰ 吀䄀䈀䰀䔀匀倀䄀䌀䔀开一䄀䴀䔀Ⰰ 一䄀䴀䔀㰀戀爀㸀ഀഀ FROM V$DATAFILE_HEADER
    ਍圀䠀䔀刀䔀  刀䔀䌀伀嘀䔀刀 㴀 ✀夀䔀匀✀ 㰀戀爀㸀ഀഀ OR (RECOVER IS NULL AND ERROR IS NOT NULL);
    ਍㰀戀爀㸀ഀഀ SELECT FILE#, ERROR, ONLINE_STATUS, CHANGE#, TIME
    ਍䘀刀伀䴀   嘀␀刀䔀䌀伀嘀䔀刀开䘀䤀䰀䔀㬀㰀戀爀㸀ഀഀ
    ਍匀䔀䰀䔀䌀吀 爀⸀䘀䤀䰀䔀⌀ 䄀匀 搀昀⌀Ⰰ 搀⸀一䄀䴀䔀 䄀匀 搀昀开渀愀洀攀Ⰰ 琀⸀一䄀䴀䔀 䄀匀 琀戀猀瀀开渀愀洀攀Ⰰ㰀戀爀㸀ഀഀ d.STATUS, r.ERROR, r.CHANGE#, r.TIME
    ਍䘀刀伀䴀 嘀␀刀䔀䌀伀嘀䔀刀开䘀䤀䰀䔀 爀Ⰰ 嘀␀䐀䄀吀䄀䘀䤀䰀䔀 搀Ⰰ 嘀␀吀䄀䈀䰀䔀匀倀䄀䌀䔀 琀㰀戀爀㸀ഀഀ WHERE t.TS# = d.TS#
    ਍䄀一䐀 搀⸀䘀䤀䰀䔀⌀ 㴀 爀⸀䘀䤀䰀䔀⌀㬀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍ⴀ倀爀攀瘀椀攀眀 搀愀琀愀戀愀猀攀 戀愀挀欀甀瀀猀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ RMAN> RESTORE DATABASE PREVIEW;
    ਍刀䴀䄀一㸀 刀䔀匀吀伀刀䔀 䄀刀䌀䠀䤀嘀䔀䰀伀䜀 䘀刀伀䴀 吀䤀䴀䔀 ✀匀夀匀䐀䄀吀䔀ⴀ㌀✀ 倀刀䔀嘀䤀䔀圀㬀㰀戀爀㸀ഀഀ RMAN> RESTORE DATABASE PREVIEW SUMMARY;
    ਍㰀⼀䈀㸀ഀഀ
    ਍ⴀ䤀昀 礀漀甀 眀愀渀琀 琀漀 甀猀攀 愀渀漀琀栀攀爀 氀漀挀愀琀椀漀渀 昀漀爀 琀栀攀 愀爀挀栀椀瘀攀搀 爀攀搀漀氀漀最猀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ RUN
    ਍笀 㰀戀爀㸀ഀഀ SET ARCHIVELOG DESTINATION TO '/oracle/temp';
    ਍  刀䔀匀吀伀刀䔀 䄀刀䌀䠀䤀嘀䔀䰀伀䜀 䄀䰀䰀㬀㰀戀爀㸀ഀഀ }
    ਍㰀戀爀㸀ഀഀ RUN
    ਍笀 㰀戀爀㸀ഀഀ SET ARCHIVELOG DESTINATION TO '/oracle/temp';
    ਍  刀䔀匀吀伀刀䔀 䐀䄀吀䄀䈀䄀匀䔀㬀㰀戀爀㸀ഀഀ RECOVER DATABASE; # restores and recovers logs automatically
    ਍紀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Restore and recover the whole database:
    ਍㰀戀爀㸀ഀഀ If the database is not mounted, then mount but do not open the database.
    ਍㰀戀爀㸀ഀഀ ਍匀吀䄀刀吀唀倀 䴀伀唀一吀㬀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ If you are restoring all data files to their original locations,
    ਍琀栀攀渀 攀砀攀挀甀琀攀 刀䔀匀吀伀刀䔀 䐀䄀吀䄀䈀䄀匀䔀 愀渀搀 刀䔀䌀伀嘀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 猀攀焀甀攀渀琀椀愀氀氀礀 愀琀 琀栀攀 刀䴀䄀一 瀀爀漀洀瀀琀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ RMAN> RESTORE DATABASE;
    ਍㰀戀爀㸀ഀഀ RMAN> RECOVER DATABASE;
    ਍㰀⼀䈀㸀ഀഀ
    ਍ⴀ圀椀琀栀 愀 挀栀愀渀渀攀氀 搀攀昀椀渀攀搀㨀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ഀഀ RUN
    ਍笀㰀戀爀㸀ഀഀ ALLOCATE CHANNEL c1 DEVICE TYPE sbt;
    ਍  刀䔀匀吀伀刀䔀 䐀䄀吀䄀䈀䄀匀䔀㬀㰀戀爀㸀ഀഀ RECOVER DATABASE;
    ਍紀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ If you are restoring some data files to new locations,
    ਍琀栀攀渀 攀砀攀挀甀琀攀 刀䔀匀吀伀刀䔀 䐀䄀吀䄀䈀䄀匀䔀 愀渀搀 刀䔀䌀伀嘀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 猀攀焀甀攀渀琀椀愀氀氀礀 椀渀 愀 刀唀一 挀漀洀洀愀渀搀⸀㰀戀爀㸀ഀഀ Use the SET NEWNAME command to rename data files (updates the control files).
    ਍㰀戀爀㸀ഀഀ ਍刀唀一㰀戀爀㸀ഀഀ {
    ਍  匀䔀吀 一䔀圀一䄀䴀䔀 䘀伀刀 䐀䄀吀䄀䘀䤀䰀䔀 ㌀ 吀伀 ✀⼀漀爀愀挀氀攀⼀搀愀琀愀⼀搀㌀⸀搀戀昀✀㬀㰀戀爀㸀ഀഀ SET NEWNAME FOR DATAFILE 4 TO '/oracle/data/d4.dbf';
    ਍  匀䔀吀 一䔀圀一䄀䴀䔀 䘀伀刀 䐀䄀吀䄀䘀䤀䰀䔀 㔀 吀伀 ✀⼀漀爀愀挀氀攀⼀搀愀琀愀⼀搀㔀⸀搀戀昀✀㬀㰀戀爀㸀ഀഀ RESTORE DATABASE;
    ਍  匀圀䤀吀䌀䠀 䐀䄀吀䄀䘀䤀䰀䔀 䄀䰀䰀㬀㰀戀爀㸀ഀഀ RECOVER DATABASE;
    ਍紀㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍㰀栀㌀㸀㐀㄀⸀㌀ 儀甀椀挀欀 漀瘀攀爀瘀椀攀眀 刀攀猀琀漀爀攀 漀昀 愀 倀䐀䈀㨀㰀⼀栀㌀㸀 ഀഀ ਍ഀഀ -- Restore a PDB to a SCN from a whole CDB backup:
    ਍㰀戀爀㸀ഀഀ ਍匀儀䰀㸀 愀氀琀攀爀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 瀀搀戀㈀ 挀氀漀猀攀㬀㰀戀爀㸀ഀഀ
    ਍攀砀椀琀㰀戀爀㸀ഀഀ
    ਍␀ 爀洀愀渀 琀愀爀最攀琀 ⼀㰀戀爀㸀ഀഀ
    ਍爀甀渀 笀㰀戀爀㸀ഀഀ set until SCN = 2263440 ;
    ਍ 爀攀猀琀漀爀攀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 瀀搀戀㈀㬀㰀戀爀㸀ഀഀ recover pluggable database pdb2 auxiliary destination='/oracle/db_backup_files/cdb1';
    ਍ 愀氀琀攀爀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 瀀搀戀㈀ 漀瀀攀渀 爀攀猀攀琀氀漀最猀㬀㰀戀爀㸀ഀഀ }
    ਍㰀⼀䈀㸀ഀഀ
    ਍ഀഀ -- Restore a PDB from whole CDB backup:
    ਍㰀戀爀㸀ഀഀ ਍匀儀䰀㸀 搀爀漀瀀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 琀攀猀琀瀀搀戀㬀㰀戀爀㸀ഀഀ
    ਍倀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 搀爀漀瀀瀀攀搀⸀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀  䌀伀一一䔀䌀吀 吀䄀刀䜀䔀吀 ∀猀礀猀 䄀匀 匀夀匀䈀䄀䌀䬀唀倀∀㬀  ⌀ 挀漀渀渀攀挀琀 琀漀 䌀䐀䈀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 戀愀挀欀甀瀀 搀愀琀愀戀愀猀攀 瀀氀甀猀 愀爀挀栀椀瘀攀氀漀最㬀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 䌀伀一一䔀䌀吀 吀䄀刀䜀䔀吀 ∀猀礀猀 䄀匀 匀夀匀䈀䄀䌀䬀唀倀∀㬀  㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 愀氀琀攀爀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 琀攀猀琀瀀搀戀 挀氀漀猀攀㬀 㰀戀爀㸀ഀഀ
    ਍爀甀渀 笀  㰀戀爀㸀ഀഀ set UNTIL TIME "to_date('2015-06-06:16:04:45','YYYY-MM-DD:HH24:MI:SS')" ;
    ਍爀攀猀琀漀爀攀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 琀攀猀琀瀀搀戀㬀㰀戀爀㸀  ഀഀ recover pluggable database testpdb auxiliary destination='/home/oracle/albert';
    ਍愀氀琀攀爀 瀀氀甀最最愀戀氀攀 搀愀琀愀戀愀猀攀 琀攀猀琀瀀搀戀 漀瀀攀渀 爀攀猀攀琀氀漀最猀㬀 㰀戀爀㸀 ഀഀ }
    ਍㰀⼀䈀㸀ഀഀ
    ਍圀椀琀栀 琀栀攀 ᰀ䄠唀堀䤀䰀䤀䄀刀夀 䐀䔀匀吀䤀一䄀吀䤀伀一ᴀ†眀攀 猀瀀攀挀椀昀礀 猀瀀愀挀攀 眀栀攀爀攀 伀爀愀挀氀攀 挀愀渀 挀爀攀愀琀攀 愀 琀攀洀瀀漀爀愀爀礀 挀氀漀渀攀搀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ ਍ഀഀ ਍㰀栀㌀㸀㐀㄀⸀㐀 䔀砀愀洀瀀氀攀 䘀甀氀氀 䐀䈀 爀攀猀琀漀爀攀 漀昀 倀刀伀䐀 琀漀 䄀䌀䌀 漀爀 吀匀吀㨀㰀⼀栀㌀㸀 ഀഀ ਍ഀഀ Suppose we have the 12c SALESPROD and SALESTEST databases, on the machines LINUXPROD and LINUXTEST.
    ਍㰀戀爀㸀ഀഀ In Test:
    ਍㰀戀爀㸀ഀഀ SQL> create pfile='/opt/oracle/admin/salestest/pfile/initsalestest.ora' from spfile;
    ਍㰀戀爀㸀ഀഀ cd /opt/oracle/admin/salestest/pfile/
    ਍㰀戀爀㸀ഀഀ vi initsalestest.ora
    ਍㰀戀爀㸀ഀഀ Change *.control_files='+DATADISK','+LOGDISK'
    ਍㰀戀爀㸀ഀഀ Check other in pfile, like UNDOTBS etc..
    ਍㰀戀爀㸀ഀഀ Shutdown Test.
    ਍㰀戀爀㸀ഀഀ SQL> shutdown immediate
    ਍㰀戀爀㸀ഀഀ Set environment to +ASM
    ਍㰀戀爀㸀ഀഀ $ +ASM
    ਍㰀戀爀㸀ഀഀ $ asmcmd
    ਍䄀匀䴀䌀䴀䐀㸀 挀搀 ⬀䐀䄀吀䄀䐀䤀匀䬀⼀猀愀氀攀猀琀攀猀琀㰀戀爀㸀ഀഀ ASMCMD> ls
    ਍䄀匀䴀䌀䴀䐀㸀 爀洀 ⴀ爀昀 ⨀ 㰀戀爀㸀ഀഀ ASMCMD> cd +LOGDISK/salestest
    ਍䄀匀䴀䌀䴀䐀㸀 爀洀 ⴀ爀昀 ⨀㰀戀爀㸀ഀഀ ASMCMD> exit
    ਍㰀戀爀㸀ഀഀ Set environment to SALESTEST.
    ਍㰀戀爀㸀ഀഀ Startup test:
    ਍㰀戀爀㸀ഀഀ SQL> startup nomount pfile='/opt/oracle/admin/salestest/pfile/initsalestest.ora'
    ਍㰀戀爀㸀ഀഀ SQL> create spfile='+datadisk/salestest/spfilesalestest.ora’
    ਍昀爀漀洀 瀀昀椀氀攀㴀ᤀ⼠漀瀀琀⼀漀爀愀挀氀攀⼀愀搀洀椀渀⼀猀愀氀攀猀琀攀猀琀⼀瀀昀椀氀攀⼀椀渀椀琀猀愀氀攀猀琀攀猀琀⸀漀爀愀ᤀ㰠戀爀㸀ഀഀ
    ਍ⴀⴀ 猀琀椀氀 漀渀 琀愀爀最攀琀 洀愀挀栀椀渀攀 眀攀爀攀 琀栀攀 搀甀瀀氀椀挀愀琀攀 洀甀猀琀 最漀 琀漀⸀⸀⸀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀栀甀琀搀漀眀渀 椀洀洀攀搀椀愀琀攀㬀㰀戀爀㸀ഀഀ SQL> startup nomount
    ਍㰀戀爀㸀ഀഀ $ rman
    ਍㰀戀爀㸀ഀഀ ਍ⴀⴀ 漀渀 氀椀渀甀砀㨀㰀戀爀㸀ഀഀ
    ਍挀漀渀渀攀挀琀 琀愀爀最攀琀 猀礀猀⼀瀀愀猀猀眀漀爀搀䀀匀䄀䰀䔀匀倀刀伀䐀㰀戀爀㸀ഀഀ connect auxiliary /
    ਍㰀戀爀㸀ഀഀ RMAN> run
    ਍笀㰀戀爀㸀ഀഀ allocate auxiliary channel ch1 type 'sbt_tape'
    ਍倀䄀刀䴀匀㴀∀䈀䰀䬀匀䤀娀䔀㴀㈀㘀㈀㄀㐀㐀Ⰰ匀䈀吀开䰀䤀䈀刀䄀刀夀㴀⼀漀瀀琀⼀猀椀洀瀀愀渀愀⼀䈀愀猀攀⼀氀椀戀漀戀欀⸀猀漀∀㬀㰀戀爀㸀ഀഀ set until time = "TO_DATE('12/10/2016 22:00:00','MM/DD/YYYY HH24:MI:SS')" ;
    ਍䐀唀倀䰀䤀䌀䄀吀䔀 吀䄀刀䜀䔀吀 䐀䄀吀䄀䈀䄀匀䔀 吀伀 猀愀氀攀猀琀攀猀琀 渀漀昀椀氀攀渀愀洀攀挀栀攀挀欀㬀㰀戀爀㸀ഀഀ }
    ਍㰀戀爀㸀ഀഀ ਍ⴀⴀ 漀渀 圀椀渀搀漀眀猀㨀㰀戀爀㸀ഀഀ
    ਍挀漀渀渀攀挀琀 琀愀爀最攀琀 猀礀猀⼀瀀愀猀猀眀漀爀搀䀀匀䄀䰀䔀匀倀刀伀䐀㰀戀爀㸀ഀഀ connect auxiliary /
    ਍㰀戀爀㸀ഀഀ RMAN> run
    ਍笀㰀戀爀㸀ഀഀ allocate auxiliary channel ch1 type 'sbt_tape'
    ਍倀䄀刀䴀匀㴀∀䈀䰀䬀匀䤀娀䔀㴀㈀㘀㈀㄀㐀㐀Ⰰ匀䈀吀开唀一匀䔀吀䔀一嘀㴀 ∀㰀戀爀㸀ഀഀ Trace 2;
    ਍猀攀琀 甀渀琀椀氀 琀椀洀攀 㴀 ∀吀伀开䐀䄀吀䔀⠀✀㄀㈀⼀㄀ ⼀㈀ ㄀㘀 ㈀㈀㨀  㨀  ✀Ⰰ✀䴀䴀⼀䐀䐀⼀夀夀夀夀 䠀䠀㈀㐀㨀䴀䤀㨀匀匀✀⤀∀ 㬀㰀戀爀㸀ഀഀ DUPLICATE TARGET DATABASE TO salestest nofilenamecheck;
    ਍紀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍刀䴀䄀一㸀 攀砀椀琀㰀戀爀㸀ഀഀ
    ਍䌀栀攀挀欀 瘀␀搀愀琀愀昀椀氀攀Ⰰ 瘀␀挀漀渀琀爀漀氀昀椀氀攀Ⰰ 瘀␀氀漀最昀椀氀攀 攀琀挀⸀⸀㰀戀爀㸀ഀഀ Check archivelogging if needed.
    ਍䌀栀攀挀欀 愀瀀瀀 瀀愀爀愀洀攀琀攀爀猀 攀琀挀⸀⸀Ⰰ 瀀愀爀愀洀攀琀攀爀 琀愀戀氀攀猀 椀渀 䐀䈀Ⰰ 愀挀挀漀甀渀琀猀 攀琀挀⸀⸀㰀戀爀㸀ഀഀ ਍ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    42. ADR AND LOGGING IN 11g/12c:

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍ഀഀ ਍㰀栀㌀㸀㐀㈀⸀㄀ 䠀漀眀 䰀漀最最椀渀最 眀愀猀 搀漀渀攀 椀渀 昀漀爀洀攀爀 瘀攀爀猀椀漀渀猀Ⰰ 氀椀欀攀 ㄀ 最Ⰰ 㤀椀Ⰰ 愀渀搀 漀氀搀攀爀 瘀攀爀猀椀漀渀猀㨀㰀⼀栀㌀㸀 ഀഀ ਍ऀऀऀऀऀऀऀऀഀഀ ਍伀爀愀挀氀攀 刀䐀䈀䴀匀 瘀攀爀猀椀漀渀猀 ㄀ 最 愀渀搀 㤀椀 ⠀愀渀搀 漀氀搀攀爀⤀Ⰰ 愀氀氀 甀猀攀搀 琀栀攀 猀愀洀攀 猀琀爀甀挀琀甀爀攀 昀漀爀 猀琀漀爀椀渀最 㰀戀爀㸀ऀऀऀऀऀऀऀऀऀഀഀ the "alert.log" file, trace files, and other diagnostic information.
    ਍㰀戀爀㸀ഀഀ Especially the alert.log, was a flat ascii file, which was rather easy to open (cat, more etc..),
    ਍漀爀 琀漀 昀椀渀搀 猀瀀攀挀椀愀氀 欀攀礀眀漀爀搀猀 ⠀漀爀 伀刀䄀 洀攀猀猀愀最攀猀⤀ 椀渀 琀栀愀琀 昀椀氀攀⸀㰀戀爀㸀ഀഀ
    ਍匀甀瀀瀀漀猀攀 礀漀甀 栀愀瘀攀 琀栀攀 㤀椀 漀爀 ㄀ 最 搀愀琀愀戀愀猀攀 ∀猀愀氀攀猀∀⸀ 䄀猀 愀渀 攀砀愀洀瀀氀攀Ⰰ 琀栀攀 愀氀攀爀琀⸀氀漀最 愀渀搀 甀猀攀爀 搀甀洀瀀猀 眀漀甀氀搀 戀攀 猀琀漀爀攀搀㰀戀爀㸀ऀऀऀऀऀऀऀऀऀഀഀ in a directory structure similar to the example (just an example) shown below.
    ਍㰀戀爀㸀ഀഀ Example directory layout for a 9i/10g instance:
    ਍㰀戀爀㸀ऀऀऀऀऀऀऀऀऀഀഀ Purpose.......location
    ਍伀刀䄀䌀䰀䔀开䈀䄀匀䔀⸀⸀⸀⼀漀瀀琀⼀愀瀀瀀⼀漀爀愀挀氀攀ऀ㰀戀爀㸀ऀऀऀऀऀऀഀഀ ORACLE_HOME.../opt/app/oracle/product/9.2
    ਍吀一匀开䄀䐀䴀䤀一⸀⸀⸀⸀⸀⼀漀瀀琀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀瀀爀漀搀甀挀琀⼀㤀⸀㈀⼀渀攀琀眀漀爀欀⼀愀搀洀椀渀㰀戀爀㸀ऀऀऀऀऀऀऀഀഀ alertlog in.../opt/app/oracle/admin/sales/bdump
    ਍甀猀攀爀搀甀洀瀀猀 椀渀⸀⸀⼀漀瀀琀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀愀搀洀椀渀⼀猀愀氀攀猀⼀甀搀甀洀瀀ऀ㰀戀爀㸀ऀऀऀऀऀऀഀഀ core dumps..../opt/app/oracle/admin/sales/cdump
    ਍㰀戀爀㸀ऀऀऀऀऀऀऀऀऀഀഀ For the upper example, the spfile.ora/init.ora file would contain the following parameters:
    ਍㰀戀爀㸀ऀऀऀऀऀऀऀऀऀഀഀ BACKGROUND_DUMP_DEST= /opt/app/oracle/admin/sales/bdump
    ਍唀匀䔀刀开䐀唀䴀倀开䐀䔀匀吀㴀 ⼀漀瀀琀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀愀搀洀椀渀⼀猀愀氀攀猀⼀甀搀甀洀瀀㰀戀爀㸀ऀऀऀऀऀऀऀऀऀഀഀ CORE_DUMP_DEST= /opt/app/oracle/admin/sales/cdump
    ਍㰀戀爀㸀ഀഀ alert.log file in BACKGROUND_DUMP_DEST:
    ਍䴀漀猀琀 渀漀琀愀戀氀礀 椀猀 琀栀攀 ∀愀氀攀爀琀⸀氀漀最∀ 昀椀氀攀Ⰰ 眀栀椀挀栀 椀猀 愀 瀀氀愀椀渀 愀猀挀椀椀 昀椀氀攀Ⰰ 愀渀搀 眀栀椀挀栀 氀漀最猀 猀椀最渀椀昀椀挀愀渀琀 搀愀琀愀戀愀猀攀 攀瘀攀渀琀猀 愀渀搀 洀攀猀猀愀最攀猀⸀㰀戀爀㸀ഀഀ It contains messages about startup's, shutdown, serious database/instance errors, as well as the creation or alteration of
    ਍搀愀琀愀戀愀猀攀 猀琀爀甀挀琀甀爀攀猀 ⠀氀椀欀攀 琀愀戀氀攀猀瀀愀挀攀猀⤀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀琀爀愀挀攀 昀椀氀攀猀 椀渀 唀匀䔀刀开䐀唀䴀倀开䐀䔀匀吀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ If user server processes encountered en error condition, a (ascii) trace file might have been generated.
    ਍吀栀椀猀 昀椀氀攀 眀漀甀氀搀 挀漀渀琀愀椀渀 挀攀爀琀愀椀渀 搀椀愀最渀漀猀琀椀挀 椀渀昀漀爀洀愀琀椀漀渀Ⰰ 愀渀搀 瀀漀猀猀椀戀氀礀 琀栀攀 匀儀䰀 猀琀愀琀攀洀攀渀琀 琀栀愀琀 眀愀猀 椀渀瘀漀氀瘀攀搀⸀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    42.2 Since 11g, and in 12c, we have ADR:

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍匀椀渀挀攀 ㄀㄀最Ⰰ 椀琀 愀氀氀 栀愀猀 挀栀愀渀最攀搀⸀ 䤀渀 ㄀㄀最⼀㄀㈀挀Ⰰ 䄀䐀刀 漀爀 䄀甀琀漀洀愀琀椀挀 䐀椀愀最渀漀猀琀椀挀 刀攀瀀漀猀椀琀漀爀礀 椀猀 甀猀攀搀⸀㰀戀爀㸀ഀഀ 12c has some modifications and enhancements, but most of the theme was introduced in 11g.
    ਍㰀戀爀㸀ഀഀ In 11g/12c, new are the "Automatic Diagnostic Repository" (ADR) and "Incident Packaging System" (IPS),
    ਍愀氀氀 搀攀猀椀最渀攀搀 挀漀氀氀攀挀琀 愀氀攀爀琀 愀渀搀 搀椀愀最渀漀猀琀椀挀 椀渀昀漀爀洀愀琀椀漀渀⸀ 㰀戀爀㸀ഀഀ
    ਍吀栀攀 氀漀挀愀琀椀漀渀 漀昀 䄀䐀刀 椀猀 猀瀀攀挀椀昀椀攀搀 戀礀 琀栀攀 㰀䈀㸀䐀䤀䄀䜀一伀匀吀䤀䌀开䐀䔀匀吀㰀⼀䈀㸀 椀渀椀琀椀愀氀椀稀愀琀椀漀渀 瀀愀爀愀洀攀琀攀爀⸀ 㰀戀爀㸀ഀഀ The BACKGROUND_DUMP_DEST and USER_DUMP_DEST are now deprecated and replaced by DIAGNOSTIC_DEST.
    ਍㰀戀爀㸀ഀഀ -The environment variable $ADR_BASE points to the directory set by DIAGNOSTIC_DEST,
    ਍眀栀椀挀栀 椀猀 琀栀攀 栀椀最攀猀琀 氀攀瘀攀氀 搀椀爀攀挀琀漀爀礀Ⰰ 眀栀椀挀栀 挀漀渀琀愀椀渀猀 愀氀氀 䄀䐀刀 搀椀愀最渀漀猀琀椀挀 猀甀戀搀椀爀攀挀琀漀爀椀攀猀 漀昀 愀氀氀 搀愀琀愀戀愀猀攀猀⼀椀渀猀琀愀渀挀攀猀 漀爀 猀攀爀瘀椀挀攀猀⸀㰀戀爀㸀ഀഀ
    ਍ⴀ吀栀攀 瘀愀爀椀愀戀氀攀 ␀䄀䐀刀开䠀伀䴀䔀 瀀漀椀渀琀猀 琀漀 愀渀 椀渀猀琀愀渀挀攀 猀瀀攀挀椀昀椀挀 搀椀爀攀挀琀漀爀礀⸀㰀戀爀㸀ഀഀ
    ਍夀漀甀 挀愀渀 甀猀攀 琀栀攀 匀䠀伀圀 倀䄀刀䄀䴀䔀吀䔀刀 挀漀洀洀愀渀搀Ⰰ 漀爀 焀甀攀爀礀 瘀␀搀椀愀最开椀渀昀漀⸀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 匀䠀伀圀 倀䄀刀䄀䴀䔀吀䔀刀 䐀䤀䄀䜀㰀戀爀㸀ऀऀऀऀऀऀऀऀഀഀ
    ਍一䄀䴀䔀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀吀夀倀䔀⸀⸀⸀⸀⸀⸀⸀⸀嘀䄀䰀唀䔀㰀戀爀㸀ऀऀऀऀऀऀऀऀ⸀ഀഀ diagnostic_dest...........string......C:\ORACLE
    ਍㰀戀爀㸀ऀऀऀऀऀऀऀऀഀഀ SQL> select SUBSTR(NAME,1,20) as NAME, SUBSTR(VALUE,1,70) as VALUE FROM v$diag_info;
    ਍㰀戀爀㸀ऀऀऀऀऀऀऀऀഀഀ (Windows Example:)
    ਍㰀戀爀㸀ऀऀऀऀऀऀऀऀഀഀ NAME.................VALUE
    ਍䐀椀愀最 䔀渀愀戀氀攀搀⸀⸀⸀⸀⸀⸀⸀⸀⸀吀刀唀䔀㰀戀爀㸀ऀऀऀऀऀऀऀऀऀഀഀ ADR Base.............c:\oracle
    ਍䄀䐀刀 䠀漀洀攀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀挀㨀尀漀爀愀挀氀攀尀搀椀愀最尀爀搀戀洀猀尀琀攀猀琀㄀㄀最尀琀攀猀琀㄀㄀最㰀戀爀㸀ऀऀऀऀऀऀऀऀऀഀഀ Diag Trace............c:\oracle\diag\rdbms\test11g\test11g\trace
    ਍䐀椀愀最 䄀氀攀爀琀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀挀㨀尀漀爀愀挀氀攀尀搀椀愀最尀爀搀戀洀猀尀琀攀猀琀㄀㄀最尀琀攀猀琀㄀㄀最尀愀氀攀爀琀㰀戀爀㸀ऀऀऀऀऀऀऀऀഀഀ Diag Incident.........c:\oracle\diag\rdbms\test11g\test11g\incident
    ਍䐀椀愀最 䌀搀甀洀瀀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀⸀挀㨀尀漀爀愀挀氀攀尀搀椀愀最尀爀搀戀洀猀尀琀攀猀琀㄀㄀最尀琀攀猀琀㄀㄀最尀挀搀甀洀瀀㰀戀爀㸀ऀऀऀऀऀऀऀऀഀഀ Health Monitor........c:\oracle\diag\rdbms\test11g\test11g\hm
    ਍䐀攀昀愀甀氀琀 吀爀愀挀攀 䘀椀氀攀⸀⸀⸀⸀挀㨀尀漀爀愀挀氀攀尀搀椀愀最尀爀搀戀洀猀尀琀攀猀琀㄀㄀最尀琀攀猀琀㄀㄀最尀琀爀愀挀攀尀琀攀猀琀㄀㄀最开漀爀愀开㄀㜀 㐀⸀琀爀挀㰀戀爀㸀ऀऀऀऀऀऀऀऀऀഀഀ Active Problem Count 2
    ਍䄀挀琀椀瘀攀 䤀渀挀椀搀攀渀琀 䌀漀甀渀 ㌀㰀戀爀㸀ऀऀऀऀऀऀऀऀऀഀഀ
    ਍㰀䈀㸀氀漀最⸀砀洀氀 愀氀攀爀琀 氀漀最 昀椀氀攀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍吀栀攀 ㄀㄀最⼀㄀㈀挀 愀氀攀爀琀⸀氀漀最 昀椀氀攀Ⰰ 挀愀氀氀攀搀 ∀氀漀最⸀砀洀氀∀Ⰰ 椀猀 椀渀 堀䴀䰀 昀漀爀洀愀琀⸀㰀戀爀㸀ഀഀ It is located in:
    ਍㰀戀爀㸀ഀഀ $ADR_BASE/diag/rdbms/database_name/instance_name/alert
    ਍㰀戀爀㸀ഀഀ or, which is the same, in:
    ਍㰀戀爀㸀ഀഀ [DIAGNOSTIC_DEST]/diag/rdbms/database_name/instance_name/alert
    ਍㰀戀爀㸀ഀഀ or, for a specific ADR_HOME, in:
    ਍㰀戀爀㸀ഀഀ $ADR_HOME/alert
    ਍㰀戀爀㸀ഀഀ You can view the log.xml with any text editor (bit silly), but an official (and better) interface to the ADR exists as well:
    ਍渀愀洀攀氀礀Ⰰ 礀漀甀 挀愀渀 甀猀攀 琀栀攀 ∀䄀䐀刀 挀漀洀洀愀渀搀 椀渀琀攀爀昀愀挀攀∀ 愀搀爀挀椀 挀漀洀洀愀渀搀氀椀渀攀 琀漀漀氀⸀㰀戀爀㸀ഀഀ
    ਍䄀 琀爀愀搀椀琀椀漀渀愀氀 琀攀砀琀 戀愀猀攀搀 愀氀攀爀琀⸀氀漀最 挀愀渀 戀攀 昀漀甀渀搀 椀渀㨀㰀戀爀㸀ഀഀ "$ADR_BASE/diag/rdbms/database_name/instance_name/trace"
    ਍㰀戀爀㸀ഀഀ In 12c, explicit DDL logging can be enabled.
    ਍㰀戀爀㸀ഀഀ If you set the ENABLE_DDL_LOGGING parameter to TRUE, it will activate DDL logging.
    ਍䄀氀氀 䐀䐀䰀 猀琀愀琀攀洀攀渀琀猀 愀爀攀 氀漀最最攀搀 椀渀琀漀 愀 瀀氀愀椀渀 琀攀砀琀 昀椀氀攀 愀渀搀 愀渀 堀䴀䰀 昀椀氀攀 椀渀 琀栀攀 昀漀氀氀漀眀椀渀最 䄀䐀刀 氀漀挀愀琀椀漀渀猀㨀㰀戀爀㸀ഀഀ
    ਍␀䄀䐀刀开䈀䄀匀䔀⼀搀椀愀最⼀爀搀戀洀猀⼀笀䐀䈀ⴀ渀愀洀攀紀⼀笀匀䤀䐀紀⼀氀漀最⼀搀搀氀开笀匀䤀䐀紀⸀氀漀最㰀戀爀㸀ഀഀ $ADR_BASE/diag/rdbms/{DB-name}/{SID}/log/ddl/log.xml
    ਍㰀戀爀㸀ഀഀ ਍㰀栀㌀㸀㐀㈀⸀㌀ 吀栀攀 䄀䐀刀 䌀漀洀洀愀渀搀 䤀渀琀攀爀瀀爀攀琀攀爀 ⠀䄀䐀刀䌀䤀⤀ 唀琀椀氀椀琀礀㨀㰀⼀栀㌀㸀 ഀഀ ਍ഀഀ ADRCI is a command line utility that serves as the interface between you
    ਍愀渀搀 琀栀攀 䄀䐀刀⸀ 夀漀甀 挀愀渀 搀漀 猀甀挀栀 琀栀椀渀最猀 愀猀 瘀椀攀眀 搀椀愀最渀漀猀琀椀挀 搀愀琀愀Ⰰ 瘀椀攀眀 爀攀瀀漀爀琀猀Ⰰ㰀戀爀㸀ഀഀ view alert logs, and even package the diagnostic information for sending to Oracle support.
    ਍㰀戀爀㸀ഀഀ You can invoke the "ADR command interface" by entering "adrci" from your OS prompt:
    ਍㰀戀爀㸀ഀഀ C:\>adrci
    ਍㰀戀爀㸀ഀഀ ADRCI: Release 12.1.0.2.0 - Production on Mon Nov 28 20:27:07 2016
    ਍㰀戀爀㸀ഀഀ Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
    ਍㰀戀爀㸀ഀഀ ADR base = "E:\app\absr"
    ਍愀搀爀挀椀㸀㰀戀爀㸀ഀഀ
    ਍䤀昀 礀漀甀 眀愀渀琀 琀漀 欀渀漀眀 眀栀椀挀栀 猀甀戀挀漀洀洀愀渀搀猀 礀漀甀 挀愀渀 攀渀琀攀爀 椀渀 愀搀爀挀椀Ⰰ 樀甀猀琀 攀渀琀攀爀 ∀栀攀氀瀀∀ 漀爀 ∀栀攀氀瀀 琀漀瀀椀挀∀ 漀爀 ∀栀攀氀瀀 攀砀琀攀渀搀攀搀∀⸀㰀戀爀㸀ഀഀ
    ਍伀渀攀 漀昀 琀栀攀 洀漀猀琀 漀戀瘀椀漀甀猀 挀漀洀洀愀渀搀猀Ⰰ 椀猀 琀栀攀 匀䠀伀圀 䄀䰀䔀刀吀 挀漀洀洀愀渀搀猀Ⰰ 眀栀椀挀栀 礀漀甀 挀愀渀 甀猀攀 琀漀 戀爀漀眀猀攀 琀栀爀漀甀最栀㰀戀爀㸀ഀഀ the alert log. Here are a few examples:
    ਍㰀戀爀㸀ഀഀ adrci> SHOW ALERT -TAIL;
    ਍愀搀爀挀椀㸀 匀䠀伀圀 䄀䰀䔀刀吀 ⴀ吀䄀䤀䰀 㔀 㬀 㰀戀爀㸀ഀഀ adrci> SHOW ALERT -TAIL -F;
    ਍愀搀爀挀椀㸀 匀䠀伀圀 䄀䰀䔀刀吀 ⴀ倀 ∀䴀䔀匀匀䄀䜀䔀开吀䔀堀吀 䰀䤀䬀䔀 ✀─伀刀䄀ⴀ㘀  ─✀∀㰀戀爀㸀ഀഀ
    ਍唀渀搀攀爀 䄀䐀刀开䈀䄀匀䔀Ⰰ 洀甀氀琀椀瀀氀攀 搀愀琀愀戀愀猀攀猀 愀渀搀 匀䤀䐀✀猀 洀愀礀 戀攀 瀀爀攀猀攀渀琀⸀㰀戀爀㸀ഀഀ As you know, there is (usually) only one ADR_BASE, while there might be multiple ADR_HOME's, one for every Instance.
    ਍㰀戀爀㸀ഀഀ When you start adrci, it does not make any assumption on your current interest of some instance. ਍匀漀Ⰰ 椀昀 礀漀甀 眀漀甀氀搀 栀愀瘀攀 琀栀椀猀㨀㰀戀爀㸀ഀഀ
    ਍尀搀椀愀最尀爀搀戀洀猀尀猀愀氀攀猀尀椀渀猀琀㄀尀㰀戀爀㸀ഀഀ \diag\rdbms\sales\inst2\
    ਍㰀戀爀㸀ഀഀ Then you use the SET HOMEPATH command to set one or more ADR homes to be current.
    ਍䤀昀 䄀䐀刀 戀愀猀攀 椀猀 䔀㨀尀愀瀀瀀尀漀爀愀挀氀攀 愀渀搀 礀漀甀 眀愀渀琀 琀漀 猀攀琀 琀栀攀 栀漀洀攀瀀愀琀栀 琀漀 䔀㨀尀愀瀀瀀尀漀爀愀挀氀攀尀搀椀愀最尀爀搀戀洀猀尀猀愀氀攀猀尀椀渀猀琀㄀尀 Ⰰ 礀漀甀 眀漀甀氀搀 甀猀攀 琀栀椀猀 挀漀洀洀愀渀搀㨀㰀戀爀㸀ഀഀ
    ਍愀搀爀挀椀㸀 猀攀琀 栀漀洀攀瀀愀琀栀 搀椀愀最尀爀搀戀洀猀尀猀愀氀攀猀尀椀渀猀琀㄀尀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    43. MOVING DATABASE FILES:

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍䴀漀猀琀 漀昀 琀栀椀猀 栀漀氀搀猀 昀漀爀 ㄀ 最 愀渀搀 ㄀㄀最 琀漀漀Ⰰ 愀瀀愀爀琀 昀爀漀洀 愀 昀攀眀 攀砀挀攀瀀琀椀漀渀猀⸀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    43.1 Moving controlfiles.:

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀䈀㸀䘀椀氀攀猀礀猀琀攀洀猀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍ഀഀ Since they are critical all the time, you need to temporarily shutdown the database before you move the files.
    ਍㰀戀爀㸀ഀഀ You can always easily view the current location, using:
    ਍㰀戀爀㸀ഀഀ SQL> select name from v$controlfile;
    ਍㰀戀爀㸀ഀഀ If you have a new disklocation, or new disklocations (filesystem), then you can work like the example below.
    ਍㰀戀爀㸀ഀഀ -Get and write down the original locations plus names from SHOW PARAMETER, or V$controlfile.
    ਍ⴀ䈀愀挀欀甀瀀 琀栀攀 猀瀀昀椀氀攀⸀㰀戀爀㸀ഀഀ -Shutdown the database.
    ਍ⴀ猀琀愀爀琀甀瀀 渀漀洀漀甀渀琀⸀㰀戀爀㸀ഀഀ -Alter the pfile/spfile control_files parameter using the ALTER SYSTEM command.
    ਍ⴀ匀栀甀琀搀漀眀渀 琀栀攀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ -copy or move the physical files using an OS command.
    ਍ⴀ匀琀愀爀琀甀瀀 琀栀攀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ
    ਍ഀഀ SQL> shutdown immediate;
    ਍㰀戀爀㸀ഀഀ SQL>startup nomount;
    ਍㰀戀爀㸀ഀഀ SQL> alter system set control_files='/disk2/oradata/control01.ctl','/disk2/oradata/control02.ctl', '/disk2/oradata/control03.ctl' scope=SPFILE;
    ਍㰀戀爀㸀ഀഀ This is an example target location on the filesystem. The original location might have been /disk1.
    ਍㰀戀爀㸀ഀഀ SQL> shutdown immediate;
    ਍㰀戀爀㸀ഀഀ copy or move the physical files using an OS command.
    ਍㰀戀爀㸀ഀഀ SQL>startup nomount;
    ਍㰀戀爀㸀ഀഀ SQL>alter database mount;
    ਍㰀戀爀㸀ഀഀ SQL>startup database open;
    ਍㰀戀爀㸀ഀഀ ASM:
    ਍㰀戀爀㸀ഀഀ -Backup the spfile.
    ਍ⴀ䜀攀琀 愀渀搀 眀爀椀琀攀 搀漀眀渀 琀栀攀 漀爀椀最椀渀愀氀 氀漀挀愀琀椀漀渀猀 瀀氀甀猀 渀愀洀攀猀 昀爀漀洀 匀䠀伀圀 倀䄀刀䄀䴀䔀吀䔀刀Ⰰ 漀爀 嘀␀挀漀渀琀爀漀氀昀椀氀攀⸀㰀戀爀㸀ഀഀ -Shutdown the database.
    ਍ⴀ猀琀愀爀琀甀瀀 渀漀洀漀甀渀琀⸀㰀戀爀㸀ഀഀ -Alter the pfile/spfile control_files parameter using the ALTER SYSTEM command.
    ਍ⴀ猀栀甀琀搀漀眀渀 琀栀攀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ -startup nomount.
    ਍ⴀ爀洀愀渀 琀愀爀最攀琀 ⼀㰀戀爀㸀ഀഀ -RMAN> restore controlfile from 'OriginalLocation/OriginalName';
    ਍㰀戀爀㸀ഀഀ For example:
    ਍㰀戀爀㸀ഀഀ RMAN> restore controlfile to '+DG1' from '/disk2/oradata/control01.ctl';
    ਍㰀戀爀㸀ഀഀ ਍䠀攀爀攀 漀渀氀礀 琀栀攀 渀愀洀攀 漀昀 琀栀攀 搀椀猀欀最爀漀甀瀀 椀猀 洀攀渀琀椀漀渀攀搀 椀昀 伀䴀䘀 椀猀 甀猀攀搀⸀㰀戀爀㸀 ഀഀ
    ਍ⴀ愀氀琀攀爀 搀愀琀愀戀愀猀攀 洀漀甀渀琀⸀㰀戀爀㸀ഀഀ -alter database open.
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀䴀甀氀琀椀瀀氀攀砀 愀 挀漀渀琀爀漀氀昀椀氀攀 漀渀 䄀匀䴀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍匀甀瀀瀀漀猀攀 礀漀甀 漀渀氀礀 栀愀瘀攀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀攀氀攀挀琀 渀愀洀攀 昀爀漀洀 瘀␀挀漀渀琀爀漀氀昀椀氀攀㬀㰀戀爀㸀ഀഀ
    ਍一䄀䴀䔀㰀戀爀㸀ഀഀ +FRA/PROD/controlfile/current.269.11278453
    ਍㰀戀爀㸀ഀഀ shutdown immediate;
    ਍猀琀愀爀琀甀瀀 渀漀洀漀甀渀琀㬀㰀戀爀㸀ഀഀ
    ਍爀洀愀渀 琀愀爀最攀琀 ⼀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 爀攀猀琀漀爀攀 挀漀渀琀爀漀氀昀椀氀攀 琀漀 ✀⬀䐀䄀吀䄀䐀䜀✀ 昀爀漀洀 ✀⬀䘀刀䄀⼀倀刀伀䐀⼀挀漀渀琀爀漀氀昀椀氀攀⼀挀甀爀爀攀渀琀⸀㈀㘀㤀⸀㄀㄀㈀㜀㠀㐀㔀㌀✀㬀㰀戀爀㸀ഀഀ
    ਍唀猀攀 䄀匀䴀䌀䴀䐀 琀漀 最攀琀 琀栀攀 渀愀洀攀 漀昀 琀栀攀 渀攀眀 挀漀渀琀爀漀氀昀椀氀攀 挀漀瀀礀⸀㰀戀爀㸀ഀഀ
    ਍唀猀攀 琀栀攀 䄀䰀吀䔀刀 匀夀匀吀䔀䴀 挀漀洀洀愀渀搀 琀漀 甀瀀搀愀琀攀 琀栀攀 挀漀渀琀爀漀氀昀椀氀攀 氀漀挀愀琀椀漀渀猀⸀㰀戀爀㸀ഀഀ
    ਍猀栀甀琀搀漀眀渀 椀洀洀攀搀椀愀琀攀㬀㰀戀爀㸀ഀഀ startup;
    ਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    43.2 Moving Datafiles:

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍䤀渀 㐀㌀⸀㈀Ⰰ 眀攀 甀猀攀 琀栀攀 琀爀愀搀椀琀椀漀渀愀氀 挀漀洀洀愀渀搀猀Ⰰ 愀渀搀 渀漀琀 礀攀琀 甀猀椀渀最 琀栀攀 ㄀㈀挀 漀渀氀椀渀攀 ∀䄀䰀吀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 䴀伀嘀䔀 䐀䄀吀䄀䘀䤀䰀䔀∀ 猀琀愀琀攀洀攀渀琀⸀㰀戀爀㸀ഀഀ See section 43.3 for that statement.
    ਍㰀戀爀㸀ഀഀ -- Just a user tablespace on filesystem:
    ਍㰀戀爀㸀ഀഀ ALTER TABLESPACE users OFFLINE NORMAL;
    ਍㰀戀爀㸀ഀഀ Copy or move the files of that tablespace to a new location.
    ਍㰀戀爀㸀ഀഀ ALTER TABLESPACE users RENAME DATAFILE 'oldpath1/file1','oldpath2/file2,
    ਍吀伀 ✀渀攀眀瀀愀琀栀㄀⼀昀椀氀攀㄀✀Ⰰ✀渀攀眀瀀愀琀栀㈀⼀昀椀氀攀㈀Ⰰ㰀戀爀㸀ഀഀ
    ਍ⴀⴀ 䨀甀猀琀 愀 甀猀攀爀 琀愀戀氀攀猀瀀愀挀攀 琀漀 䄀匀䴀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䄀䰀吀䔀刀 吀䄀䈀䰀䔀匀倀䄀䌀䔀 吀䔀匀吀 伀䘀䘀䰀䤀一䔀㬀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 挀漀瀀礀 搀愀琀愀昀椀氀攀 ✀⼀甀 ㄀⼀漀爀愀搀愀琀愀⼀琀攀猀琀⼀琀攀猀琀 ㄀⸀搀戀昀✀ 琀漀 ✀⬀䐀䄀吀䄀䐀䜀✀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 愀氀琀攀爀 搀愀琀愀戀愀猀攀 爀攀渀愀洀攀 昀椀氀攀 ✀⼀甀 ㄀⼀漀爀愀搀愀琀愀⼀琀攀猀琀⼀琀攀猀琀 ㄀⸀搀戀昀✀ 琀漀 ✀⬀䐀䄀吀䄀䐀䜀⼀倀刀伀䐀⼀搀愀琀愀昀椀氀攀⼀琀攀猀琀⸀㈀㘀㌀⸀㘀㈀㔀㘀㐀㐀㠀㔀㜀✀㬀㰀戀爀㸀ഀഀ
    ਍漀爀㨀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 挀漀瀀礀 搀愀琀愀昀椀氀攀 㘀 琀漀 ✀⬀䐀䄀吀䄀䐀䜀✀㬀㰀戀爀㸀ഀഀ RMAN> sql 'alter database datafile 6 offline';
    ਍刀䴀䄀一㸀 猀眀椀琀挀栀 搀愀琀愀昀椀氀攀 㘀 琀漀 挀漀瀀礀㬀㰀戀爀㸀ഀഀ RMAN> recover datafile 6;
    ਍刀䴀䄀一㸀 猀焀氀 ✀愀氀琀攀爀 搀愀琀愀戀愀猀攀 搀愀琀愀昀椀氀攀 㘀 漀渀氀椀渀攀✀㬀㰀戀爀㸀ഀഀ
    ਍ⴀⴀ 䴀漀瘀椀渀最 猀礀猀琀攀洀 琀愀戀氀攀猀瀀愀挀攀 琀漀 ⠀漀爀 洀漀瘀攀 琀漀 搀椀昀昀攀爀攀渀琀 瀀氀愀挀攀 漀渀⤀ 䄀匀䴀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀琀愀爀琀甀瀀 洀漀甀渀琀㬀㰀戀爀㸀ഀഀ
    ਍␀ 爀洀愀渀 琀愀爀最攀琀 ⼀㰀戀爀㸀ഀഀ
    ਍刀䴀䄀一㸀 爀甀渀㰀戀爀㸀ഀഀ {
    ਍       戀愀挀欀甀瀀 愀猀 挀漀瀀礀 搀愀琀愀昀椀氀攀 ㄀ 昀漀爀洀愀琀 ✀⬀䐀䄀吀䄀✀㬀 ⴀⴀ猀礀猀琀攀洀㰀戀爀㸀ഀഀ backup as copy datafile 2 format '+DATA'; --sysaux
    ਍       戀愀挀欀甀瀀 愀猀 挀漀瀀礀 搀愀琀愀昀椀氀攀 㐀 昀漀爀洀愀琀 ✀⬀䐀䄀吀䄀✀㬀 ⴀⴀ甀猀攀爀猀㰀戀爀㸀ഀഀ }
    ਍㰀戀爀㸀ഀഀ RMAN> switch datafile 1 to copy;
    ਍㰀戀爀㸀ഀഀ datafile 1 switched to datafile copy "+DATA/prod/datafile/system.279.872015923" ਍㰀戀爀㸀ഀഀ RMAN> switch datafile 2 to copy;
    ਍㰀戀爀㸀ഀഀ datafile 2 switched to datafile copy "+DATA/prod/datafile/sysaux.282.872015985" ਍㰀戀爀㸀ഀഀ RMAN> switch datafile 4 to copy;
    ਍㰀戀爀㸀ഀഀ datafile 4 switched to datafile copy "+DATA/prod/datafile/users.283.872016031"
    ਍㰀戀爀㸀ഀഀ SQL> shutdown immediate;
    ਍㰀戀爀㸀ഀഀ SQL>startup;
    ਍㰀戀爀㸀ഀഀ ਍㰀栀㌀㸀㐀㌀⸀㌀ 吀䠀䔀 ㄀㈀䌀 䄀䰀吀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 䴀伀嘀䔀 䐀䄀吀䄀䘀䤀䰀䔀㨀㰀⼀栀㌀㸀 ഀഀ ਍ഀഀ This SQL command exists as of 12c, and can be used while the DB or datafile are online.
    ਍㰀戀爀㸀ഀഀ SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/cdb/system01.dbf' TO
    ਍✀⼀甀 ㈀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀漀爀愀搀愀琀愀⼀挀搀戀⼀猀礀猀琀攀洀 ㄀⸀搀戀昀✀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䄀䰀吀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 䴀伀嘀䔀 䐀䄀吀䄀䘀䤀䰀䔀 ㄀ 吀伀 ✀⼀甀 ㈀⼀愀瀀瀀⼀漀爀愀挀氀攀⼀漀爀愀搀愀琀愀⼀挀搀戀㄀⼀猀礀猀琀攀洀 ㄀⸀搀戀昀✀ 䬀䔀䔀倀㬀㰀戀爀㸀ഀഀ
    ਍䬀攀攀瀀㨀 琀栀攀 漀爀椀最椀渀愀氀 昀椀氀攀 椀猀 渀漀琀 搀攀氀攀琀攀搀⸀㰀戀爀㸀ഀഀ Reuse: if the destination file was already present, then reuse it.
    ਍㰀戀爀㸀ഀഀ If using OMF, the destination can be omitted.
    ਍㰀戀爀㸀ഀഀ SQL> ALTER SYSTEM SET db_create_file_dest='/disk1/app/oracle/oradata/cdb1';
    ਍㰀戀爀㸀ഀഀ SQL> ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/cdb1/system01.dbf';
    ਍㰀戀爀㸀ഀഀ Notes:
    ਍㰀戀爀㸀ഀഀ If working with files of a PDB, then the commands given from the CDB will give errors.
    ਍夀漀甀 挀愀渀 猀眀椀琀挀栀 琀漀 琀栀攀 倀䐀䈀 挀漀渀琀愀椀渀攀爀 昀椀爀猀琀⸀㰀戀爀㸀ഀഀ
    ਍吀栀攀 䄀䰀吀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 䴀伀嘀䔀 䐀䄀吀䄀䘀䤀䰀䔀 猀礀渀琀愀砀 搀漀攀猀 渀漀琀 眀漀爀欀 昀漀爀 琀攀洀瀀漀爀愀爀礀 昀椀氀攀猀⸀㰀戀爀㸀ഀഀ ਍ഀഀ ਍ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㐀㐀∀㸀㐀㐀⸀ 䐀䄀吀䄀䜀唀䄀刀䐀 ㄀㄀最⼀㄀㈀挀㨀㰀⼀栀㈀㸀 ഀഀ ਍㰀戀爀㸀ഀഀ ਍䤀昀 瀀漀猀猀椀戀氀攀Ⰰ 琀栀攀 搀愀琀愀 昀椀氀攀猀Ⰰ 氀漀最 昀椀氀攀猀Ⰰ 愀渀搀 挀漀渀琀爀漀氀 昀椀氀攀猀 漀渀 琀栀攀 瀀爀椀洀愀爀礀 愀渀搀 猀琀愀渀搀戀礀 猀礀猀琀攀洀猀㰀戀爀㸀ഀഀ should preferrably have the same names and path names. The archival directories on the standby database
    ਍猀栀漀甀氀搀 愀氀猀漀 戀攀 椀搀攀渀琀椀挀愀氀 戀攀琀眀攀攀渀 猀椀琀攀猀Ⰰ 椀渀挀氀甀搀椀渀最 猀椀稀攀 愀渀搀 猀琀爀甀挀琀甀爀攀⸀ 吀栀椀猀 椀猀 琀栀攀 戀攀猀琀 猀琀爀愀琀攀最礀⸀㰀戀爀㸀ഀഀ
    ਍圀攀 栀愀瘀攀 琀栀攀 倀爀椀洀愀爀礀 搀愀琀愀戀愀猀攀Ⰰ 眀栀椀挀栀 椀猀 昀甀氀氀礀 漀瀀攀渀 昀漀爀 琀爀愀渀猀愀挀琀椀漀渀猀⸀㰀戀爀㸀ഀഀ Here, redo is generated, archived, but also streamed to Standby databases.
    ਍㰀戀爀㸀ഀഀ -Physical standby should have the same structure as the Primary, and Redo Apply is used.
    ਍ⴀ䰀漀最椀挀愀氀 猀琀愀渀搀戀礀 甀猀攀猀 匀儀䰀 猀琀愀琀攀洀攀渀琀猀Ⰰ 眀栀椀挀栀 愀爀攀 最攀渀攀爀愀琀攀搀 昀爀漀洀 琀栀攀 刀攀搀漀 猀琀爀攀愀洀⸀㰀戀爀㸀ഀഀ
    ਍ഀഀ You can use the DB_FILE_NAME_CONVERT and LOG_FILE_NAME_CONVERT initialization parameters on the standby database
    ਍琀漀 愀甀琀漀洀愀琀椀挀愀氀氀礀 爀攀渀愀洀攀 琀栀攀 搀愀琀愀 昀椀氀攀猀Ⰰ 椀渀 挀愀猀攀 渀攀眀 昀椀氀攀猀 愀爀攀 挀爀攀愀琀攀搀 漀渀 琀栀攀 倀爀椀洀愀爀礀Ⰰ 愀渀搀 琀栀攀 猀琀爀甀挀琀甀爀攀猀 漀渀㰀戀爀㸀ഀഀ the Standby are not identical (e.g. directory paths etc..).
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀匀挀攀渀愀爀椀漀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Suppose we have:
    ਍㰀戀爀㸀ഀഀ Primary: DB_NAME and NET Serive name is: CENTRAL
    ਍倀栀礀猀椀挀愀氀 猀琀愀渀搀戀礀㨀 䐀䈀开一䄀䴀䔀 愀渀搀 一䔀吀 匀攀爀椀瘀攀 渀愀洀攀 椀猀㨀 匀伀唀吀䠀㰀戀爀㸀ഀഀ
    ਍ഀഀ
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ -Preparing the Primary:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍匀儀䰀㸀 䄀䰀吀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 䘀伀刀䌀䔀 䰀伀䜀䜀䤀一䜀㬀㰀戀爀㸀ഀഀ
    ਍䌀漀渀昀椀最甀爀攀 伀䤀䐀Ⰰ 匀匀䰀 攀琀挀⸀⸀Ⰰ 漀爀 猀愀洀攀 瀀愀猀猀眀漀爀搀 昀椀氀攀 漀渀 愀氀氀 渀漀搀攀猀⸀㰀戀爀㸀ഀഀ
    ਍䌀漀渀昀椀最甀爀攀 琀栀攀 倀爀椀洀愀爀礀 琀漀 戀攀 爀攀愀搀礀 琀漀 焀甀椀挀欀氀礀 琀爀愀渀猀椀琀椀漀渀 琀漀 琀栀攀 猀琀愀渀搀戀礀 爀漀氀攀 愀渀搀 戀攀最椀渀 爀攀挀攀椀瘀椀渀最 爀攀搀漀 搀愀琀愀⸀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䄀䰀吀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 䄀䐀䐀 匀吀䄀一䐀䈀夀 䰀伀䜀䘀䤀䰀䔀 ⠀✀⼀甀 ㄀⼀漀爀愀挀氀攀⼀搀戀猀⼀氀漀最㄀⸀爀搀漀✀⤀ 匀䤀娀䔀 㔀  䴀㬀㰀戀爀㸀ഀഀ SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/oracle/dbs/log2.rdo') SIZE 500M;
    ਍㰀戀爀㸀ഀഀ init.ora/spfile.ora parameters:
    ਍㰀戀爀㸀ഀഀ DB_NAME=CENTRAL
    ਍䐀䈀开唀一䤀儀唀䔀开一䄀䴀䔀㴀䌀䔀一吀刀䄀䰀㰀戀爀㸀ഀഀ LOG_ARCHIVE_CONFIG='DG_CONFIG=(CENTRAL,SOUTH)'
    ਍䌀伀一吀刀伀䰀开䘀䤀䰀䔀匀㴀✀⼀愀爀挀栀㄀⼀挀攀渀琀爀愀氀⼀挀漀渀琀爀漀氀㄀⸀挀琀氀✀Ⰰ ✀⼀愀爀挀栀㈀⼀挀攀渀琀爀愀氀⼀挀漀渀琀爀漀氀㈀⸀挀琀氀✀㰀戀爀㸀ഀഀ LOG_ARCHIVE_DEST_1= 'LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=CENTRAL'
    ਍䰀伀䜀开䄀刀䌀䠀䤀嘀䔀开䐀䔀匀吀开㈀㴀 ✀匀䔀刀嘀䤀䌀䔀㴀匀伀唀吀䠀 䄀匀夀一䌀 嘀䄀䰀䤀䐀开䘀伀刀㴀⠀伀一䰀䤀一䔀开䰀伀䜀䘀䤀䰀䔀匀Ⰰ倀刀䤀䴀䄀刀夀开刀伀䰀䔀⤀ 䐀䈀开唀一䤀儀唀䔀开一䄀䴀䔀㴀匀伀唀吀䠀✀㰀戀爀㸀ഀഀ REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
    ਍䰀伀䜀开䄀刀䌀䠀䤀嘀䔀开䘀伀刀䴀䄀吀㴀─琀开─猀开─爀⸀愀爀挀㰀戀爀㸀ഀഀ
    ਍䄀 搀愀琀愀戀愀猀攀 椀渀 愀 䐀愀琀愀 䜀甀愀爀搀 攀渀瘀椀爀漀渀洀攀渀琀 椀猀 甀渀椀焀甀攀氀礀 椀搀攀渀琀椀昀椀攀搀 戀礀 洀攀愀渀猀 漀昀 琀栀攀 䐀䈀开唀一䤀儀唀䔀开一䄀䴀䔀 瀀愀爀愀洀攀琀攀爀⸀㰀戀爀㸀ഀഀ
    ਍圀栀攀渀 愀 爀漀氀攀 猀眀椀琀挀栀 漀挀挀甀爀猀Ⰰ 琀栀攀 昀漀氀氀漀眀椀渀最 洀甀猀琀 戀攀 椀渀 瀀氀愀挀攀 琀漀漀⸀㰀戀爀㸀ഀഀ
    ਍䘀䄀䰀开匀䔀刀嘀䔀刀㴀匀伀唀吀䠀㰀戀爀㸀ഀഀ DB_FILE_NAME_CONVERT='/SOUTH/','/CENTRAL/'
    ਍䰀伀䜀开䘀䤀䰀䔀开一䄀䴀䔀开䌀伀一嘀䔀刀吀㴀✀⼀匀伀唀吀䠀⼀✀Ⰰ✀⼀䌀䔀一吀刀䄀䰀⼀✀ 㰀戀爀㸀ഀഀ STANDBY_FILE_MANAGEMENT=AUTO
    ਍㰀戀爀㸀ഀഀ Put database in archive mode:
    ਍㰀戀爀㸀ഀഀ SQL> SHUTDOWN IMMEDIATE;
    ਍匀儀䰀㸀 匀吀䄀刀吀唀倀 䴀伀唀一吀㬀㰀戀爀㸀ഀഀ SQL> ALTER DATABASE ARCHIVELOG;
    ਍匀儀䰀㸀 䄀䰀吀䔀刀 䐀䄀吀䄀䈀䄀匀䔀 伀倀䔀一㬀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ --Creating a Physical Standby Database:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍吀愀猀欀猀㨀㰀戀爀㸀ഀഀ
    ਍䌀爀攀愀琀攀 愀 䈀愀挀欀甀瀀 䌀漀瀀礀 漀昀 琀栀攀 倀爀椀洀愀爀礀 䐀愀琀愀戀愀猀攀 䐀愀琀愀 䘀椀氀攀猀⸀ 䄀琀 倀爀椀洀愀爀礀⸀㰀戀爀㸀ഀഀ Create a Control File for the Standby Database. At Primary.
    ਍䌀爀攀愀琀攀 愀 倀愀爀愀洀攀琀攀爀 䘀椀氀攀 昀漀爀 琀栀攀 匀琀愀渀搀戀礀 䐀愀琀愀戀愀猀攀⸀ 䄀琀 倀爀椀洀愀爀礀⸀㰀戀爀㸀ഀഀ Copy Files from the Primary System to the Standby System. At Primary.
    ਍匀攀琀 唀瀀 琀栀攀 䔀渀瘀椀爀漀渀洀攀渀琀 琀漀 匀甀瀀瀀漀爀琀 琀栀攀 匀琀愀渀搀戀礀 䐀愀琀愀戀愀猀攀⸀ 䄀琀 匀琀愀渀搀戀礀⸀㰀戀爀㸀ഀഀ Start the Physical Standby Database. At Standby.
    ਍嘀攀爀椀昀礀 琀栀攀 倀栀礀猀椀挀愀氀 匀琀愀渀搀戀礀 䐀愀琀愀戀愀猀攀 䤀猀 倀攀爀昀漀爀洀椀渀最 倀爀漀瀀攀爀氀礀⸀ 䄀琀 匀琀愀渀搀戀礀⸀㰀戀爀㸀ഀഀ
    ਍㄀⸀ 䌀爀攀愀琀攀 愀 䈀愀挀欀甀瀀 䌀漀瀀礀 漀昀 琀栀攀 倀爀椀洀愀爀礀 䐀愀琀愀戀愀猀攀 䐀愀琀愀 䘀椀氀攀猀⸀㰀戀爀㸀ഀഀ You can use any backup, as long as all archives are there too to completely recover the Standby database.
    ਍㰀戀爀㸀ഀഀ 2. Create a Control File for the Standby Database.
    ਍㰀戀爀㸀ഀഀ SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/south.ctl';
    ਍㰀戀爀㸀ഀഀ 3. Create a Parameter File for the Standby Database.
    ਍㰀戀爀㸀ഀഀ SQL> CREATE PFILE='/tmp/initsouth.ora' FROM SPFILE;
    ਍㰀戀爀㸀ഀഀ This is done on the Primary. Ofcourse some parameter modifications needs to be done.
    ਍㰀戀爀㸀ഀഀ DB_NAME=CENTRAL
    ਍䐀䈀开唀一䤀儀唀䔀开一䄀䴀䔀㴀匀伀唀吀䠀㰀戀爀㸀ഀഀ LOG_ARCHIVE_CONFIG='DG_CONFIG=(CENTRAL,SOUTH)'
    ਍䌀伀一吀刀伀䰀开䘀䤀䰀䔀匀㴀✀⼀愀爀挀栀㄀⼀猀漀甀琀栀⼀挀漀渀琀爀漀氀㄀⸀挀琀氀✀Ⰰ ✀⼀愀爀挀栀㈀⼀猀漀甀琀栀⼀挀漀渀琀爀漀氀㈀⸀挀琀氀✀㰀戀爀㸀ഀഀ DB_FILE_NAME_CONVERT='/central/','/south/'
    ਍䰀伀䜀开䘀䤀䰀䔀开一䄀䴀䔀开䌀伀一嘀䔀刀吀㴀✀⼀挀攀渀琀爀愀氀⼀✀Ⰰ✀⼀猀漀甀琀栀⼀✀㰀戀爀㸀ഀഀ LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
    ਍䰀伀䜀开䄀刀䌀䠀䤀嘀䔀开䐀䔀匀吀开㄀㴀 ✀䰀伀䌀䄀吀䤀伀一㴀唀匀䔀开䐀䈀开刀䔀䌀伀嘀䔀刀夀开䘀䤀䰀䔀开䐀䔀匀吀 嘀䄀䰀䤀䐀开䘀伀刀㴀⠀䄀䰀䰀开䰀伀䜀䘀䤀䰀䔀匀Ⰰ䄀䰀䰀开刀伀䰀䔀匀⤀ 䐀䈀开唀一䤀儀唀䔀开一䄀䴀䔀㴀匀伀唀吀䠀✀㰀戀爀㸀ഀഀ LOG_ARCHIVE_DEST_2= 'SERVICE=CENTRAL ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=CENTRAL'
    ਍刀䔀䴀伀吀䔀开䰀伀䜀䤀一开倀䄀匀匀圀伀刀䐀䘀䤀䰀䔀㴀䔀堀䌀䰀唀匀䤀嘀䔀㰀戀爀㸀ഀഀ STANDBY_FILE_MANAGEMENT=AUTO
    ਍䘀䄀䰀开匀䔀刀嘀䔀刀㴀䌀䔀一吀刀䄀䰀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ 4. Copy Files from the Primary System to the Standby System.
    ਍㰀戀爀㸀ഀഀ In the appropriate dirs on the standby node, optionally copy the backup of (1),
    ਍挀漀瀀礀 琀栀攀 椀渀椀琀⸀漀爀愀Ⰰ 爀攀洀漀琀攀 瀀愀猀猀眀漀爀搀昀椀氀攀Ⰰ 愀渀搀 挀漀渀琀爀漀氀昀椀氀攀 挀漀瀀礀⸀㰀戀爀㸀ഀഀ For applying the backup, multiple techniques exist, like an RMAN duplicate.
    ਍㰀戀爀㸀ഀഀ 5. Set Up the Environment to Support the Standby Database.
    ਍㰀戀爀㸀ഀഀ This means that we need an Instance, and make the spfile at the Standby active.
    ਍㰀戀爀㸀ഀഀ 6. Start the Physical Standby Database.
    ਍㰀戀爀㸀ഀഀ At standby:
    ਍㰀戀爀㸀ഀഀ SQL> STARTUP MOUNT;
    ਍㰀戀爀㸀ഀഀ And restore the database.
    ਍㰀戀爀㸀ഀഀ Start the REDO apply:
    ਍㰀戀爀㸀ഀഀ SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE -
    ਍㸀 䐀䤀匀䌀伀一一䔀䌀吀 䘀刀伀䴀 匀䔀匀匀䤀伀一㬀㰀戀爀㸀ഀഀ
    ਍嘀攀爀椀昀礀 琀栀愀琀 爀攀搀漀 椀猀 愀瀀瀀氀椀攀搀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 匀䔀䰀䔀䌀吀 䌀䰀䤀䔀一吀开倀刀伀䌀䔀匀匀Ⰰ 倀刀伀䌀䔀匀匀Ⰰ 吀䠀刀䔀䄀䐀⌀Ⰰ 匀䔀儀唀䔀一䌀䔀⌀Ⰰ 匀吀䄀吀唀匀 䘀刀伀䴀㰀戀爀㸀ഀഀ V$MANAGED_STANDBY WHERE CLIENT_PROCESS='LGWR' OR PROCESS='MRP0';
    ਍㰀戀爀㸀ഀഀ ਍㰀䈀㸀ⴀ䌀爀攀愀琀椀渀最 愀 搀甀瀀氀椀挀愀琀攀 搀愀琀愀戀愀猀攀 眀椀琀栀 刀䴀䄀一㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ You can use either manual techniques or the RMAN DUPLICATE command in order
    ਍琀漀 挀爀攀愀琀攀 愀 猀琀愀渀搀戀礀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ
    ਍ⴀ 昀爀漀洀 戀愀挀欀甀瀀猀 漀昀 礀漀甀爀 瀀爀椀洀愀爀礀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ - from the active database.
    ਍㰀戀爀㸀ഀഀ You can choose between active and backup-based duplication. If you specify FROM ACTIVE DATABASE,
    ਍琀栀攀渀 刀䴀䄀一 眀椀氀氀 挀漀瀀礀 琀栀攀 搀愀琀愀昀椀氀攀猀 搀椀爀攀挀琀氀礀 昀爀漀洀 琀栀攀 瀀爀椀洀愀爀礀 搀愀琀愀戀愀猀攀 琀漀 琀栀攀 猀琀愀渀搀戀礀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ In this case, the primary database must be mounted or open.
    ਍㰀戀爀㸀ഀഀ The difference is by the "FROM ACTIVE DATABASE" clause. If it's not in the command,
    ਍琀栀攀渀 刀䴀䄀一 瀀攀爀昀漀爀洀猀 戀愀挀欀甀瀀ⴀ戀愀猀攀搀 搀甀瀀氀椀挀愀琀椀漀渀⸀㰀戀爀㸀ഀഀ
    ਍匀琀愀爀琀 琀栀攀 ∀匀琀愀渀搀戀礀 椀渀猀琀愀渀挀攀∀ 漀渀 甀猀椀渀最 ∀猀琀愀爀琀甀瀀 渀漀洀漀甀渀琀 瀀昀椀氀攀㴀瀀愀琀栀开琀漀开瀀昀椀氀攀∀㰀⼀氀椀㸀ഀഀ Now start an RMAN session like so:
    ਍㰀戀爀㸀ഀഀ RMAN> connect target sys@DB1
    ਍刀䴀䄀一㸀 挀漀渀渀攀挀琀 挀愀琀愀氀漀最 挀愀琀愀氀漀最漀眀渀攀爀䀀挀愀琀愀氀漀最搀戀㰀戀爀㸀ഀഀ RMAN> connect auxiliary sys@DB2
    ਍刀䴀䄀一㸀 搀甀瀀氀椀挀愀琀攀 琀愀爀最攀琀 搀愀琀愀戀愀猀攀 昀漀爀 猀琀愀渀搀戀礀 昀爀漀洀 愀挀琀椀瘀攀 搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ
    ਍䐀甀攀 琀漀 琀栀攀 ∀昀漀爀 猀琀愀渀搀戀礀∀ 欀攀礀眀漀爀搀猀Ⰰ 琀栀攀 搀愀琀愀戀愀猀攀 眀椀氀氀 最攀琀 愀 甀渀椀焀甀攀 䐀䈀䤀䐀⸀㰀戀爀㸀ഀഀ
    ਍倀攀爀 搀攀昀愀甀氀琀Ⰰ 刀䴀䄀一 搀漀攀猀 渀漀琀 爀攀挀漀瘀攀爀 琀栀攀 搀愀琀愀戀愀猀攀⸀ 唀猀攀 琀栀攀 䐀伀刀䔀䌀伀嘀䔀刀 漀瀀琀椀漀渀 漀昀 琀栀攀 䐀唀倀䰀䤀䌀䄀吀䔀 挀漀洀洀愀渀搀㰀戀爀㸀ഀഀ to specify that RMAN should recover the standby database.
    ਍㰀戀爀㸀ഀഀ For using the active database option, a script like below can be used:
    ਍㰀戀爀㸀ഀഀ RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE
    ਍䐀伀刀䔀䌀伀嘀䔀刀㰀戀爀㸀ഀഀ SPFILE
    ਍匀䔀吀 ∀搀戀开甀渀椀焀甀攀开渀愀洀攀∀㴀∀匀伀唀吀䠀∀ 䌀伀䴀䴀䔀一吀 ✀✀吀栀攀 匀琀愀渀搀戀礀✀✀㰀戀爀㸀ഀഀ SET LOG_ARCHIVE_DEST_2="service=SOUTH ASYNC REGISTER
    ਍嘀䄀䰀䤀䐀开䘀伀刀㴀⠀漀渀氀椀渀攀开氀漀最昀椀氀攀Ⰰ瀀爀椀洀愀爀礀开爀漀氀攀⤀∀㰀戀爀㸀ഀഀ SET FAL_SERVER="CENTRAL" COMMENT "Is primary"
    ਍一伀䘀䤀䰀䔀一䄀䴀䔀䌀䠀䔀䌀䬀㬀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ --Switchover:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ ਍㰀戀爀㸀ഀഀ A "Failover" in DG terminology happens, when the Primary fails, and a Standby takes over.
    ਍㰀戀爀㸀ഀഀ A "Switchover" happens when you manually perform a role switch, so that a Standby becomes the Primary.
    ਍吀栀椀猀 洀椀最栀琀 栀愀瀀瀀攀渀Ⰰ 昀漀爀 攀砀愀洀瀀氀攀Ⰰ 樀甀猀琀 戀攀昀漀爀攀 愀 瀀氀愀渀渀攀搀 洀愀椀渀琀攀渀愀渀挀攀⸀㰀戀爀㸀ഀഀ
    ਍䠀漀眀攀瘀攀爀Ⰰ 椀渀 洀愀渀礀 愀爀琀椀挀氀攀猀Ⰰ 琀栀攀 琀攀爀洀猀 ∀䘀愀椀氀漀瘀攀爀∀ 愀渀搀 ∀匀眀椀琀挀栀漀瘀攀爀∀ 愀爀攀 甀猀攀搀 椀渀琀攀爀挀栀愀渀最攀戀氀礀⸀㰀戀爀㸀ഀഀ This can be explained if you reserve switchover for any roleswitch. and failover if you switch the role
    ਍漀昀 琀栀攀 挀甀爀爀攀渀琀 瀀爀椀洀愀爀礀⸀㰀戀爀㸀ഀഀ
    ਍䤀渀 愀 匀眀椀琀挀栀栀漀瘀攀爀Ⰰ 琀栀攀 昀漀爀洀攀爀 瀀爀椀洀愀爀礀 戀攀挀漀洀攀猀 愀 匀琀愀渀搀戀礀Ⰰ 愀渀搀 甀猀甀愀氀氀礀 搀漀攀猀 渀漀琀 渀攀攀搀 琀漀 戀攀 爀攀戀甀椀氀搀⸀㰀戀爀㸀ഀഀ In certain circumstances, at Failover, a former primary may need to be rebuild,
    ਍瀀漀猀猀椀戀氀礀 搀甀攀 琀漀 琀栀攀 昀愀挀琀 琀栀愀琀 椀琀 爀甀渀猀 琀漀漀 昀愀爀 戀攀栀椀渀搀⸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ When not using Grid control (Enterprise Manager), SQL commands or DGMGRL commands, can be used
    ਍琀漀 瀀攀爀昀漀爀洀 愀 匀眀椀琀挀栀漀瘀攀爀⸀㰀戀爀㸀ഀഀ
    ਍ⴀ唀猀攀 愀 猀眀椀琀挀栀漀瘀攀爀 琀漀 愀 瀀栀礀猀椀挀愀氀 猀琀愀渀搀戀礀 搀愀琀愀戀愀猀攀 椀渀猀琀攀愀搀 漀昀 愀 氀漀最椀挀愀氀 猀琀愀渀搀戀礀⸀㰀戀爀㸀ഀഀ -Choose the node with the least un-applied redo. For that to investigate, you might try:
    ਍㰀戀爀㸀ഀഀ DGMGRL> SHOW DATABASE 'standbydb' 'RecvQEntries';
    ਍䐀䜀䴀䜀刀䰀㸀 匀䠀伀圀 䐀䄀吀䄀䈀䄀匀䔀 ✀瀀爀漀搀搀戀✀ ✀匀攀渀搀儀䔀渀琀爀椀攀猀✀㬀㰀戀爀㸀ഀഀ
    ਍䄀渀搀 甀猀攀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 䄀䰀吀䔀刀 匀䔀匀匀䤀伀一 匀䔀吀 渀氀猀开搀愀琀攀开昀漀爀洀愀琀㴀✀䐀䐀ⴀ䴀伀一ⴀ夀夀夀夀 䠀䠀㈀㐀㨀䴀䤀㨀匀匀✀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 匀䔀䰀䔀䌀吀 猀攀焀甀攀渀挀攀⌀Ⰰ 昀椀爀猀琀开琀椀洀攀Ⰰ 渀攀砀琀开琀椀洀攀Ⰰ 愀瀀瀀氀椀攀搀  䘀刀伀䴀 瘀␀愀爀挀栀椀瘀攀搀开氀漀最㰀戀爀㸀ഀഀ ORDER BY sequence#;
    ਍㰀戀爀㸀ഀഀ ਍䄀 昀攀眀 漀琀栀攀爀 猀甀戀挀漀洀洀愀渀搀猀 椀渀 琀栀攀 䐀䜀䴀䜀刀䰀 猀栀攀氀氀㨀㰀戀爀㸀ഀഀ
    ਍䐀䜀䴀䜀刀䰀㸀 挀漀渀渀攀挀琀 猀礀猀⼀瀀愀猀猀眀漀爀搀㰀戀爀㸀ഀഀ
    ਍䐀䜀䴀䜀刀䰀㸀 匀䠀伀圀 䌀伀一䘀䤀䜀唀刀䄀吀䤀伀一㬀㰀戀爀㸀ഀഀ
    ਍䐀䜀䴀䜀刀䰀㸀 匀䠀伀圀 䐀䄀吀䄀䈀䄀匀䔀 嘀䔀刀䈀伀匀䔀 ✀䌀䔀一吀刀䄀䰀✀㬀㰀戀爀㸀ഀഀ DGMGRL> SHOW DATABASE VERBOSE 'SOUTH';
    ਍㰀戀爀㸀ഀഀ Use the SWITCHOVER command to swap the roles of the primary and standby database.
    ਍㰀戀爀㸀ഀഀ DGMGRL> switchover to 'SOUTH';
    ਍㰀戀爀㸀ഀഀ Or using sqlplus:
    ਍㰀戀爀㸀ഀഀ --primary:
    ਍㰀戀爀㸀ഀഀ SQL> alter database commit to switchover to standby;
    ਍䐀愀琀愀戀愀猀攀 愀氀琀攀爀攀搀⸀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀栀甀琀搀漀眀渀 椀洀洀攀搀椀愀琀攀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀琀愀爀琀甀瀀 渀漀洀漀甀渀琀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 愀氀琀攀爀 搀愀琀愀戀愀猀攀 洀漀甀渀琀 猀琀愀渀搀戀礀 搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 愀氀琀攀爀 搀愀琀愀戀愀猀攀 爀攀挀漀瘀攀爀 洀愀渀愀最攀搀 猀琀愀渀搀戀礀 搀愀琀愀戀愀猀攀 搀椀猀挀漀渀渀攀挀琀 昀爀漀洀 猀攀猀猀椀漀渀㬀㰀戀爀㸀ഀഀ
    ਍ⴀⴀ猀琀愀渀搀戀礀㨀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 愀氀琀攀爀 搀愀琀愀戀愀猀攀 挀漀洀洀椀琀 琀漀 猀眀椀琀挀栀漀瘀攀爀 琀漀 瀀爀椀洀愀爀礀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀栀甀琀搀漀眀渀 椀洀洀攀搀椀愀琀攀㬀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀琀愀爀琀甀瀀㰀戀爀㸀ഀഀ
    ਍匀儀䰀㸀 猀攀氀攀挀琀 渀愀洀攀Ⰰ漀瀀攀渀开洀漀搀攀Ⰰ搀愀琀愀戀愀猀攀开爀漀氀攀 昀爀漀洀 瘀␀搀愀琀愀戀愀猀攀㬀㰀戀爀㸀ഀഀ
    ਍䄀猀 愀 琀攀猀琀Ⰰ 最攀渀攀爀愀琀攀 猀漀洀攀 氀漀最猀 愀渀搀 猀攀攀 椀昀 琀栀攀礀 最漀 琀漀 琀栀攀 渀攀眀 猀琀愀渀搀戀礀⸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㐀㔀∀㸀㐀㔀⸀ 匀䠀伀圀 伀䘀吀䔀一 䄀䌀䌀䔀匀匀䔀䐀 吀䄀䈀䰀䔀匀 䄀一䐀 䤀一䐀䔀堀䔀匀 ⠀㄀ 最⼀㄀㄀最⼀㄀㈀挀⤀㨀㰀⼀栀㈀㸀 ഀഀ ਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ - Quick adhoc check on accessed onbjects:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍ഀഀ SELECT d.OBJECT_ID, substr(OBJECT_NAME,1,20), l.SESSION_ID, l.ORACLE_USERNAME, l.LOCKED_MODE
    ਍䘀刀伀䴀 瘀␀氀漀挀欀攀搀开漀戀樀攀挀琀 氀Ⰰ 搀戀愀开漀戀樀攀挀琀猀 搀㰀戀爀㸀 ഀഀ WHERE d.OBJECT_ID=l.OBJECT_ID;
    ਍㰀戀爀㸀  ഀഀ ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ - Quick adhoc check on waiting sessions:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍ഀഀ SELECT waiting_session, holding_session, lock_type, mode_held
    ਍䘀刀伀䴀 搀戀愀开眀愀椀琀攀爀猀㬀㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍㰀䈀㸀ⴀ 䐀攀琀攀爀洀椀渀椀渀最 昀爀攀焀甀攀渀琀氀礀 愀挀挀攀猀猀攀搀 漀戀樀攀挀琀猀 戀礀 瀀栀礀猀椀挀愀氀 爀攀愀搀猀 漀爀 眀爀椀琀攀猀 昀爀漀洀 瘀␀猀攀最洀攀渀琀开猀琀愀琀椀猀琀椀挀猀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ Replace the 'OBJECT_OWNER' below, with a real object owner or schema name.
    ਍㰀戀爀㸀ഀഀ ਍匀䔀䰀䔀䌀吀 ⨀㰀戀爀㸀ഀഀ FROM v$segment_statistics
    ਍圀䠀䔀刀䔀 漀眀渀攀爀 㴀 ✀伀䈀䨀䔀䌀吀开伀圀一䔀刀✀㰀戀爀㸀ഀഀ AND
    ਍   猀琀愀琀椀猀琀椀挀开渀愀洀攀㴀✀瀀栀礀猀椀挀愀氀 爀攀愀搀 爀攀焀甀攀猀琀猀✀㰀戀爀㸀ഀഀ order by value desc;
    ਍㰀戀爀㸀ഀഀ SELECT *
    ਍  䘀刀伀䴀 瘀␀猀攀最洀攀渀琀开猀琀愀琀椀猀琀椀挀猀㰀戀爀㸀ഀഀ WHERE owner = 'OBJECT_OWNER'
    ਍   䄀一䐀 㰀戀爀㸀ഀഀ statistic_name='physical write requests'
    ਍㰀戀爀㸀ഀഀ Example:
    ਍㰀戀爀㸀ഀഀ SELECT * FROM v$segment_statistics WHERE owner = 'SALES'
    ਍䄀一䐀 猀琀愀琀椀猀琀椀挀开渀愀洀攀㴀✀瀀栀礀猀椀挀愀氀 爀攀愀搀 爀攀焀甀攀猀琀猀✀ 漀爀搀攀爀 戀礀 瘀愀氀甀攀 搀攀猀挀㬀㰀戀爀㸀ഀഀ
    ਍ഀഀ ਍㰀䈀㸀ⴀ 䐀攀琀攀爀洀椀渀椀渀最 昀爀攀焀甀攀渀琀氀礀 愀挀挀攀猀猀攀搀 漀戀樀攀挀琀猀 戀礀 瀀栀礀猀椀挀愀氀 爀攀愀搀猀 漀爀 眀爀椀琀攀猀 昀爀漀洀 瘀␀猀焀氀开瀀氀愀渀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ You may observe that v$sql_plan has a considerable numbr of rows, and not all "fields" have a value,
    ਍猀椀渀挀攀 瘀␀猀焀氀开瀀氀愀渀 椀猀 愀 瘀椀攀眀 漀渀 搀愀琀愀 昀爀漀洀 琀栀攀 氀椀戀爀愀爀礀 挀愀挀栀攀⸀㰀戀爀㸀ഀഀ
    ਍ഀഀ SELECT COUNT (*), object_name
    ਍䘀刀伀䴀  瘀␀猀焀氀开瀀氀愀渀㰀戀爀㸀ഀഀ WHERE operation = 'TABLE ACCESS'
    ਍䜀刀伀唀倀 䈀夀 漀戀樀攀挀琀开渀愀洀攀 㰀戀爀㸀ഀഀ ORDER BY COUNT (*) DESC;
    ਍㰀戀爀㸀ഀഀ ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ -Some other pointers:
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍ⴀ 䐀䈀䄀开吀䄀䈀䰀䔀匀㨀 渀甀洀开爀漀眀猀㰀戀爀㸀ഀഀ
    ਍䤀昀 琀栀攀 猀琀愀琀椀猀琀椀挀猀 愀爀攀 ∀爀攀愀漀渀愀戀氀攀∀甀瀀ⴀ琀漀ⴀ搀愀琀攀Ⰰ 琀栀攀渀 ∀渀甀洀开爀漀眀猀∀ 昀爀漀洀 搀戀愀开琀愀戀氀攀猀 洀愀礀 瀀爀漀瘀椀搀攀 愀 挀氀甀攀 琀漀漀Ⰰ㰀戀爀㸀ഀഀ as a reasonable pointer to often used tables.
    ਍㰀戀爀㸀ഀഀ select substr(owner,1,20), substr(table_name,1,30), num_rows
    ਍昀爀漀洀 搀戀愀开琀愀戀氀攀猀 眀栀攀爀攀 漀眀渀攀爀 渀漀琀 椀渀 ⠀✀匀夀匀✀Ⰰ✀匀夀匀吀䔀䴀✀Ⰰ ✀䐀䈀匀一䴀倀✀Ⰰ ✀䴀䐀匀夀匀✀⤀㰀戀爀㸀ഀഀ order by num_rows desc;
    ਍㰀戀爀㸀ഀഀ - v$bh and DBA_OBJECTS and num_rows: pages in memory
    ਍㰀戀爀㸀ഀഀ ਍挀漀氀甀洀渀 挀  栀攀愀搀椀渀最 ✀伀眀渀攀爀✀                     昀漀爀洀愀琀 愀㄀㔀㰀戀爀㸀ഀഀ column c1 heading 'Object|Name' format a30
    ਍挀漀氀甀洀渀 挀㈀ 栀攀愀搀椀渀最 ✀一甀洀戀攀爀簀漀昀簀䈀甀昀昀攀爀猀✀         昀漀爀洀愀琀 㤀㤀㤀Ⰰ㤀㤀㤀 㰀戀爀㸀ഀഀ column c3 heading 'Percentage|of Data|Buffer' format 999,999,999
    ਍㰀戀爀㸀ഀഀ select
    ਍   漀眀渀攀爀                        挀 Ⰰ㰀戀爀㸀ഀഀ object_name c1,
    ਍   挀漀甀渀琀⠀㄀⤀                     挀㈀Ⰰ㰀戀爀㸀ഀഀ (count(1)/(select count(*) from v$bh)) *100 c3
    ਍昀爀漀洀㰀戀爀㸀ഀഀ dba_objects o,
    ਍   瘀␀戀栀        戀栀㰀戀爀㸀ഀഀ where
    ਍   漀⸀漀戀樀攀挀琀开椀搀  㴀 戀栀⸀漀戀樀搀㰀戀爀㸀ഀഀ and
    ਍   漀⸀漀眀渀攀爀 椀渀 ⠀✀吀䠀䔀开伀圀一䔀刀✀⤀  ⴀⴀ 昀椀氀氀 椀渀 琀栀攀 猀挀栀攀洀愀Ⰰ 漀爀 猀攀琀 漀昀 猀挀栀攀洀愀✀猀⸀㰀戀爀㸀ഀഀ group by
    ਍   漀眀渀攀爀Ⰰ㰀戀爀㸀ഀഀ object_name
    ਍漀爀搀攀爀 戀礀㰀戀爀㸀ഀഀ count(1) desc
    ਍㬀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ You can also track table usage with EM and AWR.
    ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀栀㈀ 椀搀㴀∀猀攀挀琀椀漀渀㐀㘀∀㸀㐀㘀⸀ 匀䠀伀圀 倀䔀刀䴀䤀匀匀䤀伀一匀 䄀一䐀 䜀刀䄀一吀 匀吀䄀吀䔀䴀䔀一吀匀 ⠀㄀ 最⼀㄀㄀最⼀㄀㈀挀⤀㨀㰀⼀栀㈀㸀 ഀഀ ਍㰀戀爀㸀ഀഀ Most user and role permission information can be found in the system views:
    ਍㰀戀爀㸀ഀഀ DBA_ROLE_PRIVS
    ਍䐀䈀䄀开匀夀匀开倀刀䤀嘀匀㰀戀爀㸀ഀഀ DBA_TAB_PRIVS
    ਍㰀戀爀㸀ഀഀ Simple Examples:
    ਍㰀戀爀㸀ഀഀ grantee: the account who received the permissions.
    ਍㰀戀爀㸀ഀഀ -- List the privileges granted to CHARLIE.
    ਍㰀戀爀㸀ഀഀ SELECT substr(grantee, 1, 15), substr(privilege, 1, 40), admin_option
    ਍䘀刀伀䴀 䐀䈀䄀开匀夀匀开倀刀䤀嘀匀 圀䠀䔀刀䔀 最爀愀渀琀攀攀㴀✀䌀䠀䄀刀䰀䤀䔀✀㬀㰀戀爀㸀ഀഀ
    ਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 搀戀愀开猀礀猀开瀀爀椀瘀猀 圀䠀䔀刀䔀 最爀愀渀琀攀攀㴀✀䌀䠀䄀刀䰀䤀䔀✀㬀㰀戀爀㸀ഀഀ
    ਍ⴀⴀ 䰀椀猀琀 愀氀氀 猀礀猀 瀀爀椀瘀椀氀攀最攀猀⸀㰀戀爀㸀ഀഀ
    ਍匀䔀䰀䔀䌀吀 ⨀ 䘀刀伀䴀 搀戀愀开猀礀猀开瀀爀椀瘀猀㰀戀爀㸀ഀഀ
    ਍ⴀⴀ 䰀椀猀琀 愀氀氀 爀漀氀攀猀 最椀瘀攀渀 琀漀 愀 挀攀爀琀愀椀渀 甀猀攀爀㨀㰀戀爀㸀ഀഀ
    ਍匀䔀䰀䔀䌀吀 ⨀ 昀爀漀洀 搀戀愀开爀漀氀攀开瀀爀椀瘀猀 圀䠀䔀刀䔀 最爀愀渀琀攀攀 㴀 ✀䌀䠀䄀刀䰀䤀䔀✀㬀㰀戀爀㸀ഀഀ
    ਍ⴀⴀ 䰀椀猀琀 眀栀椀挀栀 琀愀戀氀攀猀 愀 挀攀爀琀愀椀渀 爀漀氀攀 氀椀欀攀 匀䄀䰀䔀匀开刀伀䰀䔀 最椀瘀攀猀 匀䔀䰀䔀䌀吀 愀挀挀攀猀猀 琀漀㨀㰀戀爀㸀ഀഀ
    ਍匀䔀䰀䔀䌀吀 ⨀ 昀爀漀洀 爀漀氀攀开琀愀戀开瀀爀椀瘀猀 圀䠀䔀刀䔀 爀漀氀攀㴀✀匀䄀䰀䔀匀开刀伀䰀䔀✀ 愀渀搀 瀀爀椀瘀椀氀攀最攀 㴀 ✀匀䔀䰀䔀䌀吀✀㬀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀伀琀栀攀爀 䔀砀愀洀瀀氀攀猀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ -- Granting permissions to a role or user for a set of objects:
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍匀䔀䰀䔀䌀吀 ✀䜀刀䄀一吀 匀䔀䰀䔀䌀吀 伀一 䠀刀⸀✀簀簀琀愀戀氀攀开渀愀洀攀簀簀✀ 吀伀 刀伀䰀䔀开刀䔀䄀䐀伀一䰀夀㬀✀ 昀爀漀洀 搀戀愀开琀愀戀氀攀猀㰀戀爀㸀ഀഀ where owner='HR';
    ਍㰀戀爀㸀ഀഀ SELECT 'GRANT SELECT ON HR.'||view_name||' TO ROLE_READONLY;' from dba_views
    ਍眀栀攀爀攀 漀眀渀攀爀㴀✀䠀刀✀㬀㰀戀爀㸀ഀഀ
    ਍匀䔀䰀䔀䌀吀 ✀䜀刀䄀一吀 匀䔀䰀䔀䌀吀Ⰰ 䤀一匀䔀刀吀Ⰰ 唀倀䐀䄀吀䔀Ⰰ 䐀䔀䰀䔀吀䔀 伀一 一椀挀攀䄀瀀瀀⸀✀簀簀琀愀戀氀攀开渀愀洀攀簀簀✀ 吀伀 䄀氀戀攀爀琀㬀✀ 昀爀漀洀 搀戀愀开琀愀戀氀攀猀㰀戀爀㸀ഀഀ where owner='NiceApp';
    ਍㰀戀爀㸀ഀഀ ਍ⴀⴀ 䌀爀攀愀琀攀 愀 䰀椀猀琀 漀昀 䜀刀䄀一吀 猀琀愀琀攀洀攀渀琀猀 漀昀 刀漀氀攀猀 琀漀 甀猀攀爀猀㨀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ SELECT 'GRANT '||GRANTED_ROLE||' TO '||GRANTEE
    ਍䘀刀伀䴀 搀戀愀开爀漀氀攀开瀀爀椀瘀猀㬀㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 昀愀挀攀㴀∀愀爀椀愀氀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀甀攀∀㸀ഀഀ

    47. EXPDP AND IMPDP export and import utilities (10g/11g/12c):

    ਍㰀昀漀渀琀 昀愀挀攀㴀∀挀漀甀爀椀攀爀∀ 猀椀稀攀㴀㈀ 挀漀氀漀爀㴀∀戀氀愀挀欀∀㸀ഀഀ
    ਍吀栀攀 戀攀猀琀 搀愀琀愀戀愀猀攀 戀愀挀欀甀瀀猀 挀愀渀 戀攀 洀愀搀攀 甀猀椀渀最 刀䴀䄀一⸀㰀戀爀㸀ഀഀ So, when talking about backup/recovery procedures, or HA and DR, then RMAN is the way to go.
    ਍䠀漀眀攀瘀攀爀Ⰰ 琀栀攀 戀愀挀欀甀瀀猀 洀愀搀攀 戀礀 刀䴀䄀一Ⰰ 椀昀 礀漀甀 搀漀 愀 爀攀猀琀漀爀攀Ⰰ 漀瘀攀爀眀爀椀琀攀猀 琀栀攀 昀漀爀洀攀爀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ
    ਍圀椀琀栀 琀栀攀 瀀爀漀洀瀀琀 甀琀椀氀椀琀礀 㰀䈀㸀∀攀砀瀀搀瀀∀㰀⼀䈀㸀Ⰰ 礀漀甀 挀愀渀 攀砀瀀漀爀琀 漀戀樀攀挀琀猀 琀漀 愀 昀椀氀攀Ⰰ 愀渀搀 琀栀攀 洀漀猀琀 椀洀瀀漀爀琀愀渀琀 漀戀樀攀挀琀猀 礀漀甀 洀椀最栀琀 眀愀渀琀 琀漀 攀砀瀀漀爀琀 愀爀攀㨀㰀戀爀㸀ഀഀ
    ਍ⴀ伀渀攀 漀爀 洀漀爀攀 琀愀戀氀攀猀⸀㰀戀爀㸀ഀഀ -A schema, including all objects in that schema (account).
    ਍ⴀ䄀 昀甀氀氀 搀愀琀愀戀愀猀攀 攀砀瀀漀爀琀⸀㰀戀爀㸀ഀഀ -Metadata (like tablespace metadata, or security/grants etc..).
    ਍㰀戀爀㸀ഀഀ This is extremely flexible. For example, it may happen that you must export some schema from Production to
    ਍愀 搀攀瘀攀氀漀瀀洀攀渀琀 猀礀猀琀攀洀⸀ 伀爀 礀漀甀 洀甀猀琀 攀砀瀀漀爀琀 猀漀洀攀 琀愀戀氀攀猀 昀爀漀洀 倀爀漀搀甀挀琀椀漀渀 琀漀 愀 搀攀瘀攀氀漀瀀洀攀渀琀 猀礀猀琀攀洀Ⰰ 漀爀 琀漀 愀 䐀圀䠀 攀琀挀⸀⸀㰀戀爀㸀ഀഀ
    ਍唀猀椀渀最 琀栀攀 瀀爀漀洀瀀琀 甀琀椀氀椀琀礀 㰀䈀㸀∀椀洀瀀搀瀀∀㰀⼀䈀㸀 礀漀甀 挀愀渀 椀洀瀀漀爀琀 琀栀攀 琀栀攀 挀漀渀琀攀渀琀 漀昀 琀栀攀 昀椀氀攀⠀猀⤀ 挀爀攀愀琀攀搀 戀礀 ∀攀砀瀀搀瀀∀Ⰰ㰀戀爀㸀ഀഀ into a target database.
    ਍㰀戀爀㸀ഀഀ ਍㰀栀㌀㸀㐀㜀⸀㄀ 吀栀攀 䐀䤀刀䔀䌀吀伀刀夀 伀戀樀攀挀琀㨀㰀⼀栀㌀㸀ഀഀ ਍伀渀攀 椀洀瀀漀爀琀愀渀琀 琀栀椀渀最 椀猀Ⰰ 琀栀愀琀 戀漀琀栀 琀漀漀氀猀 甀猀攀 愀 猀漀挀愀氀氀攀搀 ∀䐀䤀刀䔀䌀吀伀刀夀∀Ⰰ 搀攀昀椀渀攀搀 椀渀 琀栀攀 搀愀琀愀戀愀猀攀⸀㰀戀爀㸀ഀഀ This Oracle object (metadata), then "points" to a real physical "path" somewhere in the filesystem.
    ਍匀漀Ⰰ 琀栀攀 䐀䤀刀䔀䌀吀伀刀夀 椀猀 漀渀氀礀 洀攀琀愀搀愀琀愀 椀渀 琀栀攀 搀愀琀愀戀愀猀攀Ⰰ 眀栀椀挀栀 爀攀昀攀爀猀 琀漀 愀 爀攀愀氀 瀀栀礀猀椀挀愀氀 瀀愀琀栀⸀㰀戀爀㸀ഀഀ
    ਍伀渀 琀栀攀 猀礀猀琀攀洀 眀栀攀爀攀 礀漀甀 眀椀氀氀 搀漀 琀栀攀 攀砀瀀漀爀琀Ⰰ 愀 䐀䤀刀䔀䌀吀伀刀夀 漀戀樀攀挀琀 洀甀猀琀 攀砀椀猀琀⸀㰀戀爀㸀ഀഀ The same is true for the target system, where you will do the import.
    ਍吀栀甀猀㨀 漀渀 戀漀琀栀 琀栀攀 猀漀甀爀挀攀 椀渀猀琀愀渀挀攀Ⰰ 愀渀搀 琀栀攀 琀愀爀最攀琀 椀渀猀琀愀渀挀攀Ⰰ 愀 䐀䤀刀䔀䌀吀伀刀夀 渀攀攀搀猀 琀漀 攀砀椀猀琀⸀㰀戀爀㸀ഀഀ The path ofcourse may differ on both machines, since the source and targets are often different databases
    ਍漀渀 猀攀瀀攀爀愀琀攀 洀愀挀栀椀渀攀猀 ⠀漀爀 嘀䴀✀猀⤀⸀㰀戀爀㸀ഀഀ
    ਍匀漀 昀漀爀 攀砀愀洀瀀氀攀Ⰰ 漀渀 琀栀攀 猀礀猀琀攀洀 眀栀攀爀攀 礀漀甀 眀椀氀氀 搀漀 琀栀攀 攀砀瀀漀爀琀Ⰰ 氀漀最漀渀 愀猀 猀礀猀搀戀愀Ⰰ 愀渀搀 甀猀攀 匀儀䰀 挀漀洀洀愀渀搀猀 氀椀欀攀㨀㰀戀爀㸀ഀഀ
    ਍㰀昀漀渀琀 挀漀氀漀爀㴀∀戀爀漀眀渀∀㸀ഀഀ CREATE OR REPLACE DIRECTORY DATAPUMP AS '/orabackup/mydatabase';
    ਍㰀戀爀㸀ഀഀ GRANT READ, WRITE ON DIRECTORY DATAPUMP TO PUBLIC;
    ਍ഀഀ ਍㰀戀爀㸀ഀഀ And on the target system, you might have defined the DIRECTORY object as:
    ਍㰀戀爀㸀ഀഀ ਍䌀刀䔀䄀吀䔀 伀刀 刀䔀倀䰀䄀䌀䔀 䐀䤀刀䔀䌀吀伀刀夀 䐀䄀吀䄀倀唀䴀倀 䄀匀 ✀⼀戀愀挀欀甀瀀✀㬀㰀戀爀㸀ഀഀ
    ਍䜀刀䄀一吀 刀䔀䄀䐀Ⰰ 圀刀䤀吀䔀 伀一 䐀䤀刀䔀䌀吀伀刀夀 䐀䄀吀䄀倀唀䴀倀 吀伀 倀唀䈀䰀䤀䌀㬀㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ The examples above, you might have used on Linux/Unix systems. For Windows, we have similar SQL,
    ਍戀甀琀 漀昀挀漀甀爀猀攀 漀渀氀礀 琀栀攀 昀椀氀攀 猀礀猀琀攀洀 瀀愀琀栀 眀漀甀氀搀 戀攀 搀椀昀昀攀爀攀渀琀⸀㰀戀爀㸀ഀഀ
    ਍匀漀Ⰰ 昀漀爀 攀砀愀洀瀀氀攀Ⰰ 昀漀爀 愀 圀椀渀搀漀眀猀 猀礀猀琀攀洀 礀漀甀 洀椀最栀琀 栀愀瘀攀 甀猀攀搀㨀㰀戀爀㸀ഀഀ
    ਍䌀刀䔀䄀吀䔀 伀刀 刀䔀倀䰀䄀䌀䔀 䐀䤀刀䔀䌀吀伀刀夀 䐀䄀吀䄀倀唀䴀倀 䄀匀 ✀刀㨀尀䐀䄀吀䄀倀唀䴀倀✀㬀㰀戀爀㸀ഀഀ
    ਍䜀刀䄀一吀 刀䔀䄀䐀Ⰰ 圀刀䤀吀䔀 伀一 䐀䤀刀䔀䌀吀伀刀夀 䐀䄀吀䄀倀唀䴀倀 吀伀 倀唀䈀䰀䤀䌀㬀㰀戀爀㸀ഀഀ
    ਍ഀഀ

    47.2 Some simple examples using expdp:

    ਍ഀഀ It's a Operating system prompt utility, so before you use it, set the environment just as you would normally
    ਍搀漀 眀栀攀渀 攀⸀最⸀Ⰰ 甀猀椀渀最 猀焀氀瀀氀甀猀 ⠀昀漀爀 攀砀愀洀瀀氀攀Ⰰ 猀攀琀琀椀渀最 琀栀攀 伀刀䄀䌀䰀䔀开䠀伀䴀䔀 愀渀搀 伀刀䄀䌀䰀䔀开匀䤀䐀 瘀愀爀椀愀戀氀攀猀⤀⸀㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ⴀ䔀砀瀀漀爀琀椀渀最 愀 昀甀氀氀 猀挀栀攀洀愀 琀漀 愀 昀椀氀攀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䌀㨀尀㸀 攀砀瀀搀瀀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀洀礀椀渀猀琀愀渀挀攀㄀ 搀椀爀攀挀琀漀爀礀㴀䐀䄀吀䄀倀唀䴀倀 攀砀挀氀甀搀攀㴀猀琀愀琀椀猀琀椀挀猀 猀挀栀攀洀愀猀㴀䠀刀 搀甀洀瀀昀椀氀攀㴀䠀刀⸀䐀䴀倀 氀漀最昀椀氀攀㴀䠀刀⸀氀漀最㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ⴀ䔀砀瀀漀爀琀椀渀最 愀 昀甀氀氀 搀愀琀愀戀愀猀攀 琀漀 愀 昀椀氀攀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䌀㨀尀㸀 攀砀瀀搀瀀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀洀礀椀渀猀琀愀渀挀攀㄀ 昀甀氀氀㴀夀 搀椀爀攀挀琀漀爀礀㴀䐀䄀吀䄀倀唀䴀倀 搀甀洀瀀昀椀氀攀㴀洀礀椀渀猀琀愀渀挀攀⸀搀洀瀀 氀漀最昀椀氀攀㴀洀礀椀渀猀琀愀渀挀攀⸀氀漀最㰀戀爀㸀ഀഀ
    ਍㰀䈀㸀ⴀ䔀砀瀀漀爀琀椀渀最 愀 吀䄀䈀䰀䔀 琀漀 愀 昀椀氀攀㨀㰀⼀䈀㸀㰀戀爀㸀ഀഀ
    ਍䌀㨀尀㸀 攀砀瀀搀瀀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀洀礀椀渀猀琀愀渀挀攀㄀ 搀椀爀攀挀琀漀爀礀㴀䐀䄀吀䄀倀唀䴀倀  攀砀挀氀甀搀攀㴀猀琀愀琀椀猀琀椀挀猀 琀愀戀氀攀猀㴀䄀䜀䔀⸀䄀䜀䔀开倀䄀刀䄀䴀 搀甀洀瀀昀椀氀攀㴀䄀䜀䔀开倀䄀刀䄀䴀⸀搀洀瀀  氀漀最昀椀氀攀㴀䄀䜀䔀开倀䄀刀䄀䴀⸀氀漀最 挀漀洀瀀爀攀猀猀椀漀渀㴀渀漀渀攀㰀戀爀㸀ഀഀ
    ਍ഀഀ

    47.3 Some simple examples using impdp on the target machine:

    ਍ഀഀ -Importing a TABLE using an export file:
    ਍㰀戀爀㸀ഀഀ Maybe you want to drop the original table (in the target database) first, if it already exists.
    ਍㰀戀爀㸀ഀഀ SQL> drop table AGE.AGE_PARAM;
    ਍㰀戀爀㸀ഀഀ C:\> impdp system/password@myinstance2 directory=DATAPUMP tables=AGE.AGE_PARAM dumpfile=AGE_PARAM.dmp logfile=AGE_PARAM.log
    ਍㰀戀爀㸀ഀഀ -Importing a FULL SCHEMA using an export file:
    ਍㰀戀爀㸀ഀഀ Maybe you want to drop the original SCHEMA (in the target database) first, if it already exists.
    ਍㰀戀爀㸀ഀഀ SQL> drop user HR cascade;
    ਍㰀戀爀㸀ഀഀ C:\> impdp system/password@myinstance2 directory=DATAPUMP schemas=HR dumpfile=HR.dmp logfile=hr.log
    ਍㰀戀爀㸀ഀഀ -Importing a FULL SCHEMA, but the load must go to another SCHEMA:
    ਍㰀戀爀㸀ഀഀ Suppose on INST1 you have created an export of the HR schema. However, on INST2 this needs to be loaded
    ਍椀渀琀漀 琀栀攀 䠀䄀刀刀夀 猀挀栀攀洀愀㨀㰀戀爀㸀ഀഀ
    ਍䌀㨀尀㸀 椀洀瀀搀瀀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀洀礀椀渀猀琀愀渀挀攀㈀ 搀椀爀攀挀琀漀爀礀㴀䐀䄀吀䄀倀唀䴀倀 搀甀洀瀀昀椀氀攀㴀栀爀⸀搀洀瀀 刀䔀䴀䄀倀开匀䌀䠀䔀䴀䄀㴀栀爀㨀栀愀爀爀礀 氀漀最昀椀氀攀㴀栀愀爀爀礀⸀氀漀最㰀戀爀㸀ഀഀ ਍㰀戀爀㸀ഀഀ ਍㰀栀㌀㸀㐀㜀⸀㐀 匀漀洀攀 猀椀洀瀀氀攀 攀砀愀洀瀀氀攀猀 甀猀椀渀最 倀䄀刀䄀䰀䰀䔀䰀䔀 椀洀瀀漀爀琀 漀爀 攀砀瀀漀爀琀㰀⼀栀㌀㸀ഀഀ ਍䤀琀✀猀 瀀漀猀猀椀戀氀攀 琀漀 甀猀攀 洀甀氀琀椀瀀氀攀 猀攀爀瘀攀爀 猀攀猀猀猀椀漀渀 昀漀爀 琀栀攀 攀砀瀀漀爀琀 愀渀搀 椀洀瀀漀爀琀Ⰰ 氀椀欀攀 ㈀ 漀爀 㐀 猀攀猀猀椀漀渀猀⸀㰀戀爀㸀ഀഀ However, at the export, the same number of export files will be created.
    ਍夀漀甀 挀愀渀 猀椀最渀椀昀椀挀愀渀琀氀礀 椀渀挀爀攀愀猀攀 琀栀攀 猀瀀攀攀搀 漀昀 琀栀攀 攀砀瀀漀爀琀 漀爀 椀洀瀀漀爀琀Ⰰ 甀猀椀渀最 琀栀攀 ∀瀀愀爀愀氀氀攀氀∀ 漀瀀琀椀漀渀⸀㰀戀爀㸀ഀഀ However, evaluate the parallel option with respect to the number of available CPU cores.
    ਍㰀戀爀㸀ഀഀ And ofcourse, when doing the import at the target, you must take into account that you have multiple importfiles.
    ਍㰀戀爀㸀ഀഀ Althoug almost all options (like parallel) can be used on the commandline itself, when the number of parameters are
    ਍最攀琀琀椀渀最 栀甀最攀Ⰰ 椀琀✀猀 戀攀猀琀 琀漀 甀猀攀 愀 㰀䈀㸀∀瀀愀爀愀洀攀琀攀爀 昀椀氀攀∀㰀⼀䈀㸀 ⠀⸀瀀愀爀 昀椀氀攀⤀ 眀栀椀挀栀 猀瀀攀挀椀昀椀攀猀 愀氀氀 漀瀀琀椀漀渀猀⸀㰀戀爀㸀ഀഀ In that case, the actual command on the commandline can be rather lean.
    ਍㰀戀爀㸀ഀഀ Example:
    ਍㰀戀爀㸀ഀഀ In D:\Admin\scripts, we have created a parameterfile exphr.par like:
    ਍㰀戀爀㸀ഀഀ directory=DATAPUMP
    ਍氀漀最昀椀氀攀㴀攀砀瀀开䠀刀⸀氀漀最㰀戀爀㸀ഀഀ dumpfile=exp_HR%u.dmp
    ਍瀀愀爀愀氀氀攀氀㴀㈀㰀戀爀㸀ഀഀ EXCLUDE=STATISTICS
    ਍挀漀洀瀀爀攀猀猀椀漀渀㴀渀漀渀攀㰀戀爀㸀ഀഀ SCHEMAS=HR
    ਍㰀戀爀㸀ഀഀ Note parameter=2 option. This means that 2 servers session will go to work, creating 2 exportfiles.
    ਍吀栀攀 ─甀 眀椀氀氀 搀攀琀攀爀洀椀渀攀 琀栀攀 渀愀洀攀猀 漀昀 琀栀攀 昀椀氀攀猀⸀ 䤀渀 琀栀椀猀 攀砀愀洀瀀氀攀Ⰰ 琀栀攀 攀砀瀀漀爀琀猀 眀椀氀氀 戀攀 昀椀氀攀猀 ∀攀砀瀀开䠀刀㄀⸀搀洀瀀∀ 愀渀搀 ∀攀砀瀀开䠀刀㈀⸀搀洀瀀∀⸀㰀戀爀㸀ഀഀ
    ਍一漀眀 眀攀 挀愀渀 猀琀愀爀琀 琀栀攀 攀砀瀀漀爀琀Ⰰ 戀礀 猀椀洀瀀氀礀 甀猀椀渀最㨀㰀戀爀㸀ഀഀ
    ਍䐀㨀尀䄀搀洀椀渀尀猀挀爀椀瀀琀猀㸀 攀砀瀀搀瀀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀洀礀椀渀猀琀愀渀挀攀㄀ 瀀愀爀昀椀氀攀㴀攀砀瀀栀爀⸀瀀愀爀㰀戀爀㸀ഀഀ
    ਍䤀洀瀀漀爀琀椀渀最㨀㰀戀爀㸀ഀഀ
    ਍䄀琀 琀栀攀 琀愀爀最攀琀Ⰰ 礀漀甀 挀爀攀愀琀攀 愀 猀椀洀椀氀愀爀 瀀愀爀昀椀氀攀⸀ 䴀愀欀攀 猀甀爀攀 琀栀愀琀 琀栀攀 搀甀洀瀀昀椀氀攀 瀀愀爀愀洀攀琀攀爀 甀猀攀猀 琀栀攀 猀愀洀攀 渀愀洀攀Ⰰ 氀椀欀攀 攀⸀最⸀ 搀甀洀瀀昀椀氀攀㴀攀砀瀀开䠀刀─甀⸀搀洀瀀⸀㰀戀爀㸀ഀഀ
    ਍吀栀攀 椀洀瀀漀爀琀 挀愀渀 琀栀攀渀 戀攀 愀猀 猀椀洀瀀氀攀 愀猀㨀㰀戀爀㸀ഀഀ
    ਍䌀㨀尀䄀搀洀椀渀尀猀挀爀椀瀀琀猀㸀 椀洀瀀搀瀀 猀礀猀琀攀洀⼀瀀愀猀猀眀漀爀搀䀀洀礀椀渀猀琀愀渀挀攀㈀ 瀀愀爀昀椀氀攀㴀椀洀瀀栀爀⸀瀀愀爀㰀戀爀㸀ഀഀ
    ਍㰀栀㌀㸀㐀㜀⸀㔀 䔀爀爀漀爀氀漀最最椀渀最⸀㰀⼀栀㌀㸀ഀഀ ਍䈀漀琀栀 攀砀瀀搀瀀 愀渀搀 椀洀瀀搀瀀 洀甀猀琀 戀攀 甀猀攀 眀椀琀栀 愀 ∀氀漀最昀椀氀攀㴀∀ 瀀愀爀愀洀攀琀攀爀Ⰰ 攀椀琀栀攀爀 漀渀 琀栀攀 挀漀洀洀愀渀搀氀椀渀攀Ⰰ 漀爀 猀瀀攀挀椀昀椀攀搀 椀渀 愀 瀀愀爀昀椀氀攀⸀㰀戀爀㸀ഀഀ
    ਍夀漀甀 挀愀渀 瘀椀攀眀 愀氀氀 瀀漀猀猀椀戀氀攀 攀爀爀漀爀猀 愀昀琀攀爀 琀栀攀 攀砀瀀漀爀琀Ⰰ 漀爀 椀洀瀀漀爀琀Ⰰ 瘀椀攀眀椀渀最 琀栀愀琀 氀漀最昀椀氀攀⸀㰀戀爀㸀ഀഀ Tables and table data, are the most important and that almost never goes wrong. However, occasionally,
    ਍愀渀搀 椀渀搀攀砀 洀愀礀 昀愀椀氀 琀漀 戀攀 挀爀攀愀琀攀搀 愀琀 琀栀攀 椀洀瀀漀爀琀Ⰰ 愀渀搀 猀甀挀栀 猀椀洀椀氀愀爀 昀愀椀氀甀爀攀猀⸀ 吀栀椀猀 挀愀渀 戀攀 焀甀椀琀攀 攀愀猀椀氀礀 爀攀瀀愀椀爀攀搀㰀戀爀㸀ഀഀ after the import is done. However, some "types" of data may fail too, such as Spatial (GIS) data, LOBs, and then more
    ਍爀攀昀椀渀攀搀 琀攀挀栀渀椀焀甀攀猀 洀甀猀琀 戀攀 甀猀攀搀 琀漀 爀攀瀀愀椀爀 漀戀樀攀挀琀猀 愀昀琀攀爀 愀渀 椀洀瀀漀爀琀⸀㰀戀爀㸀ഀഀ
    ਍䈀甀琀 甀猀甀猀愀氀氀礀Ⰰ 挀攀爀琀愀椀渀氀礀 眀栀攀渀 搀攀愀氀椀渀最 眀椀琀栀 琀愀戀氀攀猀 眀椀琀栀 挀栀愀爀愀挀琀攀爀⼀渀甀洀洀攀爀椀挀 搀愀琀愀Ⰰ 愀渀搀 爀攀最甀氀愀爀 椀渀搀攀砀攀猀Ⰰ 爀攀最甀氀愀爀 倀䬀⼀䘀䬀Ⰰ 攀琀挀⸀⸀㰀戀爀㸀ഀഀ expdp and impdp work fine.
    ਍㰀戀爀㸀ഀഀ After an import of a FULL schema, or even a full database, it's best to check on invalid objects, and recompile them, using:
    ਍㰀戀爀㸀ഀഀ SELECT 'ALTER '||decode( object_type,
    ਍                        ✀倀䄀䌀䬀䄀䜀䔀 匀倀䔀䌀䤀䘀䤀䌀䄀吀䤀伀一✀㰀戀爀㸀ഀഀ ,'PACKAGE'
    ਍                       Ⰰ✀倀䄀䌀䬀䄀䜀䔀 䈀伀䐀夀✀㰀戀爀㸀ഀഀ ,'PACKAGE'
    ਍                       Ⰰ漀戀樀攀挀琀开琀礀瀀攀⤀㰀戀爀㸀ഀഀ ||' '||owner
    ਍                簀簀✀⸀✀簀簀 漀戀樀攀挀琀开渀愀洀攀 簀簀✀ 䌀伀䴀倀䤀䰀䔀 ✀㰀戀爀㸀ഀഀ ||decode( object_type,
    ਍                        ✀倀䄀䌀䬀䄀䜀䔀 匀倀䔀䌀䤀䘀䤀䌀䄀吀䤀伀一✀㰀戀爀㸀ഀഀ ,'SPECIFACTION'
    ਍                       Ⰰ✀倀䄀䌀䬀䄀䜀䔀 䈀伀䐀夀✀㰀戀爀㸀ഀഀ ,'BODY'
    ਍                       Ⰰ 一唀䰀䰀⤀  簀簀✀㬀✀㰀戀爀㸀ഀഀ FROM dba_objects WHERE status = 'INVALID';
    ਍㰀戀爀㸀ഀഀ The statements generated above, can be easily "pasted" into TOAD, or SQL Developer, or sqlplus,
    ਍椀渀 漀爀搀攀爀 琀漀 爀攀挀漀洀瀀椀氀攀 愀猀 洀甀挀栀 愀猀 瀀漀猀猀椀戀氀攀 漀戀樀攀挀琀猀⸀㰀戀爀㸀ഀഀ
    ਍㰀栀㌀㸀㐀㜀⸀㘀 匀栀漀眀椀渀最 瀀爀漀最爀攀猀猀 眀栀椀氀攀 攀砀瀀搀瀀 漀爀 椀洀瀀搀戀 椀猀 爀甀渀渀椀渀最⸀㰀⼀栀㌀㸀ഀഀ ਍吀栀攀爀攀 愀爀攀 愀 昀攀眀 最攀渀攀爀愀氀 焀甀攀爀椀攀猀Ⰰ 愀渀搀 愀氀猀漀 猀漀洀攀 猀瀀攀挀椀愀氀 洀攀琀愀搀愀琀愀 瘀椀攀眀猀Ⰰ 猀栀漀眀椀渀最 琀栀攀 瀀爀漀最爀攀猀猀 愀渀搀 猀琀愀琀甀猀 漀昀 椀洀瀀搀瀀 愀渀搀 攀砀瀀搀瀀⸀㰀戀爀㸀ഀഀ
    ਍䘀漀爀 攀砀愀洀瀀氀攀㨀㰀戀爀㸀ഀഀ
    ਍猀攀氀攀挀琀 ⨀ 昀爀漀洀 䐀䈀䄀开䐀䄀吀䄀倀唀䴀倀开䨀伀䈀匀㬀㰀戀爀㸀ഀഀ
    ਍猀攀氀攀挀琀 ⨀ 昀爀漀洀 䐀䈀䄀开䐀䄀吀䄀倀唀䴀倀开匀䔀匀匀䤀伀一匀㬀㰀戀爀㸀ഀഀ
    ਍䄀渀搀 漀昀挀漀甀爀猀攀Ⰰ 礀漀甀 挀愀渀 挀爀攀愀琀 愀 樀漀椀渀 漀渀 嘀␀匀䔀匀匀䤀伀一开䰀伀一䜀伀倀匀 愀渀搀 嘀␀䐀䄀吀䄀倀唀䴀倀开䨀伀䈀Ⰰ 漀爀 猀椀洀瀀氀礀 漀渀氀礀 甀猀攀 嘀␀匀䔀匀匀䤀伀一开䰀伀䜀伀倀匀⸀㰀戀爀㸀ഀഀ See section 13 for more information on V$SESSION_LONGOPS.
    ਍㰀戀爀㸀ഀഀ ਍ഀഀ ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ
    ਍㰀戀爀㸀ഀഀ ਍㰀⼀栀琀洀氀㸀�