Questions tagged «oracle»

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

2
从表空间恢复逻辑空间
我有一个名为DATA的表空间,它的自动扩展设置为false。该表空间有两个数据文件,并且已设置为占用350 GB的物理空间。 一周前,我查询了user_tablespaces和dba_data_files,发现它具有20%的可用逻辑空间。然后,我进行了清理,并从该表空间中的表中删除了许多记录。我们期待看到可用空间的大幅增加。不幸的是,当我查询视图时,我发现可用空间现在为20.5%。 这可能是由于数据碎片造成的吗?我们可以以某种方式“整理”表空间并恢复丢失的空间吗?还是我们需要从头开始重新创建表空间?

3
在Oracle中如何让sequence.nextval为null?
我有一个这样定义的Oracle序列: CREATE SEQUENCE "DALLAS"."X_SEQ" MINVALUE 0 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 0 NOCACHE NOORDER NOCYCLE ; 在存储过程中使用它来插入记录: PROCEDURE Insert_Record (p_name IN VARCHAR2, p_userid IN INTEGER, cur_out OUT TYPES_PKG.RefCursor) IS v_id NUMBER := 0; BEGIN -- Get id value from sequence SELECT x_seq.nextval INTO v_id FROM dual; -- Line …
11 oracle  sequence 

2
如何找到对象表中似乎不存在的对象?
我有一个名为的对象cot_ntn_pi_v。有人告诉我这是一个同义词。它不会出现在all_synonyms表中。它看起来像一个视图或表,但我不能在所有对象表中找到它。我可以从中选择,但是不能删除它,因为它“不存在”,并且无法创建一个新表,其名称与“该名称已被另一个对象使用”相同。 我会生气还是做一些愚蠢的事情?

1
限制可用于任何查询的并行度(DOP)
在Oracle Exadata(11gR2)上,我们有一个相对强大的数据库。 cpu_count是24 parallel_server_instances是2 parallel_threads_per_cpu为2 我们注意到,通过在Oracle企业管理器(OEM)中进行的观察,由于查询是按顺序执行的,因此性能很差。为了解决这个问题,所有表,实例化视图和索引都进行了更改,以利用并行性。例如: ALTER TABLE SOME_TABLE PARALLEL (DEGREE DEFAULT INSTANCES DEFAULT); 更改了系统以打开并行化: ALTER SYSTEM SET PARALLEL_DEGREE_POLICY = 'AUTO'; 这样可以提高性能,但是我们有时在OEM中观察到,单个查询将占用DOP 96(所有可用资源)。这导致随后的查询降级为DOP 1(无并行化)。导致性能下降,直到搜索查询完成。 为了解决这个问题,我们尝试通过以下方式限制可用于任何查询的DOP: ALTER SYSTEM SET PARALLEL_DEGREE_LIMIT = 24; 这没有效果。我们经常观察到将使用超出限制的查询(通常为48或96,但没有实际模式)。 我们如何防止任何单个查询占用所有可用资源?

1
PLS-00306错误:如何找到错误的参数?
PLS-00306:“字符串”调用中参数的数量或类型错误 原因:当命名的子程序调用不能与该子程序名称的任何声明匹配时,会发生此错误。子程序名称可能拼写错误,参数可能具有错误的数据类型,声明可能有误,或者声明可能不正确地放置在块结构中。例如,如果使用错误的名称或错误的数据类型参数调用内置平方根函数SQRT,则会发生此错误。 操作:检查子程序名称的拼写和声明。还要确认其调用正确,其参数具有正确的数据类型,并且,如果不是内置函数,则将其声明正确放置在块结构中。 如何快速确定错误的论点? 我有一个带有数十个参数的存储过程。有没有一种简便的方法来检查所用过程与已定义过程之间的差异?我不想逐行检查。

1
如何估算架构中的表大小(Oracle)
我正在尝试估算我的架构中的表大小(以MB为单位)。这是我到目前为止所拥有的: SELECT table_name, owner, last_analyzed FROM all_tables 我对SQL还是很陌生,所以我不知道该怎么做。 谢谢。
11 oracle 

4
Oracle导入问题由不同的字符集引起
我正在尝试将Oracle 11导出导入Oracle 11 XE。 我收到以下消息: 在XE中导入fehlerhaft在WE8MSWIN1252字符集和AL16UTF16 NCHAR字符集中完成的 导入服务器使用AL32UTF8字符集(可能的字符集转换) 有什么想法,我如何将这个转储导入Oracle 11 XE? 编辑: 给定一张桌子 CREATE TABLE BDATA.Artikel( Key VARCHAR2(3) NOT NULL, Name VARCHAR2(60) NOT NULL, Abkuerzung VARCHAR2(5) NOT NULL ); 我收到这样的错误 IMP-00019: row rejected due to ORACLE error 12899 IMP-00003: ORACLE error 12899 encountered ORA-12899: value too large for column "BDATA"."ARTIKEL"."ABKUERZUNG" …
11 oracle  import 

2
大数据移动
我想将数十亿行从schema1.table1移到新的schema2.table2,其中table2是table1的重构行。因此,它们的表结构是不同的。table1和table2都已分区,但table2为空。这两种模式都在同一个oracle数据库中。执行此数据迁移的性能有效方式是什么?您只想在最后执行提交还是选择增量提交?也就是说,假设完成了耗时数小时的99%的工作后,数据迁移失败。现在回滚吗?如果执行增量提交,如何处理失败?
11 oracle 

4
如何查找Oracle中表上的索引占用的实际空间?
我想查找oracle 10g中的表上的索引占用的实际空间。我不打算包括oracle保留的空间以供将来使用。(不应该考虑oracle的开销。)我希望使用的字节而不是分配的字节。 你能帮助我前进吗? 另外,还有一种方法可以找到表中长字段的实际大小。 PS:vsize()和dbms_lob.getlength()不起作用。


2
为什么我们不能将ddl语句直接写入PL / SQL块
为什么我们不能直接在PL / SQL块中编写ddl语句,例如当我编写时 CREATE OR REPLACE PROCEDURE test IS BEGIN truncate table table_name; // error END test; / 但, CREATE OR REPLACE PROCEDURE test IS BEGIN execute immediate 'truncate table table_name'; // works fine END test; / 为什么第二个成功执行?
11 oracle  plsql  ddl 

1
Oracle SQL Developer中的查询执行时间
我知道我可以set timing on用来查看执行完成后执行查询所花的时间。 但是,当查询仍在运行时,是否可以在Oracle SQL Developer中查看当前的执行持续时间? SQL Server Management Studio和旧的查询分析器都具有以下功能:
11 oracle  tools 

3
非IT人员的数据库登台环境
我正在向我的IT部门建议一个数据库登台环境。这个想法是,像我这样的非IT人员(公共工程数据分析师)将有一个测试解决方案的地方,然后自己在实际环境中实施解决方案,或者在需要时要求IT部门实施解决方案。有几种原因/场景可以使该环境受益: 在我们的实时数据库环境(,等)中create table,我具有一些基本的数据库特权create view。我大约每周进行一次模式更改,但是在实时环境中测试和实现这些更改似乎很疯狂。数据库上有无数的依赖关系,因此,如果出现问题,可能会造成灾难性的后果。我宁愿提前在单独的环境中进行测试。 我没有一些更高级的特权,如create trigger或create function在现场数据库。很好,但是我确实有一些可以通过触发器和/或函数解决的问题。我计划建议在登台环境中向我授予这些权限,以便我可以开发和测试一些想法,如果它们起作用,则建议IT在实时环境中实施它们。 通常,我的IT部门没有时间或资源为我开发解决方案。真的就是这么简单。因此,如果我可以自己做腿部工作,那么我的问题就更有可能得到解决。 “非IT人员的暂存环境”对我来说似乎是一种足够合理的方法,但是老实说,我只是想出了办法。我不知道在IT /数据库世界中通常是如何完成的。 是否有适合这种情况的已建立的IT /数据库实践?(为非IT人员提议数据库登台环境时,我走的路正确吗?)

6
Oracle 12c创建用户
我在企业Oracle数据库系统中创建用户时遇到一些问题。无法使用以下命令创建用户 create user name identified by password; 由于异常: ORA-65096:无效的普通用户或角色名称 因此,我在Google上找到了解决方案: alter session set container=PDBORCL; 然后-是工作。用户已创建。 但是我无法登录该帐户。怎么了?我向该帐户添加了所有特权(当然也创建了会话)。我收到错误消息: ORA-01017:无效的用户名/密码; 登录被拒绝。 这到底是怎么回事?

1
表格存在时获取“ ORA-00942:表格或视图不存在”
我是Oracle数据库的新手。我已经安装Oracle Database 11g R2了Oracle Linux 6。我已经使用以下方法成功创建了一个新数据库dbca并连接到该数据库: $ sqlplus "/ as sysdba" 我成功创建了一个表,并插入了一些数据并执行了一些选择: SQL> CREATE TABLE Instructors ( tid NUMBER(7) PRIMARY KEY, fname VARCHAR2(32), lname VARCHAR2(32), tel NUMBER(16), adrs VARCHAR2(128) ); Table created. SQL> INSERT INTO Instructors (tid, fname, lname, tel, adrs) VALUES (8431001, 'John', 'Smith', 654321, 'London'); 1 row created. …

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.