在系统环境变量增加, NLS_LANG=SIMPLIFIED_CHINESE_CHINA.ZHS16GBK 重启PLSQL。.../technologies/instant-client/microsoft-windows-32-downloads.html 实测这个组合,是可以使用的,其他组合,我没尝试,如果有朋友试过,...问题3,PLSQL Developer登录报错ORA-12504 Oracle Client下载包解压缩,默认当前路径,没有tnsnames.ora,自己创建一个,增加数据库配置,但是登录PLSQL Developer...缩放执行”,选择“系统”, 重启生效, 问题5,包含特殊字符的Oracle用户名创建 用户名中包含特殊字符,例如@、%、&、¥、#,直接create user报错, SQL> create user...10053事件可以创建优化器的trace,因此又叫优化器跟踪文件(Optimizer trace file),这个文件能告诉我们Oracle为什么选择这种,而不是另一种执行计划,相应的成本值等一系列信息
实测这个组合,是可以使用的,其他组合,我没尝试,如果有朋友试过,可以提醒一下。...问题3,PLSQL Developer登录报错ORA-12504 Oracle Client下载包解压缩,默认当前路径,没有tnsnames.ora,自己创建一个,增加数据库配置,但是登录PLSQL Developer...实测,tnsnames.ora放在Clinet当前路径下,不能生效,需要在Client当前路径下创建network/admin,tnsnames.ora放到network/admin文件夹中,才可以生效...问题5,包含特殊字符的Oracle用户名创建 用户名中包含特殊字符,例如@、%、&、¥、#,直接create user报错, SQL> create user wang-wl identified by...10053事件可以创建优化器的trace,因此又叫优化器跟踪文件(Optimizer trace file),这个文件能告诉我们Oracle为什么选择这种,而不是另一种执行计划,相应的成本值等一系列信息
首先,尝试用了PrepareStatement,预编译SQL,但是打出来的,是test表中id=1的实际值,并不是执行计划, PreparedStatement pstat = conn.prepareStatement...while (rs.next()) { ... } pstat = conn.prepareStatement("set showplan off"); 按理说set showplan和实际执行的SQL在同一个会话中...或者说这种执行的方式,三条语句就不是在一个会话中? 但是尝试打印conn,发现这几行都是相同的,而且按照常理,应该就是相同的。...假设这三条,不是在同一个事务中执行的,我们尝试在上面的程序中增加事务控制,强制在同一个事务中执行,但是还是一样的,打印出来的是表中的实际值,不是执行计划, conn.setAutoCommit(false...,但是set autotrace on这种形式,无论PrepareStatement还是Statement,都是执行错误,提示ORA-00922,"set autotrace on"选项缺失或无效。
Oracle 11g 支持自动分区,不过得在创建表时就设置好分区。 如果已经存在的表需要改分区表,就需要将当前表 rename后,再创建新表,然后复制数据到新表,然后删除旧表就可以了。...一、为什么要分区(Partition) 1、一般一张表超过2G的大小,ORACLE是推荐使用分区表的。 ...4、便于维护,可扩展:11g 中的分区表新特性:Partition(分区)一直是 Oracle 数据库引以为傲的一项技术,正是分区的存在让 Oracle 高效的处理海量数据成为可能,在 Oracle 11g...中,分区技术在易用性和可扩展性上再次得到了增强。 ...当查询在一个分区里查询时,则应该使用 local 索引,因为本地索引比全局索引效率高。
警示:Oracle 12c 因新特性引发异常library cache lock等待——李晴晴 ---- library cache lock等待事件是Oracle数据库较为常见的等待事件之一,在之前的几次月刊中...,我们也提到过产生library cache lock等待出现的原因有很多,如登录密码错误尝试过多、热表收集统计信息和SQL解析失败等。...在Oracle 12c版本中,引入了一个新特性:分区表全局索引异步维护,这个新特性是指:当分区表有分区新增、删除、合并或truncate分区操作时,为了保证全局索引的有效性,通过调度JOB ( SYS.PMO_DEFERRED_GIDX_MAINT_JOB...这个job 是Oracle 12C 的新特性----分区表全局索引异步维护: 当分区表有分区新增、删除、合并或truncate分区操作时,为了保证全局索引的有效性,通过调度JOB ( SYS.PMO_DEFERRED_GIDX_MAINT_JOB...而这两张表是同时进行写入,故通过查询SQL时出现的是另一张表,通过object_id查询时才发现问题所在。 · 问题解决 临时处理:经业务核实后将insert会话kill后,故障解决。
谓词中出现NULL过滤条件 2. 谓词中出现函数转换导致没有走索引; 3. 统计信息不准确; 4. 在WEHRE条件中like中关键字两边都有"%"; 5. 查询条件值与列类型不一致; 6....---- 问题三、oracle DG failover后更改flashback操作的并行度 我这边遇到一个问题,想改变DG在failover后主库进行的flashback操作时的并行度,就是主库执行flashback...MySQL 体系结构中一直说也有 SGA 和 PGA,5.7 的官方文档也没有描述,那请问是在 InnoDB 中,还是具体位置在哪?...专家解答:LOCAL索引的最大好处是在进行分区操作,比如TRUNCATE PARTITION, DROP PARTITION时,不会出现索引INVALID的情况,不影响索引的可用性。...至于为什么两个执行计划不一样,应该和IDX_XXX索引选择率变化导致bit map的成本增加有关。
在线收集统计信息 在Oracle Database 12 c中,在线收集统计信息"piggybacks"作为直接路径数据加载操作的一部分进行收集, 例如, 像使用CTAS的方式创建表,以及IAS方式插入数据...要确保在加载现有表的新分区时进行在线收集统计信息,请使用扩展语法明确指定分区。在这种情况下, 将创建分区级别统计信息, 但不会更新全局级别 (表级别) 统计信息。...如果在分区表上启用增量统计信息,则会在数据加载操作中创建”synopsis”。...调用DBMS_STATS.GATHER_TABLE_STATS在分区表上, 当 CONCURRENT 设置为MANUAL时,Oracle会为表中的每个(sub)分区创建单独的统计信息收集作业。...在Schema:sh上Oracle将为每个非分区表创建一个统计收集作业(图12中的级别1); » CHANNELS » COUNTRIES » TIMES Oracle将为每个分区表创建一个协调作业
3.1.2 表分区,索引分区 (优化①粗略的进行了表分区,优化②为精确数据分区) 为什么要表分区? 当一个表的数据量太大的时候,我们最想做的一件事是什么?...在不同的文件中。...,因为要扫描的数据变得更 少 ,查询可以更快地运行,这样操作大大提高了性能,表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物 理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表...缺点: 分区表相关:已经存在的表没有方法可以直接转化为分区表。不过 Oracle 提供了在线重定义表的功能....注释:创建分区函数:myRangePF2,以 INT 类型分区,分三个区间,10000 以内在 A 区,1W-2W 在 B 区,2W 以上 在 C 区. 3.1.2.2 创建分区架构 CREATE PARTITION
* ERROR at line 1: ORA-00922: missing or invalid option SQL> alter user sys identified by "asdfasga!...可以看到测试的情况,其实也可以间接说明双引号在含有特殊字符的场景中是必须使用的,而对于单引号,只是单纯标示一个字符串,为什么第一个语句执行失败,因为数据库把第一个单引号当做了密码的一部分,所以检查失败。...问题2: 怎么从arch中拿到DBID? 这个问题看起来还是很有意思,看起来不是常规思路。我们来简单测试一下。 把归档文件拷贝到备库,转储日志信息。...然后在alert日志中会有相应的记录,我们检索一下这个归档相关的日志,可以很明显看到是第三个日志,里面有DUMP的字样。...[oracle@statg2 trace]$ grep o1_mf_1_467316_cmtccjdj_ * alert_sol.log:Media Recovery Log /U01/app/oracle
前两天碰到一个问题,在EDB数据库中创建的一张分区表,需要使用分区本地索引和分区剪裁,但查看执行计划发现没能用到分区剪裁的功能。...创建分区表: CREATE TABLE test ( id bigint NOT NULL, bag_id bigint, bp_airline_code character varying...之所以有上面这些问题,可能还是源于Oracle的一些思维,在Oracle,意识当中将日期字段作为查询条件就应该使用to_date()这类的函数 和上面相同的表结构在Oracle中的实现: ?...那么像EDB这样创建一个不用to_date函数的分区表: ? 直接报错了,提示字段类型不匹配,无法创建表。这也说明了在日期字段类型上,EDB和Oracle的一点不同。 总结: 1....对于Oracle,在创建分区规则时就已经做了严格限制,因此不存在日期条件的格式和分区规则中不一致的情况。
2、Oracle Data Guard for Data Warehouses(用于数据仓库的Oracle Data Guard) 在以前的版本中,在primary数据库上使用NOLOGGING选项进行直接加载...在物理standby数据库上,数据块被标记为不可恢复,并且尝试读取它们的任何SQL操作都将返回error。 对于逻辑standby数据库来说,SQL apply将会因为redo失效的错误而被迫中止。...在12.2中将有简单的办法来实现整个过程。...)允许创建与分区表的形状完全匹配的表,因此能够进行分区表的分区或子分区交换。...此功能减少了在Oracle Enterprise Manager之外创建standby数据库时必须执行的手动步骤。 此外,DBCA允许在standby数据库创建结束时运行自定义脚本。
告知MySQL5.7.18的使用者分区表使用中存在的陷阱,避免在该版本上继续踩坑。...同时通过对源码的讲解,升级MySQL5.7.18时分区表性能下降的根本原因,向MySQL源码爱好者展示分区表实现中锁的运用。 问题描述 MySQL 5.7版本中,性能相关的改进非常多。...我们知道Cache中保存了事务锁的信息,因此需要进一步查找Cache中的数据,是如何添加进去的。通过搜索cache对象在innodb代码中出现的位置,找到函数add_lock_to_cache。...从代码中可以看出,每次单条记录的update操作,在进行index scan上锁时,对分区表数目相同的行数进行上锁。这个是根本原因。...在实际应用中,分区表所定义分区数不会如测试用例中的只有3个,而是数十个乃至数百个。这样进行上锁的结果,将加剧更新情况下的锁冲突,导致事务处于锁等待状态。
前言:希望通过本文,使MySQL5.7.18的使用者知晓分区表使用中存在的陷阱,避免在该版本上继续踩坑。...同时通过对源码的分享,升级MySQL5.7.18时分区表性能下降的根本原因,向MySQL源码爱好者展示分区表实现中锁的运用。 问题描述 MySQL 5.7版本中,性能相关的改进非常多。...我们知道Cache中保存了事务锁的信息,因此需要进一步查找Cache中的数据,是如何添加进去的。通过搜索cache对象在innodb代码中出现的位置,找到函数add_lock_to_cache。...从代码中可以看出,每次单条记录的update操作,在进行index scan上锁时,对分区表数目相同的行数进行上锁。这个是根本原因。 ? 验证结论 ?...在实际应用中,分区表所定义分区数不会如测试用例中的只有3个,而是数十个乃至数百个。这样进行上锁的结果,将加剧更新情况下的锁冲突,导致事务处于锁等待状态。
业务背景 由于业务系统中的常用表存储的数据量过大(6.5 亿条记录,合共 4.8TB 大小),使用 Oracle 数据库查询效率较低,对业务的使用造成了一定的影响。...创建索引时若不进行显式指定,则默认创建的是全局非分区索引;创建全局索引时若显式指定分区子句,则创建的是全局分区索引。 全局索引查询较快,多应用于 OLTP 系统中。...局部(local)索引的特点 局部索引一定也只能是局部分区索引,非分区表无法创建局部索引。 局部索引查询较慢,多应用于数仓环境及 OLAP 系统中。...分区表索引失效的情况 除了手动将索引置为无效外,分区表的索引在一些分区 DDL 操作后也会变成不可用的失效状态。那么哪些操作会让分区表的索引失效,哪些操作不会呢?...这也就解释了为什么在演练环境中进行投产演练没有出现索引不可用的情况。 5.4. 索引失效对 DML 操作的影响 在上面的案例中,我们删除分区导致索引失效后,是无法正常进行 DML 操作的。
Q 题目 在Oracle数据库中,什么是不可用索引(Unusable Indexes),哪些操作会导致索引变为不可用(unusable)即失效状态?...l 在本地索引中,可以设置某个分区的索引为UNUSABLE。 l 一般情况下,CBO不考虑使用UNUSABLE状态的索引,包含分区表。...在进行DML(INSERT和UPDATE)操作时,如果是唯一索引,那么无论该参数的值设置为何值,Oracle都会去校验索引的可用性。如果索引不可用,那么就会报错ORA-01502。...在SQL*Loader加载过程中会维护索引,由于数据量比较大,在SQL*Loader加载过程中出现异常情况,也会导致Oracle来不及维护索引,导致索引处于失效状态,影响查询和加载。...异常情况主要有:在加载过程中杀掉SQL*Loader进程、重启或表空间不足等。
墨墨导读:本文来自墨天轮用户投稿,详细描述Oracle分区表之创建维护分区表索引的步骤。 分区索引分为本地(local index)索引和全局索引(global index)。...(6) oracle9i以后对分区表做move或者truncate的时可以用update global indexes语句来同步更新全局分区索引,用消耗一定资源来换取高度的可用性。...注意:Oracle只支持2中类型的全局分区索引: range partitioned 和 Hash Partitioned....如果要重建分区索引,只能drop表原索引,在重新创建: SQL>create index loc_xxxx_col on xxxx(col) local tablespace SYSTEM; 这个操作要求较大的临时表空间和排序区...(2)全局索引 Oracle 会自动维护分区索引,对于全局索引,如果在对分区表操作时,没有指定update index,则会导致全局索引失效,需要重建。
有关分区表的特性请参考: Oracle 分区表 SQL server 2005 切换分区表 SQL server 2005 基于已存在的表创建分区 有关导入导出工具请参考: 数据泵EXPDP...在上面的导出中出现了错误提示,即EXP-00091,该错误表明exp工具所在的环境变量中的NLS_LANG与DB中的NLS_CHARACTERSET不一致 尽管该错误对最终的数据并无影响,但调整该参数来避免异常还是有必要的...如:tables=(tb_pt:sal_15,tb_pt:sal_16) 3.使用imp工具生成创建分区表的DDL语句 [oracle@node1 ~]$ imp scott/tiger tables...在命令行导入中未指定导入参数skip_unusable_indexes时,则对于索引相关的问题,根据数据库初始化参数的值来确定。...在命令行导入中如果指定了参数skip_unusable_indexes时,则该参数的值优先于数据库初始化参数的设定值。
目前主要从事Oracle DBA工作,曾从事 Oracle 数据库开发工作,主要服务于生产制造,汽车金融等行业。...现拥有Oracle OCP,OceanBase OBCA认证,擅长Oracle数据库运维开发,备份恢复,安装迁移,Linux自动化运维脚本编写等。 ? 前言 为什么要普通表转分区表?...分区表作为Oracle三大组件之一,在Oracle数据库中,起着至关重要的作用。 分区表有什么优点? 普通表转分区表:应用程序无感知,DML 语句无需修改即可访问分区表。...高可用性:部分分区不可用不影响整个分区表使用。 方便管理:可以单独对分区进行DDL操作,列入重建索引或扩展分区,不影响分区表的使用。 减少OLTP系统资源争用:因为DML分布在很多段上进行操作。.../OracleShellInstall.sh -i 10.211.55.111 更多更详细的脚本使用方式可以订阅专栏:Oracle一键安装脚本。 脚本获取方式: GitHub 持续保持更新中
并发收集统计信息时,数据库生成的JOB数会根据具体情况来分配,大多数情况下,DBMS_STATS 程序会给每个对象分配一个JOB;但如果对象(表或者分区)的大小太小,为了节省资源,Oracle会合并多个表和分区在一个...※注意: 为了防止同时处理多个分区表的分区时发生死锁,对于分区表是通过Queue的机制进行处理的。 即:每次只能处理一个分区表,其他的需要在Queue等待,待前一个分区表处理完后再处理下一个。...通过该例子我们可以看到,在针对并发收集统计信息时会有不同层级的JOB, 对于分区表除了一个协调JOB外还会针对各个分区分配1个JOB。 另外,如同前面所讲的,多个分区表不能同时处理。...有用户咨询,为什么我的环境中设定了并发执行统计信息收集,查看相关的视图却发现,统计信息收集时并没有并发执行? 这个问题,其实由于进行并发执行时,Oracle内部事实上是有一定临界值设定的。...当这些表很小和其他一些环境因素时,Oracle会合并多个表和分区在一个JOB中批量执行,就会产生统计信息收集时没有并发执行的表象。 我们可以通过跟踪dbms_stats可以查看到相关的一些内容。
SQL 出现在 AWR 报告的 TOP SQL中时,就需要注意,是否触发了BUG。...简单来说,就是Oracle在子分区级别执行子查询分区剪裁时,调用的内部递归SQL,因为缺少变量传入而出错,其解决方案是,禁用子查询谓词分区剪裁。...set “_subquery_pruning_enabled”=false; 这个特性是在 Oracle 10g 引入的,在执行计划中,当出现 PARTITION RANGE SUBQUERY ,我们可以看到在...故事五:12c 的延迟索引维护特性 在 Oracle 12c 中,有一个新特性被称为:延迟全局索引维护 - Delayed Global Index Maintenance 。...大家知道,在分区表中,如果创建全局索引,当我们对分区进行删除、截断等操作时,全局索引会失效,除非增加关键字 UPDATE GLOBAL INDEXES 同时维护索引,但是增加这个关键字又可能导致分区维护过慢
领取专属 10元无门槛券
手把手带您无忧上云