Questions tagged «oracle-11g»

Oracle数据库11g(不是11g R2)。还请标记oracle以进行搜索。

3
将行旋转为多列
我有一个SQL Server实例,该实例具有一个链接服务器到Oracle服务器。Oracle服务器上有一个名为的表,PersonOptions其中包含以下数据: ╔══════════╦══════════╗ ║ PersonID ║ OptionID ║ ╠══════════╬══════════╣ ║ 1 ║ A ║ ║ 1 ║ B ║ ║ 2 ║ C ║ ║ 3 ║ B ║ ║ 4 ║ A ║ ║ 4 ║ C ║ ╚══════════╩══════════╝ 我需要透视这些数据,因此结果是: ╔══════════╦═════════╦══════════╦══════════╗ ║ PersonID ║ OptionA ║ Option B ║ …


6
在Oracle中删除大型记录集的最佳方法
我管理着一个应用程序,该应用程序具有非常大的Oracle数据库后端(一个表中的数据接近1TB,行数超过5亿)。数据库实际上并没有做任何事情(没有SProcs,没有触发器或任何东西),它只是一个数据存储。 每个月我们都需要从两个主表中清除记录。清除的标准各不相同,并且是行龄和几个状态字段的组合。通常,我们最终每月清除10到5000万行(我们每周通过导入增加大约3-5百万行)。 当前,我们必须批量删除约50,000行(即删除50000,提交,删除50000,提交,重复)。尝试一次全部删除整个批处理会使数据库在大约一个小时内无响应(取决于行数)。像这样批量删除行在系统上非常困难,我们通常必须在一周的时间内“在时间允许的情况下”进行删除。允许脚本连续运行可能会导致用户无法接受的性能下降。 我相信这种批量删除还会降低索引性能,并产生其他影响,最终导致数据库性能下降。一张表上有34个索引,索引数据的大小实际上大于数据本身。 这是我们的一位IT人员用来清除此错误的脚本: BEGIN LOOP delete FROM tbl_raw where dist_event_date < to_date('[date]','mm/dd/yyyy') and rownum < 50000; exit when SQL%rowcount < 49999; commit; END LOOP; commit; END; 该数据库必须达到99.99999%,并且我们每年只有一次2天维护窗口。 我正在寻找一种删除这些记录的更好的方法,但是我还没有找到任何记录。有什么建议么?

3
我可以更改Oracle数据库的SID吗?
服务器是Oracle Database 11g企业版11.1.0.7.0版-64位 有没有简单快捷的方法来更改服务器上测试数据库的SID? 删除和重新创建数据库是我的一个选择。但我正在寻找需要更少时间的东西。 在客户端tnsnames.ora中分配名称的另一个选项容易出错,因为它们不是集中管理的。 与在SQL Server上删除和创建数据库的时间相比,创建新的Oracle数据库所需的时间过长。进一步在SQL Server上,您可以重命名SQL Server实例。[通常,您重命名运行SQL-Server的服务器,并且在重命名服务器之前也会遇到一些问题]。

1
Oracle 11g侦听器失败,并出现ORA-12514和ORA-12505错误
我在开发计算机上本地运行Oracle 11g实例,并且可以直接通过SqlPlus连接到本地实例: c:\>sqlplus ace SQL*Plus: Release 11.2.0.2.0 Production on Mon Mar 11 11:50:20 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - Beta SQL> select count(*) from my_table ; COUNT(*) ---------- 5297 但是我无法通过侦听器连接到它: c:\>sqlplus -L "user/pw@(DESCRIPTION = (ADDRESS …

2
如何在listener.ora中配置没有SID_LIST_LISTENER的Oracle Listener?
我可以使用以下listener.ora访问ORACLE 11g服务器 # listener.ora Network Configuration File: D:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN\listener.ora # Generated by Oracle configuration tools. LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.111)(PORT = 1521)) ) ) 并为该服务器上的所有实例提供服务,我可以通过以下方式进行验证 lsnrctl status 我的问题是,当我在虚拟机中全新安装Oracle 11g时,必须使用listener.ora # listener.ora Network Configuration …

5
在Oracle中,如何将sequence.nextval保存在变量中以在多个插入中重用?
我正在编写一个脚本,以用测试数据填充一些表。 我想写类似下面的内容,但我不知道该怎么做(我是Oracle 11g) SET ENABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE SET DISABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE INSERT INTO USERS (ID, USR_NAME) VALUES (:ENABLED_USER_ID, 'ANDREW'); INSERT INTO CAR (CAR_ID, CAR_NAME, USR_ID) VALUES (CARSEQ.NEXTVAL, 'FORD', :ENABLED_USER_ID); INSERT INTO USERS (ID, USR_NAME) VALUES (:DISABLED_USER_ID, 'ANDREW'); INSERT INTO CAR (CAR_ID, CAR_NAME, USR_ID) VALUES (CARSEQ.NEXTVAL, 'FORD', …


1
Oracle数据库中的提交与快速提交与提交清除
我想知道是否有人可以验证我对这三个术语与Oracle数据库之间的区别的理解。 许多消息来源混淆了这些术语,并且没有详细解释它们,因此查找信息有些困难。 从我的收集: 提交和快速提交是完全一样的东西,所有提交都是快速提交。 快速提交实质上仅更新撤消/回滚段头的事务表中的标志,以指示事务已提交。但是,实际块未重新访问,这意味着位于数据块头中的感兴趣的事务列表(ITL)中的撤消字节地址(UBA)仍指向相应撤消段的事务表。此外,不释放相应行的锁定字节,并且ITL中的锁定计数不变(行仍被锁定)。 在提交清除中,将重新访问该块,并使用提交SCN更新ITL。但是,ITL中的锁计数和每行存储的锁字节仍未更新(行仍然像快速提交中一样被锁),即使更改了块也不会生成重做。 正常提交(==快速提交)的块将在下次触摸(并生成重做)时进行延迟块清除。 进行了提交清除的块将在下次被触摸(并生成重做)时进行延迟日志记录块清除。 希望有人可以验证这些观点!谢谢!

2
LNNVL证明
LNNVL是一个Oracle内置函数,对于评估为FALSE或UNKNOWN的条件返回TRUE,对于评估为TRUE的条件返回FALSE。我的问题是,返回真值条件的对立而不只是处理NULL值有什么好处? 例如,假设您有一个包含StartCommission和CurrentCommission列的Emp表,其中的列可能包含空值。以下仅返回两个都不为null的行: SELECT * FROM Emp WHERE StartCommission = CurrentCommission; 如果要包括其中任一佣金为null的行,则可以执行以下操作: SELECT * FROM Emp WHERE StartCommission = CurrentCommission OR StartCommission IS NULL OR CurrentCommission IS NULL; 似乎存在一个可以缩短此语法的函数,但是使用LNNVL会返回所有非相等记录以及所有具有空值的记录。 SELECT * FROM Emp WHERE LNNVL(StartCommission = CurrentCommission); 向其添加NOT只会返回不包含null的行。在我看来,这种情况下所需的功能是保持真实条件为真,错误条件为假以及未知条件为真。我真的在这里创建了一个低用例吗?是否真的更有可能想要将未知变成真实,将真实变成虚假,以及将虚假变成真实? create table emp (StartCommission Number(3,2), CurrentCommission Number(3,2)); insert into emp values (null,null); insert …

1
为什么在触发器中没有出现变异表错误?
众所周知(或至少是这样),您不能在触发器内的变异表上使用DML语句。Oracle文档摘录: 变异表是由UPDATE,DELETE或INSERT语句修改的表,或者是可能由DELETE CASCADE约束的影响而更新的表。 发出触发语句的会话无法查询或修改变异表。此限制可防止触发器看到不一致的数据集。 但是,我无法理解为什么当我insert into emp使用SQL Developer或SQL * Plus 执行此演示触发器时不会出现“突变表”错误: CREATE OR REPLACE TRIGGER emp_bri BEFORE INSERT ON emp FOR EACH ROW BEGIN SELECT max(id) + 1 INTO :NEW.id FROM emp; UPDATE emp SET salary = 5000; END emp_bri; 插入成功完成并显示下一个id值,并更新所有emp记录。我正在使用Oracle Database 11g企业版11.2.0.1.0。我已经阅读了有关复合触发器的信息,但样本未使用它们。

2
为什么我不能通过SQL-SERVER 2008链接服务器读取Oracles CLOB列?
我想从SQL-Server 2008访问Oracle 11g数据库中的数据 我设置了链接服务器,执行时 select * from [Link_server_name]..Oracle_schema.Oracle_table 和Oracle_table包含Number和varchar2列,所有工作均例外。 但是,当Oracle_table包含CLOB列时,出现以下错误: OLE DB-Anbieter'MSDAORA'和Verbindungsserver'L_V407SR8T'的帽子被Meldung'Unspecified error'破坏了。 'OLE DB-Anbieter'MSDAORA'和Verbindungsserver'L_V407SR8T'已死于Meldung'发生Oracle错误,但无法从Oracle检索错误消息。祖鲁格本。 '从OLE DB-Anbieter'MSDAORA'中删除文件'L_V407SR8T',在Meldung中'不支持数据类型。祖鲁格本。 消息7306,第16级,状态2,第1行 死于“ MCCAPP”。 使用OPENQUERY SELECT * FROM OPENQUERY([L_V407SR8T], 'Select CLOB_COLUMN from Oracle_table' ) 我懂了 'OLE DB-Anbieter'MSDAORA'和Verbindungsserver'L_V407SR8T'已死于Meldung'发生Oracle错误,但无法从Oracle检索错误消息。祖鲁格本。'从OLE DB-Anbieter'MSDAORA'中删除文件'L_V407SR8T',在Meldung中'不支持数据类型。祖鲁格本。 请原谅德语错误消息。 我的问题:是否可以通过链接的服务器读取CLOB列? 编辑: SQL Server导入和导出向导似乎也依赖OLE DB,并且在同一张表上很烂 我问自己,问题是否取决于字符集使用,但是我无法更改它们 在实际工作中,我使用一些PowerShell脚本来获取数据,但是



1
设计用于需求预测分解的简单方案
我正在做一个简单的数据库设计任务,作为一个培训练习,在这种情况下,我必须针对以下情况提出基本的架构设计: 我具有产品的父子层次结构(例如,“原材料”>“在制品”>“最终产品”)。 在每个级别下订单。 在接下来的6个月内,应在每周的存储桶中查看订单数量。 可以针对每个产品级别进行需求预测。 未来6个月内任何一周的需求预测都可以在今天完成。 未来6个月将对每周的水桶进行需求预测。 需求预测通常在层次结构的较高级别(原始物料或在制品级别)进行,必须将其分解为较低级别(最终产品)。 有两种方法可以将需求预测从较高级别分解为较低级别: 用户指定最终产品的百分比分布。假设有一个正在进行的工作的1000的预测..用户说我要在存储区10中为最终产品1分配40%,为最终产品2分配60%。然后从现在开始第10周(星期日至星期六),预测值最终产品1的价格为400,最终产品2的价格为600。 用户说,只需根据针对第5个桶中的最终产品下达的订单进行分解,而第5个桶中第1个产品和第2个产品的订单分别为200和800,则EP1的预测值为((200/1000)* 100)%对于EP2,将是“进行中的工作”预测的((800/1000)* 100)%。 在接下来的6个月中,应可以按周的时段查看预测,理想的格式应为: product name | bucket number | week start date | week end date | forecast value | created_on PRODUCT_HIERARCHY表可能如下所示: id | name | parent_id __________________________________________ 1 | raw material | (null) 2 | work in progress …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.