RAS的核心功能而且其提供的直接使用声明式SQL来配置的方法也让AI时代的数据安全从此变得既简单又可控。01 | 前提条件Oracle AI Database 需升级到23.26.2因为 Deep Sec 是在 23.26.2 引入的新功能所以软件版本要求 Oracle AI Database (23.26.2 or later)目前这个RU已经可以在MOS下载到了。笔者目前的测试环境还是23.26.1所以需要下载应用这个补丁Patch 39093711: DATABASE RELEASE UPDATE 23.26.2.0.0注意readme中建议用于应用补丁的opatch建议在12.2.0.1.49或以上执行下面命令查询opatch版本如果你的opatch版本也不符合要求可以通过搜索6880880下载最新的opatch版本。$ $ORACLE_HOME/OPatch/opatch version笔者的opatch版本不满足需求所以选择下载最新的opatch版本OPatch比较小下载后的文件名为p6880880_230000_Linux-x86-64.zip然后我们更新opatch再用新的opatch应用23.26.2的补丁直接按照readme操作即可。考虑到如今AI时代下数据库的使用者自身未必都有DBA经验也未必能找到DBA帮忙且这种基础环境的操作还是不太建议全权交给AI因为不同版本补丁是可能有细微差异的AI可能出错最终需要真人来确认复核比较稳妥所以这里列下笔者操作的关键命令参考完整细节还是参考readme仔细核对首先备份之前的OPatch解压新的OPatch确认已成功替换新的opatch版本操作如下[oraclealfred-aibs-db ~]$ cd $ORACLE_HOME[oraclealfred-aibs-db dbhome_1]$ mv OPatch OPatch_bak[oraclealfred-aibs-db dbhome_1]$ unzip /u01/media/p6880880_230000_Linux-x86-64.zip[oraclealfred-aibs-db dbhome_1]$ $ORACLE_HOME/OPatch/opatch versionOPatch Version: 12.2.0.1.51OPatch succeeded.确认opatch版本已经是目前最新的 OPatch Version: 12.2.0.1.51。然后使用这个opatch来应用补丁按照补丁包中的readme说明操作即可有些参数readme可能忘记标明了手工根据实际情况补上即可笔者环境执行相关命令如下unzip p39093711_230000_Linux-x86-64.zipcd 39093711$ORACLE_HOME/OPatch/opatch prereq CheckMinimumOPatchVersion -ph /u01/media/39093711$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/media/39093711确认这些预检查都正常验证通过笔者这里单实例需要停止数据库和监听If this is not an Oracle RAC environment, shut down all instances and listeners associated with the Oracle home that you are updating. For more information, see Oracle AI Database Administrators Guide.[oraclealfred-aibs-db 39093711]$ lsnrctl stop[oraclealfred-aibs-db 39093711]$ sqlplus / as sysdbaSQL shutdown immediate;确认正常关闭后然后应用补丁$ cd /u01/media/39093711$ $ORACLE_HOME/OPatch/opatch apply碰到交互式确认的地方选择y即可基本都是问你是否确认执行是否已关闭数据库并准备好打补丁了。耐心等个几分钟补丁就应用好了下一步继续按readme执行启库执行datapatch这一过程又需要再等几分钟[oraclealfred-aibs-db 39093711]$ sqlplus / as sysdbaSQL startupSQL alter pluggable database all open;SQL quit[oraclealfred-aibs-db OPatch]$ ./datapatch -sanity_checks[oraclealfred-aibs-db OPatch]$ ./datapatch -verbose执行完成后检查日志有无报错可以跑下utlrp这个重新编译无效对象[oraclealfred-aibs-db OPatch]$ export PATH$PATH:$ORACLE_HOME/bin[oraclealfred-aibs-db OPatch]$ cd $ORACLE_HOME/rdbms/admin[oraclealfred-aibs-db admin]$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql确认已升级成功23.26.2最后启动下监听恢复对外服务。[oraclealfred-aibs-db admin]$ lsnrctl start02 | 测试验证Deep Sec的功能效果本文测试验证当没有IAM集成的场景下如何利用 Local End User 配置 Deep Sec 的功能并验证效果参考官方文档linkhttps://docs.oracle.com/en/database/oracle/oracle-database/26/ddscg/configure-oracle-deep-data-security-direct-logon-local-end-users.html① 构造最小示例数据-- 笔者本次测试用到的PDBorclpdb1ALTER SESSION SET CONTAINER orclpdb1;-- Create the HR user-- 注这里是创建一个“没有密码、无法直接登录”的模式Schema用户 HRCREATE USER hr NO AUTHENTICATIONDEFAULT TABLESPACE usersQUOTA UNLIMITED ON users;-- Create the employees tableCREATE TABLE hr.employees (employee_id NUMBER PRIMARY KEY,first_name VARCHAR2(50),last_name VARCHAR2(50),email VARCHAR2(128),manager VARCHAR2(128),ssn VARCHAR2(20),salary NUMBER(10,2),phone VARCHAR2(20));-- 插入示例数据INSERT INTO hr.employees VALUES(100, Victoria, Williams, vwilliams,NULL, 219-09-9999, 13000, 555-0100);INSERT INTO hr.employees VALUES(200, Marvin, Anderson, manderson,vwilliams, 457-55-5462, 12030, 555-0200);INSERT INTO hr.employees VALUES(300, Chris, Evans, cevans,vwilliams, 321-12-4567, 6900, 555-0300);INSERT INTO hr.employees VALUES(400, Emma, Baker, ebaker,manderson, 733-02-9821, 8200, 555-0400);INSERT INTO hr.employees VALUES(500, Taylor, Mills, tmills,manderson, 558-76-1243, 9000, 555-0500);COMMIT;示例数据准备好是这样全表只有5行数据以方便读者更直观的看到演示效果