Oracle Database 12.2 单实例的root.sh的变化--加入了安装TFA

Oracle 12c RAC 安装配置
本文记录了 Oracle 12c RAC 数据库安装过程中的关键步骤,包括设置 oraInventory 权限、执行 root.sh 脚本以完成环境变量配置,并安装 Oracle Trace File Analyzer (TFA)。
[root@db12cr2 u01]# /u01/app/oraInventory/orainstRoot.sh 
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.


Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.


[root@db12cr2 u01]# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh 
Performing root user operation.


The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/12.2.0/dbhome_1


Enter the full pathname of the local bin directory: [/usr/local/bin]: 
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...




Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes|[no] : ---->>>是否安装TFA
yes----->敲入yes即可.
Installing Oracle Trace File Analyzer (TFA).
Log File: /u01/app/oracle/product/12.2.0/dbhome_1/install/root_db12cr2_2017-02-25_06-22-00-133858952.log
Finished installing Oracle Trace File Analyzer (TFA)
[root@db12cr2 u01]# 


<think>我们正在处理用户关于启动OracleTFA并使用指定JVM参数的问题。用户提供的命令是:/opt/oracle.ahf/jre/bin/java--add-opensjava.base/java.lang=ALL-UNNAMED-server-Xms64m-Xmx128m-Djava.awt.headless=true-Ddisable.checkForUpdate=true-XX:+ExitOnOutOfMemoryErrororacle.rat.tfa.TFAMain但是,根据引用[1]和引用[2],我们遇到了两个关键问题:1.引用[1]显示错误:Unrecognizedoption:--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED,说明Java虚拟机不识别`--add-opens`选项。2.引用[2]显示错误:./catalina.sh:1:eval:/usr/lib/jdk/jdk-11.0.2/jre/bin/java:notfound,说明Java路径设置有问题。因此,我们需要解决两个问题:-确保Java版本支持`--add-opens`选项(该选项在Java9及更高版本中引入)-确保Java可执行文件的路径正确用户指定的Java路径是`/opt/oracle.ahf/jre/bin/java`,我们需要验证该路径是否存在,并且该Java版本是否足够新(至少Java9)。步骤:1.检查Java路径是否存在:`ls-l/opt/oracle.ahf/jre/bin/java`2.检查Java版本:`/opt/oracle.ahf/jre/bin/java-version`3.如果版本低于9,则需要使用更高版本的Java。但注意,OracleTFA可能捆绑了特定版本的Java,所以可能需要使用捆绑的Java,但调整参数。根据用户命令,我们尝试指定JVM参数,其中`--add-opens`是用于模块系统打开包的,这在Java9+中才有。因此,如果捆绑的Java版本低于9,则不能使用该选项。然而,从路径`/opt/oracle.ahf/jre`来看,这个Java很可能是OracleTFA自带的,所以我们应该检查其版本。另外,引用[1]的错误信息中选项写的是`--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED`,而用户命令中是`--add-opensjava.base/java.lang=ALL-UNNAMED`(注意空格和等号的区别)。在Java9+中,两种写法都可以,但最好使用等号。但是,错误信息显示“无法识别的选项”,很可能是因为Java版本太低(Java8或更早)不支持模块系统。因此,解决方案可能包括:-确认`/opt/oracle.ahf/jre/bin/java`的版本,如果低于9,则考虑使用更高版本的Java,但需要确保兼容性。-或者,如果TFA要求使用自带的Java,那么可能需要升级TFA版本以使用支持模块系统的Java。此外,引用[3]提到了一些关于安装Oracle数据库预安装包的步骤,但这可能与当前问题关系不大。根据用户上一次的问题和错误,我们还需要注意环境变量的设置。引用[2]中提到系统环境变量中的路径正确,但脚本仍然找不到Java。因此,我们可能需要直接使用绝对路径来执行,就像用户命令中那样。现在,我们尝试给出解决方案:1.检查Java版本:```bash/opt/oracle.ahf/jre/bin/java-version```2.如果版本是Java8或更低,那么`--add-opens`选项不被支持。这时,我们可以尝试移除该选项,但要注意这可能会导致TFA运行失败(如果TFA需要访问内部API)。或者,我们可以尝试升级TFA自带的Java?但通常不建议替换捆绑的Java。另一种方法是:OracleTFA可能允许我们通过环境变量或配置文件来设置JVM参数。我们可以查看TFA的启动脚本(比如在`/opt/oracle.ahf/bin/tfactl`)并修改其中的JAVA_OPTS。3.如果版本是Java9或更高,那么可能是命令语法问题。我们可以尝试将`--add-opens`改为使用等号:```bash--add-opens=java.base/java.lang=ALL-UNNAMED```4.如果路径不存在(如引用[2]的错误),那么我们需要确认TFA安装路径。默认安装路径可能是`/opt/oracle.ahf`,但有时可能安装在其他位置。我们可以通过`find`命令查找:```bashfind/-nameTFAMain2>/dev/null```找到TFAMain.class所在的路径,其父目录即为jre的路径。5.另外,用户命令中指定的主类是`oracle.rat.tfa.TFAMain`,这应该是正确的。综合以上,我们给出一个修正后的命令尝试(假设Java版本支持且路径存在):```bash/opt/oracle.ahf/jre/bin/java--add-opens=java.base/java.lang=ALL-UNNAMED-server-Xms64m-Xmx128m-Djava.awt.headless=true-Ddisable.checkForUpdate=true-XX:+ExitOnOutOfMemoryErrororacle.rat.tfa.TFAMain```如果仍然出现无法识别的选项错误,那么可能是Java版本太低,我们需要升级TFA或者使用更高版本的Java来运行TFA。但注意,TFA可能对Java版本有特定要求,建议查阅Oracle官方文档。另外,我们也可以尝试设置环境变量`JAVA_HOME`指向一个更高版本的Java(比如Java11),然后修改TFA启动脚本使用该Java。但是,这可能会带来兼容性问题,所以最好按照TFA文档操作。如果用户没有TFA文档,可以参考Oracle官方关于TFA的文档,通常可以在MOS(MyOracleSupport)上找到。由于我们无法直接操作环境,建议用户按照上述步骤排查。相关问题:1.如何检查CentOS系统上安装的Java版本?2.如何升级OracleTFA到最新版本?3.如何修改OracleTFA的启动参数?4.在Java9+中,`--add-opens`选项的作用是什么?5.如何解决Java程序启动时的“无法识别的选项”错误?</think>### 启动 Oracle TFA 并配置 JVM 参数 以下是针对 CentOS 7.9 启动 Oracle TFA 并使用指定 JVM 参数的完整解决方案: #### 1. **验证 Java 路径** 首先确认 TFA 自带的 Java 路径是否存在: ```bash ls -l /opt/oracle.ahf/jre/bin/java ``` 若返回 `not found` 错误(如引用[2]所述),需检查: - TFA 实际安装路径(默认 `/opt/oracle/tfa` 或 `/opt/oracle.ahf`) - Java 可执行文件权限:`chmod +x /opt/oracle.ahf/jre/bin/java` #### 2. **检查 Java 版本** 验证 Java 是否支持 `--add-opens` 参数(Java 9+ 特性): ```bash /opt/oracle.ahf/jre/bin/java -version ``` 若版本低于 Java 9: - 升级 TFA 到 19c+ 版本(含 Java 11) - 或手动替换 JRE:将 TFA 的 `jre` 目录链接到支持模块化的 JDK #### 3. **修正 JVM 参数语法** 根据引用[1]的错误,调整参数格式(使用等号代替空格): ```bash # 原始命令(可能报错): /opt/oracle.ahf/jre/bin/java --add-opens java.base/java.lang=ALL-UNNAMED ... # 修正后(Java 9+ 标准语法): /opt/oracle.ahf/jre/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED \ -server -Xms64m -Xmx128m \ -Djava.awt.headless=true \ -Ddisable.checkForUpdate=true \ -XX:+ExitOnOutOfMemoryError \ oracle.rat.tfa.TFAMain ``` #### 4. **通过启动脚本配置** 直接修改 TFA 启动脚本更可靠: 1. 打开启动脚本: ```bash vi /opt/oracle.ahf/bin/tfactl ``` 2. 在 `JAVA_OPTS` 部分添加参数: ```bash JAVA_OPTS="--add-opens=java.base/java.lang=ALL-UNNAMED -server -Xms64m -Xmx128m -Djava.awt.headless=true -Ddisable.checkForUpdate=true -XX:+ExitOnOutOfMemoryError" ``` 3. 保存后启动: ```bash tfactl start ``` #### 5. **环境变量配置** 若遇到路径问题(如引用[2]),检查环境变量: ```bash echo $JAVA_HOME # 应指向 /opt/oracle.ahf/jre export PATH=/opt/oracle.ahf/jre/bin:$PATH # 临时生效 ``` 永久生效需修改 `/etc/profile`: ```bash echo 'export JAVA_HOME=/opt/oracle.ahf/jre' >> /etc/profile echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile source /etc/profile ``` #### 6. **验证 TFA 状态** 启动后检查服务状态: ```bash tfactl status ``` 日志文件位置:`/opt/oracle.ahf/tfa/logs/tfa*.log` > **关键提示**: > - `--add-opens` 是 Java 模块化系统的关键参数,用于解除模块访问限制[^1] > - `-XX:+ExitOnOutOfMemoryError` 确保内存溢出时立即终止进程 > - TFA 需使用自带的 JDK,替换第三方 JDK 可能导致兼容性问题[^3]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值