ORA-08104错误
生产系统中在线重建索引还是比较危险的,一旦失败就会触发这个Bug,导致ORA-08104错误出现。关于这个问题白鳝大师有一篇经典的帖子详细的讲述了相关的处理方法,简单记录如下。 SQL> drop index xx.xxxxx; drop index xx.xxxxx ORA-08104: this index object 17406 is being online built or rebuilt SQL> select obj#, flags from ind$ where obj#=17406 ; OBJ# FLAGS ———- ———- 17406 512 SQL> select count(*) from xx.sys_journal_17406; COUNT(*) ———- 0 SQL> drop table xx.sys_journal_17406; Table dropped
bbed(block brows editer)工具使用
bbed-----------------------block brows editer是oracle提供的块编辑工具但这个工具是内部使用的一旦使用oracle将不再支持这个工具没有windows版本linux/unix版本需要编译后才可以使用编译后的工具也可以对windows下数据库文件进行编辑-----------------------bbed编辑9i、10g下可以直接编译方法相同,如下:[oracle]$cd $ORACLE_HOME/rdbms/lib[oracle]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed11g中默认是不带bbed的,如果确实需要使用可以将10g中文件复制过来再编译编译的方式相同。需要复制的文件如下:$ORA10g_HOME/rdbm
2PC、XA、DTP与两阶段提交
2PC是指Oracle的两阶段提交协议(Two-Phase Commit protocol)。2PC用于确保所有分布式事务能够同时提交(Commit)或者回滚(Rollback),以便使的数据库能够处于一致性状态(consistent state)。分布式事务可以通过DBA_2PC_PENDING 和 DBA_2PC_NEIGHBORS 字典视图查看。分布式事务处理是指一个事务可能涉及多个数据库操作分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务必须产生一致的结果(全部提交或全部回滚)。XA是X/Open DTP组织(X/Open DTP group)定义的两阶段提交协议,XA被许多数
vi 中的替换命令
vi 中的替换命令 vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky :n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky n 为数字,若 n 为 .,表示从当前行开始到最后一行 :%s/vivian/sky/(等同
转载:RMAN中的%T,%D,%U是什么意思
转载:RMAN中的%T,%D,%U是什么意思 标签: oraclerman文件名格式杂谈 例如;backup incremental level 0 database format='lev0_%d_%t_%u_%s_%p' format=string文件路径和名称的格式串,其中的含义是: %c copy ID %p backup piece ID %s backup set ID %e log Sequence %h log thread ID %d database name %n database name(x填充到8个字符) %I DBID %f file ID %F DBID , day ,month ,year and sequence的复合格式 %N tablespace name %t timestamp %M mh mm格式 %Y year yyyy格式 %
ORA-04030错误解决案例
环境:AIX 6.1 64bit Oracle 10gR2概述:同事做统计报表发现,使用hash join会报错ORA-04030: out of process memory when trying to allocate 512040 bytes (QERGH has h-agg,QESH list array)使用很少的hash area 空间也会报错,PGA_AGGREGATE_SIZE设置为3G,应该不是PGA不够.调大PGA错误依然。于是连接到数据库服务器运行,却不报错.也就是通过client上去会报错,server上直接运行不报错.刚开始怀疑是一个bug或者是OS限制了资源,但是bug在服务器端也会报错才对.OS资源限制,也不可能,因为全部设置为ulimited. 这个问题纠结了两天,最终考虑
kill运行中的job
经常运行了一个JOB想把它kill掉,下面语句可以完成这个操作.select a.what,'alter system kill session '||''''||c.sid||','||c.serial#||''''||';' from user_jobs a,dba_jobs_running b,v$session c where a.job=b.job and b.sid=c.sid;有时可能只会标记为删除,JOB其实还在运行,它会等待释放占用的资源,这样可能会花费很长时间才能删掉.所以我们可能需要直接干掉相关的进程.select a.what,'kill -9 '||d.spid||';' from user_jobs a,dba_jobs_running b,v$session c,v$process d where a.job=b.job and b.sid=c.sid and d.addr=c.paddr;注
定义者权限和调用者权限
正如大家所知,Oracle从8i开始引入了调用者权限体系结构,之前一直使用定义者权限体系结构。关于定义者权限与调用者权限之间的相通点或者是各自优势本文不做探讨,这里仅描述调用者权限与定义者权限之间的差异,在我看来,主要有三个方面:1、执行的schema不同,操作的对象也不同在定义者(definer)权限下,执行的用户操作的schema为定义者,所操作的对象是定义者在编译时指定的对象。在调用者(invoker)权限下,执行的用户操作的schema为当前用户,所操作的对象是当前模式下的对象。例如:[php]E:ora10g>sqlplus "/ as sysdba"
nested table
1、创建类型animal_ty:此类型中,对于每个动物都包含有一个记录,记载了其品种、名称和出生日期信息。CREATE TYPE animal_ty AS OBJECT (breed varchar2(25),name varchar2(25),birthdate date);2、创建animals_nt:此类型将用作一个嵌套表的基础类型。CREATE TYPE animals_nt as table of animal_ty;3、创建表breeder:饲养员的信息表create table breeder(breedername varchar2(25),animals animals_nt)nested table animals store as animals_nt_tab;4、向嵌套表中插入记录insert into breedervalues ('mary', animals_nt(animal_t
java程序查询绑定变量值
v$sql_bind_capture --bind variablev$sql_bind_datav$sql_bind_metadataCTAScreate table tab_kksfparallel 4 nologging as select * from t1;[@more@]
使oralce索引失效
10g以上skip_unusable_indexes=true;alter index idx_name unusable;重新可用:alter index idx_name rebuild;[@more@]
表字段中含有分隔符提取各项内容
直接上图SQL> select * from test_str; ID STR---------- -------------------------------------------------------------------------------- 1 0201,0202,0203,0204 2 0101,0102,0103,0104SQL> SQL> select distinct t.id, regexp_substr(t.str, '[^,]+', 1, level) 2 from test_str t 3 connect by level <= length(t.str) - length(replace(t.str, ',', '')) + 1 4 order by regexp_substr(t.str, '[^,]+', 1, level); ID REGEXP_SUBSTR(T.STR,'[^,]+',1,---------- -----------
SQL语句去重及优化
表结构id number 主键xm varchar2(30) 姓名xb varchar2(1) y 性别csrq varchar2(8) y 出生日期rybs varchar2(2) y 人员标示zjlx varchar2(30) 身份证件类型sfzh varchar2(32) 身份证件号码rygxzl varchar2(3) 人员关系种类gxpdgz varchar2(3) 关系判别规则gxfssj varchar2(14) y 关系发生时间gxfsdd varchar2(255) y 关系发生地点gxms varchar2(500) y 关系描述gxfswz varchar2(100) y 关系发生位置groupid number 组编号bz varchar2(3000) y 备注查找内容通过SFZH查出GROUPID相同的一组人,如果有SFZH和RYGXZL相同的
oracle10g为全文检索创建oracle Text
SQL> connect SYS/password as SYSDBA SQL> spool text_install.txt SQL> @?/ctx/admin/catctx.sql CTXSYS SYSAUX TEMP NOLOCK Where: CTXSYS - is the ctxsys user password SYSAUX - is the default tablespace for ctxsys TEMP - is the temporary tablespace for ctxsys LOCK|NOLOCK - ctxsys user account will be locked or not SQL> connect CTXSYS/password@tns_alias SQL> @?/ctx/admin/defaults/drdefus.sql SQL> spool off connect SYS/password as SYSDBA ------------------- cut here ----
Index Full Scan && Index Range Scan
转自:http://www.cnblogs.com/tracy/archive/2011/09/02/2163462.htmlIndex Full Scan reads the whole index, in an ordered manner (i.e. it "walks" the index from the lowest value to the highest value). (Index Fast Full Scan reads the whole index, without bothering about ordering, it just reads all the index leaf blocks using multiblock reads -- similar to a Table Full Scan). Index Range Scan reads (or expects to read) a limited set of entries from the index. It starts from a certain point
Long running Operations(v$session_longops )
from :http://www.gplivna.eu/papers/v$session_longops.htmLong running Operations in Oracle (entries in v$session_longops)What are long running operations and how to monitor them?. 1Built in types of long operations. 4Table scan. 4Work behind the scenes. 410 000 database block threshold. 4Index Fast Full Scan. 51 000 database block threshold. 5Hash join. 6Even 20 block hash join may show up in v$session_longops. 6Hash joins can either fly or crawl 6Linear prediction may be wrong. 7Summary. 8Refere
导入数据注意事项
1.禁用触发器再导对应表的数据(提高导入速度)2.数据导完后在索引表空间,重建索引(数据和索引分开存放,提高性能)3.重新设置表对应的最大sequence,否则可能出现主键或外键冲突(导入数据后sequence增大了)4.收集统计信息(获得表最新的信息,提高性能)[@more@]
logminer
--归档模式下使用SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_BEGIN='YES';SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_END='YES';--使用一般文件存储数据字典,必须在归档模式下execute dbms_logmnr_d.build('logmnr_dict','/home/oracle');--加入日志文件EXECUTE DBMS_LOGMNR.ADD_LOGFILE('/db/ora10g/oradata/test/redo03.log',options=>dbms_logmnr.NEW);EXECUTE DBMS_LOGMNR.ADD_LOGFILE('/db/ora10g/oradata/test/redo04.log',options=>dbms_logmnr.ADDFILE);EXECUTE DBMS_LOGMNR.ADD_LOGFILE('/db/ora10g/orada
Error: Can't open display: :0.0
[oracle@RAC2 ~]$ xclockXlib: connection to ":0.0" refused by serverXlib: No protocol specifiedError: Can't open display: :0.0[root@RAC2 ~]# export DISPLAY=:0.0[root@RAC2 ~]# xhost +access control disabled, clients can connect from any host[root@RAC2 ~]# su - oracle[oracle@RAC2 ~]$ xclock[oracle@RAC2 ~]$ dbca[@more@]
expdp/impdp工具使用总结
expdp/impdp工具使用总结1.impdp使用NETWORK_LINK时,不支持LONG类型的表2.一般的database object导出时快,导入时慢.3.含BLOB字段的表导出时慢,导入时非常快,能达到1G/MIN4.查询expdp/impdp的视图dba_datapump_jobs、dbs_datapump_sessions5.跳过当前正在运行的作业.假如你在导入时发现等了很长时间有个表都没能导入,而这个表不影响业务,可以等应用程序运行后,再来处理.那么可以采用这种方式.先进入交互模式,停掉JOB,再加上参数start_job=skip_current,即可跳过当前JOB运行的作业,继续运行剩下的。6.AIX命令prtcon显示系统的配置.smtc