资讯专栏INFORMATION COLUMN

Oracle 19C的非必要组件删除攻略

IT那活儿 / 2425人阅读
Oracle 19C的非必要组件删除攻略

Oracle 19C 中共有16个组件,但并不是所有的都是必要的,多一个组件就会一个漏洞,特别是OJVM的“反序列化”漏洞,最近几年一直没有消停过。所以业务方面没有特别要求的话,在安装初期就可以勾选掉,只安装必需组件。

如果忘记勾选掉或者只能使用dbca静默模式创建的话,就会安装上那些非必需组件,本文将一一介绍那些非必需组件的删除方法,下次咱们讲组件的安装方法。


一. 所有组件列表



二. 非必要组件删除步骤

1.  删除OJVM组件

OJVM的组件包括“JServer JAVA Virtual Machine”、“Oracle Database Java Packages”。删除操作步骤如下:

1)检查要删除JVM影响的任何依赖于JVM的架构(Oracle提供或自定义)

SELECT owner, object_type, status, COUNT(*)
  FROM dba_objects
 WHERE object_type LIKE %JAVA%
       AND owner NOT IN (SYS, OJVMSYS, EXFSYS)
 GROUP BY owner, object_type, status
 ORDER BY owner, object_type, status;

2)开启restricted 模式

connect / as sysdba
startup mount
alter database open;
alter system enable restricted session;
alter system set "_system_trig_enabled" = false scope=memory;

3)开启日志

spool force_removal.txt
set echo on

4)如果第一步查到DBMS_JAVA_DEV,则执行如下步骤

exec dbms_java_dev.enable;

5)执行删除脚本

@?/rdbms/admin/catnoexf.sql
@?/rdbms/admin/catnojav.sql

6)删除JServer JAVA Virtual Machine 和剩下的java对象

execute rmjvm.run(TRUE);

7)最后清理

truncate table java$jvm$status;
delete from obj$ where obj#=0 and type#=0;
commit;

8)检查是否还有java对象存在

select count(*) from obj$ where type#=29 and owner#=0;

9)更新registry 表

delete from sys.registry$ where cid in (JAVAVM,CATJAVA,EXF);
commit;

10)关闭日志记录

set echo off
spool off

11) 重启数据库所有节点


2.  删除OLAP组件

OLAP的组件包括“OLAP Analytic Workspace”、“Oracle OLAP API”。删除操作步骤如下:

1)检查是否有需要备份的OLAP数据

select owner,aw_name from dba_aws where owner !=SYS;

如果没有返回数据,则不需要备份,如果有数据,需要备份则参考“Note 1935015.1 What and How to Export/Import OLAP Data

2)执行删除脚本

sqlplus /nolog
conn / as sysdba
spool remove_olap.log
----> Remove OLAP Catalog
@?/olap/admin/catnoamd.sql
----> Remove OLAP API
@?/olap/admin/catnoxoq.sql
----> Deinstall APS - OLAP AW component
@?/olap/admin/catnoaps.sql
----> Recompile invalids
@?/rdbms/admin/utlrp.sql
spool off

3)修改expdp中相关信息,以删除用于导出OLAP数据(如果需要回退,请不要执行此步骤)

delete from sys.exppkgact$ where package = DBMS_AW_EXP and schema= SYS;
delete from exppkgact$ where package=DBMS_CUBE_EXP;
commit;

4)如果想从oracle的可执行文件中删除olap,则执行如下命令:

cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk olap_off
make -f ins_rdbms.mk ioracle


3. 删除DV组件

DV组件包括“Oracle Database Vault”,删除的操作步骤如下:

conn / as sysdba
@?/rdbms/admin/dvremov.sql


4. 删除ORDIM组件

ORDIM组件包括“Oracle Multimedia”,删除的操作步骤如下:

connect / as sysdba
@?/ord/im/admin/imremov.sql


5. 删除OLS组件

OLS组件包括“Oracle Label Security”,删除的操作步骤如下:

connect / as sysdba
@?/rdbms/admin/catnools.sql

Note:catnools.sql此脚本在12C~19C的数据库版本中没有提供,可以去11.2.0.4的相关目录找到catnools.sql来执行。


6. 删除XML组件

XML组件包括“Oracle XDK”,删除的操作步骤如下:

1)执行删除脚本

connect / as sysdba
@?xdkadmin mxml.sql

2)更新registry表

delete from sys.registry$ where cid in (XML);
commit;

7.  删除SDO组件

SDO组件包括Spatial,删除的操作步骤如下:

1)检查Spatial indexes 是否存在

connect / as sysdba
select owner,index_name from dba_indexes
where ityp_name = SPATIAL_INDEX;

若存在,则删除Spatial indexes,执行如下:

drop index .;
-- If some indexes cannot be dropped use the FORCE option:
drop index . force;

自动删除脚本如下:

set pagesize 0
spool DropIndexes.sql
select drop index  || owner || . || index_name ||;
from dba_indexes where ityp_name = SPATIAL_INDEX;
spool off
@DropIndexes.sql

2)检查SDO_GEOMETRY类型的字段是否存在

set pages 200
col owner for a20
col table_name for a30
col column_name for a25

select owner, table_name, column_name
from dba_tab_columns
where data_type = SDO_GEOMETRY
and owner != MDSYS
order by 1,2,3;

若存在则执行如下命令:

set pagesize 0
spool DropTables.sql
select drop table || owner ||.|| table_name||;
from dba_tab_columns
where data_type = SDO_GEOMETRY
and owner != MDSYS;
spool off

@DropTables.sql

清空存在SDO_GEOMETRY类型的字段的用户的回收站

purge recyclebin;

3)删除MDSYS用户

drop user MDSYS cascade;

4)删除为Spatial创建的所有公共同义词

set pagesize 0
set feed off
spool dropsyn.sql
select drop public synonym " || synonym_name || "; from dba_synonyms where table_owner=MDSYS;
spool off;
@dropsyn.sql

5)删除Spatial 组件在安装过程中创建的其它用户

drop user mddata cascade;
-- Only created as of release 11g:
drop user spatial_csw_admin_usr cascade;
drop user spatial_wfs_admin_usr cascade;

8.  删除CONTEXT组件

CONTEXT组件包括“Oracle Text”,因为“Oracle XML Database”组件中的程序包“DBMS_XDBT”的功能需要CONTEXT组件,因此CONTEXT组件一旦安装成功了,就不可以删除了。

9.  删除APEX组件

APEX组件包括“Oracle Application Express”,删除的操作步骤如下:

1)检查apex组件是否在使用

运行apex_verify.sql脚本并检查输出以确认未使用APEX,APEX安装验证脚本参考文档ID 1254932.1。

2)检查apex的用户有哪些存在于数据库中,不同的apex版本,apex的用户名就不一样。

select username from dba_users where username like ‘APEX%’;
select username from dba_users where username like ‘FLOWS%’;

3)  删除步骤2中查到的用户

Drop user XXXXXX cascade;

如果删除用户的时候,提示“ORA-28014: cannot drop administrative user or role”,则在删除用户前则执行如下命令:

alter session set "_oracle_script"=true;

删除用户之后再执行:

alter session set "_oracle_script"=false;

4) 删除APEX公共同义词

select drop public synonym  || synonym_name || CHR(10) || / from sys.dba_synonyms
where table_owner in (步骤2中查到的用户名);


三. 注意事项

  1. 本文仅在19C中进行测试过,其它版本可能会有差别。

  2. 请操作前在测试环境中做充分测试,请勿在生产环境中进行尝试。

  3. 不推荐在已经运行一段时间的生产环境中做此操作,只建议做为生产环境上线前的准备工作之一。

  4. 请操作前做好备份工作。

  5. 集群环境操作后,记得要重启所有实例,避免内存中信息不一致。

  6. cdb环境需要在pdb下执行同样的操作,也可以使用catcon.pl脚本执行。


文章参考:

How to execute sql scripts in Multitenant environment (catcon.pl) (Doc ID 1932340.1)
How to remove the Oracle OLAP Option from a 12c Database (Doc ID 1940098.1)
How to Remove APEX Component (Not Used) From Database If Its Causing Issues When Upgrading Database (Doc ID 2590081.1)
Removing Oracle Multimedia from 12c and higher installations (Doc ID 2544494.1)
Safe repair/reinstall of the JVM Component in 11.2 and up (Doc ID 2314363.1)
How To uninstall / install Database Vault in a 12c database ? (Doc ID 2112167.1)
Steps for Manual De-installation of Oracle Spatial/Locator (Doc ID 179472.1)
How to remove and reinstall the XDK in Oracle 12 (Doc ID 2470780.1)
How to Install / Deinstall Oracle Label Security (Doc ID 171155.1)


END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129824.html

相关文章

  • 19C DG Broker配置和测试

    19C DG Broker配置和测试 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    IT那活儿 评论0 收藏2941
  • 宜信开源|数据库审核软件Themis部署攻略

    摘要:一介绍是宜信公司团队开发的一款数据库审核产品,可帮助开发人员快速发现数据库质量问题,提升工作效率。此平台可实现对数据库进行多维度对象结构文本执行计划及执行特征的审核,用以评估对象结构设计质量及运行效率。执行计划指数据库中的执行计划。 一、介绍 Themis是宜信公司DBA团队开发的一款数据库审核产品,可帮助DBA、开发人员快速发现数据库质量问题,提升工作效率。其名称源自希腊神话中的正义...

    fsmStudy 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<