深入解析Oracle-数据库的初始化


云和恩墨 成就所托 于和恩墨 成就所托 YUNHE ENMO (BEIJING) TECHNOLOGY CO.,LTD 数据驱动 成就客户未来 深入解析Oracle - Oracle数据库的初始化 云和恩墨 成就所托 于和恩墨 成就所托  盖国强 云和恩墨(北京)信息技术有限公司 创始人  盖国强是国内第一个Oracle ACE及ACE总监  有超过10年的Oracle从业经验 至今仍然奋战在技术前线  国内最大数据库技术论坛ITPUB的主要倡导者之一,致力于技 术分享与传播,截至2011年已经出版了10本技术书籍,自2010 年开始,主编出版《Oracle DBA手记》系列书籍  2010年,他和张乐奕共同创建了旨在开展技术 交流的中国Oracle用户组(ACOUG – All China Oracle User Group),并开展了持续的公益活动 Who am I 云和恩墨 成就所托 于和恩墨 成就所托 • 数据库创建脚本 数据库的初始化 startup nomount pfile="C:\oracle\admin\eygle\scripts\init.ora"; CREATE DATABASE "eygle" MAXINSTANCES 8 MAXLOGHISTORY 1 MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 DATAFILE SIZE 300M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SYSAUX DATAFILE SIZE 120M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE SIZE 20M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED CHARACTER SET ZHS16GBK 。。。。。。 D:\oracle\product\admin\eygle\scripts>tail -1 initeygleTemp.ora _no_recovery_through_resetlogs=true 云和恩墨 成就所托 于和恩墨 成就所托 sql.bsq文件与数据库创建 • 数据库初始化文件 • 创建数据库过程中的调用 SQL> @GetParDescrb.sql Enter value for par: init_sql old 6: AND x.ksppinm LIKE '%&par%' new 6: AND x.ksppinm LIKE '%init_sql%' NAME VALUE DESCRIB --------------- --------------------- ---------------------------------------------------- _init_sql_file ?/rdbms/admin/sql.bsq File containing SQL statements to execute upon database creation Fri Aug 18 15:45:49 2006 Errors in file /opt/oracle/admin/eygle/udump/eygle_ora_3632.trc: ORA-01501: CREATE DATABASE failed ORA-01526: error in opening file '?/rdbms/admin/sql.bsq' ORA-07391: sftopn: fopen error, unable to open text file. Error 1526 happened during db open, shutting down database USER: terminating instance due to error 1526 云和恩墨 成就所托 于和恩墨 成就所托 sql.bsq文件的内容 • sql.bsq文件的内容 云和恩墨 成就所托 于和恩墨 成就所托 sql_trace 和 10046 事件 • sql_trace 和 10046 事件 SQL> alter session set events='10046 trace name context forever,level 12‘; Session altered. SQL> alter database mount; Database altered. SQL> alter database open; Database altered. SQL> SELECT a.VALUE || b.symbol || c.instance_name || '_ora_' || d.spid || '.trc' trace_file 2 FROM (SELECT VALUE FROM v$parameter WHERE NAME = 'user_dump_dest') a, 3 (SELECT SUBSTR (VALUE, -6, 1) symbol 4 FROM v$parameter WHERE NAME = 'user_dump_dest') b, 5 (SELECT instance_name FROM v$instance) c, 6 (SELECT spid FROM v$session s, v$process p, v$mystat m 7 WHERE s.paddr = p.addr AND s.SID = m.SID AND m.statistic# = 0) d 8 / TRACE_FILE ------------------------------------------------------------------------------------------------------- /opt/oracle/admin/eygle/udump/eygle_ora_25660.trc 云和恩墨 成就所托 于和恩墨 成就所托 从跟踪文件获得信息 WAIT #1: nam='direct path read' ela= 43 p1=1 p2=1 p3=1 WAIT #1: nam='direct path read' ela= 4 p1=2 p2=1 p3=1 WAIT #1: nam='direct path read' ela= 3 p1=3 p2=1 p3=1 WAIT #1: nam='direct path read' ela= 2 p1=4 p2=1 p3=1 WAIT #1: nam='direct path read' ela= 2 p1=201 p2=1 p3=1 ………… WAIT #1: nam='db file sequential read' ela= 88 p1=1 p2=417 p3=1 WAIT #1: nam='db file sequential read' ela= 91 p1=1 p2=377 p3=1 ===================== PARSING IN CURSOR #2 len=188 dep=1 uid=0 oct=1 lid=0 tim=1149404325230977 hv=0 ad='b700de24' create table bootstrap$ ( line# number not null, obj# number not null, sql_text varchar2(4000) not null) storage (initial 50K objno 56 extents (file 1 block 377)) END OF STMT PARSE #2:c=0,e=1173,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=1149404325230943 BINDS #2: EXEC #2:c=0,e=473,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=1149404325231638 • 从跟踪文件了解等待事件和内部原理 云和恩墨 成就所托 于和恩墨 成就所托 控制文件及数据文件信息 • 分析控制文件的内容 • 分析所有数据文件头 • 获得地址信息 • 版本变化 alter session set events 'immediate trace name FILE_HDRS level 10' alter session set events 'immediate trace name CONTROLF level 10' Tablespace #0 - SYSTEM rel_fn:1 Creation at scn: 0x0000.00000007 04/24/2006 11:34:39 Backup taken at scn: 0x0004.6c2d657e 02/12/2007 15:54:52 thread:1 reset logs count:0x24dc1f7d scn: 0x0004.6c432ec0 recovered at 04/07/2007 21:04:11 status:0x4 root dba:0x004001a1 chkpt cnt: 6933 ctl cnt:6932 SQL> select getbfno('0x004001a1') from dual; GETBFNO('0X004001A1') ------------------------------------------------------------------------------ datafile# is:1 datablock is:417 11g: root dba:0x00400208 12c: root dba:0x00400208 云和恩墨 成就所托 于和恩墨 成就所托 Oracle9i独一无二的Cache对象 SQL> select segment_name,segment_type,header_file,header_block 2 from dba_segments where segment_type='CACHE‘; SEGMENT_NAME SEGMENT_TYPE HEADER_FILE HEADER_BLOCK -------------------- ------------------ ----------- ------------ 1.417 CACHE 1 417 Start dump data blocks tsn: 0 file#: 1 minblk 417 maxblk 419 buffer tsn: 0 rdba: 0x004001a1 (1/417) ……… Compatibility entry for 'BOOTSTRP': Size: 24 Release 0x134217728 By 0x153092096 Dump of memory from 0x0AA84E4C to 0x0AA84E50 AA84E40 00400179 [y.@.] SQL> select getbfno('00400179') from dual; GETBFNO('00400179') ----------------------------------------------------------------------------------- datafile# is:1 datablock is:377 SQL> select segment_name from dba_extents 2 where block_id between 377 and blocks + 377 -1; SEGMENT_NAME ------------------------------------------------------------------ BOOTSTRAP$ 云和恩墨 成就所托 于和恩墨 成就所托 BOOTSTRAP$位置还能改变么? • 来源与实际案例的体验 云和恩墨 成就所托 于和恩墨 成就所托 有这么一个神奇的脚本 云和恩墨 成就所托 于和恩墨 成就所托 临时对象与临时表空间 • 排序等中间操作 select segment_name, sum(bytes)/1048576 from dba_segments where tablespace_name = 'TEST' group by segment_name order by 2; ---------------------------------- --------------- 299.20715 202,681MB 云和恩墨 成就所托 于和恩墨 成就所托 LOB对象与临时段 • wmsys.wm_concat 函数 – WMSYS用户用于Workspace Manager,其函数对象可能因版本而不同 – 这种变化在11.2.0.3及10.2.0.5中体现出来。原本WM_CONCAT函数返 回值为VARCHAR2变更为CLOB。这一变化导致了很多程序的异常。 • 该函数可以实现行列转换 SQL> select wmsys.wm_concat(username) from dba_users; WMSYS.WM_CONCAT(USERNAME) -------------------------------------------------------------------------------- SYS,SYSTEM,YANGTK,TEST,OUTLN,MGMT_VIEW,FLOWS_FILES,MDSYS,ORDSYS,EXFS • 在11.2.0.3中,其返回值类型变更为CLOB SQL> desc wmsys.wm_concat FUNCTION wmsys.wm_concat RETURNS CLOB Argument Name Type In/Out Default? ------------------------- ------ -------- P1 VARCHAR2 IN 云和恩墨 成就所托 于和恩墨 成就所托 深入浅出探索数据库启动 WAIT #1: nam='direct path read' ela= 43 p1=1 p2=1 p3=1 WAIT #1: nam='direct path read' ela= 4 p1=2 p2=1 p3=1 WAIT #1: nam='direct path read' ela= 3 p1=3 p2=1 p3=1 WAIT #1: nam='direct path read' ela= 2 p1=4 p2=1 p3=1 WAIT #1: nam='direct path read' ela= 2 p1=201 p2=1 p3=1 ………… WAIT #1: nam='db file sequential read' ela= 88 p1=1 p2=417 p3=1 WAIT #1: nam='db file sequential read' ela= 91 p1=1 p2=377 p3=1 ===================== PARSING IN CURSOR #2 len=188 dep=1 uid=0 oct=1 lid=0 tim=1149404325230977 hv=0 ad='b700de24' create table bootstrap$ ( line# number not null, obj# number not null, sql_text varchar2(4000) not null) storage (initial 50K objno 56 extents (file 1 block 377)) END OF STMT PARSE #2:c=0,e=1173,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=1149404325230943 BINDS #2: EXEC #2:c=0,e=473,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=1149404325231638 云和恩墨 成就所托 于和恩墨 成就所托 New Multitenant Architecture • 资源在容器级别得到优化 System Resources 云和恩墨 成就所托 于和恩墨 成就所托 PDB的种子数据库 • PDB的内置种子数据库 • Oracle对种子数据库的隐藏 云和恩墨 成就所托 于和恩墨 成就所托 种子数据库的隐藏和保护 • 底层file$表的隐藏 云和恩墨 成就所托 于和恩墨 成就所托 Oracle的文件号使用 • 连续编号 重复使用 云和恩墨 成就所托 于和恩墨 成就所托 Extended Buffer Cache 120 GB Flash Cache 16 GB SGA Memory Hot Data Warm Data 1. Blocks read into buffer cache 3. Clean blocks moved to Flash Cache based on LRU* 2. Dirty blocks flushed to disk 4. User Process reads blocks from SGA (copied from Flash Cache if not in SGA) 360 GB Magnetic Disks Cold Data * Headers for Flash Cached blocks kept in SGA Cache为王:Oracle的Flash Cache 云和恩墨 成就所托 于和恩墨 成就所托 . BOTH row and column in-memory formats for same table . Simultaneously active and transactionally consistent . Analytics & reporting use New Column format . OLTP uses row format Oracle In-Memory Database Column Format Memory Row Format Memory Analytics OLTP Sales Sales 云和恩墨 成就所托 于和恩墨 成就所托 关亍启动与 HugePage的使用 • 4节点RAC集群频繁重启 Mon Apr 30 22:18:55 2012 Trace dumping is performing id=[cdmp_20120430221854] Mon Apr 30 22:19:13 2012 IPC Send timeout detected.Sender: ospid 11312 Receiver: inst 2 binc -1602243084 ospid 11663 Mon Apr 30 22:19:38 2012 IPC Send timeout to 1.0 inc 8 for msg type 12 from opid 19 Mon Apr 30 22:19:38 2012 Communications reconfiguration: instance_number 2 Mon Apr 30 22:10:31 2012 Global Enqueue Services Deadlock detected. More info in file /u01/app/oracle/admin/danpin/bdump/danpin2_lmd0_11663.trc. Mon Apr 30 22:19:39 2012 IPC Send timeout detected. Receiver ospid 11663 Mon Apr 30 22:19:39 2012 Errors in file /u01/app/oracle/admin/danpin/bdump/danpin2_lmd0_11663.trc: 云和恩墨 成就所托 于和恩墨 成就所托 分析OSWatcher采集的数据 • 发生了什么? – 寻找蛛丝马迹; – 有据才能有理; 云和恩墨 成就所托 于和恩墨 成就所托 分析趋势一目了然 • 分析OSWatcher的趋势数据 云和恩墨 成就所托 于和恩墨 成就所托 PageTable是罪魁祸首 • PageTable的内存占用 云和恩墨 成就所托 于和恩墨 成就所托 启用HugePage解放内存 • 一个内存占用更高的案例 云和恩墨 成就所托 于和恩墨 成就所托 数据库的启动提示 • Oracle的启动提示 云和恩墨 成就所托 于和恩墨 成就所托 • 新型的闪存设备可以使旧有系统焕发生机 – 新型设备在加速IO处理速度,整合系统时具备强大优势; – 以下案例通过闪存卡整合缩减了客户的软件成本; – 整合系统获得了极大的性能改善,满足用户业务提升需求; 基亍现有硬 件的创新性能解决方案 节点1 节点2 Oracle 11g Rac SAN 存 储 节点1 LSI 本 地 存 储 Oracle 11g 优化前 优化后 台账系统 查询 OGG 复制 进行入库 生产系统 生产系统 台账系统 查询 在原架构中,其中一个节点用于从生产 系统上进行抽数,入库到SAN存储中,另外 一个节点用于做台账系统的查询,但存储存 在IO瓶颈。 在新架构中,使用LSI的高速存储卡作 为本地存储。用于存放数据文件等相关的数 据库文件,以及OGG的队列文件。 OGG 复制 进行入库 云和恩墨 成就所托 于和恩墨 成就所托 基亍现有硬 件的创新性能解决方案 相同时间段 1个小时内的AWR数据 指标 优化前 优化后 优化 提升率 日志量 7,627,295 17,957,028 235.40% 逻辑读 71,058 236,944 333.50% 修改块 30,242 97,636 322.80% SQL执行 4,234 5,235 123.60% 单块读 指标 优化前 优化后 优化 提升率 等待次数 5,948,198 15,212,847 255.76% 等待时间 340,638 31,918 1000.00% 平均等待 57 2 2850.00% 响应时间 86.87 27.29 318.50% • 整合后的主要指标性能提升比率 > 100% IO优化 云和恩墨 成就所托 于和恩墨 成就所托 硬件优化 Cache为王 • 基于LSI卡的测试对比 云和恩墨 成就所托 云和恩墨 成就所托 32 Q&A
还剩29页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

xiaoyao729

贡献于2014-03-13

下载需要 6 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf