{"id":15405,"date":"2020-12-11T17:21:22","date_gmt":"2020-12-11T16:21:22","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/"},"modified":"2023-06-20T10:10:47","modified_gmt":"2023-06-20T08:10:47","slug":"oracle-21c-security-mandatory-profile","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/","title":{"rendered":"Oracle 21c Security : Mandatory Profile"},"content":{"rendered":"<p><strong>By Mouhamadou Diaw<\/strong><\/p>\n<p>With Oracle 21c, it is now possible to enforce a password policy (length, number of digits\u2026) for all pluggable databases or for specific pluggable databases via profiles. This is done by creating a mandatory profile in the root CDB and this profile will be attached to corresponding PDBs.<br \/>\nThe mandatory profile is a generic profile that can only have a single parameter, the PASSWORD_VERIFY_FUNCTION.<br \/>\nThe password complexity verification function of the mandatory profile is checked before the password complexity function that is associated with the user account profile.<br \/>\nFor example, the password length defined in the mandatory profile will take precedence on any other password length defined in any other profile associated to the user.<br \/>\nWhen defined the limit of the mandatory profile will be enforced in addition to the limits of the actual profile of the user.<br \/>\nA mandatory profile cannot be assigned to a user but should attached to a PDB<\/p>\n<p>In this demonstration we will consider a instance DB21 with 3 PDB<br \/>\n-PDB1<br \/>\n-PDB2<br \/>\n-PDB3<\/p>\n<p>We will create 2 mandatory profiles:<br \/>\nc##mand_profile_pdb1_pdb2 which will be assigned to PDB1 and PDB2<br \/>\nc##mand_profile_pdb3 which will be assigned to PDB3<\/p>\n<div>\n<div id=\"highlighter_438397\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; show pdbs;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">CON_ID CON_NAME\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"sql keyword\">OPEN<\/code> <code class=\"sql plain\">MODE\u00a0 RESTRICTED<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql comments\">---------- ------------------------------ ---------- ----------<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">2 PDB$SEED\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"sql keyword\">READ<\/code> <code class=\"sql keyword\">ONLY<\/code>\u00a0 <code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">3 PDB1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"sql keyword\">READ<\/code> <code class=\"sql plain\">WRITE <\/code><code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">4 PDB2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"sql keyword\">READ<\/code> <code class=\"sql plain\">WRITE <\/code><code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">5 PDB3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"sql keyword\">READ<\/code> <code class=\"sql plain\">WRITE <\/code><code class=\"sql keyword\">NO<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql plain\">SQL&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>We will create two verification functions in the root container that we will associate to our mandatory profiles. The first function will check for a password length to 6<\/p>\n<div>\n<div id=\"highlighter_57424\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">CREATE<\/code> <code class=\"sql color1\">OR<\/code> <code class=\"sql color2\">REPLACE<\/code> <code class=\"sql keyword\">FUNCTION<\/code> <code class=\"sql plain\">func_pdb1_2_verify_function<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">( username\u00a0\u00a0\u00a0\u00a0 varchar2,<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">password<\/code>\u00a0\u00a0\u00a0\u00a0 <code class=\"sql plain\">varchar2,<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">old_password varchar2)<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql keyword\">return<\/code> <code class=\"sql plain\">boolean <\/code><code class=\"sql keyword\">IS<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql keyword\">BEGIN<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">if <\/code><code class=\"sql color1\">not<\/code> <code class=\"sql plain\">ora_complexity_check(<\/code><code class=\"sql keyword\">password<\/code><code class=\"sql plain\">, chars =&gt; 6) <\/code><code class=\"sql keyword\">then<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">return<\/code><code class=\"sql plain\">(<\/code><code class=\"sql keyword\">false<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">end<\/code> <code class=\"sql plain\">if;<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">return<\/code><code class=\"sql plain\">(<\/code><code class=\"sql keyword\">true<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"sql keyword\">END<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql plain\">\/\u00a0 <\/code><\/div>\n<div class=\"line number13 index12 alt2\"><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql keyword\">Function<\/code> <code class=\"sql plain\">created.<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"sql plain\">SQL&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The second function will check for a password length to 10<\/p>\n<div>\n<div id=\"highlighter_326172\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">CREATE<\/code> <code class=\"sql color1\">OR<\/code> <code class=\"sql color2\">REPLACE<\/code> <code class=\"sql keyword\">FUNCTION<\/code> <code class=\"sql plain\">func_pdb3_verify_function<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">( username\u00a0\u00a0\u00a0\u00a0 varchar2,<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">password<\/code>\u00a0\u00a0\u00a0\u00a0 <code class=\"sql plain\">varchar2,<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">old_password varchar2)<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql keyword\">return<\/code> <code class=\"sql plain\">boolean <\/code><code class=\"sql keyword\">IS<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql keyword\">BEGIN<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">if <\/code><code class=\"sql color1\">not<\/code> <code class=\"sql plain\">ora_complexity_check(<\/code><code class=\"sql keyword\">password<\/code><code class=\"sql plain\">, chars =&gt; 10) <\/code><code class=\"sql keyword\">then<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">return<\/code><code class=\"sql plain\">(<\/code><code class=\"sql keyword\">false<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">end<\/code> <code class=\"sql plain\">if;<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">return<\/code><code class=\"sql plain\">(<\/code><code class=\"sql keyword\">true<\/code><code class=\"sql plain\">);<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"sql keyword\">END<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql plain\">\/ <\/code><\/div>\n<div class=\"line number13 index12 alt2\"><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql keyword\">Function<\/code> <code class=\"sql plain\">created.<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"sql plain\">SQL&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Now let\u2019s create the two mandatory profiles in the root container<\/p>\n<div>\n<div id=\"highlighter_855675\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql keyword\">CREATE<\/code> <code class=\"sql plain\">MANDATORY PROFILE c##mand_profile_pdb1_pdb2<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">LIMIT PASSWORD_VERIFY_FUNCTION func_pdb1_2_verify_function<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql plain\">CONTAINER = <\/code><code class=\"sql color1\">ALL<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql plain\">Profile created.<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Remember that we want to associate the mandatoty profile c##mand_profile_pdb1_pdb2 to PDB1 and PDB2. So we can first attach this profile to all PDBs<\/p>\n<div>\n<div id=\"highlighter_388278\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">CREATE<\/code> <code class=\"sql plain\">MANDATORY PROFILE c##mand_profile_pdb3<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql plain\">LIMIT PASSWORD_VERIFY_FUNCTION func_pdb3_verify_function<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">CONTAINER = <\/code><code class=\"sql color1\">ALL<\/code><code class=\"sql plain\">;\u00a0 <\/code><\/div>\n<div class=\"line number4 index3 alt1\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql plain\">Profile created.<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Remember that we want to associate the mandatoty profile c##mand_profile_pdb1_pdb2 to PDB1 and PDB2. So we can first attach this profile to all PDBs<\/p>\n<div>\n<div id=\"highlighter_362634\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; show con_name;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">CON_NAME<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql comments\">------------------------------<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql plain\">CDB$ROOT<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">alter<\/code> <code class=\"sql plain\">system <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">mandatory_user_profile=c##mand_profile_pdb1_pdb2;<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql plain\">System altered.<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"sql plain\">SQL&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>To associate the profile c##mand_profile_pdb3 to PDB3, we can edit the spfile of PDB3<\/p>\n<div>\n<div id=\"highlighter_519165\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; show con_name;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">CON_NAME<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql comments\">------------------------------<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql plain\">PDB3<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql plain\">SQL&gt;\u00a0 <\/code><code class=\"sql keyword\">alter<\/code> <code class=\"sql plain\">system <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">mandatory_user_profile=c##mand_profile_pdb3;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql plain\">System altered.<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql plain\">SQL&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>We can then verify the different values of the parameter MANDATORY_USER_PROFILE in the different PDBs<\/p>\n<div>\n<div id=\"highlighter_489230\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; show con_name;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">CON_NAME<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql comments\">------------------------------<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql plain\">PDB3<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql plain\">SQL&gt;\u00a0 <\/code><code class=\"sql keyword\">alter<\/code> <code class=\"sql plain\">system <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">mandatory_user_profile=c##mand_profile_pdb3;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql plain\">System altered.<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql plain\">SQL&gt; show parameter mandatory;<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql keyword\">NAME<\/code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <code class=\"sql plain\">TYPE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 VALUE<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"sql comments\">------------------------------------ ----------- ------------------------------<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql plain\">mandatory_user_profile\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 string\u00a0\u00a0\u00a0\u00a0\u00a0 C##MAND_PROFILE_PDB3<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">alter<\/code> <code class=\"sql plain\">session <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">container=PDB1;<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"sql plain\">Session altered.<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"sql plain\">SQL&gt; show parameter mandatory;<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"sql keyword\">NAME<\/code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <code class=\"sql plain\">TYPE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 VALUE<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"sql comments\">------------------------------------ ----------- ------------------------------<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"sql plain\">mandatory_user_profile\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 string\u00a0\u00a0\u00a0\u00a0\u00a0 C##MAND_PROFILE_PDB1_PDB2<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"sql plain\">SQL&gt;\u00a0 <\/code><code class=\"sql keyword\">alter<\/code> <code class=\"sql plain\">session <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">container=PDB2;<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"sql plain\">Session altered.<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"sql plain\">SQL&gt; show parameter mandatory;<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"sql keyword\">NAME<\/code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <code class=\"sql plain\">TYPE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 VALUE<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"sql comments\">------------------------------------ ----------- ------------------------------<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"sql plain\">mandatory_user_profile\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 string\u00a0\u00a0\u00a0\u00a0\u00a0 C##MAND_PROFILE_PDB1_PDB2<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"sql plain\">SQL&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>To test we will try to create a user in PDB3 for example with with a password length &lt; 10<\/p>\n<div>\n<div id=\"highlighter_477122\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">SQL&gt; <\/code><code class=\"sql keyword\">create<\/code> <code class=\"sql color2\">user<\/code> <code class=\"sql plain\">toto identified <\/code><code class=\"sql keyword\">by<\/code> <code class=\"sql string\">\"DGDTr##5\"<\/code><code class=\"sql plain\">;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql keyword\">create<\/code> <code class=\"sql color2\">user<\/code> <code class=\"sql plain\">toto identified <\/code><code class=\"sql keyword\">by<\/code> <code class=\"sql string\">\"DGDTr##5\"<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">*<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql plain\">ERROR <\/code><code class=\"sql keyword\">at<\/code> <code class=\"sql plain\">line 1:<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql plain\">ORA-28219: <\/code><code class=\"sql keyword\">password<\/code> <code class=\"sql plain\">verification failed <\/code><code class=\"sql keyword\">for<\/code> <code class=\"sql plain\">mandatory profile<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql plain\">ORA-20000: <\/code><code class=\"sql keyword\">password<\/code> <code class=\"sql plain\">length less than 10 characters<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><\/div>\n<div class=\"line number8 index7 alt1\"><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql plain\">SQL&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>By Mouhamadou Diaw With Oracle 21c, it is now possible to enforce a password policy (length, number of digits\u2026) for all pluggable databases or for specific pluggable databases via profiles. This is done by creating a mandatory profile in the root CDB and this profile will be attached to corresponding PDBs. The mandatory profile is [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198,59,149],"tags":[137,2212,2213,2214,1384],"type_dbi":[],"class_list":["post-15405","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-database-management","category-oracle","category-security","tag-oracle-21c","tag-oracle-mandatory-profile","tag-oracle-password-length","tag-oracle-password-policy","tag-oracle-security"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Oracle 21c Security : Mandatory Profile - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle 21c Security : Mandatory Profile\" \/>\n<meta property=\"og:description\" content=\"By Mouhamadou Diaw With Oracle 21c, it is now possible to enforce a password policy (length, number of digits\u2026) for all pluggable databases or for specific pluggable databases via profiles. This is done by creating a mandatory profile in the root CDB and this profile will be attached to corresponding PDBs. The mandatory profile is [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-11T16:21:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-20T08:10:47+00:00\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Oracle 21c Security : Mandatory Profile\",\"datePublished\":\"2020-12-11T16:21:22+00:00\",\"dateModified\":\"2023-06-20T08:10:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/\"},\"wordCount\":364,\"commentCount\":0,\"keywords\":[\"Oracle 21C\",\"Oracle Mandatory Profile\",\"Oracle password length\",\"Oracle password policy\",\"oracle security\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\",\"Oracle\",\"Security\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/\",\"name\":\"Oracle 21c Security : Mandatory Profile - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2020-12-11T16:21:22+00:00\",\"dateModified\":\"2023-06-20T08:10:47+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle 21c Security : Mandatory Profile\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Oracle 21c Security : Mandatory Profile - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/","og_locale":"en_US","og_type":"article","og_title":"Oracle 21c Security : Mandatory Profile","og_description":"By Mouhamadou Diaw With Oracle 21c, it is now possible to enforce a password policy (length, number of digits\u2026) for all pluggable databases or for specific pluggable databases via profiles. This is done by creating a mandatory profile in the root CDB and this profile will be attached to corresponding PDBs. The mandatory profile is [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/","og_site_name":"dbi Blog","article_published_time":"2020-12-11T16:21:22+00:00","article_modified_time":"2023-06-20T08:10:47+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Oracle 21c Security : Mandatory Profile","datePublished":"2020-12-11T16:21:22+00:00","dateModified":"2023-06-20T08:10:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/"},"wordCount":364,"commentCount":0,"keywords":["Oracle 21C","Oracle Mandatory Profile","Oracle password length","Oracle password policy","oracle security"],"articleSection":["Database Administration &amp; Monitoring","Database management","Oracle","Security"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/","name":"Oracle 21c Security : Mandatory Profile - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-12-11T16:21:22+00:00","dateModified":"2023-06-20T08:10:47+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-21c-security-mandatory-profile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle 21c Security : Mandatory Profile"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/15405","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=15405"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/15405\/revisions"}],"predecessor-version":[{"id":26131,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/15405\/revisions\/26131"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=15405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=15405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=15405"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=15405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}