我最近不得不将我的 Oracle 11g 数据库从 Windows 2012 R2 服务器移至 Windows 2022 服务器,并且我不断收到“Oracle 通信:无法连接到服务器或解析连接字符串”错误。如果我重新启动服务器,该错误会消失,但一段时间后又会再次出现。为了迁移数据库,我使用数据库的默认设置安装了 Oracle 软件,并更改了数据库以镜像我在旧数据库中设置的内容,然后我从旧数据库中导出数据并将其导入到新数据库中,没有问题。我获得了所有数据和 PL/SQL 代码(包、过程和函数),并且我的所有应用程序都可以正常访问它。最终我将从 11g 升级到 23AI,但为了迁移,我坚持使用 11g 以使事情更容易/更快。无论如何,我在登录数据库时收到此间歇性错误,我假设我错过了某个设置。如果我输入用户名/密码几次(最近一次是 3 次),我最终能够登录,但这个问题在通过我的应用程序处理数据时弹出并导致数据出现问题。有人知道发生了什么吗?我想我错过了某个设置,但不知道是什么。旧数据库在 Windows 2012 R2 上运行了 8 年,从未出现过此问题。
我面临一个奇怪但明智的问题,我有 2 个 ORACLE_HOME,第一个指向 ORACLE 数据库软件,第二个指向 ORACLE 客户端软件。
为什么我被迫这样做 - 原因是:在我的系统中,Pro *c 是从 ORACLE 数据库 ORACLE_HOME 编译的,但是 Pro *Cobol 是从 ORACLE 客户端 ORACLE_HOME 编译的。
编译 Pro *Cobol:
echo $LD_LIBRARY_PATH
/u01/app/oracle/product/11.2.0/client/lib:/opt/FJSVcbl64/lib:/opt/FJSVXbsrt/lib:/opt/FJSVXmeft/lib:/opt/FJSVcbl/COBOL/lib:/opt/FJSVcbl/COBOLRT/lib
编译 Pro *C
echo $LD_LIBRARY_PATH
/u01/app/oracle/product/11.2.0/db_1/lib:/opt/FJSVcbl64/lib:/opt/FJSVXbsrt/lib:/opt/FJSVXmeft/lib:/opt/FJSVcbl/COBOL/lib:/opt/FJSVcbl/COBOLRT/lib
如果我将路径即 /u01/app/oracle/product/11.2.0/db_1/lib 和 /u01/app/oracle/product/11.2.0/client/lib 都放在 1 LD_LIBRARY_PATH 中,则只有先到者才能获得成功的。
有没有办法解决这个问题?
对于临时修复,我在每个文件中创建了 2 个具有不同 LD_LIBRARY_PATH 的小脚本;所以我在编译 Pr *C 或 Pro *Cobol 之前调用这个脚本。
我只是不想调用任何脚本,只有 1 个 LD _LIBRARY_PATH 必须能够修复它。
让我知道。
谢谢!
Oracle 官方文档说,对于 RAM 超过 16GiB 的机器,我们需要分配 16GiB 的交换空间。
我们的服务器是 RHEL 7,拥有 256GiB 的 RAM。
DBA 不想看到系统交换,因此他们希望我们非常积极地监控 16GiB 的交换。
我建议我们将 RAM 翻倍至 512GiB(费用已批准),并禁用交换。然而,这违背了 Oracle 建议的 16GiB 交换空间,即使我们将 RAM 翻倍。
老实说,我不明白拥有 3% 的交换空间有什么意义,或者为什么如果我添加的 RAM 比交换空间多,我们必须保留交换空间。
那么,有什么好的论据可以用来证明在没有交换的情况下运行 Oracle 是合理的吗?
PS我提到RAM翻倍的唯一原因是为了证明我很难争论的论点的荒谬性。我真正要寻找的是证明禁用交换是合理的论据。
我运行一个使用 Oracle 11g 实例作为后端的 PHP 应用程序。我们目前连接 DEDICATED 作为我们的类型,但我们无法扩展。
因此,我向 DBA 建议我们实现 DRCP 连接池,因为这似乎是在 php 环境中处理的最佳(唯一?)方式。
问题是其他应用程序/供应商也连接到同一个数据库,并且 DBA 关心将每个人切换到池化,因为这将是一项巨大的测试工作。此外,我们会有不同的用户 ID,所以如果我们都必须在同一个池中,我什至认为在这种情况下池化是没有意义的。
所以,我的问题是服务器可以同时为想要通过 DEDICATED 连接的客户端和我通过 POOLED 连接的客户端提供服务吗?
我正在研究将 Oracle 从 11.2.0.1 升级到 11.2.0.3 的过程。我计划使用 DBUA 实用程序。我的问题是,DBUA 是否会进行必要的更改以保留我的 SID 并更新 TNS,以便不需要对应用程序进行更改?
我正在尝试编写一小段 PL/SQL,其中包含非 CPU 燃烧睡眠。
以下在 sqldeveloper 中工作
begin
dbms_lock.sleep(5);
end;
但是(作为同一用户),我不能执行以下操作:
create or replace
procedure sleep(seconds in number)
is
begin
dbms_lock.sleep(seconds);
end;
没有错误“必须声明标识符“DBMS_LOCK”...有趣,因为我可以在没有程序的情况下运行它。
同样奇怪,当我以DBA身份登录时,我可以运行命令
grant exec on dbms_lock to public;
我得到
ERROR at line 1:
ORA-00990: missing or invalid privilege
这是 Oracle 版本“Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production”
我有一个 oracle 11g 数据库。我正在测试插入。数据库运行在noarchive模式。我配置了 3 个重做日志,每个 2gb。
我正在尝试将数据插入测试表。一开始它以 15k ins/秒的速度运行良好。我在 200 次插入后提交。
但是在大约 1.3m 插入记录后,它变得非常慢,大约 1-2k ins/second。正如我此时在资源浏览器中注意到的那样,我们已经填满了所有重做日志,因此从这一点开始的插入工作很慢。
所以我的问题是为什么它在填充重做日志时变得如此缓慢,即使我每提交 200 条记录也是如此。以及如何解决这种情况(除了在插入时完全关闭日志记录)
我需要提供推荐量的 RAM 和磁盘空间(分为两个分区),以便客户可以创建合适的虚拟机来运行 Oracle。我在文档中所能找到的只是一个包含最小RAM 和典型/高级安装类型的简短列表。
该虚拟机将在 Windows Server 2008 x64 下运行最新的 Oracle Standard Edition One(目前为 11g 第 2 版),并将托管一个流量相当低的 Web 应用程序。
为了安全起见,我必须要求多少 RAM 和光盘?
(如果我遗漏了相关内容,请随时询问更多详细信息。)
更新:
粗略估计:
- 数据库大小:安装后 10 MB
- 增长率:平均每天+3MB
- 数据库“活动”数据的大小:(不确定这意味着什么,没有实际的存档所以我猜所有数据都是最新的)
- 高峰时段每秒写入数据量:几KB
- 客户端会话数:最多 3 或 4 个
- 最繁重请求的频率和响应大小:一些报告进行繁重的表 JOINS 需要长达 20 秒才能完成,但它们不会返回超过几千行的纯文本。该应用程序还可以处理 BLOB(典型大小从 50KB 到 200KB)
我正在寻找一个可以下载 Oracle 11g 企业版的 URL。
我知道我可以在 Oracle 的 technet 上下载 11g 的标准版,但由于我想使用标准中禁用的一些企业选项,我宁愿在我们的开发服务器上重新安装企业软件。
现在我们正在做以下事情:
- 生成 DMP 文件到 windows 服务器,这大约需要 14 小时
- 将 DMP 文件复制到磁带,这大约需要 10 小时
- 存档吧……
总共需要大约 24 小时才能完成此操作。任何想法,将不胜感激.....