[Home] [Help]
PROCEDURE: SYS.DBMS_FEATURE_REGISTER_ALLFEAT
Source
1 procedure DBMS_FEATURE_REGISTER_ALLFEAT
2 as
3 /* string to get the last sample date */
4 DBFUS_LAST_SAMPLE_DATE_STR CONSTANT VARCHAR2(100) :=
5 ' (select nvl(max(last_sample_date), sysdate-7) ' ||
6 'from wri$_dbu_usage_sample) ';
7
8 begin
9
10 /**********************
11 * Advanced Replication
12 **********************/
13
14 declare
15 DBFUS_ADV_REPLICATION_STR CONSTANT VARCHAR2(1000) :=
16 'select count(*), NULL, NULL from dba_repcat';
17
18 begin
19 dbms_feature_usage.register_db_feature
20 ('Advanced Replication',
21 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
22 NULL,
23 dbms_feature_usage.DBU_DETECT_BY_SQL,
24 DBFUS_ADV_REPLICATION_STR,
25 'Advanced Replication has been enabled.');
26 end;
27
28 /**********************
29 * Advanced Security Option Encryption/Checksumming
30 **********************/
31
32 declare
33 DBFUS_ASO_STR CONSTANT VARCHAR2(1000) :=
34 'select count (*), NULL, NULL from v$session_connect_info where ' ||
35 'network_service_banner like ''%AES256 encryption%'' or ' ||
36 'network_service_banner like ''%AES192 encryption%'' or ' ||
37 'network_service_banner like ''%AES128 encryption%'' or ' ||
38 'network_service_banner like ''%RC4_256 encryption%'' or ' ||
39 'network_service_banner like ''%RC4_128 encryption%'' or ' ||
40 'network_service_banner like ''%3DES168 encryption%'' or ' ||
41 'network_service_banner like ''%3DES112 encryption%'' or ' ||
42 'network_service_banner like ''%RC4_56 encryption%'' or ' ||
43 'network_service_banner like ''%RC4_40 encryption%'' or ' ||
44 'network_service_banner like ''%DES encryption%'' or ' ||
45 'network_service_banner like ''%DES40 encryption%'' or ' ||
46 'network_service_banner like ''%SHA1 crypto-checksumming%'' or ' ||
47 'network_service_banner like ''%MD5 crypto-checksumming%''';
48 begin
49 dbms_feature_usage.register_db_feature
50 ('ASO native encryption and checksumming',
51 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
52 NULL,
53 dbms_feature_usage.DBU_DETECT_BY_SQL,
54 DBFUS_ASO_STR,
55 'ASO network native encryption and checksumming is being used.');
56 end;
57
58 /**********************
59 * Advanced Network Compression
60 **********************/
61 declare
62 DBFUS_NETWORK_COMPRESSION_STR CONSTANT VARCHAR2(1000) :=
63 'select count (*), 0, null' ||
64 ' from v$session_connect_info' ||
65 ' where network_service_banner like ''%Compression%''';
66 begin
67 dbms_feature_usage.register_db_feature
68 ('Oracle Advanced Network Compression Service',
69 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
70 NULL,
71 dbms_feature_usage.DBU_DETECT_BY_SQL,
72 DBFUS_NETWORK_COMPRESSION_STR,
73 'Oracle Advanced Network Compression Service Used');
74 end;
75
76 /**********************
77 * Traditional Audit
78 **********************/
79 declare
80 DBFUS_AUDIT_PROC CONSTANT VARCHAR2(1000) :=
81 'dbms_feature_audit_options';
82
83 begin
84 dbms_feature_usage.register_db_feature
85 ('Traditional Audit',
86 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
87 NULL,
88 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
89 DBFUS_AUDIT_PROC,
90 'Traditional Audit in use.');
91 end;
92
93 /**************************
94 * Fine Grained Audit (FGA)
95 **************************/
96 declare
97 DBFUS_FGA_PROC CONSTANT VARCHAR2(1000) :=
98 'dbms_feature_fga_audit';
99
100 begin
101 dbms_feature_usage.register_db_feature
102 ('Fine Grained Audit',
103 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
104 NULL,
105 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
106 DBFUS_FGA_PROC,
107 'Fine Grained Audit in use.');
108 end;
109
110 /**********************
111 * Unified Audit
112 **********************/
113 declare
114 DBFUS_UNIFIED_PROC CONSTANT VARCHAR2(1000) :=
115 'dbms_feature_unified_audit';
116
117 begin
118 dbms_feature_usage.register_db_feature
119 ('Unified Audit',
120 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
121 NULL,
122 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
123 DBFUS_UNIFIED_PROC,
124 'Unified Audit in use.');
125 end;
126
127 /**********************************************
128 * Auto-Maintenance Tasks
129 *********************************************/
130
131 declare
132 DBFUS_KET_OPT_STATS_STR CONSTANT VARCHAR(1000) :=
133 'select nvl(ats, 0) * nvl(cls, 0) enabled, ' ||
134 'NVL((select SUM(jobs_created) ' ||
135 'from dba_autotask_client_history ' ||
136 'where client_name = ''auto optimizer stats collection'' ' ||
137 'and window_start_time > ' ||
138 '(SYSDATE - INTERVAL ''168'' HOUR) ), 0) jobs, NULL ' ||
139 'from (select DECODE(MAX(autotask_status),''ENABLED'',1,0) ats, ' ||
140 'DECODE(MAX(OPTIMIZER_STATS),''ENABLED'',1,0) cls ' ||
141 'from dba_autotask_window_clients)';
142
143 DBFUS_KET_SEG_STATS_STR CONSTANT VARCHAR(1000) :=
144 'select nvl(ats, 0) * nvl(cls, 0) enabled, ' ||
145 'NVL((select SUM(jobs_created) ' ||
146 'from dba_autotask_client_history ' ||
147 'where client_name = ''auto space advisor'' ' ||
148 'and window_start_time > ' ||
149 '(SYSDATE - INTERVAL ''168'' HOUR) ), 0) jobs, NULL ' ||
150 'from (select DECODE(MAX(autotask_status),''ENABLED'',1,0) ats, ' ||
151 'DECODE(MAX(SEGMENT_ADVISOR),''ENABLED'',1,0) cls ' ||
152 'from dba_autotask_window_clients)';
153
154 DBFUS_KET_SQL_STATS_STR CONSTANT VARCHAR(1000) :=
155 'select nvl(ats, 0) * nvl(cls, 0) enabled, ' ||
156 'NVL((select SUM(jobs_created) ' ||
157 'from dba_autotask_client_history ' ||
158 'where client_name = ''sql tuning advisor'' ' ||
159 'and window_start_time > ' ||
160 '(SYSDATE - INTERVAL ''168'' HOUR) ), 0) jobs, NULL ' ||
161 'from (select DECODE(MAX(autotask_status),''ENABLED'',1,0) ats, ' ||
162 'DECODE(MAX(SQL_TUNE_ADVISOR),''ENABLED'',1,0) cls ' ||
163 'from dba_autotask_window_clients)';
164
165
166 begin
167 dbms_feature_usage.register_db_feature
168 ('Automatic Maintenance - Optimizer Statistics Gathering',
169 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
170 NULL,
171 dbms_feature_usage.DBU_DETECT_BY_SQL,
172 DBFUS_KET_OPT_STATS_STR,
173 'Automatic initiation of Optimizer Statistics Collection');
174
175 dbms_feature_usage.register_db_feature
176 ('Automatic Maintenance - Space Advisor',
177 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
178 NULL,
179 dbms_feature_usage.DBU_DETECT_BY_SQL,
180 DBFUS_KET_SEG_STATS_STR,
181 'Automatic initiation of Space Advisor');
182
183 dbms_feature_usage.register_db_feature
184 ('Automatic Maintenance - SQL Tuning Advisor',
185 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
186 NULL,
187 dbms_feature_usage.DBU_DETECT_BY_SQL,
188 DBFUS_KET_SQL_STATS_STR,
189 'Automatic initiation of SQL Tuning Advisor');
190 end;
191
192 /**********************************************
193 * Automatic Segment Space Management (system)
194 **********************************************/
195
196 declare
197 DBFUS_BITMAP_SEGMENT_SYS_PROC CONSTANT VARCHAR2(1000) :=
198 'DBMS_FEATURE_AUTO_SSM';
199
200 begin
201 dbms_feature_usage.register_db_feature
202 ('Automatic Segment Space Management (system)',
203 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
204 NULL,
205 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
206 DBFUS_BITMAP_SEGMENT_SYS_PROC,
207 'Extents of locally managed tablespaces are managed ' ||
208 'automatically by Oracle.');
209 end;
210
211 /********************************************
212 * Automatic Segment Space Management (user)
213 ********************************************/
214
215 declare
216 DBFUS_BITMAP_SEGMENT_USER_STR CONSTANT VARCHAR2(1000) :=
217 'select count(*), NULL, NULL from dba_tablespaces where ' ||
218 'segment_space_management = ''AUTO'' and ' ||
219 'tablespace_name not in ' ||
220 '(''SYSTEM'', ''SYSAUX'', ''TEMP'', ''USERS'', ''EXAMPLE'')';
221
222 begin
223 dbms_feature_usage.register_db_feature
224 ('Automatic Segment Space Management (user)',
225 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
226 NULL,
227 dbms_feature_usage.DBU_DETECT_BY_SQL,
228 DBFUS_BITMAP_SEGMENT_USER_STR,
229 'Extents of locally managed user tablespaces are managed ' ||
230 'automatically by Oracle.');
231 end;
232
233 /*********************************
234 * Automatic SQL Execution Memory
235 *********************************/
236
237 declare
238 DBFUS_AUTO_PGA_STR CONSTANT VARCHAR2(1000) :=
239 'select decode(pga + wap, 2, 1, 0), pga_aux + wap_aux, NULL from ' ||
240 '(select count(*) pga, 0 pga_aux from v$system_parameter ' ||
241 'where name = ''pga_aggregate_target'' and value != ''0''), ' ||
242 '(select count(*) wap, 0 wap_aux from v$system_parameter ' ||
243 'where name = ''workarea_size_policy'' and upper(value) = ''AUTO'')';
244
245 begin
246 dbms_feature_usage.register_db_feature
247 ('Automatic SQL Execution Memory',
248 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
249 NULL,
250 dbms_feature_usage.DBU_DETECT_BY_SQL,
251 DBFUS_AUTO_PGA_STR,
252 'Sizing of work areas for all dedicated sessions (PGA) is automatic.');
253 end;
254
255 /********************************
256 * Automatic Storage Management
257 ******************************/
258
259 declare
260 DBFUS_ASM_PROC CONSTANT VARCHAR2(1000) := 'DBMS_FEATURE_ASM';
261
262 begin
263 dbms_feature_usage.register_db_feature
264 ('Automatic Storage Management',
265 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
266 NULL,
267 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
268 DBFUS_ASM_PROC,
269 'Automatic Storage Management has been enabled');
270 end;
271
272 /***************************
273 * Automatic Undo Management
274 ***************************/
275
276 declare
277 DBFUS_AUM_PROC CONSTANT VARCHAR2(1000) := 'DBMS_FEATURE_AUM';
278
279 begin
280 dbms_feature_usage.register_db_feature
281 ('Automatic Undo Management',
282 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
283 NULL,
284 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
285 DBFUS_AUM_PROC,
286 'Oracle automatically manages undo data using an UNDO tablespace.');
287 end;
288
289 /**************************************
290 * Automatic Workload Repository (AWR)
291 **************************************/
292 begin
293 dbms_feature_usage.register_db_feature
294 ('Automatic Workload Repository'
295 ,dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED
296 ,NULL
297 ,dbms_feature_usage.DBU_DETECT_BY_PROCEDURE
298 ,'DBMS_FEATURE_AWR'
299 ,'A manual Automatic Workload Repository (AWR) snapshot was taken ' ||
300 'in the last sample period.');
301 end;
302
303
304 /***************
305 * AWR Baseline
306 ***************/
307
308 declare
309 DBFUS_AWR_BASELINE_STR CONSTANT VARCHAR2(1000) :=
310 'select count(*), count(*), NULL from dba_hist_baseline ' ||
311 'where baseline_name != ''SYSTEM_MOVING_WINDOW''';
312
313 begin
314 dbms_feature_usage.register_db_feature
315 ('AWR Baseline',
316 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
317 NULL,
318 dbms_feature_usage.DBU_DETECT_BY_SQL,
319 DBFUS_AWR_BASELINE_STR,
320 'At least one AWR Baseline has been created by the user');
321 end;
322
323 /************************
324 * AWR Baseline Template
325 ************************/
326
327 declare
328 DBFUS_AWR_BL_TEMPLATE_STR VARCHAR2(1000) :=
329 'select count(*), count(*), NULL ' ||
330 'from dba_hist_baseline_template';
331
332 begin
333 dbms_feature_usage.register_db_feature
334 ('AWR Baseline Template',
335 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
336 NULL,
337 dbms_feature_usage.DBU_DETECT_BY_SQL,
338 DBFUS_AWR_BL_TEMPLATE_STR,
339 'At least one AWR Baseline Template has been created by the user');
340 end;
341
342 /***************
343 * AWR Reports
344 ***************/
345
346 declare
347 DBFUS_AWR_REPORT_STR CONSTANT VARCHAR2(1000) :=
348 q'[with last_period as
349 (select * from wrm$_wr_usage
350 where upper(feature_type) like 'REPORT'
351 and usage_time >= ]' ||
352 DBFUS_LAST_SAMPLE_DATE_STR ||
353 q'[)
354 select decode (count(*), 0, 0, 1),
355 count(*),
356 feature_list
357 from last_period,
358 (select substr(sys_connect_by_path(feature_count, ','),2) feature_list
359 from
360 (select feature_count,
361 count(*) over () cnt,
362 row_number () over (order by 1) seq
363 from
364 (select feature_name || ':' || count(*) feature_count
365 from last_period
366 group by feature_name)
367 )
368 where seq=cnt
369 start with seq=1
370 connect by prior seq+1=seq)
371 group by feature_list]';
372
373 begin
374 dbms_feature_usage.register_db_feature
375 ('AWR Report',
376 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
377 NULL,
378 dbms_feature_usage.DBU_DETECT_BY_SQL,
379 DBFUS_AWR_REPORT_STR,
380 'At least one Workload Repository Report has been created by the user');
381 end;
382
383 /**************************
384 * Backup Encryption
385 **************************/
386
387 /* This query returns 1 if there are any encrypted backup pieces,
388 * whose status is 'available'.
389 * Controlfile autobackups are ignored, because we don't want to
390 * consider RMAN in use if they just turned on the controlfile autobackup
391 * feature. */
392
393 begin
394 dbms_feature_usage.register_db_feature
395 ('Backup Encryption',
396 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
397 NULL,
398 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
399 'DBMS_FEATURE_BACKUP_ENCRYPTION',
400 'Encrypted backups are being used.');
401 end;
402
403 /********************************
404 * Baseline Adaptive Thresholds
405 ********************************/
406
407 declare
408 DBFUS_BASELINE_ADAPTIVE_STR CONSTANT VARCHAR2(1000) :=
409 'select decode(nvl(sum(moving)+sum(static),0), 0, 0, 1) '||
413 ',decode(AB.baseline_id, 0, 1, 0) moving '||
410 ',nvl(sum(moving)+sum(static),0) '||
411 ',''Adaptive: ''||nvl(sum(moving),0)||''; Static:''||nvl(sum(static),0) '||
412 'from (select decode(AB.baseline_id, 0, 0, 1) static '||
414 'from dbsnmp.bsln_threshold_params TP '||
415 ',dbsnmp.bsln_baselines B '||
416 ',dba_hist_baseline AB '||
417 ',v$database D '||
418 ',v$instance I '||
419 'where AB.dbid = D.dbid '||
420 'and B.dbid = AB.dbid '||
421 'and B.baseline_id = AB.baseline_id '||
422 'and B.instance_name = I.instance_name '||
423 'and TP.bsln_guid = B.bsln_guid '||
424 'and in_effect = ''Y'')';
425 begin
426 dbms_feature_usage.register_db_feature
427 ('Baseline Adaptive Thresholds',
428 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
429 NULL,
430 dbms_feature_usage.DBU_DETECT_BY_SQL,
431 DBFUS_BASELINE_ADAPTIVE_STR,
432 'Adaptive Thresholds have been configured.');
433 end;
434
435 /********************************
436 * Baseline Static Computations
437 ********************************/
438
439 declare
440 DBFUS_BASELINE_COMPUTES_STR CONSTANT VARCHAR2(1000) :=
441 'select decode(count(*), 0, 0, 1), count(*), NULL '||
442 'from dba_hist_baseline_metadata AB '||
443 ',dbsnmp.bsln_baselines B '||
444 ',v$database D '||
445 ',v$instance I '||
446 'where AB.dbid = D.dbid '||
447 'and AB.baseline_type <> ''MOVING_WINDOW'' '||
448 'and B.dbid = AB.dbid '||
449 'and B.baseline_id = AB.baseline_id '||
450 'and B.instance_name = I.instance_name '||
451 'and B.last_compute_date IS NOT NULL';
452 begin
453 dbms_feature_usage.register_db_feature
454 ('Baseline Static Computations',
455 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
456 NULL,
457 dbms_feature_usage.DBU_DETECT_BY_SQL,
458 DBFUS_BASELINE_COMPUTES_STR,
459 'Static baseline statistics have been computed.');
460 end;
461
462 /************************
463 * Block Change Tracking
464 ************************/
465
466 declare
467 DBFUS_BLOCK_CHANGE_STR CONSTANT VARCHAR2(1000) :=
468 'select count(*), NULL, NULL ' ||
469 'from v$block_change_tracking where status = ''ENABLED''';
470
471 begin
472 dbms_feature_usage.register_db_feature
473 ('Change-Aware Incremental Backup',
474 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
475 NULL,
476 dbms_feature_usage.DBU_DETECT_BY_SQL,
477 DBFUS_BLOCK_CHANGE_STR,
478 'Track blocks that have changed in the database.');
479 end;
480
481 /**********************
482 * Client Identifier
483 **********************/
484
485 declare
486 DBFUS_CLIENT_IDN_STR CONSTANT VARCHAR2(1000) :=
487 'select count(*), NULL, NULL from v$session ' ||
488 'where client_identifier is not null';
489
490 begin
491 dbms_feature_usage.register_db_feature
492 ('Client Identifier',
493 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
494 NULL,
495 dbms_feature_usage.DBU_DETECT_BY_SQL,
496 DBFUS_CLIENT_IDN_STR,
497 'Application User Proxy Authentication: Client Identifier is ' ||
498 'used at this specific time.');
499 end;
500
501
502 /**********************************
503 * Clusterwide Global Transactions
504 **********************************/
505
506 declare
507 DBFUS_CLUSTER_GTX_STR CONSTANT VARCHAR2(1000) :=
508 'select value, NULL, NULL from v$sysstat ' ||
509 'where name = ''Clusterwide global transactions''';
510
511 begin
512 dbms_feature_usage.register_db_feature
513 ('Clusterwide Global Transactions',
514 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
515 NULL,
516 dbms_feature_usage.DBU_DETECT_BY_SQL,
517 DBFUS_CLUSTER_GTX_STR,
518 'Clusterwide Global Transactions is being used.');
519 end;
520
521 /**********************************
522 * Crossedition Triggers
523 **********************************/
524
525 declare
526 DBFUS_XEDTRG_STR CONSTANT VARCHAR2(1000) :=
527 'select count(1), count(1), NULL from trigger$ t ' ||
528 'where bitand(t.property, 8192) = 8192';
529
530 begin
531 dbms_feature_usage.register_db_feature
532 ('Crossedition Triggers',
533 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
534 NULL,
535 dbms_feature_usage.DBU_DETECT_BY_SQL,
536 DBFUS_XEDTRG_STR,
537 'Crossedition triggers is being used.');
538 end;
539
540 /******************************
541 * CSSCAN - character set scan
542 *******************************/
543
544 declare
545 DBFUS_CSSCAN_STR CONSTANT VARCHAR2(1000) :=
546 'select count(*), null, null from ' ||
547 'csmig.csm$parameters c ' ||
551
548 'where c.name=''TIME_START'' and ' ||
549 'to_date(c.value, ''YYYY-MM-DD HH24:MI:SS'') ' ||
550 '>= ' || DBFUS_LAST_SAMPLE_DATE_STR;
552 begin
553 dbms_feature_usage.register_db_feature
554 ('CSSCAN',
555 dbms_feature_usage.DBU_INST_OBJECT,
556 'CSMIG.csm$parameters',
557 dbms_feature_usage.DBU_DETECT_BY_SQL,
558 DBFUS_CSSCAN_STR,
559 'Oracle Database has been scanned at least once for character set:' ||
560 'CSSCAN has been run at least once.');
561 end;
562
563
564 /******************************
565 * Character semantics turned on
566 *******************************/
567
568 declare
569 DBFUS_CHAR_SEMANTICS_STR CONSTANT VARCHAR2(1000) :=
570 'select count(*), null, null from ' ||
571 'sys.v$nls_parameters where ' ||
572 'parameter=''NLS_LENGTH_SEMANTICS'' and upper(value)=''CHAR'' ';
573
574 begin
575 dbms_feature_usage.register_db_feature
576 ('Character Semantics',
577 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
578 NULL,
579 dbms_feature_usage.DBU_DETECT_BY_SQL,
580 DBFUS_CHAR_SEMANTICS_STR,
581 'Character length semantics is used in Oracle Database');
582 end;
583
584 /****************************
585 * Character Set of Database
586 ****************************/
587
588 declare
589 DBFUS_CHAR_SET_STR CONSTANT VARCHAR2(1000) :=
590 'select 1, null, value from ' ||
591 'sys.v$nls_parameters where ' ||
592 'parameter=''NLS_CHARACTERSET'' ';
593
594 begin
595 dbms_feature_usage.register_db_feature
596 ('Character Set',
597 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
598 NULL,
599 dbms_feature_usage.DBU_DETECT_BY_SQL,
600 DBFUS_CHAR_SET_STR,
601 'Character set is used in Oracle Database');
602 end;
603
604
605 /**********************
606 * Data Guard
607 **********************/
608
609 begin
610 dbms_feature_usage.register_db_feature
611 ('Data Guard',
612 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
613 NULL,
614 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
615 'DBMS_FEATURE_DATA_GUARD',
616 'Data Guard, a set of services, is being used to create, ' ||
617 'maintain, manage, and monitor one or more standby databases.');
618 end;
619
620 /**********************
621 * Data Mining
622 **********************/
623
624 declare
625 DBFUS_ODM_PROC VARCHAR2(100) := 'DBMS_FEATURE_DATABASE_ODM';
626 begin
627 dbms_feature_usage.register_db_feature
628 ('Data Mining',
629 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
630 NULL,
631 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
632 DBFUS_ODM_PROC,
633 'There exist Oracle Data Mining models in the database.');
634 end;
635
636
637 /**********************
638 * Dynamic SGA
639 **********************/
640
641 begin
642 dbms_feature_usage.register_db_feature
643 ('Dynamic SGA',
644 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
645 NULL,
646 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
647 'DBMS_FEATURE_DYN_SGA',
651
648 'The Oracle SGA has been dynamically resized through an ' ||
649 'ALTER SYSTEM SET statement.');
650 end;
652 /*************************************************
653 * DMU - Database Migration Assistant for Unicode
654 *************************************************/
655
656 begin
657 dbms_feature_usage.register_db_feature
658 ('Database Migration Assistant for Unicode',
659 dbms_feature_usage.DBU_INST_OBJECT,
660 'SYS.PROPS$',
661 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
662 'DBMS_FEATURE_DMU',
663 'Database Migration Assistant for Unicode has been used.');
664 end;
665
666 /******************************
667 * Editions
668 *******************************/
669
670 declare
671 DBFUS_EDITION_STR CONSTANT VARCHAR2(1000) :=
672 'select count(1), count(1), null from sys.edition$ e, sys.obj$ o ' ||
673 'where e.obj# = o.obj# and o.name != ''ORA$BASE''';
674
675 begin
676 dbms_feature_usage.register_db_feature
677 ('Editions',
678 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
679 NULL,
680 dbms_feature_usage.DBU_DETECT_BY_SQL,
681 DBFUS_EDITION_STR,
682 'Editions is being used.');
683 end;
684
685 /******************************
686 * Editioning Views
687 *******************************/
688
689 declare
690 DBFUS_EDITION_STR CONSTANT VARCHAR2(1000) :=
691 'select count(1), count(1), null from sys.view$ v ' ||
692 'where bitand(v.property, 32) = 32';
693
694 begin
695 dbms_feature_usage.register_db_feature
696 ('Editioning Views',
697 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
698 NULL,
699 dbms_feature_usage.DBU_DETECT_BY_SQL,
700 DBFUS_EDITION_STR,
701 'Editioning views is being used.');
702 end;
703
704 /******************************
705 * EM - Cloud Control tracking
706 *******************************/
707
708 declare
709 DBFUS_EM_GC_STR CONSTANT VARCHAR2(1000) :=
710 'select count(1), null, null from ' ||
711 'dbsnmp.mgmt_db_feature_log a ' ||
712 'where a.source=''GC'' and ' ||
713 'CAST(a.last_update_date AS DATE) ' ||
714 '>= ' || DBFUS_LAST_SAMPLE_DATE_STR;
715 begin
716 dbms_feature_usage.register_db_feature
717 ('EM Cloud Control',
718 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
719 NULL,
720 dbms_feature_usage.DBU_DETECT_BY_SQL,
721 DBFUS_EM_GC_STR,
722 'EM Cloud Control Database Home Page has been visited at least once.');
723 end;
724
725 /******************************
726 * EM Performance Page tracking
727 *******************************/
728
729 declare
730 DBFUS_EM_DIAG_STR CONSTANT VARCHAR2(1000) :=
731 'select count(1), null, null from ' ||
732 'dbsnmp.mgmt_db_feature_log a ' ||
733 'where a.source=''Diagnostic'' and ' ||
734 'CAST(a.last_update_date AS DATE) ' ||
735 '>= ' || DBFUS_LAST_SAMPLE_DATE_STR;
736 begin
737 dbms_feature_usage.register_db_feature
738 ('EM Performance Page',
739 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
740 NULL,
741 dbms_feature_usage.DBU_DETECT_BY_SQL,
742 DBFUS_EM_DIAG_STR,
743 'EM Performance Page has been visited at least once.');
744 end;
745
746 /******************************
747 * EM - SQL Monitoring and Tuning pages tracking
748 *******************************/
749
750 declare
751 DBFUS_EM_TUNING_STR CONSTANT VARCHAR2(1000) :=
752 'select count(1), null, null from ' ||
753 'dbsnmp.mgmt_db_feature_log a ' ||
754 'where a.source=''Tuning'' and ' ||
755 'CAST(a.last_update_date AS DATE) ' ||
756 '>= ' || DBFUS_LAST_SAMPLE_DATE_STR;
757 begin
758 dbms_feature_usage.register_db_feature
759 ('SQL Monitoring and Tuning pages',
760 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
761 NULL,
762 dbms_feature_usage.DBU_DETECT_BY_SQL,
763 DBFUS_EM_TUNING_STR,
764 'EM SQL Monitoring and Tuning pages has been visited at least once.');
765 end;
766
767 /**********************
768 * File Mapping
769 **********************/
770
771 declare
772 DBFUS_FILE_MAPPING_STR CONSTANT VARCHAR2(1000) :=
773 'select count(*), NULL, NULL from v$system_parameter where ' ||
774 'name = ''file_mapping'' and upper(value) = ''TRUE'' and ' ||
775 'exists (select 1 from v$map_file)';
776
777 begin
778 dbms_feature_usage.register_db_feature
779 ('File Mapping',
780 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
781 NULL,
782 dbms_feature_usage.DBU_DETECT_BY_SQL,
783 DBFUS_FILE_MAPPING_STR,
784 'File Mapping, the mechanism that shows a complete mapping ' ||
785 'of a file to logical volumes and physical devices, is ' ||
786 'being used.');
787 end;
788
789
790 /***************************
791 * Flashback Database
792 ***************************/
793
794 declare
798
795 DBFUS_FB_DB_STR CONSTANT VARCHAR2(1000) :=
796 'select count(*), NULL, NULL from v$database where ' ||
797 'flashback_on = ''YES''';
799 begin
800 dbms_feature_usage.register_db_feature
801 ('Flashback Database',
802 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
803 NULL,
804 dbms_feature_usage.DBU_DETECT_BY_SQL,
805 DBFUS_FB_DB_STR,
806 'Flashback Database, a rewind button for the database, is enabled');
807 end;
808
809
810 /***************************
811 * Flashback Data Archive
812 ***************************/
813
814 declare
815 DBFUS_FDA_STR CONSTANT VARCHAR2(1000) :=
816 'select count(*), NULL, NULL from DBA_FLASHBACK_ARCHIVE_TABLES';
817
818 begin
819 dbms_feature_usage.register_db_feature
820 ('Flashback Data Archive',
821 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
822 NULL,
823 dbms_feature_usage.DBU_DETECT_BY_SQL,
824 DBFUS_FDA_STR,
825 'Flashback Data Archive, a historical repository of changes to data ' ||
826 'contained in a table, is used ');
827 end;
828
829
830 /******************************
831 * Internode Parallel Execution
832 ******************************/
833
834 declare
835 DBFUS_INODE_PRL_EXEC_STR CONSTANT VARCHAR2(1000) :=
836 'select sum(value), NULL, NULL from gv$pq_sysstat ' ||
837 'where statistic like ''%Initiated (IPQ)%''';
838
839
840 begin
841 dbms_feature_usage.register_db_feature
842 ('Internode Parallel Execution',
843 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
844 NULL,
845 dbms_feature_usage.DBU_DETECT_BY_SQL,
846 DBFUS_INODE_PRL_EXEC_STR,
847 'Internode Parallel Execution is being used.');
848 end;
849
850 /**********************
851 * Label Security
852 **********************/
853
854 declare
855 DBFUS_LABEL_SECURITY_PROC CONSTANT VARCHAR2(1000) :=
856 'dbms_feature_label_security';
857 begin
858 dbms_feature_usage.register_db_feature
859 ('Label Security',
860 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
861 NULL,
862 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
863 DBFUS_LABEL_SECURITY_PROC,
864 'Oracle Label Security is being used');
865 end;
866
867 /**********************
868 * Oracle Database Vault
869 **********************/
870 declare
871 DBFUS_DATABASE_VAULT_PROC CONSTANT VARCHAR2(1000) :=
872 'DBMS_FEATURE_DATABASE_VAULT';
873 begin
874 dbms_feature_usage.register_db_feature
875 ('Oracle Database Vault',
876 dbms_feature_usage.DBU_INST_OBJECT,
877 'dvsys.realm$',
878 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
879 DBFUS_DATABASE_VAULT_PROC,
880 'Oracle Database Vault is being used');
881 end;
882
883 /***************************************
884 * Deferred Segment Creation
885 ***************************************/
886
887 declare
888 DBFUS_DEFERRED_SEG_CRT_PROC CONSTANT VARCHAR2(1000) :=
889 'DBMS_FEATURE_DEFERRED_SEG_CRT';
890 begin
891 dbms_feature_usage.register_db_feature
892 ('Deferred Segment Creation',
893 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
894 NULL,
895 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
896 DBFUS_DEFERRED_SEG_CRT_PROC,
897 'Deferred Segment Creation is being used');
898 end;
899
900 /***************************************
901 * Locally Managed Tablespaces (system)
902 ***************************************/
903
904 declare
905 DBFUS_LOCALLY_MANAGED_SYS_PROC CONSTANT VARCHAR2(1000) :=
906 'DBMS_FEATURE_LMT';
907
908 begin
909 dbms_feature_usage.register_db_feature
910 ('Locally Managed Tablespaces (system)',
911 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
912 NULL,
913 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
914 DBFUS_LOCALLY_MANAGED_SYS_PROC,
915 'There exists tablespaces that are locally managed in ' ||
916 'the database.');
917 end;
918
919 /*************************************
920 * Locally Managed Tablespaces (user)
921 *************************************/
922
923 declare
924 DBFUS_LOCALLY_MANAGED_USER_STR CONSTANT VARCHAR2(1000) :=
925 'select count(*), NULL, NULL from dba_tablespaces where ' ||
926 'extent_management = ''LOCAL'' and ' ||
927 'tablespace_name not in ' ||
928 '(''SYSTEM'', ''SYSAUX'', ''TEMP'', ''USERS'', ''EXAMPLE'')';
929
930 begin
931 dbms_feature_usage.register_db_feature
932 ('Locally Managed Tablespaces (user)',
933 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
934 NULL,
935 dbms_feature_usage.DBU_DETECT_BY_SQL,
936 DBFUS_LOCALLY_MANAGED_USER_STR,
937 'There exists user tablespaces that are locally managed in ' ||
938 'the database.');
939 end;
940
941 /******************************
942 * Messaging Gateway
943 ******************************/
944
945 declare
949 'exists (select 1 from mgw$_links)';
946 DBFUS_MSG_GATEWAY_STR CONSTANT VARCHAR2(1000) :=
947 'select count(*), NULL, NULL from dba_registry ' ||
948 'where comp_id = ''MGW'' and status != ''REMOVED'' and ' ||
950
951 begin
952 dbms_feature_usage.register_db_feature
953 ('Messaging Gateway',
954 dbms_feature_usage.DBU_INST_OBJECT,
955 'SYS.MGW$_GATEWAY',
956 dbms_feature_usage.DBU_DETECT_BY_SQL,
957 DBFUS_MSG_GATEWAY_STR,
958 'Messaging Gateway, that enables communication between non-Oracle ' ||
959 'messaging systems and Advanced Queuing (AQ), link configured.');
960 end;
961
962 /**********************
963 * VLM
964 **********************/
965
966 declare
967 DBFUS_VLM_ADV_STR CONSTANT VARCHAR2(1000) :=
968 'select count(*), NULL, NULL from v$system_parameter where ' ||
969 'name like ''use_indirect_data_buffers'' and upper(value) != ''FALSE''';
970 begin
971 dbms_feature_usage.register_db_feature
972 ('Very Large Memory',
973 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
974 NULL,
975 dbms_feature_usage.DBU_DETECT_BY_SQL,
976 DBFUS_VLM_ADV_STR,
977 'Very Large Memory is enabled.');
978 end;
979
980
981 /**********************
982 * Automatic Memory Tuning
983 **********************/
984 begin
985 dbms_feature_usage.register_db_feature
986 ('Automatic Memory Tuning',
987 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
988 NULL,
989 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
990 'DBMS_FEATURE_AUTO_MEM',
991 'Automatic Memory Tuning is enabled.');
992 end;
993
994 /**********************
995 * Automatic SGA Tuning
996 **********************/
997 begin
998 dbms_feature_usage.register_db_feature
999 ('Automatic SGA Tuning',
1000 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1001 NULL,
1002 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1003 'DBMS_FEATURE_AUTO_SGA',
1004 'Automatic SGA Tuning is enabled.');
1005 end;
1006
1007
1008 /**********************
1009 * ENCRYPTED Tablespace
1010 **********************/
1011 declare
1012 DBFUS_ENT_ADV_STR CONSTANT VARCHAR2(1000) :=
1013 'select count(*), NULL, NULL from v$encrypted_tablespaces';
1014 begin
1015 dbms_feature_usage.register_db_feature
1016 ('Encrypted Tablespaces',
1017 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1018 NULL,
1019 dbms_feature_usage.DBU_DETECT_BY_SQL,
1020 DBFUS_ENT_ADV_STR,
1021 'Encrypted Tablespaces is enabled.');
1022 end;
1023
1024
1025 /**********************
1026 * MTTR Advisor
1027 **********************/
1028
1029 declare
1030 DBFUS_MTTR_ADV_STR CONSTANT VARCHAR2(1000) :=
1031 'select count(*), NULL, NULL from v$statistics_level where ' ||
1032 'statistics_name = ''MTTR Advice'' and ' ||
1033 'system_status = ''ENABLED'' and ' ||
1034 'exists (select 1 from v$instance_recovery ' ||
1035 'where target_mttr != 0) and ' ||
1036 'exists (select 1 from v$mttr_target_advice ' ||
1037 'where advice_status = ''ON'')';
1038
1039 begin
1040 dbms_feature_usage.register_db_feature
1041 ('MTTR Advisor',
1042 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1043 NULL,
1044 dbms_feature_usage.DBU_DETECT_BY_SQL,
1045 DBFUS_MTTR_ADV_STR,
1046 'Mean Time to Recover Advisor is enabled.');
1047 end;
1048
1049 /***********************
1050 * Multiple Block Sizes
1051 ***********************/
1052
1053 declare
1054 DBFUS_MULT_BLOCK_SIZE_STR CONSTANT VARCHAR2(1000) :=
1055 'select count(*), NULL, NULL from v$system_parameter where ' ||
1056 'name like ''db_%_cache_size'' and value != ''0''';
1057
1058 begin
1059 dbms_feature_usage.register_db_feature
1060 ('Multiple Block Sizes',
1061 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1062 NULL,
1063 dbms_feature_usage.DBU_DETECT_BY_SQL,
1064 DBFUS_MULT_BLOCK_SIZE_STR,
1065 'Multiple Block Sizes are being used with this database.');
1066 end;
1067
1068 /*****************************
1069 * OLAP - Analytic Workspaces
1070 *****************************/
1071
1072 declare
1073 DBFUS_OLAP_AW_STR CONSTANT VARCHAR2(1000) :=
1074 'select count(*), count(*), NULL from dba_aws where AW_NUMBER >= 1000' ||
1075 'and owner not in (''DM'',''OLAPTRAIN'',''GLOBAL'',''HR'',''OE'','||
1076 '''PM'',''SH'',''IX'',''BI'',''SCOTT'')';
1077
1078 begin
1079 dbms_feature_usage.register_db_feature
1080 ('OLAP - Analytic Workspaces',
1081 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1082 NULL,
1083 dbms_feature_usage.DBU_DETECT_BY_SQL,
1084 DBFUS_OLAP_AW_STR,
1085 'OLAP - the analytic workspaces stored in the database.');
1086 end;
1087
1088 /*****************************
1089 * OLAP - Cubes
1090 *****************************/
1091
1092 declare
1093 DBFUS_OLAP_CUBE_STR CONSTANT VARCHAR2(1000) :=
1097
1094 'select count(*), count(*), NULL from DBA_OLAP2_CUBES ' ||
1095 'where invalid != ''Y'' and OWNER = ''SYS'' ' ||
1096 'and CUBE_NAME = ''STKPRICE_TBL''';
1098 begin
1099 dbms_feature_usage.register_db_feature
1100 ('OLAP - Cubes',
1101 dbms_feature_usage.DBU_INST_OBJECT,
1102 'PUBLIC.DBA_OLAP2_CUBES',
1103 dbms_feature_usage.DBU_DETECT_BY_SQL,
1104 DBFUS_OLAP_CUBE_STR,
1105 'OLAP - number of cubes in the OLAP catalog that are fully ' ||
1106 'mapped and accessible by the OLAP API.');
1107 end;
1108
1109 /***********************
1110 * Oracle Managed Files
1111 ***********************/
1112
1113 declare
1114 DBFUS_OMF_STR CONSTANT VARCHAR2(1000) :=
1115 'select count(*), NULL, NULL from dba_data_files where ' ||
1116 'upper(file_name) like ''%O1_MF%''';
1117
1118 begin
1119 dbms_feature_usage.register_db_feature
1120 ('Oracle Managed Files',
1121 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1122 NULL,
1123 dbms_feature_usage.DBU_DETECT_BY_SQL,
1124 DBFUS_OMF_STR,
1125 'Database files are being managed by Oracle.');
1126 end;
1127
1128 /***********************
1129 * Oracle Secure Backup
1130 ***********************/
1131
1132 /* This query returns the number of backup pieces created with
1133 * Oracle Secure Backup whose status is 'available'. */
1134
1135 declare
1136 DBFUS_OSB_STR CONSTANT VARCHAR2(1000) :=
1137 'select count(*), NULL, NULL from x$kccbp where ' ||
1138 'bitand(bpext, 256) = 256 and ' ||
1139 'bitand(bpflg,1+4096+8192) = 0';
1140
1141 begin
1142 dbms_feature_usage.register_db_feature
1143 ('Oracle Secure Backup',
1144 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1145 NULL,
1146 dbms_feature_usage.DBU_DETECT_BY_SQL,
1147 DBFUS_OSB_STR,
1148 'Oracle Secure Backup is used for backups to tertiary storage.');
1149 end;
1150
1151 /*******************************
1152 * Parallel SQL DDL Execution
1153 *******************************/
1154
1155 declare
1156 DBFUS_PSQL_DDL_STR CONSTANT VARCHAR2(1000) :=
1157 'select value, NULL, NULL from v$pq_sysstat ' ||
1158 'where rtrim(statistic,'' '') = ''DDL Initiated''';
1159
1160 begin
1161 dbms_feature_usage.register_db_feature
1162 ('Parallel SQL DDL Execution',
1163 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1164 NULL,
1165 dbms_feature_usage.DBU_DETECT_BY_SQL,
1166 DBFUS_PSQL_DDL_STR,
1167 'Parallel SQL DDL Execution is being used.');
1168 end;
1169
1170 /*******************************
1171 * Parallel SQL DML Execution
1172 *******************************/
1173
1174 declare
1175 DBFUS_PSQL_DML_STR CONSTANT VARCHAR2(1000) :=
1176 'select value, NULL, NULL from v$pq_sysstat ' ||
1177 'where rtrim(statistic,'' '') = ''DML Initiated''';
1178
1179 begin
1180 dbms_feature_usage.register_db_feature
1181 ('Parallel SQL DML Execution',
1182 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1183 NULL,
1184 dbms_feature_usage.DBU_DETECT_BY_SQL,
1185 DBFUS_PSQL_DML_STR,
1186 'Parallel SQL DML Execution is being used.');
1187 end;
1188
1189 /****************************
1190 * Oracle Pluggable Database
1191 ****************************/
1192
1193 begin
1194 dbms_feature_usage.register_db_feature
1195 ('Oracle Pluggable Databases',
1196 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1197 NULL,
1198 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1199 'DBMS_PDB_NUM',
1200 'Oracle Pluggable Databases is being used.');
1201 end;
1202
1203 /*******************************
1204 * Parallel SQL Query Execution
1205 *******************************/
1206
1207 declare
1208 DBFUS_PSQL_QUERY_STR CONSTANT VARCHAR2(1000) :=
1209 'select value, NULL, NULL from v$pq_sysstat ' ||
1210 'where rtrim(statistic,'' '') = ''Queries Initiated''';
1211
1212 begin
1213 dbms_feature_usage.register_db_feature
1214 ('Parallel SQL Query Execution',
1215 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1216 NULL,
1217 dbms_feature_usage.DBU_DETECT_BY_SQL,
1218 DBFUS_PSQL_QUERY_STR,
1219 'Parallel SQL Query Execution is being used.');
1220 end;
1221
1222 /************************
1223 * Partitioning (system)
1224 ************************/
1225
1226 declare
1227 DBFUS_PARTN_SYS_PROC CONSTANT VARCHAR2(1000) :=
1228 'DBMS_FEATURE_PARTITION_SYSTEM';
1229
1230 begin
1231 dbms_feature_usage.register_db_feature
1232 ('Partitioning (system)',
1233 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1234 NULL,
1235 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1236 DBFUS_PARTN_SYS_PROC,
1237 'Oracle Partitioning option is being used - there is at ' ||
1238 'least one partitioned object created.');
1239 end;
1240
1241 /**********************
1242 * Partitioning (user)
1246 DBFUS_PARTN_USER_PROC CONSTANT VARCHAR2(1000) :=
1243 **********************/
1244
1245 declare
1247 'DBMS_FEATURE_PARTITION_USER';
1248
1249 begin
1250 dbms_feature_usage.register_db_feature
1251 ('Partitioning (user)',
1252 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1253 NULL,
1254 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1255 DBFUS_PARTN_USER_PROC,
1256 'Oracle Partitioning option is being used - there is at ' ||
1257 'least one user partitioned object created.');
1258 end;
1259
1260 /**********************
1261 * Zone Maps
1262 **********************/
1263
1264 declare
1265 DBFUS_ZMAP_USER_PROC CONSTANT VARCHAR2(1000) := 'DBMS_FEATURE_ZMAP';
1266 begin
1267 dbms_feature_usage.register_db_feature
1268 ('Zone maps',
1269 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1270 NULL,
1271 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1272 DBFUS_ZMAP_USER_PROC,
1273 'Zone maps');
1274 end;
1275
1276
1277 /****************************
1278 * Oracle Text
1279 ****************************/
1280
1281 declare
1282 DBFUS_TEXT_PROC CONSTANT VARCHAR2(1000) := 'ctxsys.drifeat.dr$feature_track';
1283
1284 begin
1285 dbms_feature_usage.register_db_feature
1286 ('Oracle Text',
1287 dbms_feature_usage.DBU_INST_OBJECT,
1288 'ctxsys.drifeat',
1289 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1290 DBFUS_TEXT_PROC,
1291 'Oracle Text is being used - there is at least one oracle '||
1292 'text index');
1293 end;
1294
1295 /****************************
1296 * PL/SQL Native Compilation
1297 ****************************/
1298
1299 declare
1300 DBFUS_PLSQL_NATIVE_PROC CONSTANT VARCHAR2(1000) :=
1301 'DBMS_FEATURE_PLSQL_NATIVE';
1302
1303 begin
1304 dbms_feature_usage.register_db_feature
1305 ('PL/SQL Native Compilation',
1306 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1307 NULL,
1308 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1309 DBFUS_PLSQL_NATIVE_PROC,
1310 'PL/SQL Native Compilation is being used - there is at least one ' ||
1311 'natively compiled PL/SQL library unit in the database.');
1312 end;
1313
1314 /********************************
1315 * Quality of Service Management
1316 ********************************/
1317
1318 declare
1319 DBFUS_QOSM_PROC CONSTANT VARCHAR2(1000) := 'DBMS_FEATURE_QOSM';
1320
1321 begin
1322 dbms_feature_usage.register_db_feature
1323 ('Quality of Service Management',
1324 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1325 NULL,
1326 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1327 DBFUS_QOSM_PROC,
1328 'Quality of Service Management has been used.');
1329 end;
1330
1331 /********************************
1332 * RAC One Node
1333 ********************************/
1334
1335 declare
1336 DBFUS_ROND_PROC CONSTANT VARCHAR2(1000) := 'DBMS_FEATURE_ROND';
1337
1338 begin
1339 dbms_feature_usage.register_db_feature
1340 ('Real Application Cluster One Node',
1341 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1342 NULL,
1343 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1344 DBFUS_ROND_PROC,
1345 'Real Application Cluster One Node is being used.');
1346 end;
1347
1348 /****************************
1349 * Real Application Clusters
1350 ****************************/
1351
1352 declare
1353 DBFUS_RAC_PROC CONSTANT VARCHAR2(1000) := 'DBMS_FEATURE_RAC';
1354
1355 begin
1356 dbms_feature_usage.register_db_feature
1357 ('Real Application Clusters (RAC)',
1358 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1359 NULL,
1360 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1361 DBFUS_RAC_PROC,
1362 'Real Application Clusters (RAC) is configured.');
1363 end;
1364
1365 /**********************
1366 * Recovery Area
1367 **********************/
1368
1369 declare
1370 DBFUS_RECOVERY_AREA_STR CONSTANT VARCHAR2(1000) :=
1371 'select p, s, NULL from ' ||
1372 '(select count(*) p from v$parameter ' ||
1373 'where name = ''db_recovery_file_dest'' and value is not null), ' ||
1374 '(select to_number(value) s from v$parameter ' ||
1375 'where name = ''db_recovery_file_dest_size'')';
1376
1377 begin
1378 dbms_feature_usage.register_db_feature
1379 ('Recovery Area',
1380 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1381 NULL,
1382 dbms_feature_usage.DBU_DETECT_BY_SQL,
1383 DBFUS_RECOVERY_AREA_STR,
1384 'The recovery area is configured.');
1385 end;
1386
1387 /**************************
1388 * Recovery Manager (RMAN)
1389 **************************/
1390
1391 begin
1392 dbms_feature_usage.register_db_feature
1393 ('Recovery Manager (RMAN)',
1394 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1395 NULL,
1396 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1397 'DBMS_FEATURE_RMAN_BACKUP',
1401 /**********************
1398 'Recovery Manager (RMAN) is being used to backup the database.');
1399 end;
1400
1402 * RMAN - Disk Backup
1403 **********************/
1404
1405 begin
1406 dbms_feature_usage.register_db_feature
1407 ('RMAN - Disk Backup',
1408 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1409 NULL,
1410 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1411 'DBMS_FEATURE_RMAN_DISK_BACKUP',
1412 'Recovery Manager (RMAN) is being used to backup the database to disk.');
1413 end;
1414
1415 /**********************
1416 * RMAN - Tape Backup
1417 **********************/
1418
1419 begin
1420 dbms_feature_usage.register_db_feature
1421 ('RMAN - Tape Backup',
1422 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1423 NULL,
1424 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1425 'DBMS_FEATURE_RMAN_TAPE_BACKUP',
1426 'Recovery Manager (RMAN) is being used to backup the database to tape.');
1427 end;
1428
1429 /**********************************
1430 * RMAN - ZLIB compressed backups
1431 **********************************/
1432 begin
1433
1434 dbms_feature_usage.register_db_feature
1435 ('Backup ZLIB Compression',
1436 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1437 NULL,
1438 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1439 'DBMS_FEATURE_RMAN_ZLIB',
1440 'ZLIB compressed backups are being used.');
1441 end;
1442
1443 /**********************************
1444 * RMAN - BZIP2 compressed backups
1445 **********************************/
1446 begin
1447
1448 dbms_feature_usage.register_db_feature
1449 ('Backup BZIP2 Compression',
1450 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1451 NULL,
1452 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1453 'DBMS_FEATURE_RMAN_BZIP2',
1454 'BZIP2 compressed backups are being used.');
1455 end;
1456
1457 /**********************************
1458 * RMAN - BASIC compressed backups
1459 **********************************/
1460 begin
1461
1462 dbms_feature_usage.register_db_feature
1463 ('Backup BASIC Compression',
1464 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1465 NULL,
1466 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1467 'DBMS_FEATURE_RMAN_BASIC',
1468 'BASIC compressed backups are being used.');
1469 end;
1470
1471 /**********************************
1472 * RMAN - LOW compressed backups
1473 **********************************/
1474 begin
1475
1476 dbms_feature_usage.register_db_feature
1477 ('Backup LOW Compression',
1478 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1479 NULL,
1480 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1481 'DBMS_FEATURE_RMAN_LOW',
1482 'LOW compressed backups are being used.');
1483 end;
1484
1485 /**********************************
1486 * RMAN - MEDIUM compressed backups
1487 **********************************/
1488 begin
1489
1490 dbms_feature_usage.register_db_feature
1491 ('Backup MEDIUM Compression',
1492 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1493 NULL,
1494 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1495 'DBMS_FEATURE_RMAN_MEDIUM',
1496 'MEDIUM compressed backups are being used.');
1497 end;
1498
1499 /**********************************
1500 * RMAN - HIGH compressed backups
1501 **********************************/
1502 begin
1503
1504 dbms_feature_usage.register_db_feature
1505 ('Backup HIGH Compression',
1506 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1507 NULL,
1508 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1509 'DBMS_FEATURE_RMAN_HIGH',
1510 'HIGH compressed backups are being used.');
1511 end;
1512
1513 /****************************
1514 * Long-term archival backups
1515 *****************************/
1516
1517 declare
1518 DBFUS_KEEP_BACKUP_STR CONSTANT VARCHAR2(1000) :=
1519 'select count(*), NULL, decode(min(keep_options), ''BACKUP_LOGS'',
1520 ''Consistent backups archived'') from v$backup_set where keep = ''YES''';
1521
1522 begin
1523 dbms_feature_usage.register_db_feature
1524 ('Long-term Archival Backup',
1525 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1526 NULL,
1527 dbms_feature_usage.DBU_DETECT_BY_SQL,
1528 DBFUS_KEEP_BACKUP_STR,
1529 'Long-term archival backups are being used.');
1530 end;
1531
1532 /****************************
1533 * Multi section backups
1534 *****************************/
1535
1536 declare
1537 DBFUS_MULTI_SECTION_BACKUP_STR CONSTANT VARCHAR2(1000) :=
1538 'select count(*), NULL, NULL ' ||
1539 'from v$backup_set where multi_section = ''YES''';
1540
1541 begin
1542 dbms_feature_usage.register_db_feature
1543 ('Multi Section Backup',
1544 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1545 NULL,
1546 dbms_feature_usage.DBU_DETECT_BY_SQL,
1547 DBFUS_MULTI_SECTION_BACKUP_STR,
1548 'Multi section backups are being used.');
1549 end;
1550
1551 /***********************
1555 declare
1552 * Block Media Recovery
1553 ***********************/
1554
1556 DBFUS_BLOCK_MEDIA_RCV_STR CONSTANT VARCHAR2(1000) :=
1557 'select p, NULL, NULL from ' ||
1558 '(select count(*) p from v$rman_status' ||
1559 ' where operation like ''BLOCK MEDIA RECOVERY%'')';
1560 begin
1561 dbms_feature_usage.register_db_feature
1562 ('Block Media Recovery',
1563 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1564 NULL,
1565 dbms_feature_usage.DBU_DETECT_BY_SQL,
1566 DBFUS_BLOCK_MEDIA_RCV_STR,
1567 'Block Media Recovery is being used to repair the database.');
1568 end;
1569
1570
1571 /***********************
1572 * Restore Point
1573 ***********************/
1574
1575 declare
1576 DBFUS_RESTORE_POINT_STR CONSTANT VARCHAR2(1000) :=
1577 'select p, NULL, NULL from ' ||
1578 '(select count(*) p from v$restore_point)';
1579 begin
1580 dbms_feature_usage.register_db_feature
1581 ('Restore Point',
1582 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1583 NULL,
1584 dbms_feature_usage.DBU_DETECT_BY_SQL,
1585 DBFUS_RESTORE_POINT_STR,
1586 'Restore Points are being used as targets for Flashback');
1587 end;
1588
1589 /***********************
1590 * Logfile Multiplexing
1591 ***********************/
1592
1593 declare
1594 DBFUS_LOGFILE_MULTIPLEX_STR CONSTANT VARCHAR2(1000) :=
1595 'select p, NULL, NULL from ' ||
1596 '(select count(*) p from ' ||
1597 ' (select count(*) a from v$logfile group by group#)' ||
1598 ' where a>1)';
1599 begin
1600 dbms_feature_usage.register_db_feature
1601 ('Logfile Multiplexing',
1602 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1603 NULL,
1604 dbms_feature_usage.DBU_DETECT_BY_SQL,
1605 DBFUS_LOGFILE_MULTIPLEX_STR,
1606 'Multiple members are used in a single log file group');
1607 end;
1608
1609
1610 /***********************
1611 * Bigfile Tablespace
1612 ***********************/
1613
1614 declare
1615 DBFUS_BIGFILE_TBS_STR CONSTANT VARCHAR2(1000) :=
1616 'select p, NULL, NULL from ' ||
1617 '(select count(*) p from v$tablespace' ||
1618 ' where bigfile = ''YES'')';
1619 begin
1620 dbms_feature_usage.register_db_feature
1621 ('Bigfile Tablespace',
1622 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1623 NULL,
1624 dbms_feature_usage.DBU_DETECT_BY_SQL,
1625 DBFUS_BIGFILE_TBS_STR,
1626 'Bigfile tablespace is being used');
1627 end;
1628
1629
1630 /**************************
1631 * Transportable Tablespace
1632 **************************/
1633
1634 declare
1635 DBFUS_TRANSPORTABLE_TBS_STR CONSTANT VARCHAR2(1000) :=
1636 'select p, NULL, NULL from ' ||
1637 '(select count(*) p from v$datafile' ||
1638 ' where plugged_in = 1)';
1639 begin
1640 dbms_feature_usage.register_db_feature
1641 ('Transportable Tablespace',
1642 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1643 NULL,
1644 dbms_feature_usage.DBU_DETECT_BY_SQL,
1645 DBFUS_TRANSPORTABLE_TBS_STR,
1646 'Transportable tablespace is being used');
1647 end;
1648
1649
1650 /***********************
1651 * Read Only Tablespace
1652 ***********************/
1653
1654 declare
1655 DBFUS_READONLY_TBS_STR CONSTANT VARCHAR2(1000) :=
1656 'select p, NULL, NULL from ' ||
1657 '(select count(*) p from v$datafile' ||
1658 ' where enabled = ''READ ONLY'')';
1659 begin
1660 dbms_feature_usage.register_db_feature
1661 ('Read Only Tablespace',
1662 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1663 NULL,
1664 dbms_feature_usage.DBU_DETECT_BY_SQL,
1665 DBFUS_READONLY_TBS_STR,
1666 'Read only tablespace is being used');
1667 end;
1668
1669 /*************************
1670 * Read Only Open Delayed
1671 *************************/
1672
1673 declare
1674 DBFUS_READOPEN_DELAY_STR CONSTANT VARCHAR2(1000) :=
1675 'select p, NULL, NULL from ' ||
1676 '(select count(*) p from v$parameter' ||
1677 ' where name = ''read_only_open_delayed'' and value = ''TRUE'')';
1678 begin
1679 dbms_feature_usage.register_db_feature
1680 ('Deferred Open Read Only',
1681 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1682 NULL,
1683 dbms_feature_usage.DBU_DETECT_BY_SQL,
1684 DBFUS_READOPEN_DELAY_STR,
1685 'Deferred open read only feature is enabled');
1686 end;
1687
1688
1689 /**********************
1690 * Active Data Guard
1691 **********************/
1692
1693 begin
1694 dbms_feature_usage.register_db_feature
1695 ('Active Data Guard - Real-Time Query on Physical Standby',
1696 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1697 NULL,
1698 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1699 'DBMS_FEATURE_ACTIVE_DATA_GUARD',
1700 'Active Data Guard, a set of services, is being used to enhance ' ||
1701 'Data Guard');
1702 end;
1703
1704
1705 /**********************
1706 * Online Move Datafile
1707 **********************/
1711 ('Online Move Datafile',
1708
1709 begin
1710 dbms_feature_usage.register_db_feature
1712 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1713 NULL,
1714 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1715 'DBMS_FEATURE_MOVE_DATAFILE',
1716 'Online Move Datafile is being used to move datafiles');
1717 end;
1718
1719
1720 /*********************
1721 * Backup Rollforward
1722 *********************/
1723
1724 declare
1725 DBFUS_BACKUP_ROLLFORWARD_STR CONSTANT VARCHAR2(1000) :=
1726 'select p, NULL, NULL from ' ||
1727 '(select count(*) p from v$rman_status' ||
1728 ' where operation like ''BACKUP COPYROLLFORWARD%'')';
1729 begin
1730 dbms_feature_usage.register_db_feature
1731 ('Backup Rollforward',
1732 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1733 NULL,
1734 dbms_feature_usage.DBU_DETECT_BY_SQL,
1735 DBFUS_BACKUP_ROLLFORWARD_STR,
1736 'Backup Rollforward strategy is being used to backup the database.');
1737 end;
1738
1739 /************************
1740 * Data Recovery Advisor
1741 ************************/
1742
1743 declare
1744 DBFUS_DATA_RCV_ADVISOR_STR CONSTANT VARCHAR2(1000) :=
1745 'select p, NULL, NULL from ' ||
1746 '(select count(*) p from v$ir_repair' ||
1747 ' where rownum = 1)';
1748 begin
1749 dbms_feature_usage.register_db_feature
1750 ('Data Recovery Advisor',
1751 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1752 NULL,
1753 dbms_feature_usage.DBU_DETECT_BY_SQL,
1754 DBFUS_DATA_RCV_ADVISOR_STR,
1755 'Data Recovery Advisor (DRA) is being used to repair the database.');
1756 end;
1757
1758 /***********************
1759 * Backup and Restore of plugged database
1760 ***********************/
1761
1762 declare
1763 DBFUS_BR_PLUGGED_DB_STR CONSTANT VARCHAR2(1000) :=
1764 'select p, NULL, NULL from ' ||
1765 '(select count(*) p from v$rman_status' ||
1766 ' where operation like ''%PLUGGABLE DATABASE%'')';
1767 begin
1768 dbms_feature_usage.register_db_feature
1769 ('Backup and Restore of plugged database',
1770 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1771 NULL,
1772 dbms_feature_usage.DBU_DETECT_BY_SQL,
1773 DBFUS_BR_PLUGGED_DB_STR,
1774 'Backup and Restore of plugged database by RMAN is used.');
1775 end;
1776
1777 /*********************
1778 * Recover Table, additional space after TABLE is intentional.
1779 *********************/
1780
1781 declare
1782 DBFUS_RECOVER_TABLE_STR CONSTANT VARCHAR2(1000) :=
1783 'select p, NULL, NULL from ' ||
1784 '(select count(*) p from v$rman_status' ||
1785 ' where operation like ''RECOVER TABLE %'')';
1786 begin
1787 dbms_feature_usage.register_db_feature
1788 ('Recover Table',
1789 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1790 NULL,
1791 dbms_feature_usage.DBU_DETECT_BY_SQL,
1792 DBFUS_RECOVER_TABLE_STR,
1793 'Recover Table is used to recover a table in the database.');
1794 end;
1795
1796 /*********************
1797 * Recover Until Snapshot
1798 *********************/
1799
1800 declare
1801 DBFUS_RECOVER_STR CONSTANT VARCHAR2(1000) :=
1802 'select p, NULL, NULL from ' ||
1803 '(select count(*) p from v$rman_status' ||
1804 ' where operation like ''RECOVER UNTIL SNAPSHOT%'')';
1805 begin
1806 dbms_feature_usage.register_db_feature
1807 ('Recover Until Snapshot',
1808 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1809 NULL,
1810 dbms_feature_usage.DBU_DETECT_BY_SQL,
1811 DBFUS_RECOVER_STR,
1812 'Recover until snapshot is used to recover the database.');
1813 end;
1814
1815 /*********************
1816 * TRANSPORT TABLESPACE command
1817 *********************/
1818
1819 declare
1820 DBFUS_TRANSPORT_TBS_STR CONSTANT VARCHAR2(1000) :=
1821 'select p, NULL, NULL from ' ||
1822 '(select count(*) p from v$rman_status' ||
1823 ' where operation like ''TRANSPORT TABLESPACE%'')';
1824 begin
1825 dbms_feature_usage.register_db_feature
1826 ('TRANSPORT TABLESPACE command',
1827 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1828 NULL,
1829 dbms_feature_usage.DBU_DETECT_BY_SQL,
1830 DBFUS_TRANSPORT_TBS_STR,
1831 'RMAN''s TRANSPORT TABLESPACE command used by the database.');
1832 end;
1833
1834 /*********************
1835 * CONVERT command
1836 *********************/
1837
1838 declare
1839 DBFUS_CONVERT_STR CONSTANT VARCHAR2(1000) :=
1840 'select p, NULL, NULL from ' ||
1841 '(select count(*) p from v$rman_status' ||
1842 ' where operation like ''CONVERT%'')';
1843 begin
1844 dbms_feature_usage.register_db_feature
1845 ('CONVERT command',
1846 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1847 NULL,
1848 dbms_feature_usage.DBU_DETECT_BY_SQL,
1849 DBFUS_CONVERT_STR,
1850 'RMAN''s CONVERT command used by the database.');
1851 end;
1852
1853 /*********************
1854 * Cross Platform Backup and Restore
1858 DBFUS_CROSS_PLATFORM_STR CONSTANT VARCHAR2(1000) :=
1855 *********************/
1856
1857 declare
1859 'select p, NULL, NULL from ' ||
1860 '(select count(*) p from v$rman_status' ||
1861 ' where operation in '||
1862 ' (''RECOVER FROM PLATFORM'', ''BACKUP FOR TRANSPORT'', '||
1863 ' ''BACKUP FROM PLATFORM'', ''RESTORE FROM PLATFORM''))';
1864 begin
1865 dbms_feature_usage.register_db_feature
1866 ('Cross-Platform Backups',
1867 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1868 NULL,
1869 dbms_feature_usage.DBU_DETECT_BY_SQL,
1870 DBFUS_CROSS_PLATFORM_STR,
1871 'Cross-Platform Backup and Restore used by the database.');
1872 end;
1873
1874 /*********************
1875 * Duplicate from Active Database using BackupSet
1876 *********************/
1877
1878 declare
1879 DBFUS_DUPDB_USINGBCK_STR CONSTANT VARCHAR2(1000) :=
1880 'select p, NULL, NULL from ' ||
1881 '(select count(*) p from v$rman_status' ||
1882 ' where operation like ''DUPLICATE DB FROM ACTIVE USING B%'')';
1883 begin
1884 dbms_feature_usage.register_db_feature
1885 ('Duplicate Db from Active Db using BackupSet',
1886 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1887 NULL,
1888 dbms_feature_usage.DBU_DETECT_BY_SQL,
1889 DBFUS_DUPDB_USINGBCK_STR,
1890 'Duplicate from Active Database using BackupSet is used.');
1891 end;
1892
1893 /**********************
1894 * Resource Manager
1895 **********************/
1896
1897 begin
1898 dbms_feature_usage.register_db_feature
1899 ('Resource Manager',
1900 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1901 NULL,
1902 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
1903 'DBMS_FEATURE_RESOURCE_MANAGER',
1904 'Oracle Database Resource Manager is being used to manage ' ||
1905 'database resources.');
1906 end;
1907
1908 /**********************
1909 * Instance Caging
1910 **********************/
1911
1912 declare
1913 DBFUS_DATA_INSTANCE_CAGING_STR CONSTANT VARCHAR2(1000) :=
1914 'select count(*), NULL, NULL from v$rsrc_plan_history where ' ||
1915 'name != ''ORA$INTERNAL_CDB_PLAN'' and ' ||
1916 'name != ''INTERNAL_PLAN'' and name is not null and ' ||
1917 'instance_caging = ''ON'' and ' ||
1918 '(name != ''DEFAULT_MAINTENANCE_PLAN'' or ' ||
1919 ' (window_name is null or ' ||
1920 ' (window_name != ''MONDAY_WINDOW'' and ' ||
1921 ' window_name != ''TUESDAY_WINDOW'' and ' ||
1922 ' window_name != ''WEDNESDAY_WINDOW'' and ' ||
1923 ' window_name != ''THURSDAY_WINDOW'' and ' ||
1924 ' window_name != ''FRIDAY_WINDOW'' and ' ||
1925 ' window_name != ''SATURDAY_WINDOW'' and ' ||
1926 ' window_name != ''SUNDAY_WINDOW''))) ';
1927 begin
1928 dbms_feature_usage.register_db_feature
1929 ('Instance Caging',
1930 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1931 NULL,
1932 dbms_feature_usage.DBU_DETECT_BY_SQL,
1933 DBFUS_DATA_INSTANCE_CAGING_STR,
1934 'Instance Caging is being used to limit the CPU usage by the ' ||
1935 'database instance.');
1936 end;
1937
1938 /**********************
1939 * dNFS
1940 **********************/
1941
1942 declare
1943 DBFUS_DATA_DNFS_STR CONSTANT VARCHAR2(1000) :=
1944 'select count(*), NULL, NULL from v$dnfs_servers';
1945 begin
1946 dbms_feature_usage.register_db_feature
1947 ('Direct NFS',
1948 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1949 NULL,
1950 dbms_feature_usage.DBU_DETECT_BY_SQL,
1951 DBFUS_DATA_DNFS_STR,
1952 'Direct NFS is being used to connect to an NFS server');
1953 end;
1954
1955 /***********************
1956 * Server Flash Cache
1957 ***********************/
1958
1959 declare
1960 DBFUS_SRV_FLASH_CACHE_SIZE_STR CONSTANT VARCHAR2(1000) :=
1961 'select count(*), NULL, NULL from v$system_parameter where ' ||
1962 'name like ''%flash_cache_size'' and value != ''0''';
1963
1964 begin
1965 dbms_feature_usage.register_db_feature
1966 ('Server Flash Cache',
1967 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1968 NULL,
1969 dbms_feature_usage.DBU_DETECT_BY_SQL,
1970 DBFUS_SRV_FLASH_CACHE_SIZE_STR,
1971 'Server Flash Cache is being used with this database.');
1972 end;
1973
1974 /************************
1975 * Server Parameter File
1976 ************************/
1977
1978 declare
1979 DBFUS_SPFILE_STR CONSTANT VARCHAR2(1000) :=
1980 'select count(*), NULL, NULL from v$system_parameter where ' ||
1981 'name = ''spfile'' and value is not null';
1982
1983 begin
1984 dbms_feature_usage.register_db_feature
1985 ('Server Parameter File',
1986 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
1987 NULL,
1988 dbms_feature_usage.DBU_DETECT_BY_SQL,
1989 DBFUS_SPFILE_STR,
1990 'The server parameter file (SPFILE) was used to startup the database.');
1991 end;
1992
1993 /**********************
1994 * Shared Server
1995 **********************/
1996
2000 'where name = ''shared_servers'' and value != ''0'' and ' ||
1997 declare
1998 DBFUS_MTS_STR CONSTANT VARCHAR2(1000) :=
1999 'select count(*), NULL, NULL from v$system_parameter ' ||
2001 'exists (select 1 from v$shared_server where requests > 0)';
2002
2003 begin
2004 dbms_feature_usage.register_db_feature
2005 ('Shared Server',
2006 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2007 NULL,
2008 dbms_feature_usage.DBU_DETECT_BY_SQL,
2009 DBFUS_MTS_STR,
2010 'The database is configured as Shared Server, where one server ' ||
2011 'process can service multiple client programs.');
2012 end;
2013
2014 /**********************************************
2015 * Database Resident Connection Pooling (DRCP)
2016 **********************************************/
2017
2018 declare
2019 DBFUS_DRCP_STR CONSTANT VARCHAR2(1000) :=
2020 'select count(maxsize), nvl(sum(maxsize),0), NULL from dba_cpool_info '||
2021 'where status=''ACTIVE''';
2022
2023 begin
2024 dbms_feature_usage.register_db_feature
2025 ('Database Resident Connection Pooling (DRCP)',
2026 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2027 NULL,
2028 dbms_feature_usage.DBU_DETECT_BY_SQL,
2029 DBFUS_DRCP_STR,
2030 'Active Database Resident Connection Pool has been detected');
2031 end;
2032
2033 /**********************
2034 * Spatial
2035 If Spatial is installed then the second query returns 1;
2036 else it returns 0. So use that to multiply the metadata count
2037 to get only the Spatial install usage and not the Locator install
2038 usage.
2039 **********************/
2040
2041 declare
2042 DBFUS_SPATIAL_STR CONSTANT VARCHAR2(1000) :=
2043 'select atc*ix, atc*ix, NULL from ' ||
2044 '(select count(*) atc ' ||
2045 'from mdsys.sdo_feature_usage '||
2046 'where used = ''Y'' and ' ||
2047 'feature_name in (''3D_FUNCTIONS'', ''AGGREGATES'', ''CSW'', ' ||
2048 ' ''GEOCODER'', ''GEORASTER'', ''LRS'', ''NDM'', ''OPEN_LS'', ' ||
2049 ' ''POINTCLOUD'', ''RELATE'', ''ROUTER'', ''SAM'', ''TIN'', ' ||
2050 ' ''TOPOLOGY'', ''UNION_INTERSECTION'', ''WFS'')), ' ||
2051 '(select count(*) ix ' ||
2052 'from dba_registry where comp_id = ''SDO'')';
2053
2054 begin
2055 dbms_feature_usage.register_db_feature
2056 ('Spatial',
2057 dbms_feature_usage.DBU_INST_OBJECT,
2058 'MDSYS.all_sdo_index_metadata',
2059 dbms_feature_usage.DBU_DETECT_BY_SQL,
2060 DBFUS_SPATIAL_STR,
2061 'There is at least one usage of the Oracle Spatial feature usage table.');
2062 end;
2063
2064 /**********************
2065 * Locator
2066 If Locator is installed then the second query returns 1;
2067 else it returns 0. So use that to multiply the metadata count
2068 to get only the Locator install usage and not the Spatial install
2069 usage.
2070 **********************/
2071
2072 declare
2073 DBFUS_LOCATOR_STR CONSTANT VARCHAR2(1000) :=
2074 'select atc*six, atc*six, NULL from ' ||
2075 '(select count(*) atc ' ||
2076 'from mdsys.sdo_feature_usage '||
2077 'where used = ''Y'' and ' ||
2078 'feature_name not in (''3D_FUNCTIONS'', ''AGGREGATES'', ''CSW'', ' ||
2079 ' ''GEOCODER'', ''GEORASTER'', ''LRS'', ''NDM'', ''OPEN_LS'', ' ||
2080 ' ''POINTCLOUD'', ''RELATE'', ''ROUTER'', ''SAM'', ''TIN'', ' ||
2081 ' ''TOPOLOGY'', ''UNION_INTERSECTION'', ''WFS'')), ' ||
2082 ' ( select decode(sx-ix, -1, 0, 0, 0, 1) six from ( ' ||
2083 ' select count(*) sx from dba_registry where comp_id = ''ORDIM''), '||
2084 ' ( select count(*) ix from dba_registry where comp_id = ''SDO'')) ';
2085
2086 begin
2087 dbms_feature_usage.register_db_feature
2088 ('Locator',
2089 dbms_feature_usage.DBU_INST_OBJECT,
2090 'MDSYS.sdo_geom_metadata_table',
2091 dbms_feature_usage.DBU_DETECT_BY_SQL,
2092 DBFUS_LOCATOR_STR,
2093 'There is at least one usage of the Oracle Locator feature usage table.');
2094 end;
2095
2096
2097 /***********************************************************************
2098 * All advisors using the advisor framework. This includes all advisors
2099 * listed in DBA_ADVISOR_DEFINITIONS and DBA_ADVISOR_USAGE views.
2100 ************************************************************************/
2101 /* FIXME: Mike would like to use a pl/sql procedure instead of a query */
2102 declare
2103 dbu_detect_sql VARCHAR2(32767);
2104 begin
2105 FOR adv_rec IN (SELECT advisor_name, advisor_id
2106 FROM dba_advisor_definitions
2107 WHERE bitand(property, 64) != 64
2108 ORDER BY advisor_id)
2109 LOOP
2110 -- build the query that will be executed to track an advisor usage
2111
2112 -- clob column FEATURE_INFO will contain XML for advisor framework-
2113 -- level info, with advisor extra info sitting beneath the framework
2114 -- tag
2115 IF (adv_rec.advisor_name = 'ADDM') THEN
2116 dbu_detect_sql := ', xmltype(prvt_hdm.db_feature_clob) ';
2117 ELSE
2118 dbu_detect_sql := '';
2122 ' xmlelement("advisor_usage",
2119 END IF;
2120
2121 dbu_detect_sql :=
2123 xmlelement("reports",
2124 xmlelement("first_report_time",
2125 to_char(first_report_time,
2126 ''dd-mon-yyyy hh24:mi:ss'')),
2127 xmlelement("last_report_time",
2128 to_char(last_report_time,
2129 ''dd-mon-yyyy hh24:mi:ss'')),
2130 xmlelement("num_db_reports", num_db_reports))
2131 ' || dbu_detect_sql || ').getClobVal(2,2) ';
2132
2133 -- used: 1 if advisor executed since last sample
2134 -- sofar_exec: total # of executions since db create
2135 -- dbf_clob: reporting, plus advisor-specific stuff
2136 dbu_detect_sql :=
2137 'SELECT used, sofar_exec, dbf_clob FROM
2138 (SELECT num_execs sofar_exec, ' || dbu_detect_sql || ' dbf_clob
2139 FROM dba_advisor_usage u
2140 WHERE u.advisor_name = ''' || adv_rec.advisor_name || '''), ' ||
2141 '(SELECT count(*) used
2142 FROM dba_advisor_usage u
2143 WHERE u.advisor_name = ''' || adv_rec.advisor_name || ''' AND
2144 (u.num_execs > 0 or u.num_db_reports > 0) and
2145 greatest(nvl(u.last_exec_time, sysdate - 1000),
2146 nvl(u.last_report_time, sysdate - 1000)) >=
2147 ' || DBFUS_LAST_SAMPLE_DATE_STR || ')';
2148
2149 -- register the current advisor
2150 dbms_feature_usage.register_db_feature
2151 (adv_rec.advisor_name,
2152 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2153 NULL,
2154 dbms_feature_usage.DBU_DETECT_BY_SQL,
2155 dbu_detect_sql,
2156 adv_rec.advisor_name || ' has been used.');
2157 END LOOP;
2158 end;
2159
2160 /******************************
2161 * Real-Time SQL Monitoring
2162 ******************************/
2163 declare
2164 dbu_detect_sql VARCHAR2(32767);
2165 begin
2166 -- used: 1 if db report for monitoring details requested since
2167 -- last sample (list report is not tracked)
2168 -- sofar_exec: total # of db reports requested since db creation
2169 -- dbf_clob: extra XML info
2170 dbu_detect_sql :=
2171 'SELECT used, sofar_exec, dbf_clob
2172 FROM (SELECT count(*) used
2173 FROM dba_sql_monitor_usage
2174 WHERE num_db_reports > 0 AND
2175 last_db_report_time >= ' || DBFUS_LAST_SAMPLE_DATE_STR
2176 || '),
2177 (SELECT num_db_reports sofar_exec,
2178 xmlelement("sqlmon_usage",
2179 xmlelement("num_em_reports", num_em_reports),
2180 xmlelement("first_db_report_time",
2181 to_char(first_db_report_time,
2182 ''dd-mon-yyyy hh24:mi:ss'')),
2183 xmlelement("last_db_report_time",
2184 to_char(last_db_report_time,
2185 ''dd-mon-yyyy hh24:mi:ss'')),
2186 xmlelement("first_em_report_time",
2187 to_char(first_em_report_time,
2188 ''dd-mon-yyyy hh24:mi:ss'')),
2189 xmlelement("last_em_report_time",
2190 to_char(last_em_report_time,
2191 ''dd-mon-yyyy hh24:mi:ss''))
2192 ).getClobVal(2,2) dbf_clob
2193 FROM dba_sql_monitor_usage)';
2194
2195 -- register the feature
2196 dbms_feature_usage.register_db_feature
2197 ('Real-Time SQL Monitoring',
2198 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2199 NULL,
2200 dbms_feature_usage.DBU_DETECT_BY_SQL,
2201 dbu_detect_sql,
2202 'Real-Time SQL Monitoring Usage.');
2203 end;
2204
2205
2206 /******************************
2207 * SQL Tuning Set
2208 ******************************/
2209 declare
2210 -- A 'user' SQL Tuning Set is one not owned by SYS, and a 'system' SQL
2211 -- Tuning Set is one that is owned by SYS. This will cover the $$ STSes
2212 -- that Access Advisor creates, and users do not use EM as SYS, so it should
2213 -- be good enough for now.
2214 DBFUS_USER_SQL_TUNING_SET_STR CONSTANT VARCHAR2(1000) :=
2215 'select numss, numref, NULL from ' ||
2216 '(select count(*) numss ' ||
2217 ' from wri$_sqlset_definitions ' ||
2218 ' where owner <> ''SYS''), ' ||
2219 '(select count(*) numref ' ||
2220 ' from wri$_sqlset_references r, wri$_sqlset_definitions d ' ||
2221 ' where d.id = r.sqlset_id and d.owner <> ''SYS'')';
2222
2223 DBFUS_SYS_SQL_TUNING_SET_STR CONSTANT VARCHAR2(1000) :=
2224 'select numss, numref, NULL from ' ||
2225 '(select count(*) numss ' ||
2226 ' from wri$_sqlset_definitions ' ||
2227 ' where owner = ''SYS''), ' ||
2228 '(select count(*) numref ' ||
2229 ' from wri$_sqlset_references r, wri$_sqlset_definitions d ' ||
2233 ('SQL Tuning Set (user)',
2230 ' where d.id = r.sqlset_id and d.owner = ''SYS'')';
2231 begin
2232 dbms_feature_usage.register_db_feature
2234 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2235 NULL,
2236 dbms_feature_usage.DBU_DETECT_BY_SQL,
2237 DBFUS_USER_SQL_TUNING_SET_STR,
2238 'A SQL Tuning Set has been created in the database in a user schema.');
2239
2240
2241 dbms_feature_usage.register_db_feature
2242 ('SQL Tuning Set (system)',
2243 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2244 NULL,
2245 dbms_feature_usage.DBU_DETECT_BY_SQL,
2246 DBFUS_SYS_SQL_TUNING_SET_STR,
2247 'A SQL Tuning Set has been created in the database in the SYS schema.');
2248 end;
2249
2250 /******************************
2251 * Automatic SQL Tuning Advisor
2252 ******************************/
2253 declare
2254 DBFUS_AUTOSTA_PROC VARCHAR2(100) := 'DBMS_FEATURE_AUTOSTA';
2255 begin
2256 dbms_feature_usage.register_db_feature
2257 ('Automatic SQL Tuning Advisor',
2258 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2259 NULL,
2260 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2261 DBFUS_AUTOSTA_PROC,
2262 'Automatic SQL Tuning Advisor has been used.');
2263 end;
2264
2265 /******************************
2266 * SQL Profiles
2267 ******************************/
2268 /* FIXME: Mike would like to use a pl/sql procedure instead of a query */
2269 declare
2270 DBFUS_SQLPROFILE_STR CONSTANT VARCHAR2(32767) :=
2271 q'#SELECT used,
2272 prof_count,
2273 profs || ', ' || manual || ', ' || auto || ', ' ||
2274 enabl || ', ' || cat as details
2275 FROM (SELECT sum(decode(status, 'ENABLED', 1, 0)) used,
2276 sum(1) prof_count,
2277 'Total so far: ' || sum(1) profs,
2278 'Enabled: ' || sum(decode(status, 'ENABLED', 1, 0)) enabl,
2279 'Manual: ' || sum(decode(type, 'MANUAL', 1, 0)) manual,
2280 'Auto: ' || sum(decode(type, 'AUTO', 1, 0)) auto,
2281 'Category count: ' || count(unique category) cat
2282 FROM dba_sql_profiles)#';
2283 begin
2284 dbms_feature_usage.register_db_feature
2285 ('SQL Profile',
2286 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2287 NULL,
2288 dbms_feature_usage.DBU_DETECT_BY_SQL,
2289 DBFUS_SQLPROFILE_STR,
2290 'SQL profiles have been used.');
2291 end;
2292
2293 /************************************************
2294 * Database Replay: Workload Capture and Replay *
2295 ************************************************/
2296 declare
2297 prev_sample_count NUMBER;
2298 prev_sample_date NUMBER;
2299
2300 DBFUS_WCR_CAPTURE_PROC VARCHAR2(1000) := 'DBMS_FEATURE_WCR_CAPTURE';
2301 DBFUS_WCR_REPLAY_PROC VARCHAR2(1000) := 'DBMS_FEATURE_WCR_REPLAY';
2302 begin
2303 dbms_feature_usage.register_db_feature
2304 ('Database Replay: Workload Capture',
2305 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2306 NULL,
2307 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2308 DBFUS_WCR_CAPTURE_PROC,
2309 'Database Replay: Workload was ever captured.');
2310
2311 dbms_feature_usage.register_db_feature
2312 ('Database Replay: Workload Replay',
2313 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2314 NULL,
2315 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2316 DBFUS_WCR_REPLAY_PROC,
2317 'Database Replay: Workload was ever replayed.');
2318 end;
2319
2320 /**********************
2321 * Streams (system)
2322 **********************/
2323
2324 declare
2325 DBFUS_STREAMS_SYS_PROC CONSTANT VARCHAR2(1000) :=
2326 'dbms_feature_streams';
2327
2328 begin
2329 dbms_feature_usage.register_db_feature
2330 ('Streams (system)',
2331 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2332 NULL,
2333 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2334 DBFUS_STREAMS_SYS_PROC,
2335 'Oracle Streams processes have been configured');
2336 end;
2337
2338 /**********************
2339 * Streams (user)
2340 **********************/
2341
2342 declare
2343 DBFUS_STREAMS_USER_STR CONSTANT VARCHAR2(1000) :=
2344 -- for AQ, there are default queues in the sys, system, ix,
2345 -- wmsys, sysman, and gsmdamin_internal
2346 -- schemas which we do not want to count towards Streams user feature usage
2347 -- for Streams messaging these consumers are in db by default
2348 'select decode(strmsg + aq, 0, 0, 1), 0, NULL from ' ||
2349 '(select decode(count(*), 0, 0, 1) strmsg ' ||
2350 ' from dba_streams_message_consumers ' ||
2351 ' where streams_name != ''SCHEDULER_COORDINATOR'' and ' ||
2352 ' streams_name != ''SCHEDULER_PICKUP''),' ||
2353 '(select decode (count(*), 0, 0, 1) aq ' ||
2354 ' from system.aq$_queue_tables where schema not in ' ||
2355 ' (''SYS'', ''SYSTEM'', ''IX'', ''WMSYS'', ''SYSMAN'', ' ||
2356 '''GSMADMIN_INTERNAL''))';
2357
2358 begin
2359 dbms_feature_usage.register_db_feature
2360 ('Streams (user)',
2364 DBFUS_STREAMS_USER_STR,
2361 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2362 NULL,
2363 dbms_feature_usage.DBU_DETECT_BY_SQL,
2365 'Users have configured Oracle Streams AQ');
2366 end;
2367
2368 /**********************
2369 * XStream In
2370 **********************/
2371
2372 declare
2373 DBFUS_XSTREAM_IN_PROC CONSTANT VARCHAR2(1000) :=
2374 'dbms_feature_xstream_in';
2375
2376 begin
2377 dbms_feature_usage.register_db_feature
2378 ('XStream In',
2379 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2380 NULL,
2381 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2382 DBFUS_XSTREAM_IN_PROC,
2383 'Oracle XStream Inbound servers have been configured');
2384 end;
2385
2386 /**********************
2387 * XStream Out
2388 **********************/
2389
2390 declare
2391 DBFUS_XSTREAM_OUT_PROC CONSTANT VARCHAR2(1000) :=
2392 'dbms_feature_xstream_out';
2393
2394 begin
2395 dbms_feature_usage.register_db_feature
2396 ('XStream Out',
2397 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2398 NULL,
2399 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2400 DBFUS_XSTREAM_OUT_PROC,
2401 'Oracle XStream Outbound servers have been configured');
2402 end;
2403
2404 /**********************
2405 * XStream Streams
2406 **********************/
2407
2408 declare
2409 DBFUS_XSTREAM_STREAMS_PROC CONSTANT VARCHAR2(1000) :=
2410 'dbms_feature_xstream_streams';
2411
2412 begin
2413 dbms_feature_usage.register_db_feature
2414 ('XStream Streams',
2415 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2416 NULL,
2417 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2418 DBFUS_XSTREAM_STREAMS_PROC,
2419 'Oracle Streams with XStream functionality has been configured');
2420 end;
2421
2422 /**********************
2423 * GoldenGate
2424 **********************/
2425
2426 declare
2427 DBFUS_GOLDENGATE_PROC CONSTANT VARCHAR2(1000) :=
2428 'dbms_feature_goldengate';
2429
2430 begin
2431 dbms_feature_usage.register_db_feature
2432 ('GoldenGate',
2433 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2434 NULL,
2435 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2436 DBFUS_GOLDENGATE_PROC,
2437 'Oracle GoldenGate Capabilities are in use.');
2438 end;
2439
2440 /**********************
2441 * Transparent Gateway
2442 **********************/
2443
2444 declare
2445 DBFUS_GATEWAYS_STR CONSTANT VARCHAR2(1000) :=
2446 'select count(*), NULL, NULL from hs_fds_class_date ' ||
2447 'where fds_class_name != ''BITE''';
2448
2449 begin
2450 dbms_feature_usage.register_db_feature
2451 ('Transparent Gateway',
2452 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2453 NULL,
2454 dbms_feature_usage.DBU_DETECT_BY_SQL,
2455 DBFUS_GATEWAYS_STR,
2456 'Heterogeneous Connectivity, access to a non-Oracle system, has ' ||
2457 'been configured.');
2458 end;
2459
2460 /***************************
2461 * Virtual Private Database
2462 ***************************/
2463
2464 declare
2465 DBFUS_VPD_STR CONSTANT VARCHAR2(1000) :=
2466 'select count(*), NULL, NULL from DBA_POLICIES where OBJECT_OWNER ' ||
2467 'NOT IN (''SYSMAN'',''MDSYS'',''SYSMAN_MDS'',''XDB'',''CTXSYS'',' ||
2468 '''OE'',''LBACSYS'', ''GSMADMIN_INTERNAL'', ''SYSTEM'')';
2469
2470 begin
2471 dbms_feature_usage.register_db_feature
2472 ('Virtual Private Database (VPD)',
2473 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2474 NULL,
2475 dbms_feature_usage.DBU_DETECT_BY_SQL,
2476 DBFUS_VPD_STR,
2477 'Virtual Private Database (VPD) policies are being used.');
2478 end;
2479
2480 /**********************
2481 * Workspace Manager
2482 **********************/
2483
2484 declare
2485 DBFUS_OWM_STR CONSTANT VARCHAR2(1000) :=
2486 'select count(*), count(*), NULL ' ||
2487 'from wmsys.wm$versioned_tables';
2488
2489 begin
2490 dbms_feature_usage.register_db_feature
2491 ('Workspace Manager',
2492 dbms_feature_usage.DBU_INST_OBJECT,
2493 'WMSYS.wm$versioned_tables',
2494 dbms_feature_usage.DBU_DETECT_BY_SQL,
2495 DBFUS_OWM_STR,
2496 'There is at least one version enabled table.');
2497 end;
2498
2499 /**************************
2500 * XDB
2501 **************************/
2502
2503 begin
2504 dbms_feature_usage.register_db_feature
2505 ('XDB',
2506 dbms_feature_usage.DBU_INST_OBJECT,
2507 'XDB.Resource_View',
2508 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2509 'DBMS_FEATURE_XDB',
2510 'XDB feature is being used.');
2511 end;
2512
2513 /*****************************
2514 * JSON
2515 *****************************/
2516
2517 begin
2518 dbms_feature_usage.register_db_feature
2519 ('JSON',
2523 'DBMS_FEATURE_JSON',
2520 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2521 NULL,
2522 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2524 'JSON feature is being used.');
2525 end;
2526
2527 /*****************************
2528 * Application Express (APEX)
2529 *****************************/
2530 begin
2531 dbms_feature_usage.register_db_feature
2532 ( 'Application Express',
2533 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2534 NULL,
2535 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2536 'DBMS_FEATURE_APEX',
2537 'Application Express feature is being used.');
2538 end;
2539
2540 /***************************
2541 * LOB
2542 ***************************/
2543
2544 declare
2545 DBMS_FEATURE_LOB CONSTANT VARCHAR2(1000) :=
2546 'select count(*), NULL, NULL from sys.lob$ l, sys.obj$ o, sys.user$ u ' ||
2547 'where l.obj# = o.obj# ' ||
2548 'and o.owner# = u.user# ' ||
2549 'and u.name not in (select schema_name from v$sysaux_occupants) ' ||
2550 'and u.name not in (''OUTLN'', ''OE'', ''IX'', ''PM'', ''SH'',
2551 ''OJVMSYS'', ''DVSYS'', ''GSMADMIN_INTERNAL'') ' ||
2552 'and u.name not like ''APEX_% '' ' ||
2553 'and u.name not like ''FLOWS_%''';
2554
2555 begin
2556 dbms_feature_usage.register_db_feature
2557 ('LOB',
2558 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2559 NULL,
2560 dbms_feature_usage.DBU_DETECT_BY_SQL,
2561 DBMS_FEATURE_LOB,
2562 'Persistent LOBs are being used.');
2563 end;
2564
2565 /***************************
2566 * OBJECT
2567 ***************************/
2568
2569 begin
2570 dbms_feature_usage.register_db_feature
2571 ('Object',
2572 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2573 NULL,
2574 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2575 'DBMS_FEATURE_OBJECT',
2576 'Object feature is being used.');
2577 end;
2578
2579 /***************************
2580 * EXTENSIBILITY
2581 ***************************/
2582
2583 begin
2584 dbms_feature_usage.register_db_feature
2585 ('Extensibility',
2586 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2587 NULL,
2588 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2589 'DBMS_FEATURE_EXTENSIBILITY',
2590 'Extensibility feature is being used.');
2591 end;
2592
2593 /******************************
2594 * SQL Plan Management
2595 ******************************/
2596
2597 declare
2598 DBFUS_SQL_PLAN_MANAGEMENT_STR CONSTANT VARCHAR2(2000) :=
2599 q'#SELECT nvl(total_count, 0) total_count,
2600 nvl(enabled_count, 0) enabled_count,
2601 decode(total_count, null, null,
2602 0, null,
2603 (manual_load || ', ' ||
2604 auto_capture || ', ' ||
2605 manual_sqltune || ', ' ||
2606 auto_sqltune || ', ' ||
2607 stored_outline || ', ' ||
2608 evolve_advisor || ', ' ||
2609 accepted_count || ', ' ||
2610 fixed_count || ', ' ||
2611 reproduced_count)) as details
2612 FROM (SELECT
2613 sum(1) total_count,
2614 sum(decode(enabled, 'YES', 1, 0)) enabled_count,
2615 'Manual-load: ' ||
2616 sum(decode(origin, 'MANUAL-LOAD', 1, 0)) manual_load,
2617 'Auto-capture: ' ||
2618 sum(decode(origin, 'AUTO-CAPTURE', 1, 0)) auto_capture,
2619 'Manual-sqltune: ' ||
2620 sum(decode(origin, 'MANUAL-SQLTUNE', 1, 0)) manual_sqltune,
2621 'Auto-sqltune: ' ||
2622 sum(decode(origin, 'AUTO-SQLTUNE', 1, 0)) auto_sqltune,
2623 'Stored-outline: ' ||
2624 sum(decode(origin, 'STORED-OUTLINE', 1, 0)) stored_outline,
2625 'Evolve-advisor: ' ||
2626 sum(decode(origin, 'EVOLVE-ADVISOR', 1, 0)) evolve_advisor,
2627 'Accepted: ' ||
2628 sum(decode(accepted, 'YES', 1, 0)) accepted_count,
2629 'Fixed: ' ||
2630 sum(decode(fixed, 'YES', 1, 0)) fixed_count,
2631 'Reproduced: ' ||
2632 sum(decode(reproduced, 'YES', 1, 0)) reproduced_count
2633 FROM dba_sql_plan_baselines)#';
2634 begin
2635 dbms_feature_usage.register_db_feature
2636 ('SQL Plan Management',
2637 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2638 NULL,
2639 dbms_feature_usage.DBU_DETECT_BY_SQL,
2640 DBFUS_SQL_PLAN_MANAGEMENT_STR,
2641 'SQL Plan Management has been used.');
2642 end;
2643
2644 /******************************
2645 * DBMS_FEATURE_ADAPTIVE_PLANS
2646 ******************************/
2647 begin
2648 dbms_feature_usage.register_db_feature
2649 ('Adaptive Plans',
2650 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2654 'Adaptive Plans have been used');
2651 NULL,
2652 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2653 'DBMS_FEATURE_ADAPTIVE_PLANS',
2655 end;
2656
2657 /**********************************
2658 * DBMS_FEATURE_AUTO_REOPT
2659 **********************************/
2660 begin
2661 dbms_feature_usage.register_db_feature
2662 ('Automatic Reoptimization',
2663 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2664 NULL,
2665 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2666 'DBMS_FEATURE_AUTO_REOPT',
2667 'Automatic Reoptimization have been used');
2668 end;
2669
2670 begin
2671 dbms_feature_usage.register_db_feature
2672 ('SQL Plan Directive',
2673 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2674 NULL,
2675 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2676 'DBMS_FEATURE_SPD',
2677 'Sql plan directive has been used');
2678 end;
2679
2680 /******************************
2681 * DBMS_FEATURE_STATS_CONCURRENT
2682 ******************************/
2683 begin
2684 dbms_feature_usage.register_db_feature
2685 ('Concurrent Statistics Gathering',
2686 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2687 NULL,
2688 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2689 'DBMS_FEATURE_CONCURRENT_STATS',
2690 'Concurrent Statistics Gathering has been used');
2691 end;
2692
2693 /******************************
2694 * DBMS_FEATURE_STATS_INCREMENTAL
2695 ******************************/
2696 begin
2697 dbms_feature_usage.register_db_feature
2698 ('DBMS_STATS Incremental Maintenance',
2699 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2700 NULL,
2701 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2702 'DBMS_FEATURE_STATS_INCREMENTAL',
2703 'DBMS_STATS Incremental Maintenance has been used.');
2704 end;
2705
2706
2707 /***************************
2708 * RULES MANAGER and EXPRESSION FILTER
2709 ***************************/
2710 begin
2711 dbms_feature_usage.register_db_feature
2712 ('Rules Manager',
2713 dbms_feature_usage.DBU_INST_OBJECT,
2714 'EXFSYS.exf$attrset',
2715 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2716 'DBMS_FEATURE_RULESMANAGER',
2717 'Rules Manager and Expression Filter');
2718 end;
2719
2720 /***************************************************************
2721 * DATABASE UTILITY: ORACLE DATAPUMP EXPORT
2722 ***************************************************************/
2723 declare
2724 begin
2725 dbms_feature_usage.register_db_feature
2726 ('Oracle Utility Datapump (Export)',
2727 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2728 NULL,
2729 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2730 'dbms_feature_utilities1',
2731 'Oracle Utility Datapump (Export) has been used.');
2732 end;
2733
2734 /***************************************************************
2735 * DATABASE UTILITY: ORACLE DATAPUMP IMPORT
2736 ***************************************************************/
2737 declare
2738 begin
2739 dbms_feature_usage.register_db_feature
2740 ('Oracle Utility Datapump (Import)',
2741 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2742 NULL,
2743 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2744 'dbms_feature_utilities2',
2745 'Oracle Utility Datapump (Import) has been used.');
2746 end;
2747
2748 /***************************************************************
2749 * DATABASE UTILITY: SQL*LOADER (DIRECT PATH LOAD)
2750 ***************************************************************/
2751 declare
2752 DBFUS_UTL_SQLLOADER_STR CONSTANT VARCHAR2(1000) :=
2753 'select usecnt, NULL, NULL from sys.ku_utluse ' ||
2754 ' where utlname = ''Oracle Utility SQL Loader (Direct Path Load)'' ' ||
2755 ' and (last_used >= ' ||
2756 ' (SELECT nvl(max(last_sample_date), sysdate-7) ' ||
2757 ' FROM dba_feature_usage_statistics))';
2758
2759 begin
2760 dbms_feature_usage.register_db_feature
2761 ('Oracle Utility SQL Loader (Direct Path Load)',
2762 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2763 NULL,
2764 dbms_feature_usage.DBU_DETECT_BY_SQL,
2765 DBFUS_UTL_SQLLOADER_STR,
2766 'Oracle Utility SQL Loader (Direct Path Load) has been used.');
2767 end;
2768
2769 /***************************************************************
2770 * DATABASE UTILITY: METADATA API
2771 ***************************************************************/
2772 declare
2773 begin
2774 dbms_feature_usage.register_db_feature
2775 ('Oracle Utility Metadata API',
2776 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2777 NULL,
2778 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2779 'dbms_feature_utilities3',
2780 'Oracle Utility (Metadata API) has been used.');
2781 end;
2782
2783 /***************************************************************
2784 * DATABASE UTILITY: EXTERNAL TABLE
2788 dbms_feature_usage.register_db_feature
2785 ***************************************************************/
2786 declare
2787 begin
2789 ('Oracle Utility External Table',
2790 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2791 NULL,
2792 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2793 'dbms_feature_utilities4',
2794 'Oracle Utility External Table has been used.');
2795 end;
2796
2797 /***************************************************************
2798 * RESULT CACHE
2799 ***************************************************************/
2800 declare
2801 DBFUS_RESULT_CACHE_STR CONSTANT VARCHAR2(1000) :=
2802 'select (select value from v$result_cache_statistics ' ||
2803 ' where name = ''Block Count Current''), ' ||
2804 ' (select value from v$result_cache_statistics ' ||
2805 ' where name = ''Find Count''), null ' ||
2806 'from dual';
2807
2808 begin
2809 dbms_feature_usage.register_db_feature
2810 ('Result Cache',
2811 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2812 NULL,
2813 dbms_feature_usage.DBU_DETECT_BY_SQL,
2814 DBFUS_RESULT_CACHE_STR,
2815 'The Result Cache feature has been used.');
2816 end;
2817
2818 /**************************************
2819 * TDE - Transparent Data Encryption
2820 **************************************/
2821
2822 declare
2823 DBFUS_TDE_STR CONSTANT VARCHAR2(1000) :=
2824 'SELECT (T1.A + T2.B) IsFeatureUsed, ' ||
2825 '(T1.A + T2.B) AUX_COUNT, ' ||
2826 '''Encryption TABLESPACE Count = '' || T1.A || '','||
2827 'Encryption COLUMN Count = '' || T2.B REMARK ' ||
2828 'FROM (SELECT count(*) A FROM DBA_TABLESPACES WHERE ' ||
2829 ' UPPER(ENCRYPTED) = ''YES'') T1, ' ||
2830 '(SELECT count(*) B FROM DBA_ENCRYPTED_COLUMNS) T2 ' ;
2831 begin
2832 dbms_feature_usage.register_db_feature
2833 ('Transparent Data Encryption',
2834 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2835 NULL,
2836 dbms_feature_usage.DBU_DETECT_BY_SQL,
2837 DBFUS_TDE_STR,
2838 'Transparent Database Encryption is being used. There is' ||
2839 ' atleast one column or tablespace that is encrypted.');
2840 end;
2841
2842 /*******************
2843 * Data Redaction
2844 *******************/
2845
2846 /* Bug# 13888340: Data redaction feature usage tracking
2847 * Related test files are tmfudru.tsc and tmfudr.tsc.
2848 */
2849 begin
2850 dbms_feature_usage.register_db_feature
2851 ('Data Redaction',
2852 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2853 NULL,
2854 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2855 'DBMS_FEATURE_DATA_REDACTION',
2856 'Data redaction is being used. There is' ||
2857 ' at least one policy that is defined.');
2858 end;
2859
2860 /**********************
2861 * Oracle Multimedia
2862 **********************/
2863
2864 declare
2865 DBFUS_MULTIMEDIA_STR CONSTANT VARCHAR2(1000) :=
2866 'ordsys.CARTRIDGE.dbms_feature_multimedia';
2867
2868 begin
2869 dbms_feature_usage.register_db_feature
2870 ('Oracle Multimedia',
2871 dbms_feature_usage.DBU_INST_OBJECT,
2872 'ORDSYS.ORDIMERRORCODES',
2873 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2874 DBFUS_MULTIMEDIA_STR,
2875 'Oracle Multimedia has been used');
2876 end;
2877
2878 /*****************************************************************
2879 * Oracle Multimedia DICOM: medical imaging
2880 * DICOM stands for Digital Imaging and COmmunications in Medicine
2881 *****************************************************************/
2882
2883 declare
2884 DBFUS_DICOM_STR CONSTANT VARCHAR2(1000) :=
2885 'ordsys.CARTRIDGE.dbms_feature_dicom';
2886
2887 begin
2888 dbms_feature_usage.register_db_feature
2889 ('Oracle Multimedia DICOM',
2890 dbms_feature_usage.DBU_INST_OBJECT,
2891 'ORDSYS.ORDDICOM',
2892 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2893 DBFUS_DICOM_STR,
2894 'Oracle Multimedia DICOM (Digital Imaging and COmmunications in Medicine) has been used');
2895 end;
2896
2897 /****************************
2898 * Materialized Views (User)
2899 ****************************/
2900
2901 declare
2902 DBFUS_USER_MVS CONSTANT VARCHAR2(1000) := 'DBMS_FEATURE_USER_MVS';
2903
2904 begin
2905 dbms_feature_usage.register_db_feature
2906 ('Materialized Views (User)',
2907 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2908 NULL,
2909 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2910 DBFUS_USER_MVS,
2911 'User Materialized Views exist in the database');
2912 end;
2913
2914 /***************************
2915 * Change Data Capture (CDC)
2916 ***************************/
2917 begin
2918 dbms_feature_usage.register_db_feature
2919 ('Change Data Capture',
2920 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2921 NULL,
2922 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2923 'DBMS_FEATURE_CDC',
2927 /********************************
2924 'Change Data Capture exit in the database');
2925 end;
2926
2928 * Services
2929 *********************************/
2930 declare
2931 DBFUS_SERVICES_PROC CONSTANT VARCHAR2(1000) := 'DBMS_FEATURE_SERVICES';
2932 begin
2933 dbms_feature_usage.register_db_feature
2934 ('Services',
2935 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2936 NULL,
2937 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2938 DBFUS_SERVICES_PROC,
2939 'Oracle Services.');
2940 end;
2941
2942 /***********************
2943 * Semantics/RDF/OWL
2944 ***********************/
2945
2946 declare
2947 DBFUS_SEMANTICS_RDF_STR CONSTANT VARCHAR2(1000) :=
2948 'select cnt, cnt, null from ' ||
2949 ' (select count(*) cnt from mdsys.rdf_model$)';
2950
2951 begin
2952 dbms_feature_usage.register_db_feature
2953 ('Semantics/RDF',
2954 dbms_feature_usage.DBU_INST_OBJECT,
2955 'MDSYS.RDF_Models',
2956 dbms_feature_usage.DBU_DETECT_BY_SQL,
2957 DBFUS_SEMANTICS_RDF_STR,
2958 'A semantic network has been created indicating usage of the ' ||
2959 'Oracle Semantics Feature.');
2960 end;
2961
2962 /***********************
2963 * SecureFiles (user)
2964 ***********************/
2965
2966 begin
2967 dbms_feature_usage.register_db_feature
2968 ('SecureFiles (user)',
2969 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2970 NULL,
2971 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2972 'DBMS_FEATURE_SECUREFILES_USR',
2973 'SecureFiles is being used');
2974 end;
2975
2976 /***********************
2977 * SecureFiles (system)
2978 ***********************/
2979
2980 begin
2981 dbms_feature_usage.register_db_feature
2982 ('SecureFiles (system)',
2983 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2984 NULL,
2985 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
2986 'DBMS_FEATURE_SECUREFILES_SYS',
2987 'SecureFiles is being used by system users');
2988 end;
2989
2990 /*********************************
2991 * SecureFile Encryption (user)
2992 *********************************/
2993
2994 begin
2995 dbms_feature_usage.register_db_feature
2996 ('SecureFile Encryption (user)',
2997 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
2998 NULL,
2999 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3000 'DBMS_FEATURE_SFENCRYPT_USR',
3001 'SecureFile Encryption is being used');
3002 end;
3003
3004 /*********************************
3005 * SecureFile Encryption (system)
3006 *********************************/
3007
3008 begin
3009 dbms_feature_usage.register_db_feature
3010 ('SecureFile Encryption (system)',
3011 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3012 NULL,
3013 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3014 'DBMS_FEATURE_SFENCRYPT_SYS',
3015 'SecureFile Encryption is being used by system users');
3016 end;
3017
3018 /*********************************
3019 * SecureFile Compression (user)
3020 *********************************/
3021
3022 begin
3023 dbms_feature_usage.register_db_feature
3024 ('SecureFile Compression (user)',
3025 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3026 NULL,
3027 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3028 'DBMS_FEATURE_SFCOMPRESS_USR',
3029 'SecureFile Compression is being used');
3030 end;
3031
3032 /*********************************
3033 * SecureFile Compression (system)
3034 *********************************/
3035
3036 begin
3037 dbms_feature_usage.register_db_feature
3038 ('SecureFile Compression (system)',
3039 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3040 NULL,
3041 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3042 'DBMS_FEATURE_SFCOMPRESS_SYS',
3043 'SecureFile Compression is being used by system users');
3044 end;
3045
3046 /*********************************
3047 * SecureFile Deduplication (user)
3048 *********************************/
3049
3050 begin
3051 dbms_feature_usage.register_db_feature
3052 ('SecureFile Deduplication (user)',
3053 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3054 NULL,
3055 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3056 'DBMS_FEATURE_SFDEDUP_USR',
3057 'SecureFile Deduplication is being used');
3058 end;
3059
3060 /*********************************
3061 * SecureFile Deduplication (system)
3062 *********************************/
3063
3064 begin
3065 dbms_feature_usage.register_db_feature
3066 ('SecureFile Deduplication (system)',
3067 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3068 NULL,
3069 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3070 'DBMS_FEATURE_SFDEDUP_SYS',
3071 'SecureFile Deduplication is being used by system users');
3072 end;
3073
3074 /******************************
3078 declare
3075 * Segment Advisor
3076 ******************************/
3077
3079 DBFUS_SEGADV_USER_PROC CONSTANT VARCHAR2(100) := 'DBMS_FEATURE_SEGADV_USER';
3080 begin
3081 dbms_feature_usage.register_db_feature
3082 ('Segment Advisor (user)',
3083 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3084 NULL,
3085 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3086 DBFUS_SEGADV_USER_PROC,
3087 'Segment Advisor has been used. There is at least one user task executed.');
3088 end;
3089
3090 /***********************
3091 * Compression
3092 ***********************/
3093
3094 begin
3095 dbms_feature_usage.register_db_feature
3096 ('HeapCompression',
3097 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3098 NULL,
3099 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3100 'DBMS_FEATURE_ADV_TABCMP',
3101 'Heap Compression is being used');
3102 end;
3103
3104 /******************************
3105 * Advanced Index Compression
3106 *****************************/
3107 begin
3108 dbms_feature_usage.register_db_feature
3109 ('Advanced Index Compression',
3110 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3111 NULL,
3112 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3113 'DBMS_FEATURE_ADV_IDXCMP',
3114 'Advanced Index Compression is used');
3115 end;
3116
3117 /******************************
3118 * Index Organized Tables
3119 *****************************/
3120 begin
3121 dbms_feature_usage.register_db_feature
3122 ('Index Organized Tables',
3123 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3124 NULL,
3125 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3126 'DBMS_FEATURE_IOT',
3127 'Index Organized Tables are being used');
3128 end;
3129
3130 /******************************
3131 * In-Memory Column Store
3132 *****************************/
3133 begin
3134 dbms_feature_usage.register_db_feature
3135 ('In-Memory Column Store',
3136 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3137 NULL,
3138 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3139 'DBMS_FEATURE_IMC',
3140 'In-Memory Column Store is being used');
3141 end;
3142
3143
3144 /******************************
3145 * Hybrid Columnar Compression
3146 *****************************/
3147
3148 begin
3149 dbms_feature_usage.register_db_feature
3150 ('Hybrid Columnar Compression',
3151 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3152 NULL,
3153 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3154 'DBMS_FEATURE_HCC',
3155 'Hybrid Columnar Compression is used');
3156 end;
3157
3158 /************************************************
3159 * Hybrid Columnar Compression Row Level Locking
3160 **********************************************/
3161
3162 begin
3163 dbms_feature_usage.register_db_feature
3164 ('Hybrid Columnar Compression Row Level Locking',
3165 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3166 NULL,
3167 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3168 'DBMS_FEATURE_HCCRLL',
3169 'Hybrid Columnar Compression Row Level Locking is used');
3170 end;
3171
3172 /*****************************************
3173 * Information Lifecycle Management (ILM)
3174 ****************************************/
3175
3176 begin
3177 dbms_feature_usage.register_db_feature
3178 ('Information Lifecycle Management',
3179 dbms_feature_usage.DBU_INST_OBJECT,
3180 'SYS.ilm$',
3181 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3182 'DBMS_FEATURE_ILM',
3183 'Information Lifecycle Management is used');
3184 end;
3185
3186 /*****************************************
3187 * Heat Map
3188 ****************************************/
3189
3190 begin
3191 dbms_feature_usage.register_db_feature
3192 ('Heat Map',
3193 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3194 NULL,
3195 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3196 'DBMS_FEATURE_HEATMAP',
3197 'Heat Map is used');
3198 end;
3199
3200
3201 /******************************
3202 * ZFS Storage
3203 ******************************/
3204 begin
3205 dbms_feature_usage.register_db_feature
3206 ('ZFS Storage',
3207 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3208 NULL,
3209 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3210 'DBMS_FEATURE_ZFS_STORAGE',
3211 'Tablespaces stored on Oracles Sun ZFS Storage');
3212 end;
3213
3214 /******************************
3215 * Pillar Storage
3216 ******************************/
3217 begin
3218 dbms_feature_usage.register_db_feature
3219 ('Pillar Storage',
3220 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3221 NULL,
3222 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3223 'DBMS_FEATURE_PILLAR_STORAGE',
3224 'Tablespaces stored on Oracles Pillar Axiom Storage');
3225 end;
3226
3227 /******************************
3228 * ZFS Storage + EHCC
3232 ('Sun ZFS with EHCC',
3229 *****************************/
3230 begin
3231 dbms_feature_usage.register_db_feature
3233 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3234 NULL,
3235 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3236 'DBMS_FEATURE_ZFS_EHCC',
3237 'EHCC used on tablespaces stored on Oracles Sun ZFS Storage');
3238 end;
3239
3240 /******************************
3241 * Pillar Storage + EHCC
3242 *****************************/
3243 begin
3244 dbms_feature_usage.register_db_feature
3245 ('Pillar Storage with EHCC',
3246 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3247 NULL,
3248 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3249 'DBMS_FEATURE_PILLAR_EHCC',
3250 'EHCC used on tablespaces stored on Oracles Pillar Axiom Storage');
3251 end;
3252
3253 /******************************
3254 * Segment Shrink
3255 ******************************/
3256
3257 declare
3258 DBFUS_SEG_SHRINK_STR CONSTANT VARCHAR2(1000) :=
3259 'select count(*), 0, null ' ||
3260 'from sys.seg$ s ' ||
3261 'where s.scanhint != 0 and ' ||
3262 'bitand(s.spare1, 65793) = 257 and ' ||
3263 's.type# in (5, 6,8) ';
3264 begin
3265 dbms_feature_usage.register_db_feature
3266 ('Segment Shrink',
3267 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3268 NULL,
3269 dbms_feature_usage.DBU_DETECT_BY_SQL,
3270 DBFUS_SEG_SHRINK_STR,
3271 'Segment Shrink has been used.');
3272 end;
3273
3274 /***************************
3275 * Job Scheduler
3276 ***************************/
3277
3278 begin
3279 dbms_feature_usage.register_db_feature
3280 ('Job Scheduler',
3281 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3282 NULL,
3283 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3284 'DBMS_FEATURE_JOB_SCHEDULER',
3285 'Job Scheduler feature is being used.');
3286 end;
3287
3288 /***************************
3289 * Orcle Gateways
3290 ***************************/
3291
3292 begin
3293 dbms_feature_usage.register_db_feature
3294 ('Gateways',
3295 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3296 NULL,
3297 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3298 'DBMS_FEATURE_GATEWAYS',
3299 'Gateways feature is being used.');
3300 end;
3301
3302 /*******************************
3303 * Java Virtual Machine (user)
3304 *******************************/
3305
3306 declare
3307 DBFUS_OJVM_STR CONSTANT VARCHAR2(1000) :=
3308 'sys.dbms_java.dbms_feature_ojvm';
3309
3310 begin
3311 dbms_feature_usage.register_db_feature
3312 ('Oracle Java Virtual Machine (user)',
3313 dbms_feature_usage.DBU_INST_OBJECT,
3314 'SYS.JAVA$POLICY$',
3315 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3316 DBFUS_OJVM_STR,
3317 'OJVM has been used by at least one non-system user');
3318 end;
3319
3320 /*********************************
3321 * Java Virtual Machine (system)
3322 *********************************/
3323
3324 declare
3325 DBFUS_OJVM_SYS_STR CONSTANT VARCHAR2(1000) :=
3326 'sys.dbms_java.dbms_feature_system_ojvm';
3327
3328 begin
3329 dbms_feature_usage.register_db_feature
3330 ('Oracle Java Virtual Machine (system)',
3331 dbms_feature_usage.DBU_INST_OBJECT,
3332 'SYS.JAVA$POLICY$',
3333 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3334 DBFUS_OJVM_SYS_STR,
3335 'OJVM default system users');
3336 end;
3337
3338 /**********************
3339 * In-Database Hadoop
3340 **********************/
3341
3342 begin
3343 dbms_feature_usage.register_db_feature
3344 ('Oracle In-Database Hadoop',
3345 dbms_feature_usage.DBU_INST_OBJECT,
3346 'SYS.JAVA$POLICY$',
3347 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3348 'DBMS_FEATURE_IDH',
3349 'In-Database Hadoop for running MapReduce in java');
3350 end;
3351
3352
3353 /************************
3354 * DBFS Content
3355 ************************/
3356
3357 declare
3358 DBFUS_DBFS_CONTENT_PROC CONSTANT VARCHAR2(1000) :=
3359 'sys.dbms_feature_dbfs_content';
3360
3361 begin
3362 dbms_feature_usage.register_db_feature
3363 ('DBFS Content',
3364 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3365 NULL,
3366 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3367 DBFUS_DBFS_CONTENT_PROC,
3368 'Oracle Database FileSystem Content feature is being used');
3369 end;
3370
3371 /************************
3372 * DBFS SecureFile Store
3373 ************************/
3374
3375 declare
3376 DBFUS_DBFS_SFS_PROC CONSTANT VARCHAR2(1000) :=
3377 'sys.dbms_feature_dbfs_sfs';
3378
3379 begin
3380 dbms_feature_usage.register_db_feature
3381 ('DBFS SFS',
3382 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3383 NULL,
3384 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3385 DBFUS_DBFS_SFS_PROC,
3389 /**************************
3386 'Oracle Database FileSystem SecureFile Store feature is being used');
3387 end;
3388
3390 * DBFS Hierarchical Store
3391 **************************/
3392
3393 declare
3394 DBFUS_DBFS_HS_PROC CONSTANT VARCHAR2(1000) :=
3395 'sys.dbms_feature_dbfs_hs';
3396
3397 begin
3398 dbms_feature_usage.register_db_feature
3399 ('DBFS HS',
3400 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3401 NULL,
3402 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3403 DBFUS_DBFS_HS_PROC,
3404 'Oracle Database FileSystem Hierarchical Store feature is being used');
3405 end;
3406
3407 /******************************
3408 * EXADATA
3409 ******************************/
3410
3411 declare
3412 DBFUS_EXADATA_PROC CONSTANT VARCHAR2(1000) := 'DBMS_FEATURE_EXADATA';
3413
3414 begin
3415 dbms_feature_usage.register_db_feature
3416 ('Exadata',
3417 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3418 NULL,
3419 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3420 DBFUS_EXADATA_PROC,
3421 'Exadata is being used');
3422 end;
3423
3424 /**************************
3425 * GSM CATALOG
3426 *************************/
3427
3428 declare
3429 DBFUS_GSMCAT_STR CONSTANT VARCHAR2(1000) :=
3430 'select count(*), 0, NULL from gsmadmin_internal.cloud';
3431
3432 begin
3433 dbms_feature_usage.register_db_feature
3434 ('GDS Catalog',
3435 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3436 NULL,
3437 dbms_feature_usage.DBU_DETECT_BY_SQL,
3438 DBFUS_GSMCAT_STR,
3439 'Database is a GDS catalog database.');
3440 end;
3441
3442 /**************************
3443 * GSM GLOBAL SERVICES
3444 *************************/
3445
3446 declare
3447 DBFUS_GSMGLOB_STR CONSTANT VARCHAR2(1000) :=
3448 'select count(*), 0, NULL from dba_services ' ||
3449 'where global_service = ''YES''';
3450
3451 begin
3452 dbms_feature_usage.register_db_feature
3453 ('Global Data Services',
3454 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3455 NULL,
3456 dbms_feature_usage.DBU_DETECT_BY_SQL,
3457 DBFUS_GSMGLOB_STR,
3458 'Database contains global services.');
3459 end;
3460
3461
3462 /*************************************
3463 * Real Application Security
3464 *************************************/
3465
3466 declare
3467 DBFUS_RAS_STR CONSTANT VARCHAR2(1000) := 'SYS.DBMS_FEATURE_RAS';
3468
3469 begin
3470 dbms_feature_usage.register_db_feature
3471 ('Real Application Security',
3472 dbms_feature_usage.DBU_INST_OBJECT,
3473 'SYS.XS$OBJ',
3474 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3475 DBFUS_RAS_STR,
3476 'Oracle Real Application Security is being used');
3477 end;
3478
3479 /**********************
3480 * Privilege Capture *
3481 **********************/
3482
3483 declare
3484 DBFUS_PRIV_CAPTURE_PROC CONSTANT VARCHAR2(1000) :=
3485 'SYS.DBMS_FEATURE_PRIV_CAPTURE';
3486
3487 begin
3488 dbms_feature_usage.register_db_feature
3489 ('Privilege Capture',
3490 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3491 NULL,
3492 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3493 DBFUS_PRIV_CAPTURE_PROC,
3494 'Privilege Capture is being used');
3495 end;
3496
3497 /****************************
3498 * Online Redefintion
3499 ****************************/
3500
3501 declare
3502 DBFUS_ONLINE_REDEF CONSTANT VARCHAR2(1000) :=
3503 'DBMS_FEATURE_ONLINE_REDEF';
3504
3505 begin
3506 dbms_feature_usage.register_db_feature
3507 ('Online Redefinition',
3508 dbms_feature_usage.DBU_INST_OBJECT,
3509 'SYS.REDEF$',
3510 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3511 DBFUS_ONLINE_REDEF,
3512 'Online Redefinition is being used');
3513 end;
3514
3515 /***************************************************************
3516 * In-Memory Aggregation
3517 ***************************************************************/
3518
3519 begin
3520 dbms_feature_usage.register_db_feature
3521 ('In-Memory Aggregation',
3522 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3523 NULL,
3524 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3525 'DBMS_FEATURE_IMA',
3526 'In-Memory Aggregation is being used.');
3527 end;
3528
3529 /*********************************************
3530 * TEST features to test the infrastructure
3531 *********************************************/
3532
3533 dbms_feature_usage.register_db_feature
3534 ('_DBFUS_TEST_SQL_1',
3535 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED +
3536 dbms_feature_usage.DBU_INST_TEST,
3537 NULL,
3538 dbms_feature_usage.DBU_DETECT_BY_SQL,
3539 'select 1, 0, NULL from dual',
3540 'Test sql 1');
3541
3542 dbms_feature_usage.register_db_feature
3543 ('_DBFUS_TEST_SQL_2',
3544 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED +
3545 dbms_feature_usage.DBU_INST_TEST,
3549 'Test sql 2');
3546 NULL,
3547 dbms_feature_usage.DBU_DETECT_BY_SQL,
3548 'select 0, 10, to_clob(''hi, mike'') from dual',
3550
3551 dbms_feature_usage.register_db_feature
3552 ('_DBFUS_TEST_SQL_3',
3553 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED +
3554 dbms_feature_usage.DBU_INST_TEST,
3555 NULL,
3556 dbms_feature_usage.DBU_DETECT_BY_SQL,
3557 'select 13, NULL, to_clob(''hello, mike'') from dual',
3558 'Test sql 3');
3559
3560 dbms_feature_usage.register_db_feature
3561 ('_DBFUS_TEST_SQL_4',
3562 dbms_feature_usage.DBU_INST_OBJECT +
3563 dbms_feature_usage.DBU_INST_TEST,
3564 'sys.tab$',
3565 dbms_feature_usage.DBU_DETECT_BY_SQL,
3566 'select 11, 11, to_clob(''test sql 4 check tab$'') from dual',
3567 'Test sql 4');
3568
3569 dbms_feature_usage.register_db_feature
3570 ('_DBFUS_TEST_SQL_5',
3571 dbms_feature_usage.DBU_INST_OBJECT +
3572 dbms_feature_usage.DBU_INST_TEST,
3573 'sys.foo',
3574 dbms_feature_usage.DBU_DETECT_BY_SQL,
3575 'select 2, 0, to_clob(''check foo'') from dual',
3576 'Test sql 5');
3577
3578 dbms_feature_usage.register_db_feature
3579 ('_DBFUS_TEST_SQL_6',
3580 dbms_feature_usage.DBU_INST_OBJECT +
3581 dbms_feature_usage.DBU_INST_TEST,
3582 'sys.tab$',
3583 dbms_feature_usage.DBU_DETECT_BY_SQL,
3584 'select 0, 0, to_clob(''should not see'') from dual',
3585 'Test sql 6');
3586
3587 dbms_feature_usage.register_db_feature
3588 ('_DBFUS_TEST_SQL_7',
3589 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED +
3590 dbms_feature_usage.DBU_INST_TEST,
3591 NULL,
3592 dbms_feature_usage.DBU_DETECT_NULL,
3593 'junk',
3594 'Test sql 7');
3595
3596 dbms_feature_usage.register_db_feature
3597 ('_DBFUS_TEST_SQL_8',
3598 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED +
3599 dbms_feature_usage.DBU_INST_TEST,
3600 NULL,
3601 dbms_feature_usage.DBU_DETECT_BY_SQL,
3602 'select junk from foo',
3603 'Test sql 8 - Test error case');
3604
3605 dbms_feature_usage.register_db_feature
3606 ('_DBFUS_TEST_SQL_9',
3607 dbms_feature_usage.DBU_INST_OBJECT +
3608 dbms_feature_usage.DBU_INST_TEST,
3609 'test.test',
3610 dbms_feature_usage.DBU_DETECT_BY_SQL,
3611 'select junk from foo',
3612 'Test sql 9 - Test error case for install');
3613
3614 dbms_feature_usage.register_db_feature
3615 ('_DBFUS_TEST_SQL_10',
3616 dbms_feature_usage.DBU_INST_OBJECT +
3617 dbms_feature_usage.DBU_INST_TEST,
3618 'sys.dbu_test_table',
3619 dbms_feature_usage.DBU_DETECT_BY_SQL,
3620 'select count(*), count(*), max(letter) from dbu_test_table',
3621 'Test sql 10 - Test infrastructure');
3622
3623 dbms_feature_usage.register_db_feature
3624 ('_DBFUS_TEST_PROC_1',
3625 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED +
3626 dbms_feature_usage.DBU_INST_TEST,
3627 NULL,
3628 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3629 'DBMS_FEATURE_TEST_PROC_1',
3630 'Test feature 1');
3631
3632 dbms_feature_usage.register_db_feature
3633 ('_DBFUS_TEST_PROC_2',
3634 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED +
3635 dbms_feature_usage.DBU_INST_TEST,
3636 NULL,
3637 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3638 'DBMS_FEATURE_TEST_PROC_2',
3639 'Test feature 2');
3640
3641 dbms_feature_usage.register_db_feature
3642 ('_DBFUS_TEST_PROC_3',
3643 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED +
3644 dbms_feature_usage.DBU_INST_TEST,
3645 NULL,
3646 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3647 'Junk Procedure',
3648 'Test feature 3 - Bad procedure name');
3649
3650 dbms_feature_usage.register_db_feature
3651 ('_DBFUS_TEST_PROC_4',
3652 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED +
3653 dbms_feature_usage.DBU_INST_TEST,
3654 NULL,
3655 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3656 'DBMS_FEATURE_TEST_PROC_4',
3657 'Test feature 4');
3658
3659 dbms_feature_usage.register_db_feature
3660 ('_DBFUS_TEST_PROC_5',
3661 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED +
3662 dbms_feature_usage.DBU_INST_TEST,
3663 NULL,
3664 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3665 'DBMS_FEATURE_TEST_PROC_5',
3666 'Test feature 5');
3667
3668 /*********************************************
3669 * Transparent Sensitive Data Protection (TSDP)
3670 ********************************************/
3671 begin
3672 dbms_feature_usage.register_db_feature
3673 ('Transparent Sensitive Data Protection',
3674 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3675 NULL,
3676 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3677 'DBMS_FEATURE_TSDP',
3678 'Transparent Sensitive Data Protection (TSDP)');
3679 end;
3680
3681 /*********************************************
3682 * Segment Maintenance Online Compress
3683 ********************************************/
3684 begin
3685 dbms_feature_usage.register_db_feature
3686 ('Segment Maintenance Online Compress',
3687 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3688 NULL,
3689 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3690 'DBMS_FEATURE_SEG_MAIN_ONL_COMP',
3691 'Segment Maintenance Online Compress');
3692 end;
3693
3694 /**************************
3695 * EM Express
3696 **************************/
3697 begin
3698 dbms_feature_usage.register_db_feature
3699 ('EM Express',
3700 dbms_feature_usage.DBU_INST_OBJECT,
3701 'sys.wri$_emx_files',
3702 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3703 'DBMS_FEATURE_EMX',
3704 'EM Database Express has been used');
3705 end;
3706
3707 /*********************************************
3708 * RA Owner
3709 ********************************************/
3710 declare
3711 DBMS_FEATURE_RA_OWNER_STR CONSTANT VARCHAR2(1000) :=
3712 'DBMS_FEATURE_RA_OWNER';
3713 begin
3714 dbms_feature_usage.register_db_feature
3715 ('RA Owner',
3716 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3717 NULL,
3718 dbms_feature_usage.DBU_DETECT_BY_PROCEDURE,
3719 DBMS_FEATURE_RA_OWNER_STR,
3720 'RA OWNER');
3721 end;
3722
3723 /******************************
3724 * INSTANT RESTORE command
3725 *********************************/
3726 declare
3727 DBFUS_INSTANT_RES_STR CONSTANT VARCHAR2(1000) :=
3728 'select p, NULL, NULL from ' ||
3729 '(select count(*) p from v$rman_status' ||
3730 ' where operation like ''RESTORE INSTANT%'')';
3731 begin
3732 dbms_feature_usage.register_db_feature
3733 ('INSTANT RESTORE command',
3734 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3735 NULL,
3736 dbms_feature_usage.DBU_DETECT_BY_SQL,
3737 DBFUS_INSTANT_RES_STR,
3738 'RMAN''s INSTANT RESTORE command used by the database.');
3739 end;
3740
3741 /******************************
3742 * Container Usage
3743 *********************************/
3744 declare
3745 DBFUS_CONTAINER_STR CONSTANT VARCHAR2(1000) :=
3746 'select p, NULL, NULL from ' ||
3747 '(select count(*) p from sys.amgrp$)';
3748 begin
3749 dbms_feature_usage.register_db_feature
3750 ('Container Usage',
3751 dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED,
3752 NULL,
3753 dbms_feature_usage.DBU_DETECT_BY_SQL,
3754 DBFUS_CONTAINER_STR,
3755 'CONTAINER FILES used by backup appliance.');
3756 end;
3757
3758 end;