12c中alert log的时间格式

从12.2.0.1开始,oracle日志中默认的时间格式做了调整,会看到时间变成了统一的具有毫秒精度的格式 PDB$SEED(2):Endian type of dictionary set to little PDB$SEED(2):Undo initialization finished serial:0 start:144555510 end:144555510 diff:0 ms (0.0 seconds) PDB$SEED(2):Database Characterset for PDB$SEED is AL32UTF8 2018-11-28T14:25:19.056231+08:00 PDB$SEED(2):Opatch validation is skipped for PDB PDB$SEED (con_id=0) 2018-11-28T14:25:19.722898+08:00 PDB$SEED(2):Opening pdb with no Resource Manager plan active 2018-11-28T14:25:21.006576+08:00 Starting background process CJQ0 Completed: ALTER DATABASE OPEN 12.2.0.1之前的样式 Fri Aug 24 10:41:46 2018 MMNL started with pid=16, OS id=12084 starting up 1 shared server(s) ... ORACLE_BASE from environment = /u01/app/oracle Fri Aug 24 10:41:46 2018 ALTER DATABASE MOUNT Changing di2dbun from to xb Successful mount of redo thread 1, with mount id 2904689898 Database mounted in Exclusive Mode Lost write protection disabled Completed: ALTER DATABASE MOUNT Fri Aug 24 10:41:50 2018 ALTER……

阅读全文

parallel不起作用

有时候在执行sql的时候,为了加快执行的速度,可能会采取并发的方式去执行。为了减少影响,通常都是通过加parallel hint或者alter session force parallel QUERY parallel;但是可能sql并未按照预期的那样去进行并发处理 11.2.0.4 SYS@xb> create table t as select * from dba_objects; Table created. SYS@xb> create index idx_id on t(owner); Index created. SYS@xb> exec dbms_stats.gather_table_stats(user,'T',method_opt=>'for all columns size 1',cascade=>true); PL/SQL procedure successfully completed. 加上并发hint SYS@xb> select /*+ parallel(t 4)*/ count(*) from t where owner like 'S%'; COUNT(*) ---------- 41973 SYS@xb> select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST +PEEKED_BINDS +PARALLEL +PARTITION +COST +BYTES')); PLAN_TABLE_OUTPUT ---------------------------------------------------------------------------------------------------- SQL_ID 6va6j0s526fc1, child number 0 ------------------------------------- select……

阅读全文

外键字段上索引对锁的影响

子表的外键上如果不创建索引,就有可能导致死锁问题 scenario 1: 更新主表主键,子表外键无索引 create table t_pri (id number,name varchar2(10)); alter table t_pri add constraint pk_t primary key (id); create table t_ref (ref_id number not null primary key,ref_name varchar2(10),pri_id number,constraint fk_ref foreign key (pri_id) references t_pri (id)); insert into t_pri values(10,'xb'); commit; session 1: XB@xb> select sid from v$mystat where rownum=1; SID ---------- 62 XB@xb> insert into t_ref values(1,'xb',10); 1 row created. session 2: XB@xb> select sid from v$mystat where rownum=1; SID ---------- 41 XB@xb> update t_pri set id=10,name='xb2' where id=10; >>>>====hang 住 session 3: XB@xb> select sid from v$mystat where rownum=1; SID ---------- 56 XB@xb> insert into t_ref values(2,'lves',20); >>>>====hang 住 查看锁信息: SYS@xb> @lock "sid in (41,56,62)" old 30: where &1 new 30: where sid in (41,56,62) SID TYPE LMODE MODE_HELD REQUEST MODE_REQUESTED LOCK_ID1 LOCK_ID2 CTIME BLOCK ------- ------ ---------- --------------- ---------- --------------- ---------- ---------- ---------- ---------- 41……

阅读全文

查询v$lock慢

最近分析锁问题的时候发现查询v$lock视图很慢,查询v$lock主要就是查询下面这些内存结构表 Fixed tables :- ----------------- X$KSUSE X$KDNSSF X$KSQEQ X$KTADM X$KTATRFIL X$KTATRFSL X$KTATL X$KTSTUSC X$KTSTUSS X$KTSTUSG X$KTCXB X$KSQRS X$KSLWT X$KSLED 通常对于我们一般的表来说,如果表上没有相关的统计信息,那么CBO优化器会自动进行动态采样,而对于fixed tables却不会做这些操作,所以必须要收集它们的统计信息 MOS上这篇文章Query Against v$lock Run from OEM Performs Slowly (Doc ID 1328789.1)……

阅读全文

11gR2 BBED 编译安装

bbed用来做什么 做测试的时候、学习oracle块原理的时候,如果能有一个工具直接在块级别读取和操作数据的话是不是很方便呢,而BBED就是这样的一个工具,通过BBED你可以做到什么? 更改数据 恢复受损的或删除的数据 修改文件头 损坏块并修复坏块 删除一个行,但需要将其恢复?当您或用户删除数据时,数据怎么了?具体来说,数据真的丢了,还是发生了别的事?答案是发生了别的事……

阅读全文

Oracle物理坏块(corruption)

Physical corruptions 介质坏块是指那些明显受到物理损坏的数据块,当oracle发现块头和块尾信息不一致、checksum值无效、数据块等信息全部为0等状况时,oracle会在读取块时报出ORA-01578、ORA-01110等异常,这些通常会写入到alert日志里。物理坏块通常是由于底层OS的问题引起,比如存储阵列缓存损坏、阵列固件损坏、文件系统错误等。所以oracle建议设……

阅读全文

归档模式下恢复offline drop的datafile

先说一下常见的offline drop 和offline之间的区别 Alter database datafile offline 一般如下场景下会选择这种方式 离线备份数据文件 重命名或更换文件路径,必须要offline datafile或者tablespace 数据文件写入出现问题时,会自动offline这个datafile,当解决问题后得手动online 数据文件丢失或出错时,你必须手动offline才能open database Alter database datafile offline drop 这里……

阅读全文

归档模式下恢复无备份的lost datafile

场景: 你在os层面丢失了数据文件,并且没有相应的备份 数据库处于archivelog模式 从数据文件创建到目前所有的归档日志都完好 由于没有备份,数据库无法正常打开,除非将数据文件或表空间删除,这样就会造成数据的丢失 SYS@xb> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 /u01/arch 最早的联机日志序列 121 下一个存档日志序列 123 当前日志序列 123 SYS@xb> create tablespace tbs_ts datafile '/u01/app/oracle/oradata/xb/tbs_ts01.dbf' size 20m; 表空间已创建。 SYS@xb> create table tb_test (id number) tablespace……

阅读全文

TSPITR恢复删除的表空间

表空间时间点恢复,是Oracle在基于冷备,热备恢复以外的一种以表空间为粒度的,不完全恢复的形式来将表空间恢复到过去某个特定的时间点的一种恢复方式。它整合了RMAN以及DataPump这2个备份恢复工具来实现时间点恢复。 TSPITR试用的场景 恢复单独的逻辑对象而不影响数据库的其他对象 可以恢复table到DDL操作之前,这是flashback table无法做到……

阅读全文

Oracle的Central Inventory和Local inventory

每次我们安装Oracle的时候,oracle安装目录都会记录了软件安装的相关信息,oracle就是通过这些信息来确定这台主机上安装了哪些东西。 这些目录就被分为以下两种 Central Inventory (oraInventory) Local Inventory (Oracle Home inventory) Central Inventory 那什么是Central Inventory? Central Inventory 包含了所有这台主机上安装的oracle产品信息 Central Inventory 包含一个文件inventory.xml, 这个xml文件记录了所有这个节点上安装……

阅读全文