Some data dictionary changes I find interesting in Oracle 12c (http://www.itpub.net/thread-1804879-1-1.html) 1. Dba_users Dba_users in 12c has 4 more columns than in 11.2.0.4. Last_login and Oracle_maintained are quite useful (the latter also exists in dba_roles). I had long wished it had a comment field or a view e.g. dba_user_comments so I can document what app this user is used for. We've had dba_tab|col_comments for so long but rarely use it. But the more useful user comment still doesn't exist in 12c. 2. Client version V$session_connect_info.client_version finally got it right. Before 12c, this column just shows the version of the Oracle client *you* are using, even if your where-clause is sid=, and the workaround I found is to run with x as (select distinct to_char(ksuseclvsn,'xxxxxxx') v from x$ksusecon where ksusenum = &sid) select decode(v, ' 0', 'no version provided: 10g or lower, or background process?', to_number(substr(v,1,2),'xx') || '.' || --maj_rel to_number(substr(v,3,1),'x') || '.' || --mnt_rel to_number(substr(v,4,2),'xx') || '.' || --ias_rel to_number(substr(v,6,1),'x') || '.' || --pat_set to_number(substr(v,7,2),'xx')) client_version -- port_mnt from x; and it lumps all 10g or lower version clients into "no version provided...". 3. Dba_tab_privs is a misnomer It should really be called dba_obj_privs. But since the name is stuck, 12c adds a type column so you know what the "table"_name column refers to what type of object, likely not a table. Unfortunately, dba_synonyms is not modified and you still have to remember table_owner|name in there don't always refer to tables. (For more misnomers, see http://yong321.freeshell.org/computer/OracleMisnomers.txt) 4. "New" names for events (words after arrows are mine) SQL> select name, display_name from v$event_name where display_name != name order by 1; NAME DISPLAY_NAME ---------------------------------------- ---------------------------------------------- DFS db file lock quiesce for datafile offline Image redo gen delay redo resource management LGWR real time apply sync standby apply advance notification concurrent I/O completion online move datafile IO completion control file sequential read control file read control file single write control file write datafile copy range completion online move datafile copy range completion datafile move cleanup during resize online move datafile resize cleanup db file parallel read db list of blocks read <-- multiblock read of nonadjacent blocks db file parallel write db list of blocks write db file scattered read db multiblock read <-- this and the next one finally end the confusion why FTS db file sequential read db single block read <-- is counter-intuitively scattered not sequential read db file single write db single block write log buffer space log buffer full - LGWR bottleneck <-- more user-friendly and practical event name log file parallel write log file redo write <-- good: log file parallel write writes redo content log file sequential read log file multiblock read <-- surprising! Sequential read is multiblock? log file single write log file header write <-- good: log file single write writes logfile header only log file sync commit: log file sync <-- more user-friendly and practical wait for possible quiesce finish quiesce database completion But these friendly display names are not used in other places, such as v$system_event, v$session_event. V$latchname also has a new column, display_name. But all are the same as name. 5. Undocumented v$ views Select name from v$fixed_table where name like 'V$%' minus select ... (where the latter select is just a table I created to contain all v$ view names in documentation->Reference).[note] In 11.2.0.4, there're 88, including interesting ones like v$sql_hint, v$sql_feature*, v$datapump*, v$hang_statistics (for RAC only), v$cell* (Exadata only), v$ash_info, v$rfs_thread (to check the redo receiving progress of standby RFS), v$listener_network (in which RAC SCAN for remote_listener is broken into 3 individual IPs). In 12c, there're 114. Interesting new ones are v$channel_waits, v$goldengate_capabilities (obviously useless unless with GG). Good news: V$hang* views are no longer undocumented. ______________ [note] Before 12c, v$fixed_table does not contain all v$ views. select object_name from dba_objects where owner = 'SYS' and object_name like 'V$%' minus select name from v$fixed_table where name like 'V$%' shows 9 views, i.e. v$cache*, v$*ping, v$object_usage (should really be called user_index_usage; in 12.2, there's v$index_usage_info, which is a better name), v$xs_session*. 12c no longer has this problem. 6. New v$ views select name from v$fixed_table where name like 'V$%' minus select name from v$fixed_table@ where name like 'V$%' returns 96 rows. Since 11.2.0.4 has 4 v$ views not recorded in v$fixed_table (see above note), 12c has added 92 new views. Interesting or possibly interesting ones are v$asm_estimate, v$client_secrets, v$ges_deadlocks*, v$heat_map_segment (together with dba_heat*), v$*outlier (to check exceptionally slow IO), v$mapped_sql (see notes 1586667.1 and 1585091.1), v$nonlogged_block, v$px_process_trace. To be studied: dba_tables has new columns: clustering, activity_tracking (heapmap related), dml_timestamp, has_identity, container_data, and in 12.1.0.2, in-memory related columns. dba_views has: bequeath, indicating if the view takes the invoker's right (new in 12c). dba_indexes: orphaned_entries, indexing; dba_ind_partitions has orphaned_entries dba_(tab_)histograms: endpoint_actual_value_raw, endpoint_repeat_count, scope (for GTTs) dba_sequences: partition_count, session_flag, keep_value, the latter two discussed in SQL Reference. dba_objects: sharing (mostly 'METADATA LINK', some 'OBJECT LINK' or 'NONE', not sure what they are), oracle_maintained dba_tab_columns: default_on_null, identity_column (well-known 12c features), sensitive_column (6 tables has sensitive columns; can only be queried by sys; sys.user$ is not one, in spite of password column), unusable_before, unusable_beginning dba_tab_partitions: indexing (dba_part_tables has def_indexing) dba_scheduler_jobs: restartable, connect_credential_owner, connect_credential_name dba_services: commit_outcome, retention_timeout, replay_initiation_timeout, session_state_consistency, global_service, pdb, sql_translation_profile, max_lag_time, gsm_flags (v$services has about the same new columns, no gsm_flags) v$instance: instance_mode ('REGULAR'), edition ('EE' for Enterprise edition, see Note 1922322.1), family (?) v$session: sql_translation_profile_id, pga_tunable_mem, external_name v$sql: is_reoptimizable (optimization on the fly, during execution?), is_resolved_adaptive_plan v$sqlstats: lots of columns beginning with 'DELTA', probably useful in seeing value increments v$pwfile_users: sysbackup, sysdg, syskm (to support those new "roles") New in 12.1.0.2: Exadata cell servers related: V$CELL_CONFIG_INFO V$CELL_DB V$CELL_DB_HISTORY V$CELL_DISK V$CELL_DISK_HISTORY V$CELL_GLOBAL V$CELL_GLOBAL_HISTORY V$CELL_IOREASON V$CELL_IOREASON_NAME V$CELL_METRIC_DESC V$CELL_OPEN_ALERTS In-Memory option related: V$IM_COLUMN_LEVEL V$IM_COL_CU V$IM_HEADER V$IM_SEGMENTS V$IM_SEGMENTS_DETAIL V$IM_SEG_EXT_MAP V$IM_SMU_CHUNK V$IM_SMU_HEAD V$IM_TBS_EXT_MAP V$IM_USER_SEGMENTS V$INMEMORY_AREA V$KEY_VECTOR Others: V$EMX_USAGE_STATS V$EVENT_HISTOGRAM_MICRO: microsecond version of V$EVENT_HISTOGRAM V$FS_OBSERVER_HISTOGRAM: fast start related V$QPX_INVENTORY X$KKSPCIB: Cursor to session mapping, after v$open_cursor no longer has this info? KKSCSPHD: parent addr, KKSCSHDL: child addr X$KTSJPROC X$KTSJTASK X$KTSJTASKCLASS: activities of SMCO (Space Management Coordinator) and its workers