我有两个表,table_a (id, name) 和 table_b (id),假设在 Oracle 12c 上。
为什么这个查询不返回异常?
select * from table_a where name in (select name from table_b);
Run Code Online (Sandbox Code Playgroud)
据我了解,Oracle 认为这是
select * from table_a where name = name;
Run Code Online (Sandbox Code Playgroud)
但我不明白的是为什么?
我写了一个 flakey PL/SQL 脚本,该脚本崩溃并忘记关闭文件句柄(类型UTL_FILE.file_type)。
现在我无法删除文件。除了重新启动实例或重新启动盒子之外,我可以在 Oracle 中运行什么来清除句柄吗?我有system用户访问相关框的权限。
更新:Oracle 在 Windows 上运行。
我被聘来填补一个我还没有准备好填补的 DBA 职位,虽然培训让我到达那里,但我正在接近一个潜在的问题。
我的 oracle 11g 数据库的闪回恢复区 (FRA) 快要满了(还剩 2.5%)。它处于 ARCHIVELOG 模式,因为我们进行实时备份(至少这是我被告知的原因)。我们已经通过企业管理器清除了所有不需要的备份,但存档日志仍然占用超过 50% 的已分配 FRA 空间。是否可以删除一些较旧的存档日志以释放空间?服务器仍然保存几个月前的日志,我们真的不需要那么远的备份。
如果我可以删除它们,最好的方法是什么?
几天前,我在我的数据库上执行了关闭,但花了很长时间,所以我关闭了我的 m/c。重新启动机器后,当我尝试使用 TOAD 连接到我的数据库时出现此异常。我提到了下面提到的线程,但问题仍未解决:
我的 tnsnames.ora 的内容:
ORCL=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=localhost)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=orcl)
)
)
Run Code Online (Sandbox Code Playgroud)
“lsnrctl 服务”的输出:
LSNRCTL for 32-bit Windows: Version 11.2.0.1.0 - Production on 15-FEB-2012 23:53:33
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
The command completed successfully
Run Code Online (Sandbox Code Playgroud)
我所有的 oracle 服务都在运行。我尝试使用启动命令启动数据库:
C:\Users\PPPP>sqlplus
SQL*Plus: Release 11.2.0.1.0 Production …Run Code Online (Sandbox Code Playgroud) 我正在使用一个现有的数据库,其中的密码是这样散列的:
DBMS_UTILITY.GET_HASH_VALUE(the_username || the_password, 1000000000, 1073741824)
Run Code Online (Sandbox Code Playgroud)
我知道由于各种原因这很糟糕(不是正确的加密安全哈希,并且 oracle 使用的算法可能会在版本之间发生变化)。但是该数据库存在,我们不太可能让他们改变这一点,因为他们有很多用户,并且不能简单地切换到正确的散列算法而不让每个人重新输入或重置密码。
现在我需要使用这个数据库进行 LDAP 身份验证(基于 OpenLDAP)。不幸的是,没有办法让 OpenLDAP 将明文密码传递给数据库(然后我可以简单地在明文密码上调用散列函数)。但是,修改 LDAP 客户端是可能的,所以如果我可以创建哈希,一切都会好起来的。
我宁愿避免连接到 Oracle 数据库来执行此操作,因为这也需要该机器上的 Oracle 客户端、数据库登录数据等。因此我想知道是否有关于GET_HASH_VALUE()可用算法的任何信息。我在谷歌上找不到任何东西,但也许它隐藏在所有有些不相关的结果之间......如果算法最近发生了变化,服务器版本是 11.2.0.3.0。
我们需要迁移生产数据库的存储。这样做的适当方法是什么,我们需要采取哪些特定/通用的预防措施?
数据库配置:
卷管理器 - 使用原始磁盘的 ASM。ASM 外部冗余作为存储从存储子系统
数据库版本发布 - Oracle 10g R2
数据库大小 - 约 5TB
现有存储(来源):HP MSA 2312sa 双控制器。直接连接到我们的数据库服务器(无 fc 或以太网交换机)。
Oracle 二进制文件也在此存储上
新存储(目标):HP EVA6300 FC 存储。该存储将通过 FC 交换机连接到主机。
我们能否使用基于主机的存储迁移(如 VxVM Plex 连接/分离)将数据从源 LUN 复制到目标 LUN?
我们是否必须使用 Oracle RMAN 备份和恢复方法进行存储迁移?