Questions tagged «oracle»

所有版本的Oracle数据库。如果该上下文在问题中很重要,请添加特定于版本的标记,例如oracle-11g-r2。请勿用于Oracle产品(例如应用程序或中间件)或Oracle拥有的其他数据库产品(例如MySQL或BerkeleyDB)。

5
“从relational(owner.table)中选择*”是什么意思?
我们最近在表单的警报日志中出现了一些错误 301598: Tue Jul 16 03:58:29 2013 301599: ORA-01555 caused by SQL statement below 301600: SELECT * FROM RELATIONAL(<owner>.<table>) 我知道如何处理ORA-01555错误,但是我从未遇到过类似的东西SELECT * FROM RELATIONAL。我查看了DBA_OBJECTS,但没有这样的功能/运算符/任何东西。 谷歌搜索“ SELECT * FROM RELATIONAL”仅返回与ORA-01555有关的问题。 所以,我的问题是:RELATIONAL关键字的含义是什么?
8 oracle 


2
Oracle 11g:插入的性能改进
我有一个5亿行的表格(并且还在不断增长) 我做了以下事情来提高插入的性能: 在数据库方面: 删除所有索引和约束 禁用日志记录 在应用程序方面: 从JPA管理的实体切换到本机插入查询,向查询添加了APPEND Oracle提示 尝试每1k / 2k / 3k行批量提交 尝试并行写入(多线程,线程数=服务器上的核心数)到一张表 这使我每秒大约300行 另外尝试: 批量并行写入多个表(使用UNION分组然后返回结果) 这使我每秒大约有1000行,但在空表上。但是,当我用虚拟数据(每个200百万个)填充表时,插入速度下降到每秒250-300个。 有人可以建议我做些什么来加快插入速度吗?基本上,我想首先了解瓶颈(可能是什么)。 UPD: 表格按插入日期进行分区,表格约有60列-大多数列为VARCHAR2(2000 BYTE)
8 java  oracle 

3
由于内存配置错误(ORA-00837)无法启动Oracle(11g1)
我决定减少本地开发人员实例的内存分配,并被告知以下命令可以完成此工作; alter system set memory_max_target = 512M scope = spfile; 我猜是这样,因为我不再可以启动所讨论的Oracle实例。这是我尝试以非DBA用户身份连接时遇到的错误; ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 当以SYSDBA身份连接时,我得到以下信息; Connected to an inactive instance. SQL>startup nomount; ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET SQL>alter system set memory_max_target = 2G scope = spfile; ORA-01034: ORACLE not …

1
使用Oracle XML模式生成XML
我有一些使用DBMS_XMLSCHEMA注册的XML模式定义。我已经使用生成的XMLTypes创建了表。我可以使用XMLQuery创建XML,如果我理解正确,那么如果定义正确,则可以将查询结果插入表中。 最终需要将XML写入文件,但是我不确定的部分是从头开始编写XMLQueries是否是生成XML的最佳方法。有什么方法可以让XML模式生成指南的XML存根或生成模板XMLQuery?目前,数据全部存储在常规Oracle表中,但排列方式却大不相同,因此有关基于特定的一组已注册模式简化向XML导出的任何信息都是有用的。

3
SQL Server中的聚集索引与Oracle中的索引组织表
作为数据库开发人员,我正在从SQL Server过渡到Oracle,并且已经在这里找到了一些很棒的资源(如何从SQL Server DBA过渡到Oracle?以及作为DBA,我将如何从Oracle过渡到SQL Server。 ?),但是我很难找到有关在Oracle中使用索引组织表的良好信息。 在我的前世中,我们在OLTP-ish数据集市中广泛使用了SQL Server中的聚集索引,并取得了巨大的成功。索引组织表是否可以方便地用作Oracle中的工具?

3
SQL为列设置允许的值
我想做一个ALTER TABLE表达式,添加一个新列并设置一个默认值,另外定义该列的允许值。它是一个文本列,并且只能是“ value1”,“ value2”和“ value3”。默认值应为“ value1” 根据以下语法图: 我到了这一点 ALTER TABLE exampleTable ADD COLUMN new_column VarChar(20) DEFAULT 'value1' 但我绝对不确定如何设置允许的值。 有可能使像 约束检查new_column IN('value1','value2','value3) ?我必须承认该search condition图使我感到困惑。

1
ON SCHEMA和ON DATABASE触发器有什么区别?
我们可以在具体架构事件(ON SCOTT.SCHEMA)或所有架构(ON SCHEMA)上创建数据库触发器。但是,在创建数据库触发器时,我们也可以使用ON DATABASE。它们之间有什么区别?这是一些旧的东西吗?使用AFTER STARTUP或AFTER STARTUP时应使用ON DATABASE,因为它肯定只与数据库有关,但是使用ON SCHEMA可能会完成与使用ON SCHEMA相同的工作,所以有什么区别?我在Oracle文档中找不到与此相关的参考。
8 oracle  trigger 

2
如何在Oracle中修改更新以使其执行更快?
我有这个查询: UPDATE ( SELECT h.valid_through_dt, h.LAST_UPDATE_TMSTMP FROM ETL_FEE_SCH_TMP d, FEE_SCHEDULE_HISTORICAL h WHERE h.FUND_ID = d.FUND_ID AND h.FEETYPE_NAME = d.FEETYPE_NAME AND h.BREAKPOINT_TYPE = d.BREAKPOINT_TYPE AND h.BREAKPOINT_QTY = d.BREAKPOINT_QTY AND h.LOW_BREAKPOINT_AMT = d.LOW_BREAKPOINT_AMT AND h.VALID_THROUGH = TO_DATE ('31-DEC-9999', 'dd-mon-yyyy') AND h.universe = 'DC' AND h.universe = d.universe AND EXISTS ( SELECT 1 …
8 oracle  rdbms 

4
从Oracle函数返回完全动态的表
我想编写一个带有两个IN参数的函数,其中第一个是a varchar,第二个是a的列表varchars。基于这些,我想返回一个具有不同列数和类型名称的表varchar。 据我所知,我必须始终创建一个对象/记录及其表类型。这意味着我的想法行不通吗?基本目标是将系统命令输出作为表传递回被调用方。 编辑:更多的任务。我想发出一个OS命令,使用输出并将其作为表返回。OS命令的输出将是CSV格式的数据。在执行时,我不知道要返回的行数,而仅知道作为第二个arg传递的列数。我想使用的Java与动态STRUCT和ARRAY包含它们。尽管我更喜欢前一种方法。 它看起来应该像这样: create function(clob query, list of varchars cols) returns table begin execute system command(query, cols); examine sysout from command; return tabular data from syscmd as table; end



3
PostgreSQL与Oracle高可用性解决方案?
PostgreSQL有一系列不同的高可用性选项,这些选项代表了将复制构建到RDBMS中的许多不同方式。 这是PostgreSQL高可用性,负载平衡和复制功能列表 问题 Oracle支持PostgreSQL高可用性矩阵中的哪些方法? oracle使用PostgreSQL不具备的技术来实现高可用性吗?

5
Oracle使用特殊字符最后对varchar2列进行排序
如何在Oracle中按自己定义的顺序对Varchar2或NVarchar2列进行排序。或者是否存在任何现有选项,这些选项将首先显示字母,然后显示数字,然后显示所有特殊字符。 我们的第一种方法是使用一个将字符手动映射到数字的函数。 select id, sorted_column from some_table order FN_SPECIAL_SORT_KEY(sorted_column,'asc') 特殊的排序功能将每个字符映射到一个2位数字,并将返回值用于排序。这似乎是非常昂贵的连接,并且感觉不对。 for i in 1..length(sorted_text) loop v_result:=v_result || case substr(sorted_text,i,1) WHEN ' ' THEN 82 WHEN '!' THEN 81 WHEN '"' THEN 80 WHEN '#' THEN 79 WHEN '$' .............. WHEN 'u' THEN 15 WHEN 'U' THEN 15 WHEN 'v' THEN …

5
简化/自动的数据文件可用磁盘空间回收
在Oracle 11g版本上: 谷歌搜索之后,我找不到删除表后回收可用空间的简单方法。 我已经找到了很多解释,说明数据文件是如何碎片化的,为了将“空空间”移动到数据文件末尾(逐表...,即使当您有200张桌子!?) 然后,您必须通过“猜测”可以减少的数据量来减少数据文件的大小,或者您必须确切地知道“块大小”是什么...最后,您不应该忘记“重建索引”。 参见例如:http : //asktom.oracle.com/pls/asktom/f?p=100 :11:0 ::::P11_QUESTION_ID : 54178027703899 和http://www.oracle-base.com/articles/misc/ReclaimingUnusedSpace.php 是否有一个简单的PL / SQL过程,在给定表空间名称或数据文件名称的情况下,该过程会完成该工作?还是任何类似的Oracle工具?

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.