【Oracle 12c】In-Memory Database Cache内存数据库选项

NAME AVALUE SDESC
_inmemory_check_prot_meta FALSE If true, marks SMU area read only to prevent stray writes
_inmemory_private_journal_quota 100 quota for transaction in-memory private journals
_inmemory_private_journal_sharedpool_quota 20 quota for transaction in-memory objects
_inmemory_private_journal_numbkts 512 Number of priv jrnl ht bkts
_inmemory_private_journal_numgran 128 Number of granules per HT node
_inmemory_jscan 0 inmemory jscan enable
_inmemory_pin_hist_mode 16 settings for IM pinned buffer history
_inmemory_txn_checksum 0 checksum for SMUs and private journals
_inmemory_buffer_waittime 100 wait interval for one SMU or IMCU to be freed
_inmemory_cu_timeout 100 maximum wait time for one IMCU to be freed
_inmemory_cudrop_timeout 1000 maximum wait time for IMCU to be freed during drop
_inmemory_exclto_timeout 1000 maximum wait time to pin SMU for cleanout
_inmemory_num_hash_latches 256 Maximum number of latches for IM buffers
_inmemory_strdlxid_timeout 0 max time to determine straddling transactions
_inmemory_incremental_repopulation FALSE If true, incremental repopulation of IMCU will be attempted
_inmemory_lock_for_smucreate FALSE take object lock during smu creation
_inmemory_auto_distribute TRUE If true, enable auto distribute
_inmemory_autodist_2safe FALSE If true, enable auto distribute with 2safe
_inmemory_distribute_timeout 300 If true, enable auto distribute with 2safe
_inmemory_distribute_ondemand_timeout 300 On demand timeout for redistribute
inmemory_size 0 size in bytes of in-memory area
_inmemory_64k_percent 30 percentage of in-memory area for 64k pools
_inmemory_min_ima_defersize 0 Defer in-memory area allocation beyond this size
_inmemory_memprot TRUE enable or disable memory protection for in-memory
_inmemory_analyzer_optimize_for 0 inmemory analyzer optimize for
_inmemory_default_flags 8459 Default flags based on inmemory_clause_default
_inmemory_default_new FALSE Force in-memory on new tables
inmemory_clause_default Default in-memory clause for new tables
inmemory_force DEFAULT Force tables to be in-memory or not
inmemory_query ENABLE Specifies whether in-memory queries are allowed
_inmemory_query_scan TRUE In-memory scan enabled
_inmemory_scan_override FALSE In-memory scan override
_inmemory_scan_threshold_percent_noscan 50 In-memory scan threshold maximum percent dirty no scan
_inmemory_small_segment_threshold 65536 In-memory small segment threshold (must be larger for in-memory)
_inmemory_query_fetch_by_rowid FALSE In-memory fetch-by-rowid enabled
_inmemory_pruning ON In-memory pruning
_inmemory_enable_sys FALSE enable in-memory on system tablespace with sys user
_inmemory_populate_fg FALSE populate in foreground
_inmemory_pga_per_server 536870912 minimum pga needed per inmemory populate server
inmemory_max_populate_servers 0 maximum inmemory populate servers
_inmemory_servers_throttle_pgalim_percent 55 In-memory populate servers throttling pga limit percentage
inmemory_trickle_repopulate_servers_percent 1 inmemory trickle repopulate servers percent
_inmemory_populate_wait FALSE wait for population to complete
_inmemory_populate_wait_max 600 maximum wait time in seconds for segment populate
_inmemory_imco_cycle 120 IMCO cycle in seconds (sleep period)
_inmemory_enable_population_verify 1 verify in-memory population
_inmemory_log_level 1 in-memory log level
_inmemory_fs_verify FALSE in-memory faststart verify
_inmemory_force_fs FALSE in-memory faststart force
_inmemory_force_fs_tbs SYSAUX in-memory faststart force tablespace
_inmemory_force_fs_tbs_size 1073741824 in-memory faststart force tablespace size
_inmemory_fs_raise_error FALSE in-memory faststart raise error
_inmemory_fs_nodml FALSE in-memory faststart assumes no dmls while populating
_inmemory_fs_enable FALSE in-memory faststart enable
_inmemory_fs_enable_blk_lvl_inv TRUE in-memory faststart enable block level invalidation
_inmemory_fs_blk_inv_blkcnt in-memory faststart CU invalidation threshold(blocks)
_inmemory_fs_blk_inv_blk_percent 20 in-memory faststart CU invalidation threshold(blocks)
_inmemory_enable_stat_alert FALSE dump in-memory stats in alert log file
_inmemory_imcu_align TRUE Enforce 8M IMCU alignment
_inmemory_max_populate_retry 3 IM populate maximum number of retry
_inmemory_imcu_target_rows 1048576 IMCU target number of rows
_inmemory_imcu_target_bytes 0 IMCU target size in bytes
_inmemory_imcu_source_extents 0 number of source extents per IMCU
_inmemory_imcu_source_blocks 0 number of source blocks per IMCU
_inmemory_imcu_source_minbytes 1048576 number of minimum source bytes per IMCU
_inmemory_imcu_populate_minbytes 5242880 minimum free space in IMA for populating IMCU
_inmemory_imcu_source_analyze_bytes 134217728 number of source analyze bytes per IMCU
_inmemory_imcu_target_maxrows 8388608 IMCU maximum target number of rows
_inmemory_imcu_source_maxbytes 536870912 IMCU maximum source size in bytes
_inmemory_max_queued_tasks 0 Maximum queued populating tasks on the auxiliary queue
_inmemory_repopulate_threshold_rows In-memory repopulate threshold number of modified rows
_inmemory_repopulate_threshold_blocks In-memory repopulate threshold number of modified blocks
_inmemory_pct_inv_rows_invalidate_imcu 50 In-memory percentage invalid rows for IMCU invalidation
_inmemory_pct_inv_blocks_invalidate_imcu 100 In-memory percentage invalid blocks for IMCU invalidation
_inmemory_repopulate_threshold_mintime_factor 5 In-memory repopulate minimum interval (N*timetorepop)
_inmemory_repopulate_threshold_mintime 0 In-memory repopulate minimum interval (millisec)
_inmemory_repopulate_threshold_scans 0 In-memory repopulate threshold number of scans
_inmemory_repopulate_priority_scale_factor 100 In-memory repopulate priority threshold scale factor
_inmemory_repopulate_invalidate_rate_percent 100 In-memory repopulate invalidate rate percent
_inmemory_repopulate_priority_threshold_row 20 In-memory repopulate priority threshold row
_inmemory_repopulate_priority_threshold_block 40 In-memory repopulate priority threshold block
_inmemory_repopulate_threshold_rows_percent 5 In-memory repopulate threshold rows invalid percentage
_inmemory_repopulate_threshold_blocks_percent 10 In-memory repopulate threshold blocks invalid percentage
_inmemory_repopulate_disable FALSE disable In-memory repopulate
_inmemory_check_protect FALSE If true, marks in-memory area read only to prevent stray writes
_inmemory_checksum FALSE If true, checksums in-memory area to detect stray writes
_inmemory_validate_fetch FALSE If true, validate single-row fetch between in-memory and disk
_inmemory_journal_row_logging FALSE If true, log the entire row into the in-memory journal
_inmemory_journal_check 0 Depending on value does one of the DML verifications
_inmemory_rows_check_interrupt 1000 Number of rows buffered before interrupt check
_inmemory_dbg_scan 0 In-memory scan debugging
_inmemory_segment_populate_verify 0 In-memory segment populate verification
_inmemory_query_check 0 In-memory query checking
_inmemory_test_verification 0 In-memory verification testing
_inmemory_invalidate_cursors TRUE In-memory populate enable cursor invalidations
_inmemory_prepopulate_fg 0 Force prepopulate of in-memory segment in foreground
_inmemory_prepopulate TRUE Enable inmemory populate by IMCO
_inmemory_trickle_repopulate TRUE Enable inmemory trickle repopulate
_inmemory_trickle_repopulate_threshold_dirty_ratio 0 IMCO Trickle Repopulate threshold dirty ratio
_inmemory_trickle_repopulate_min_interval 300 IMCO Trickle Repopulate Interval
_inmemory_trickle_repopulate_fg 0 Trickle Repopulate in the Foreground
_inmemory_force_non_engineered FALSE force non-engineered systems in-memory behavior on RAC
_inmemory_suppress_vsga_ima FALSE Suppress inmemory area in v$sga
optimizer_inmemory_aware TRUE optimizer in-memory columnar awareness
_optimizer_inmemory_table_expansion TRUE optimizer in-memory awareness for table expansion
_optimizer_inmemory_gen_pushable_preds TRUE optimizer generate pushable predicates for in-memory
_optimizer_inmemory_autodop TRUE optimizer autoDOP costing for in-memory
_optimizer_inmemory_access_path TRUE optimizer access path costing for in-memory
_optimizer_inmemory_quotient 0 in-memory quotient (% of rows in in-memory format)
_optimizer_inmemory_pruning_ratio_rows 100 in-memory pruning ratio for # rows (% of rows remaining after pruning)
_parallel_inmemory_min_time_threshold AUTO threshold above which a plan is a candidate for parallelization for in-memory tables (in seconds)
_parallel_inmemory_time_unit 1 unit of work used to derive the degree of parallelism for in-memory tables (in seconds)
_optimizer_inmemory_bloom_filter TRUE controls serial bloom filter for in-memory tables
_optimizer_inmemory_cluster_aware_dop TRUE Affinitize DOP for inmemory objects
_optimizer_inmemory_minmax_pruning TRUE controls use of min/max pruning for costing in-memory tables

test

In-Memory Database Cache


  IM                           in-memory ((null))
    IM_transaction             IM transaction layer ((null))
      IM_Txn_PJ                IM Txn Private Journal (ktmpj)
      IM_Txn_SJ                IM Txn Shared Journal (ktmsj)
      IM_Txn_JS                IM Txn Journal Scan (ktmjs)
      IM_Txn_Conc              IM Txn Concurrency (ktmc)
      IM_Txn_Blk               IM Txn Block (ktmb)
      IM_Txn_Read              IM Txn Read (ktmr)
    IM_space                   IM space layer ((null))
    IM_data                    IM data layer (kdm)
      IM_populate              IM populating (kdml)
      IM_background            IM background (kdmr)
      IM_scan                  IM scans ((null))
      IM_journal               IM journal ((null))
      IM_dump                  IM dump ((null))
      IM_FS                    IM faststart ((null))
      IM_optimizer             IM optimizer (kdmo)
	  
	  
	  
	  
	  alter session set events 'trace[IM_scan] disk=medium';
	  
	  
	  
	  SQL> alter system set inmemory_size=2g scope=spfile;

System altered.

SQL> shutdown immediate;


[oracle@mlab2 ~]$ sqlplus  / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Wed Sep 3 23:18:18 2014

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup;
ORACLE instance started.

Total System Global Area 2684354560 bytes
Fixed Size                  2928008 bytes
Variable Size             402653816 bytes
Database Buffers          117440512 bytes
Redo Buffers               13848576 bytes
In-Memory Area           2147483648 bytes
Database mounted.
Database opened.

    alter session set events 'trace[IM_scan] disk=medium';
      select count(*) from mac_imm1;
	SQL> oradebug setmypid
Statement processed.
SQL> oradebug tracefile_name
/s01/diag/rdbms/c12r1/C12R1/trace/C12R1_ora_16700.trc




kdmsirs(): map with 13 extents
Ext: 0, dba: 0x18000db, len: 5, skp: 0
Ext: 1, dba: 0x18000e0, len: 8, skp: 0
Ext: 2, dba: 0x18000e9, len: 7, skp: 0
Ext: 3, dba: 0x18000f0, len: 8, skp: 0
Ext: 4, dba: 0x18000f9, len: 7, skp: 0
Ext: 5, dba: 0x1800100, len: 8, skp: 0
Ext: 6, dba: 0x1800109, len: 7, skp: 0
Ext: 7, dba: 0x1800110, len: 8, skp: 0
Ext: 8, dba: 0x1800119, len: 7, skp: 0
Ext: 9, dba: 0x1800120, len: 8, skp: 0
Ext: 10, dba: 0x1800129, len: 7, skp: 0
Ext: 11, dba: 0x1800130, len: 8, skp: 0
Ext: 12, dba: 0x1800139, len: 1, skp: 0 
kdmsStartEndDBA(): scan start: 0x18000db end: 0x18000df rdba[0]: 0x18000db size[0]: 5, nblks: 5  extno: 0, skip: 0
kdmsGetIMCU(): In arguments: nblks 5: start_addr 25166043, end_addr 25166047
kdmsGetIMCU(): Mem addr: baffffd0: mem len: 1048576: Start dba: 0x18000db 25166043: len: 5 smu: fbf44770 td: 0x7f76515361a8
kdmsGetIMCU(): range: 0 lrid dba: 0x0 slot: 0 hrid dba: 0x0 slot: 0
kdmsGetIMCU(): found imcu 0xbaffffd0 25166043 25166047 1
kdst_fetch_imc(): imcu get 0x18000db
kdmsTransGet(): got ktmrds for dba 0x18000db, td : 0x7f76515361a8
kdmsFindEndDba: ext in imcu is 0, and on disk 0
IMCU extents
extent 0: 25166043 0x18000db + 5
extent 1: 25166048 0x18000e0 + 8
extent 2: 25166057 0x18000e9 + 7
extent 3: 25166064 0x18000f0 + 8
extent 4: 25166073 0x18000f9 + 7
extent 5: 25166080 0x1800100 + 8
extent 6: 25166089 0x1800109 + 7
extent 7: 25166096 0x1800110 + 8
extent 8: 25166105 0x1800119 + 7
extent 9: 25166112 0x1800120 + 8
extent 10: 25166121 0x1800129 + 7
extent 11: 25166128 0x1800130 + 8
extent 12: 25166137 0x1800139 + 1 
Disk extents
extent 0: 25166043 0x18000db + 5 (skip = 0)
extent 1: 25166048 0x18000e0 + 8 (skip = 0)
extent 2: 25166057 0x18000e9 + 7 (skip = 0)
extent 3: 25166064 0x18000f0 + 8 (skip = 0)
extent 4: 25166073 0x18000f9 + 7 (skip = 0)
extent 5: 25166080 0x1800100 + 8 (skip = 0)
extent 6: 25166089 0x1800109 + 7 (skip = 0)
extent 7: 25166096 0x1800110 + 8 (skip = 0)
extent 8: 25166105 0x1800119 + 7 (skip = 0)
extent 9: 25166112 0x1800120 + 8 (skip = 0)
extent 10: 25166121 0x1800129 + 7 (skip = 0)
extent 11: 25166128 0x1800130 + 8 (skip = 0)
extent 12: 25166137 0x1800139 + 1 (skip = 0)
kdmsFindEndDba(): begin: 25166043, end dba: 25166137     done ext in imcu 12 on disk 12
min of imcu end 25166138 0x180013a disk end 25166138 0x180013a discont 0
kdst_fetch_imc(): done: 1, empty: 0, ftch: 0
kdst_fetch_imc(): fetch: 0, invalid: 0
kdmsRepopulate(): repop 0 nblks 89 0 nrows 2342 0 cnt 5
kdstf00100010001101kmP(): create vv 18000db 95
kdmsCreateIMCUValidVector: Scan range (25166043, 25166137)
Extent map passed into kdzd layer:
Extent 0: (25166043, 25166047)
Extent 1: (25166048, 25166055)
Extent 2: (25166057, 25166063)
Extent 3: (25166064, 25166071)
Extent 4: (25166073, 25166079)
Extent 5: (25166080, 25166087)
Extent 6: (25166089, 25166095)
Extent 7: (25166096, 25166103)
Extent 8: (25166105, 25166111)
Extent 9: (25166112, 25166119)
Extent 10: (25166121, 25166127)
Extent 11: (25166128, 25166135)
Extent 12: (25166137, 25166137)
kdzd_dump_validvec:
IMCU: 1
Num slots: 2342 set: 2342 rounded to 8: 2368 bytes: 296
Flag if all rows valid: 1
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.
ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.ff.3f.
3 final 0
kdzd_dump_validvec: End Dumping Valid Vector
**************** ktmrDS Dump  *****************
pdb=0, tsn=4, rdba=25166043, objn=91999, objd=91999, typ=1, gflg=0 flg=0
loadscn=scn: 0x0000.001af80b
invalid blkcnt=0, fetch blkcnt=0
env [0x7f765152af6c]: (scn: 0x0000.001af830   xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  statement num=0  parent xid:  0x0000.000.00000000  st-scn: 0x0000.00000000  hi-scn: 0x0000.00000000  ma-scn: 0x0000.001af82c  flg: 0x00000660)invalid rowcnt=0,
 fetch rowcnt=0
kdst_fetch_imc(): release 0x18000db from td: 0x7f76515361a8
kdmsGetJournalRows(): done with IMC fetch; journal rows -1
kdmsEnd(): imcuctx 0x7f7651688b78 release 0x18000db from td: 0x7f76515361a8

Oracle 12c新特性学习列表

DB 12c Admin New Features Self-Studies

  • Phase 1 (estimated completion February 2012):
  1. Oracle Database 12c: Container Database
  • Phase 2 (estimated completion April 2012):
  1. Oracle Database 12c: Data Guard New Features
  2. Oracle Database 12c: Oracle Availability Machine [was OHARA; may move this to phase 3 or 4]
  3. Oracle Database 12c: Recovery Manager New Features
  4. Oracle Database 12c: Resource Manager and Scheduler New Features
  • Phase 3 (estimated completion May 2012):
  1. Oracle Database 12c: Data Pump and SQL*Loader New Features
  2. Oracle Database 12c: Information Lifecycle Management New Features [may move this to phase 2]
  3. Oracle Database 12c: Performance Enhancements
  • Phase 4 (estimated completion June 2012)
  1. Oracle Database 12c: Application Continuity [not much functionality exposed to customer?]
  2. Oracle Database 12c: Automatic Storage Management
  3. Oracle Database 12c: Clusterware and Grid Infrastructure New Features
  4. Oracle Database 12c: Installation and Upgrade New Features
  5. Oracle Database 12c: Networking New Features
  6. Oracle Database 12c: Online Operations New Features
  7. Oracle Database 12c: Cloud Computing New Features [was Private Database Cloud]
  8. Oracle Database 12c: Real Application Clusters New Features
  9. Oracle Database 12c: Security New Features

 

DB 12c App Dev New Features Self-Studies

 

  • Phase 1 (estimated completion February 2012):
  • None
  • Phase 2 (estimated completion April 2012):
  1. Oracle Database 12c: Application Migration New Features
  2. Oracle Database 12c: BI and Data Warehousing New Features
  3. Oracle Database 12c: Application Development New Features
  4. Oracle Database 12c: Miscellaneous Database Enhancements
  5. Oracle Database 12c: PL/SQL New Features
  • Phase 3 (estimated completion May 2012):
  1. Oracle Database 12c: OCI / OCCI New Features [may not create this due to limited interest]
  2. Oracle Database 12c: Oracle Data Mining New Features
  3. Oracle Database 12c: Oracle Spatial New Features
  4. Oracle Database 12c: Real Application Security
  5. Oracle Database 12c: SQL Tuning New Features
  • Phase 4 (estimated completion June 2012)
  1. Oracle Database 12c: Application Express New Features [APEX 4.2]
  2. Oracle Database 12c: Java and JDBC New Features
  3. Oracle Database 12c: ODP .Net New Features
  4. Oracle Database 12c: Oracle XML DB New Features
  5. Oracle Database 12c: Oracle Text New Features
  6. Oracle Database 12c: Real Application Testing New Features

 

12c course2 12c course1

#ORACLE 12c in-memory#

#ORACLE 12c in-memory# IBM这次很敏捷,马上就DB2 BLU和Oracle 12c in-memory做对比。其攻击矛头指向几点:Oracle磁盘上的数据仍以行row形式存,存放重复列存数据,O必须把所有列存数据放入内存,内存列存让重启预热变长。Oracle说我只是蛋糕上加了草莓而已,别整那些没用的。

#揭秘Oracle 12c in-memory option#

#揭秘Oracle 12c in-memory option#

 

#揭秘Oracle 12c in-memory option# 参数inmemory_columnar_size将控制IMCC的大小,注释为:size in bytes of imc pool。使用前提之一应当是compatible为12.0.0以上,所以这个IMCC特性是几乎不可能backport到11.2上。Oracle 12c最卖座特性!

 

#揭秘Oracle 12c in-memory option#和Oracle的其他特性一样,IMCC特性也会引入一些隐藏参数来控制特性行为,这些参数会包括_enable_imc_sys 是否在SYSTEM表空间上启用IMC,_imc_dbg_scan 用来debug IMC扫描,同时引入了IMC_SCAN TRACE机制,喜欢研究新特性的同学有的搞了

 

#揭秘Oracle 12c in-memory option#这个option在内部叫做in memory columnar & compression (IMCC) project,缩写IMCC,例如其引入了一个新的in-memory数据引擎,称之为IMCC-DE。 IMCC项目最早大概在2006年被提出,该项目的三大目标:快的离谱的全表扫描,连接和聚集,DML于内存压缩数据的速度几乎一样

Know more Oracle Pluggable/Multitenant DB – Under the Hood

Know more Oracle Pluggable/Multitenant DB – Under the Hood

 

• Multitenant Database – use cases ?
• Oracle Multitenant – Single yet Separate
• Architecture
• Take Home

 

Download (PDF, 594KB)

【Oracle database 12c】12c官方Note信息汇总

【Oracle database 12c】12c官方Note信息汇总:

 

DB 12.1 Information Centers
Master Note For Oracle Database 12c Release 1 (12.1) Database/Client Installation/Upgrade/Migration Standalone Environment (Non-RAC) [Document 1520299.1]
Master Note for the Oracle Multitenant Option [Document 1519699.1]
Master Note for Oracle Data Mining 12c [Document 1523136.1]

 

 

 

DB 12.1 knowledge documents created in last 60 days
After Database creation Catalog And Catproc Components Are Invalid [Created: 10/16/2013]
Installation Of 12.1 Oracle Database/Client On 64-Bit Windows Returns The Error “AddACLForUserException” [Created: 09/25/2013]

 

 

DB 12.1 New Features
Oracle Database 12c Release 1 (12.1) Upgrade New Features [Document 1515747.1]
RMAN Enhancements in Oracle 12c [Document 1534487.1]
Features per Version of Oracle Multimedia/interMedia [Document 223443.1]
New Features in XML Database (XDB) 12.1.0.1.0 [Document 1516818.1]
New Features in XML Developers Kit (XDK) v12.1.0.1.0 [Document 1520623.1]
12c Partitioning Enhancements [Document 1568010.1]
Oracle ASM 12c New Features (Technical Overview) [Document 1569648.1]
Data Guard: Oracle 12c %u2013 New and updated Features [Document 1558256.1]

 

 

 

 

DB 12.1 knowledge documents updated in last 60 days
12c Partitioning Enhancements (Doc ID 1568010.1)
DB Vault Show Audit On Success Does Not Match On OEM 12c (Doc ID 1579830.1)
After Database creation Catalog And Catproc Components Are Invalid (Doc ID 1592604.1)
Installation Of 12.1 Oracle Database/Client On 64-Bit Windows Returns The Error “AddACLForUserException” (Doc ID 1587322.1)
FAQ: Oracle Flex ASM 12c / 12.1 (Doc ID 1573137.1)
MISSING FILE CATCDB.SQL IN $ORACLE_HOME/RDBMS/ADMIN in 12C RDBMS software (Doc ID 1575778.1)
12.1 : Installation of 12.1 Oracle Database/Client throws the Error “[INS-32104] The user of the Oracle Home directory shown is not the owner of the Oracle home directory specified database.” (Doc ID 1581850.1)

【Oracle Database 12c新特性】In-Memory Option

12c中提出了In-Memory Option,虽然在12.1.0.1中还未引入该特性,12c in-memory database cache的灵魂是 in memory in compressed columnar 简称IMCC ,在数据库中所有启用了IMCC 的表 将被加载在 in-memory snapshot store. 中。这个 in-memory snapshot store要通过 transaction journal 来更新。

 

该In-Memory Option特性致力于使用内存中的列存处理来实现以下4个主要目标:

  1. 显著增快SQL的全表扫描处理速度, 全表扫描将增快10~100倍,基于CPU的最大数据处理速度,对于简单扫描可以每秒扫描10亿行数据;  对于简单的连接过滤谓词最终选出少量数据行的达到每秒1亿条每秒。 与今日ORACLE数据库中对于内存在的大表访问最多处理2000万行每秒对比,将有巨大的进步。对于长向量CPU处理和压缩 积极使用有效内存
  2. 显著增快复杂SQL的处理,在绝大多数场景中连接处理将变快10倍或者更多。聚集,排序,分组也将随之变快。 积极使用内存、物化的连接键合以及压缩将使用in-memory算法大大得益,比之将临时数据溢出到磁盘的效益多出不可以道里计。
  3. 显著增快事务处理,DML操作-单行DML和批量DML都将运行地更快; 单行的处理收益主要来源于降低10倍的索引维护。
  4. 100%的应用程序透明。类似于OLTP压缩,主要的优势在于对于应用而言完全透明。所有的其他ORACLE特性均将可以与in-memory option一起工作,包括partitioning, indexes, text indexes,而没有明确的数据类型或者存储类型限制。

 

in-memory columnar & compression简称 (IMCC)项目, 会在ORACLE数据库内核中修改指定的层面来提供增强的性能,并保持数据库组件的接口不变; ORACLE在开发这一重量级特性的时候,反复强调该特性要与其他每一个数据库特性互通,类似于当初设计Exadata Hybrid Columnar Compression混合列压缩项目时的原则, 虽然IMCC的影响会更深,它会深植于SQL处理的关键区域。

 

IMCC项目包含了一个新的 数据引擎(就像MYSQL那样 ,ORACLE开始给自己添加引擎了) ,即IN-MEMORY Data Engine (IMCC-DE)组件,用以将表以压缩的列格式存放在内存中,并启用各种表的访问方法,包括扫描,行查找,lock,插入等等。 这个IMCC-DE组件由几个子组件构成:

 

  1. IMCC-DE-VetctorScanEngine: 这是一个矢量处理引擎,让in-memory columnar列存格式来提供额外的快速谓词评估和位操作
  2. IMCC-DE-SnapshotStore:  一个新的in-memory的矢量数据存储
  3. IMCC-DE-TransactionManager:一个高效的in-memory 事务管理器,会跟踪在内存中的行变化并针对上面的Snapshot Store启用CR一致性读。 它同时也提供快速CR以便有效扫描长的列矢量,同时也管理事务提交,回滚。 这个组件也要管理集群同步以便扩展RAC并发查询
  4. IMCC-DE-OverlayStore: 是一个存储组件 用来延迟对磁盘上数据结构的修改,并在in-memory中存放覆盖的变化以便快速查询处理。 这将包含一个索引的列差存储,由此常规的OLTP操作才能跳过大量的索维护操作。 第二,它将包含一个覆盖存储即将批量修改和删除延迟应用到表上,这样可以不消耗大量的CPU,redo和解压/重压缩代价。 这个overlay结构将在事务周期内被保存到磁盘上。
  5. 为了管理数TB的内存,为几十万个数据库对象分配和消费内存,一个新的空间管理组件要被引入,这是IMCC-Space。 这个组件用来在内存盘区中追踪,即为元数据提供一致性机制且将元数据映射到磁盘上的盘区。此外,DDL操作和直接路径加载将执行盘区创建和删除,同时也将执行对应的IN-MEMORY操作。
  6. Evaluation Engine (IMCC-EE)帮助加速谓词表达式的评估和聚集
  7. in-memory Temp module (IMCC-TP)更积极使用内存,来优化HASH JOIN,排序和分组

 

【Oracle Database 12c】12c 常见问题FAQ

【Oracle Database 12c】12c 常见问题FAQ

补充:

#ORACLE DATABASE 12c# 很多运营商那里遇到了scn headroom的问题,在12cR2中将引入BIG SCN的特性,SCN的格式将从6个字节变成8个字节存储,这意味着更高的SCN上限 以及能满足更快的SCN增速

#ORACLE DATABASE 12c# 随着12c In-Memory Option IMCC 特性的引入, 12c的内核将加入一个新的模块 Kernel Data Layer in-memory database 简称 KDM, 这个模块已经有了几十万行的代码量

【Oracle Database 12c新特性】In-Memory Option 虽然在12.1.0.1中还未引入该特性,12c in-memory database cache的灵魂是 in memory in compressed columnar 简称IMCC ,在数据库中所有启用了IMCC 的表 将被加载在 in-memory snapshot store.http://t.cn/8kvLc2A

#ORACLE DATABASE 12c# 12c的SPM加强了对SQL PLAN Baseline执行计划基线的分类功能,这个特性同样是为了满足某日本汽车企业的EA架构需求。可以看到ORACLE database的新特性开发在国外还是很贴地气的, 有国内企业的新特性需求直接在新版本中得到满足的例子吗,bug不算,scn 搞死DB那事也不算.

#ORACLE DATABASE 12c# 12c的32k varchar出现之前,竞争对手如DB2 支持32k的char,SQL SERVER支持2GB(虽然order by 操作有限制),MYSQL是65535字节。12c的varchar选择32k,一方面是为了持平DB2,另一方面产品用户 Toyota丰田汽车对这个特性的明确要求,ORACLE数据库为日本的用户特意开发了不少特性。

#ORACLE DATABASE 12c# 11g中推出的高可用特性Automatic Block Media Repair BMR可以有效利用物理备库来修复主库上的坏块,具体见http://t.cn/zRW02vd。 但该特性在11g中只能修复普通data block,对于datafile header无能为力,12.2中将加入datafile header的修复功能,总的来说DG越来越有用了!

#ORACLE DATABASE 12c# 12c中将加强查询重写能力,原来的Query WRite只支持如MV: SUM(c1 + c2), Query: SUM(c2 + c1),12c中将加强分配性,支持例如MV: SUM(c1*(c2+c3)), Query: SUM(c1*c2 +c1*c3) MV: SUM(2*c1), Query: SUM(10*c1) 的组合

12c中可能出现一个有点吓人的新特性《nologging standby》,无需在primary上设置FORCE LOGGING,由于 nologging造成的无效数据块,通过直接传输数据块来解决,从而大幅减少DW系统中数据加载产生的大量redo

#ORACLE DATABASE 12c# 12c 分区特性官方课程,学习地址:http://t.cn/zRSo2DO

12c: Network Recovery in RMAN新特性,可以在standby数据库上直接recover database from service 来恢复备库,这个算实用特性了。 对于那些使用迁移数据库后要apply日志来追平数据的场景,不需要再搞归档那么复杂了,一条命令搞定。 http://t.cn/zRJRMMH

oracle database 12c 是否比11g要更快? 可以参考下这篇文章, http://t.cn/zRJRylq ,需要科学上网。 作者的观点是 逻辑读上12c要比11g少。

Oracle GoldenGate 12c – 新版本,新特性 ogg 12c支持DB 12c的multi-tenant container databases (CDB).多租户特性,同时现在有了不急于trigger触发器捕捉DDL的天然Native DDL Capture http://t.cn/zRx3ufi

 

配合ORACLE DATABASE 12C (12.1.0.1) 安装 ORACLE GOLDEN GATE 12C (12.1.2) ,OGG oracle goldengate 终于有了oracle标准的 OUI安装界面!!! http://t.cn/zRx3Ogy

 

 

问题 : 从哪里可以下载到Oracle Database 12c?

目前从OTN页面:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 可以下载到

 

问题 : 12c的补丁机制 patchset、security patch update spu和 patch set update PSU有改变吗?

从Oracle数据库版本12.1.0.1起,Oracle将只提供Patch Set Update (PSU)补丁来满足Critical Patch Update (CPU)对于安全性补丁程序的要求。SPU(Security Patch Update)补丁将不再提供

 

 

问题 :那些Solaris版本与Oracle Database 12c兼容?

Solaris Sparc
Solaris 10
Solaris 11

Solaris X86_64
Solaris 10
Solaris 11

 

问题 : 对于Oracle Database 12c而言那些平台目前或今后会出32bit的CLIENT客户端软件?

Linux x86
Solaris x86 and Solaris SPARC
Windows 7 & 8

 

 

问题 :在OOW 2013中宣传的”in-memory” database cache特性 何时可用?

在”in-memory” database cache特性将在Oracle Database 12c patchset 12.1.0.2中release ,12.1.0.2计划在2014年度放出

 

问题 : 与Oracle Database 12c支持较好的Linux版本是哪几个?

Oracle Linux 5
Oracle Linux 6
RedHat Linux 5
RedHat Linux 6
SLES 11

 

问题 : 如何配置数据库实例以便其能运行在12.1.0.1的Oracle Flex cluster leaf nodes上?

Oracle Database 12c中引入了新的集群拓扑,称之为Flex Cluster ,在Flex CLuster集群中节点被按照角色分为 HUB node 和 Leaf Node。 在版本12.1.0.1中,LEAF Node不能配置数据库, 数据库实例不支持运行在12.1.0.1的Leaf Node上。 askmaclean.com

 

 

问题 :  在新的多租户架构中,数据库(PDBS)以及其他options选项需要如何购买许可证license?

虽然多租户是一种新的逻辑架构, 但其许可证license仍采取和版本12.1之前一样的模式。  软件 包括 数据库和 其他选项的license基于CPU数目 计算。 对于 Named User  Plus NUP也是如此的。

 

因此一台 2个Intel 处理器总共8核的服务器,需要购买4个core( 8* 0.5    , 0.5是Intel 核心的license 因子)的  包括 数据库和 其他选项(例如分区)的license 。

举例来说, 例子1:

1个CDB 带了 3个PDB , PDB1 使用了partitioning 分区特性, PDB2只使用ASO特性,而PDB3 不使用任何options。 由此 基于core的数目,用户必须购买 database 、multitenant 多租户特性、ASO 特性 ,以及4个 core 的partitioning分区特性,所有上述的许可证license。 如果使用Named User Plus 命名用户方式计算, 则 最少需要购买 100个NUP(4*25),或者实际的用户数量, 哪个更高则采用哪一个。

综上所述,license的计算和实际某个PDB使用或者不使用某个options是没关系的, 只要你的这个CDB里有用任何option,就需要根据服务器核数来决定license 。 同时CDB里的任何一个PDB都可以使用已购买的option 。

 

例子2:

在与例子1中同样的硬件环境中,有3个CDB运行着,每一个CDB都包含多个PDB,而仅有CDB2的一个PDB1使用分区选项。 和之前的例子完全一样,还是要购买4核的 数据库,multitenant 多租户特性 和分区特性。

 

 问题 : 到目前为止(12.1.0.1) Oracle Database 12c是否支持Oracle Database Appliance (ODA)?

目前还不支持,  Oracle计划在12.1.0.2版本中支持Oracle Database Appliance (ODA)

 

问题 :Oracle Database 12.1是否支持Exadata 数据库一体机?

是的, Oracle Database 12.1支持Exadata 。 最低的支持Oracle 12.1的Exadata Storage Server Software 版本是11.2.3.2.1, 同时也可以在Exadata上同时运行 12.1 和 11.2的数据库。

 

所有Oracle 12.1的新特性,包括 多租户可拔插数据库都在  Exadata上支持。 但在12.1中 smart scan智能扫描不从Exadata Storage上过滤行,同时12.1的IORM plan可能不适用。 这些限制将在 Exadata storage server software version 12.1.1.1.0中被改善。 其他特性例如HCC, Smart Flash Cache, Smart Logging均支持。

 

问题 : 在多租户架构中的pluggable database 可拔插数据库是什么玩样?

 

pluggable database (PDBS)是Oracle Database Release 12.1中的新特性,  你可以在一个Oracle数据库中 存放很多个pluggable database。 pluggable database 向后兼容,可以像操作12.1之前的数据库那样操作pluggable database ,这里指绝大多数常规操作。

 

问题 :  哪样场景我应当考虑使用pluggable database PDB?

以下几个场景适合于使用pluggable database:

  1. 在产品系统中的某些应用实际仅使用十分少量的硬件资源。但是如果存在大量这样的应用,则还是需要构造大量的数据库实例并为这些小规模的数据库分配存储空间
  2. 对于那些并不十分复杂或重要,需要全职DBA花费大量时间管理的数据库
  3. 为了更好地利用硬件和DBA资源,用户有必要将大量的部门级应用整合到少数几个oracle RDBMS数据库中以便部署和管理

 

Pluggable Database 可拔插数据库允许DBA整合大量的小的部门级数据库到一个更庞大的数据库中。

 

问题: 为什么我启用了heat_map=on 但是 v$heat_map_segment没有数据?

检查下 enable_pluggable_database,如果=true 那说明是CDB,目前(12.1.0.1)多租户特性无法 与 heat map特性一起工作。如果启用了CDB就用不了heat map

 

 

 

问题 : PDB带来哪些好处?

 

在一个集中化的平台上操作多个数据库将有效降低成本:

  1. 更少的实例损耗
  2. 更低的存储成本

 

减少对DBA资源的使用,以及便于维护安全性:

  • 无需应用修改
  • 更快和简便的配置
  • 节省了打patch和升级的时间
  • 分离了以下责任:
    • 不同应用的管理员
    • 应用程序管理员和DBA
    • 应用用户
  • 提供isolation
  • 保证与非CDB 完整的向后兼容性
  • 完整的RAC操作使用
  • 与Oracle Enterprise Manager和Resource Manager整合在一起
  • 可以集中化管理多个数据库
    • 备份和灾难恢复
    • 补丁和升级

 

 

问题 : 如何从12.1之前的数据库迁移到 12c的多租户数据库?

 

计划A:

  • 先把12.1之前的数据库升级到12.1
  • 将数据库装换为CDB container database

 

计划B:

  • 创建一个12c的CDB,并建立一个空的PDB
  • 使用data pump/goldengate工具将数据导入到新的PDB中

 

 

问题  : 哪些 Oracle Database 特性还在12.1.0.1多租户环境中不被支持?

  • Continuous Query Notification
  • Flashback Data Archive
  • Heat Maps
  • Automatic Data Optimization

如果必须使用以上特性,则必须要创建non-cdb数据库

 

问题  : 如何知道我的数据库是否是多租户的CDB/PDB?

 

可以通过如下语句查询:

SQL> select NAME, DECODE(CDB, 'YES', 'Multitenant Option enabled', 'Regular 12c Database: ') "Multitenant Option ?" , OPEN_MODE, CON_ID from V$DATABASE;

NAME                        Multitenant Option ?                  OPEN_MODE              CON_ID
---------           ------------------------------           --------------------           ----------
CDB2              Multitenant Option enabled                      MOUNTED                       0

OR

SQL>  select NAME, DECODE(CDB, 'YES', 'Multitenant Option enabled', 'Regular 12c Database: ') "Multitenant Option ?" , OPEN_MODE, CON_ID from V$DATABASE;

NAME               Multitenant Option ?           OPEN_MODE                                    CON_ID
------------------ ------------------------------ ---------------------------------------- ----------
MACLEAN            Regular 12c Database:          MOUNTED                                           0

 

 

问题  : 如何知道一个容器数据库中有多少个pluggable database?

可以通过下面的查询得知:

 

 

 

SQL>  select CON_ID, NAME, OPEN_MODE from V$PDBS;

    CON_ID NAME                          OPEN_MODE
---------- ------------------------       ------------
         2 PDB$SEED                         READ ONLY
         3 PDB1                                 MOUNTED
         4 PDB2                                 MOUNTED
         5 PDB3                                 MOUNTED
         6 PDB4                                 MOUNTED
         7 PDB5                                 MOUNTED
         8 PDB6                                 MOUNTED
         9 PDB7                                 MOUNTED
 ...

 

 

问题  : 如何连接到一个PDB ,例如PDB6?

 

你可以从现有的链接切换到PDB6:

SQL> alter session set container = pdb6;

你也可以直接从SQLPLUS里直接登录PDB:

A)

使用easy connect 方式:

CONNECT username/password@host[:port][/service_name][:server][/instance_name]

例如:

$ sqlplus hpal/hpal@//hpal-node1:1521/pdb2
OR
$ sqlplus hpal/hpal@//localhost:1521/pdb2
OR
$ sqlplus hpal/hpal@//localhost/pdb2

SQL> show con_name

CON_NAME
——————————
PDB2

 

B)

通过Net Service name 连接

 

TNSNAMES.ora:

=======

LISTENER_CDB1 =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
CDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cdb1)
)
)

PDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hpal-node1.us.oracle.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb2)
)
)
=======
使用sqlplus 登录

$ sqlplus hpal/hpal@pdb2

 

问题: 是否支持将 non-cdb非CDB转换为CDB?

不行, 无法直接转换。

对于12c之前的数据库 可以在升级到12c之后,然后作为PDB 插入plug到12c的CDB中。

或者采用data pump导入到12c的CDB中。  但是目前(12.1.0.1)不存在直接将non-CDB转换为CDB的方法。

For upgrade of 11g database to 12c, can we not convert non container database to CDB, during upgrade or post upgrade?

 

The only option I know is to move non-cdb as pdb.

that’s true – you can only create a fresh CDB in Oracle 12c. Earlier database versions need to be either upgraded first to 12c and can be plugged in as a PDB, or you can use Data Punp export/import or Full Transportable Export/Import for 11.2.0.3 databases.

 

问题  : 连接后如何切换到容器root数据库?

SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;

 

问题  : 如何判断我连接的是CDB还是PDB?

可以通过 show con_name  或者 select sys_context ( ‘Userenv’, ‘Con_Name’) “Container DB” from dual;  查看

 

问题  : 如何启动一个 Pluggable Database?

启动当前已连接的PDB :

alter pluggable database open;

连接到root 后启动某一个PDB:

alter pluggable database pdb6 open;

 

 问题  : 如果shutdown 关闭一个Pluggable Database?

关闭当前已连接的PDB :

alter pluggable database close;

连接到root 后关闭某一个PDB:

alter pluggable database pdb6 close;

 

问题: 如何关闭和启动容器数据库 container database?

使用管理普通数据库的 shutdown /startup命令来关闭和启动 ROOT Database

当容器数据库被关闭,则所有的PDB均不可访问。

 

问题: 那些参数可以在PDB级别做修改?

select NAME, ISPDB_MODIFIABLE from V$PARAMETER;

==》主要是一些优化器参数、Pl/SQL、NLS参数可以被在pluggable databasei级别修改

 

问题: 在我的CDB中有那些用户是 common user?

select distinct USERNAME from CDB_USERS where common = ‘YES';

 

问题: 如何创建一个 common user?

create user c##db_dba1 identified by manager1 container=all;

 

问题: 为什么我在12c中创建user失败 ORA-65049? 

在CDB 中创建common user,用户名必须以C##开头,例如C##MACLEAN

 

问题 : 我在CDB中创建common user能够不以c##为开头吗?

可以的,需要修改隐藏参数 _common_user_prefix   (默认为:C## Enforce restriction on a prefix of a Common User/Role/Profile name)

 

问题: 如何创建一个 local user?

create user pdb6_dba1 identified by manager1 container=current;

 

 问题: Container ID   CON_ID  0 和1 的区别是什么?

CON_ID =0  不指代任何的特定 容器,而指代整个CDB。  举例来说从V$DATABASE返回的一行结果 指代整个CDB 而非某一个容器, 因此CON_ID是0 。

CON_ID=0  代表整个CDB

1 代表root container
2 代表seed
3~254 指向某一个PDB

 

问题: 对于 PDB是否有独立的一套PMON、SMON后台进程?

没有, PDB和root共享同一套 后台进程

 

问题: 对于 PDB是否有独立的控制文件?

没有,  整个CDB 使用同一套redolog 和 controlfile

 

问题: 对于 PDB是否有独立的redo重做日志文件?

没有,  整个CDB 使用同一套redolog 和 controlfile

 

 

问题: 如何监控一个PDB对于SGA内存的使用?

PDB和root共享同一个SGA, 但仍可以通过如下脚本来计算每一个容器消耗的内存量:

SQL> alter session set container=CDB$ROOT;

SQL> select POOL, NAME, BYTES from V$SGASTAT where CON_ID = ‘&con_id';

SQL> select CON_ID, POOL, sum(bytes) from  v$sgastat
group by CON_ID, POOL order by  CON_ID, POOL;

 

问题: 我可以限制某一个PDB对SGA内存的使用吗?

目前12.1.0.1中还不可以,可能作为今后 12.2的新特性加入该功能

 

问题: 如何监控一个PDB对PGA内存的使用?

select CON_ID, sum(PGA_USED_MEM), sum(PGA_ALLOC_MEM), sum(PGA_MAX_MEM)
from  v$process
group by CON_ID order by  CON_ID;

 

alter session set container =CDB$ROOT;
select NAME , value from  v$sysstat  where NAME like ‘workarea%';

alter session set container = <targetPDB>;
select NAME , value from  v$sysstat  where NAME like ‘workarea%';

 

问题: 每一个PDB是否独立配置一套Undo tablespace?

还是和普通数据库一样, 一个实例拥有一套undo tablespace, RAC每个实例一个undo tablespace

 

问题: 每一个PDB是否配置独立的SYSTEM表空间?

是的, root和每一个pdb都有独立的SYSTEM表空间

 

问题: 每一个PDB是否配置独立的SYSAUX表空间?

是的, root和每一个pdb都有独立的SYSAUX表空间

 

问题: 每一个PDB是否配置独立的Temporary tablespaces临时表空间?

整个CDB使用一个默认的临时表空间,但确实可以在独立的PDB中创建临时表空间。

 

问题: 我可以为PDB指定默认的表空间default tablespace吗?

可以

 

问题 : 对于root和PDB是否所有的物理数据文件都是独立的?

对于root、seed、和每一个pdb 都有独立的数据文件

在一个CDB中,绝大多数用户数据应当存放在PDB中。

 

问题 : PDB可以使用不同的字符集吗?

不能,整个CDB中的root、pdb使用同一套字符集

 

问题 : 在pluggable database环境下如何配置Oracle NET文件?

对整个CDB仍是使用同一套listener.ora, tnsnames.ora和 sqlnet.ora 网络配置文件

 

问题s : 我如何能够创建一个Container Database?

首先安装12c软件,之后启动DBCA 创建数据库为 容器数据库:

 

cdb1

 

 

 

问题s : 对于PDB有那些常见操作?

  • 创建PDB
  • 拔出PDB unplug pdb
  • 插入PDB plug pdb
  • drop pdb
  • 设置pdb的open_mode

 

问题s : 如何创建一个pluggable database?

create pluggable database x admin user a identified by p;

create pluggable database y admin user a identified by p file_name_convert = (‘pdbseed’, ‘y’);

问题s : 如何drop一个pluggable database?

drop pluggable database x  including datafiles;

问题s : 如何从现有的pdb 克隆一个新的pdb?

被克隆的PDB应当是read only状态

— Using Oracle-Managed Files

create pluggable database x2  from x;

 

问题s : 如何拔出一个pdb?

alter pluggable database x unplug into ‘/some_directory/x_description.xml’ ;

INTO后面指向 一个绝对目录,会写出描述PDB的XML

 

 

问题s : 如何增加或修改 user-managed service?

srvctl add service … –pdb <pdb_name>

 

问题s : 如何查看某个服务是否加入了某个pluggable database?

SQL> column NAME format a30

SQL> select PDB, INST_ID, NAME from gv$services order by 1;

PDB                                    INST_ID    NAME
——————————– ———- ——————————–
CDB$ROOT                                  1 cdb1XDB
CDB$ROOT                                  1 SYS$BACKGROUND
CDB$ROOT                                  1 SYS$USERS
CDB$ROOT                                  1 cdb1
PDB1                                           1 pdb1
PDB2                                           1 pdb2

 

 

问题: 我的pluggable database的alert log在哪里?

所有的PDB都只有一份alert log ,XML版和TEXT文本版的告警日志在12c中仍同时存在,具体可以参考 V$DIAG_INFO视图

 

问题: 我的pluggable database的trace file在哪里?

所有的PDB的trace文件一样存放在container database的DIAG TRACE目录下

具体可以参考V$DIAG_INFO视图

 

问题: 在Oracle标准版standard edition中多租户选项是否可用?

是的,但是在一个CDB里你只能建一个PDB

 

问题: 事务内否在PDB之间跨越?

不能,虽然可以在启动一个事务后 使用”alter session set container”在PDB之间切换,但仅有select 查询允许在第二PDB中操作。原事务被保留,用户仍可以切换到原来的PDB并commit或者rollback。

 

 

 问题: 在PDB中如果有一个用户定义的common user创建了对象,之后这个PDB 被拔出了,并插入到另一个CDB中,且该CDB中不存在该common user, 则如何?

 

如果用户将一个包含common user的PDB插入到一个CDB中,则将发生如下情况:

在PDB中的common user 账号丢失commonly赋予的权限,包括SET CONTAINER这个权限。

如果目标CDB中含有与 该common user账号一样名字的common user账号,则新的common user将被合并到目标库的common user。并采用目标CDB common user的密码。   否则在新的插入的PDB中的common user将被锁住locked。

在此情况下,用户可以选择:

保持该账号被锁,并使用其名下的对象

使用Oracle Data Pump将数据复制到别的schema 下,并删除源账号

关闭PDB,并连接到ROOT,并创建一个与被锁定的账号同名的 common user。当重新打开PDB时,Oracle自动会将必要的commonly 角色和权限赋予给锁定的用户。 之后用户可以解锁PDB中的账号,本地授予的权限和角色保持不变。

 

 

问题: 12c中的Flex ASM是什么东西?

Oracle Flex ASM是指在集群中以预定义的基数数量运行的ASM实例。默认的基数cardinality是3,用户可以通过srvctl modify asm来修改该基数。  换句话说,ASM不需要运行在集群中的每一个节点上。

在之前的版本中,ASM运行在集群的每一个节点上,ASM的客户程序例如database、ACSF、ADVM均只能访问本地主机上的ASM实例。

通过Oracle Flex ASM, 客户程序可以通过网络连接(例如ASM network)远程ASM实例。 如果运行着一个ASM的主机宕了,Oracle Clusterware会在别的服务器上启动一个ASM实例,以便维持基数。  如果一个12c的数据库使用某个特定的ASM实例,当该ASM实例由于服务器crash或者ASM实例奔溃而不可用,则Oracle 12c数据库实例将重新连接到现有运行的其他ASM实例中。 该特性统称Oracle Flex ASM。

 

 

问题: Oracle Flex Cluster和Oracle Flex ASM有什么区别?

Oracle Flex Cluster是将集群中的节点分为 Hub和Leaf 节点。  仅仅有Hub Node可以直接访问OCR和VoteDisk, Leaf node不能直接访问共享存储。

Flex Cluster需要Flex ASM,而Flex ASM不需要Flex Cluster。

在Flex Cluster节点中,Flex ASM运行在HUB node上并服务于Flex Cluster中的其他HUB node上的应用。

默认情况下不启用Flex Cluster,需要用户显式地自行启用。

 

 

问题: 什么是ASM Network和ASM listener?

在12c之前, Oracle 集群软件要求一个公用网络以便客户端访问 和 一个私有网络以便节点之间通信,并包括了ASM的节点之间通信。

在Flex ASM中,ASM network提供分离ASM内部网络流量的功能,以便其独享一个私有网络。OUI安装界面上会让DBA选择是否为ASM使用独占的网络。  ASM network是数据库与ASM以及ASM与ASM之间通信的通路,其主要流量应当是一些文件extent map类的元数据信息。基于用户的选择,ASM 私有网络可以为ASM通信而独占,也可以与CSS服务共享。

 

在Flex ASM运行的节点上将有本地ASM监听运行。 ASM的客户端透过3个ASM监听获得endpoint信息并通过ASM network连接到Flex ASM。ASM集群的负载应当是均衡的。

 

 

问题: 如何启用Flex ASM特性?

以以下2种途径启用Flex ASM

纯12c Flex ASM,该模式下Grid Infrastructure 和数据库均运行12c版本,这样database数据库将充分利用12c系特性

与12c之前的版本混合使用 ,该模式下为了支持12c之前的数据库,ASM需要运行每一个节点上。 只需要设置ASM cardinality为ALL即可保证ASM运行在集群中的每一个节点上。 这种方式的优势是如果12c的数据库实例丢失与ASM实例的连接,则数据库连接将切换到另一个服务器上的另一个ASM实例。

 

 

问题: 如何检查Oracle Flex ASM是否启用了?

ASMCMD> showclustermode
ASM cluster : Flex mode enabled

 

ASMCMD> showclusterstate
Normal

 

问题:如何修改集群中ASM实例启动的数量,基数cardinality?

[root@ol6r02 bin]# ./srvctl modify asm -count 1
[root@ol6r02 bin]# ./srvctl config asm
ASM home: /u01/app/12.1.0/grid
Password file: +DATA/orapwASM
ASM listener: LISTENER
ASM instance count: 1
Cluster ASM listener: ASMNET1LSNR_ASM

 

问题: 如何重定位数据库到其他ASM?

如果ASM实例奔溃,客户程序将自动重定位到可用ASM实例,并保证连接是负载均衡的。

也可以手动来重定位:

ALTER SYSTEM RELOCATE CLIENT

SQL> ALTER SYSTEM RELOCATE CLIENT ‘<instance_name>:<db_name>';
— Query GV$ASM_CLIENT to determine instance_name and db_name.

 

 

问题: 如何检查ASM实例运行在哪几个节点上?

$ srvctl status asm -detail
ASM is running on ol6r01,ol6r02
ASM is enabled

 

 

问题:如何非Flex ASM切换到 Flex ASM

 

可以使用asmca图形界面 或者 静默模式

 

 

[oracle@ol6r01 ~]$ asmca -silent -convertToFlexASM -asmNetworks eth1/10.154.138.0 -asmListenerPort 1521

To complete ASM conversion, run the following script as privileged user in local node.

/u01/app/oracle/cfgtoollogs/asmca/scripts/converttoFlexASM.sh

CRS-2673: Attempting to stop 'ora.crsd' on 'ol6r01'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'ol6r01'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN2.lsnr' on 'ol6r01'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN3.lsnr' on 'ol6r01'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'ol6r01'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'ol6r01'
CRS-2673: Attempting to stop 'ora.cvu' on 'ol6r01'
CRS-2677: Stop of 'ora.LISTENER_SCAN2.lsnr' on 'ol6r01' succeeded
CRS-2673: Attempting to stop 'ora.scan2.vip' on 'ol6r01'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'ol6r01' succeeded
CRS-2673: Attempting to stop 'ora.ol6r01.vip' on 'ol6r01'
CRS-2677: Stop of 'ora.LISTENER_SCAN3.lsnr' on 'ol6r01' succeeded
CRS-2673: Attempting to stop 'ora.scan3.vip' on 'ol6r01'
CRS-2677: Stop of 'ora.cvu' on 'ol6r01' succeeded
CRS-2672: Attempting to start 'ora.cvu' on 'ol6r02'
CRS-2676: Start of 'ora.cvu' on 'ol6r02' succeeded
CRS-2677: Stop of 'ora.scan2.vip' on 'ol6r01' succeeded
CRS-2672: Attempting to start 'ora.scan2.vip' on 'ol6r02'
CRS-2677: Stop of 'ora.scan3.vip' on 'ol6r01' succeeded
CRS-2672: Attempting to start 'ora.scan3.vip' on 'ol6r02'
CRS-2676: Start of 'ora.scan2.vip' on 'ol6r02' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN2.lsnr' on 'ol6r02'
CRS-2677: Stop of 'ora.ol6r01.vip' on 'ol6r01' succeeded
CRS-2672: Attempting to start 'ora.ol6r01.vip' on 'ol6r02'
CRS-2676: Start of 'ora.scan3.vip' on 'ol6r02' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN3.lsnr' on 'ol6r02'
CRS-2676: Start of 'ora.ol6r01.vip' on 'ol6r02' succeeded
CRS-2672: Attempting to start 'ora.storage' on 'ol6r02'
CRS-2676: Start of 'ora.storage' on 'ol6r02' succeeded
+ echo 'Cluster bounced in node ol6r02'

Cluster bounced in node ol6r02

ASMCMD> showclustermode
ASM cluster : Flex mode enabled
ASMCMD> showclusterstate
Normal