11.21号------缓存大表扫描oracle的解决方法

本文探讨了Oracle中避免大表扫描时数据块进入缓存的两种方式:一种是将扫描的块移动到列表的LRU端,使得它们迅速被刷出缓存;另一种是使用直接路径IO,跳过缓冲区高速缓存,从而避免不必要的IO操作。

oracle避免大表扫描的数据块进入缓存的两种方式:

1.把这些块放在表的LRU端,这样它们几乎立即就会被刷出缓存.

2.使用直接路径IO,这会跳过缓冲区高速缓存.用这种方式读取的块根本不会进入缓存冲区高速缓存.

第一种方式:移动表扫描的块到列表的LRU端,是Oracle 10g中默认采用的方法.

第二种方式:跳过缓冲区高速缓存,使用直接路径操作是oracle 11g中使用的方式.

直接路径的好处:避免把无用的块读入到缓冲区高速缓存中.

直接路径IO会跳过缓冲区高速缓存,并且不能通过缓冲高速缓存配置来减少IO

D:\桌面\apache-tomcat-9.0.106\bin\catalina.bat run [2025-07-01 04:58:52,949] 工件 test1:war exploded: 正在等待服务器连接以启动工件部署… Using CATALINA_BASE: "C:\Users\Lenovo\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\9af9a62d-8cc4-48aa-b9a7-b9fd6acf1959" Using CATALINA_HOME: "D:\����\apache-tomcat-9.0.106" Using CATALINA_TMPDIR: "D:\����\apache-tomcat-9.0.106\temp" Using JRE_HOME: "C:\Program Files\Java\jdk-21" Using CLASSPATH: "D:\����\apache-tomcat-9.0.106\bin\bootstrap.jar;D:\����\apache-tomcat-9.0.106\bin\tomcat-juli.jar" Using CATALINA_OPTS: "" NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED 01-Jul-2025 16:58:53.651 警告 [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [D:\桌面\apache-tomcat-9.0.106\lib], exists: [false], isDirectory: [false], canRead: [false] 01-Jul-2025 16:58:53.653 警告 [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [D:\桌面\apache-tomcat-9.0.106\lib], exists: [false], isDirectory: [false], canRead: [false] 01-Jul-2025 16:58:53.883 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.106 01-Jul-2025 16:58:53.883 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Jun 5 2025 19:02:30 UTC 01-Jul-2025 16:58:53.883 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本: 9.0.106.0 01-Jul-2025 16:58:53.883 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11 01-Jul-2025 16:58:53.883 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0 01-Jul-2025 16:58:53.883 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64 01-Jul-2025 16:58:53.883 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Program Files\Java\jdk-21 01-Jul-2025 16:58:53.883 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 21.0.7+8-LTS-245 01-Jul-2025 16:58:53.884 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Oracle Corporation 01-Jul-2025 16:58:53.884 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\Users\Lenovo\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\9af9a62d-8cc4-48aa-b9a7-b9fd6acf1959 01-Jul-2025 16:58:53.884 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: D:\桌面\apache-tomcat-9.0.106 01-Jul-2025 16:58:53.884 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED 01-Jul-2025 16:58:53.884 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang.invoke=ALL-UNNAMED 01-Jul-2025 16:58:53.884 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang.reflect=ALL-UNNAMED 01-Jul-2025 16:58:53.884 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED 01-Jul-2025 16:58:53.884 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED 01-Jul-2025 16:58:53.884 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED 01-Jul-2025 16:58:53.885 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED 01-Jul-2025 16:58:53.885 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=C:\Users\Lenovo\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\9af9a62d-8cc4-48aa-b9a7-b9fd6acf1959\conf\logging.properties 01-Jul-2025 16:58:53.885 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 01-Jul-2025 16:58:53.885 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote= 01-Jul-2025 16:58:53.885 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.port=1099 01-Jul-2025 16:58:53.886 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.ssl=false 01-Jul-2025 16:58:53.886 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.password.file=C:\Users\Lenovo\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\9af9a62d-8cc4-48aa-b9a7-b9fd6acf1959\jmxremote.password 01-Jul-2025 16:58:53.886 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.access.file=C:\Users\Lenovo\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\9af9a62d-8cc4-48aa-b9a7-b9fd6acf1959\jmxremote.access 01-Jul-2025 16:58:53.886 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.rmi.server.hostname=127.0.0.1 01-Jul-2025 16:58:53.886 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djdk.tls.ephemeralDHKeySize=2048 01-Jul-2025 16:58:53.887 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 01-Jul-2025 16:58:53.887 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dsun.io.useCanonCaches=false 01-Jul-2025 16:58:53.887 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dignore.endorsed.dirs= 01-Jul-2025 16:58:53.887 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=C:\Users\Lenovo\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\9af9a62d-8cc4-48aa-b9a7-b9fd6acf1959 01-Jul-2025 16:58:53.887 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=D:\桌面\apache-tomcat-9.0.106 01-Jul-2025 16:58:53.888 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=D:\桌面\apache-tomcat-9.0.106\temp 01-Jul-2025 16:58:53.892 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。 01-Jul-2025 16:58:53.892 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能:IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。 01-Jul-2025 16:58:53.892 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置:useAprConnector[false],useOpenSSL[true] 01-Jul-2025 16:58:53.897 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024] 01-Jul-2025 16:58:54.061 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"] 01-Jul-2025 16:58:54.079 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[371]毫秒内初始化 01-Jul-2025 16:58:54.183 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina] 01-Jul-2025 16:58:54.184 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.106] 01-Jul-2025 16:58:54.209 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"] 01-Jul-2025 16:58:54.264 信息 [main] org.apache.catalina.startup.Catalina.start [183]毫秒后服务器启动 已连接到服务器 [2025-07-01 04:58:54,601] 工件 test1:war exploded: 正在部署工件,请稍候… 01-Jul-2025 16:58:56.112 信息 [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 01-Jul-2025 16:58:56.224 信息 [RMI TCP Connection(2)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext: initialization started Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. 01-Jul-2025 16:58:57.190 信息 [RMI TCP Connection(2)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext initialized in 966 ms 01-Jul-2025 16:58:57.220 信息 [RMI TCP Connection(2)-127.0.0.1] org.springframework.web.servlet.FrameworkServlet.initServletBean Initializing Servlet 'dispatcher' 01-Jul-2025 16:58:57.687 信息 [RMI TCP Connection(2)-127.0.0.1] org.springframework.web.servlet.FrameworkServlet.initServletBean Completed initialization in 467 ms [2025-07-01 04:58:57,703] 工件 test1:war exploded: 工件已成功部署 [2025-07-01 04:58:57,703] 工件 test1:war exploded: 部署已花费 3,102 毫秒 01-Jul-2025 16:59:04.225 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\桌面\apache-tomcat-9.0.106\webapps\manager] 01-Jul-2025 16:59:04.262 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\桌面\apache-tomcat-9.0.106\webapps\manager]的部署已在[37]毫秒内完成
最新发布
07-02
从日志来看,Tomcat已成功启动,项目`test1:war exploded`也部署成功,但**存在两个关键警告**需要解决--- ### **问题分析** 1. **Tomcat库目录访问失败** ``` 警告 [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [D:\桌面\apache-tomcat-9.0.106\lib], exists: [false], isDirectory: [false], canRead: [false] ``` - **原因**:Tomcat的`lib`目录路径包含乱码(`D:\桌面\...`),导致无法加载JAR库。 - **影响**:可能影响Tomcat的核心功能(如JSP编译、SSL等)。 2. **MySQL驱动过时警告** ``` Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. ``` - **原因**:代码中使用了旧版MySQL驱动类名。 - **影响**:未来版本可能移除该类,导致兼容性问题。 --- ### **解决方案** #### **1. 修复Tomcat路径乱码问题** ##### **方法A:移动Tomcat目录** 1. 将Tomcat安装目录移至**无中文或特殊字符的路径**,例如: ``` D:\apache-tomcat-9.0.106 ``` 2. 在IntelliJ IDEA中重新配置Tomcat路径: - **Run/Debug Configurations → Tomcat → Tomcat Home** 指向新路径。 ##### **方法B:修改系统环境变量** 如果必须保留当前路径,尝试: 1. 在系统环境变量中设置: ``` CATALINA_HOME=D:\桌面\apache-tomcat-9.0.106 ``` 2. 确保路径使用短名称(如`D:\Deskto~1\...`,可通过`dir /x`命令查看)。 #### **2. 更新MySQL驱动配置** 1. **修改驱动类名**: 在Spring配置文件(如`applicationContext.xml`或Java配置类)中,将: ```xml <property name="driverClassName" value="com.mysql.jdbc.Driver" /> ``` 改为: ```xml <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" /> ``` 2. **更新依赖版本**(可选): 在`pom.xml`中使用最新驱动: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> <!-- 或更版本 --> </dependency> ``` --- ### **验证步骤** 1. **检查Tomcat配置** - 重启Tomcat,观察日志中是否仍有`lib`目录的警告。 - 确认`D:\apache-tomcat-9.0.106\lib`下存在JAR文件(如`tomcat-jdbc.jar`)。 2. **测试数据库连接** - 访问应用中的数据库操作功能,确认无驱动加载错误。 --- ### **其他建议** 1. **优化Tomcat启动参数** 在`catalina.bat`或IDEA配置中添加: ``` -Dfile.encoding=UTF-8 ``` 避免中文路径乱码问题。 2. **清理临时文件** 删除`D:\桌面\apache-tomcat-9.0.106\temp`目录下的旧文件,防止缓存干扰。 3. **检查JSP编译警告** 日志中的`TldScanner`警告可通过以下方式解决- 在`conf/catalina.properties`中添加: ``` tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\ *.jar ``` - 或明确指定需要扫描的JAR。 --- ### **总结** | 问题类型 | 关键检查点 | 解决方案 | |-------------------|-------------------------------------|-----------------------------------| | Tomcat路径乱码 | 安装目录是否含中文/特殊字符 | 移动到纯英文路径(如`D:\tomcat`)| | MySQL驱动过时 | 是否使用`com.mysql.cj.jdbc.Driver` | 更新配置和依赖版本 | | JSP扫描性能 | 是否需要扫描所有JAR的TLD | 配置`jarsToSkip`跳过无关JAR | 修复后,Tomcat将能正确加载所有组件,避免潜在的运行时错误。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值