oracle 10g ocm认证考试将在2015年3月正式退休

oracle 10g ocm认证考试将在2015年3月正式退休,该消息来源于oracle certification的官方博客,地址为https://blogs.oracle.com/certification/entry/1060_01。

 

Oracle university建议用户若仍由考取10g ocm的计划,那么应当在2015年3月前完成。

 

对于国内的一些有WDP或者没有WDP资质的培训机构而言,这并不是什么好消息,由于10g ocm考取的整个过程已经非常熟悉(包括考试的每一道题目和细节环节),而11g OCM对于急需仅仅想获得一个Paper证书的学员来说并不友好,所以10g ocm retire 将给其批量生产ocm的生意带来少量麻烦,当然在利益面前这一切都会被克服的,我们要相信他们的能力!

群内讨论,为什么ORACLE 10g都过了extended support,但10g ocm还是考试的主力?只能说10g ocm这个大蛋糕还没被彻底切完,而且各大第三方培训机构对11g ocm的题库还不熟悉,反正10g的钱还能挣着,就无所谓那么急要给考试也升个级了。或许可以在国内看到这种现象,市面上没人用10g了,但是大家还在考10g

将被废弃退休的一些认证考试,对应的新版本列表如下:

 

Retiring Exams Newer Versions of Retiring Exams
1Z0-030 Oracle9i New Features for Administrators 1Z0-060 Upgrade to Oracle Database 12c
1Z0-035 Oracle9i DBA New Features for Oracle7.3 and Oracle8 OCPs 1Z0-060 Upgrade to Oracle Database 12c
1Z0-040 Oracle Database 10g: New Features for Administrators 1Z0-060 Upgrade to Oracle Database 12c
1Z0-042 Oracle Database 10g: Administration I 1Z0-052 Oracle Database 11g: Administration I or1Z0-062 Oracle Database 12c: Installation and Administration
1Z0-043 Oracle Database 10g: Administration II 1Z0-053 Oracle Database 11g: Administration II or1Z0-063 Oracle Database 12c: Advanced Administration
1Z0-041 Oracle Database 10g 2 Day DBA Assessment Exam None
1Z0-045 Oracle Database 10g DBA New Features for Oracle8i OCPs 1Z0-060 Upgrade to Oracle Database 12c
1Z0-046 Oracle Database 10g: Managing Oracle on Linux for DBAs None
1Z0-048 Oracle Database 10g R2: Real Application Clusters for Administrators 1Z0-058 Oracle Real Application Clusters 11g Release 2 and Grid Infrastructure Administration
10GOCM Oracle Database 10g Administrator Certified Master Exam Oracle Database 11g Certified Master Exam
Retiring Credentials Newer Versions of Retiring Credentials
Oracle Database 10g Administrator Certified Associate Oracle Database 11g Administrator Certified Associate orOracle Database 12c Administrator Certified Associate
Oracle Database 10g Administrator Certified Professional Oracle Database 11g Administrator Certified Professional orOracle Database 12c Administrator Certified Professional
Oracle Database 10g Bronze Bronze Oracle Database 11gBronze Oracle Database 12c
Oracle Database 10g Managing Oracle on Linux Certified Expert None
Oracle Database 10g Real Applications Clusters Administrator Certified Expert Oracle Certified Expert, Oracle Real Application Clusters 11g and Grid Infrastructure Administrator
Oracle Database 10g Administrator Certified Master Oracle Database 11g Administrator Certified Master

 

OMF下Restore Oracle Datafile的优先级问题

OMF 即Oracle Managed Files   下管理的数据文件,如果 原数据文件存在 则会restore 到原数据文件的位置,如果不存在 则会restore到db_create_file_dest  指向的位置,详见如下测试:

 

restore的优先级如下:

  1. If “SET NEWNAME” is specified, RMAN will use that name for restore.
  2. If the original file exists, RMAN will use the original filename for restore.
  3. If the DB_CREATE_FILE_DEST is set, RMAN will use the diskgroup name specified.
  4. If no DB_CREATE_FILE_DEST is set and the original file does not exist, then RMAN will create another name
  5. for that file in the original disk group.                                          askmaclean.com

注意 只要 一旦使用“DB_CREATE_FILE_DEST有值” restore过数据文件,则 控制文件内容将被”污染” 变成指向新的DB_CREATE_FILE_DEST的文件位置。

 


SQL> show parameter db_create_file_dest

NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_create_file_dest string
C:\APP\XIANGBLI\ORADATA




SQL> create tablespace test_omf datafile size 5M;

表空间已创建。

SQL> select name from v$datafile;

NAME
-----------------------------------------------------------------------------
C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSTEM01.DBF
C:\APP\XIANGBLI\ORADATA\MACLEAN\EXAMPLE01.DBF
C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSAUX01.DBF
C:\APP\XIANGBLI\ORADATA\MACLEAN\MACLEAN1.DBF
C:\APP\XIANGBLI\ORADATA\MACLEAN\UNDOTBS01.DBF
C:\APP\XIANGBLI\ORADATA\MACLEAN\USERS01.DBF
C:\APP\XIANGBLI\ORADATA\MACLEAN\ILM_PART1.DBF
C:\APP\XIANGBLI\ORADATA\MACLEAN\ILM_PART2.DBF
C:\APP\XIANGBLI\ORADATA\MACLEAN\LOW_COST_STORE.DBF
C:\APP\XIANGBLI\ORADATA\MACLEAN\SOURCE_TBS.DBF
C:\APP\XIANGBLI\PRODUCT\12.1.0\DBHOME_2\DATABASE\MISSING00011

NAME
-----------------------------------------------------------------------------
C:\APP\XIANGBLI\PRODUCT\12.1.0\DBHOME_2\DATABASE\MISSING00012
C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_USERS_93RDWOBL_.DBF
C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X25VFH_.DBF

已选择 14 行。





C:\Users\xiangbli>mkdir C:\APP\XIANGBLI\ORADATA1


SQL> alter system set db_create_file_dest='C:\APP\XIANGBLI\ORADATA1';

系统已更改。


RMAN> alter tablespace test_omf offline;

已处理语句




RMAN> backup tablespace test_omf;

RMAN> report schema;

db_unique_name 为 MACLEAN 的数据库的数据库方案报表

永久数据文件列表
===========================
文件大小 (MB) 表空间 回退段数据文件名称
---- -------- -------------------- ------- ------------------------
1 1117 SYSTEM *** C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSTEM01.DBF
2 358 EXAMPLE *** C:\APP\XIANGBLI\ORADATA\MACLEAN\EXAMPLE01.DBF
3 1390 SYSAUX *** C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSAUX01.DBF
4 10 ILM_DATA *** C:\APP\XIANGBLI\ORADATA\MACLEAN\MACLEAN1.DBF
5 725 UNDOTBS1 *** C:\APP\XIANGBLI\ORADATA\MACLEAN\UNDOTBS01.DBF
6 32763 USERS *** C:\APP\XIANGBLI\ORADATA\MACLEAN\USERS01.DBF
7 20 ILM_PART1 *** C:\APP\XIANGBLI\ORADATA\MACLEAN\ILM_PART1.DBF
8 20 ILM_PART2 *** C:\APP\XIANGBLI\ORADATA\MACLEAN\ILM_PART2.DBF
9 40 LOW_COST_STORE *** C:\APP\XIANGBLI\ORADATA\MACLEAN\LOW_COST_STORE.DBF
10 10 SRC_TBS *** C:\APP\XIANGBLI\ORADATA\MACLEAN\SOURCE_TBS.DBF
11 0 NONOMF *** C:\APP\XIANGBLI\PRODUCT\12.1.0\DBHOME_2\DATABASE\MISSING00011
12 0 LLV *** C:\APP\XIANGBLI\PRODUCT\12.1.0\DBHOME_2\DATABASE\MISSING00012
13 10 USERS *** C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_USERS_93RDWOBL_.DBF
14 0 TEST_OMF *** C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X25VFH_.DBF




RMAN> restore tablespace test_omf;

启动 restore 于 22-9月 -13
使用通道 ORA_DISK_1

正在略过数据文件 14; 已还原到文件 C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X25VFH_.DBF
没有完成还原; 所有文件均为只读或脱机文件或者已经还原
完成 restore 于 22-9月 -13


RMAN> restore tablespace test_omf force;

启动 restore 于 22-9月 -13
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00014 还原到 C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X25VFH_.DBF
通道 ORA_DISK_1: 正在读取备份片段 C:\APP\XIANGBLI\FAST_RECOVERY_AREA\MACLEAN\BACKUPSET\2013_09_22\O1_MF_NNNDF_TAG20130922T140621_93X26Y00_.BKP
通道 ORA_DISK_1: 段句柄 = C:\APP\XIANGBLI\FAST_RECOVERY_AREA\MACLEAN\BACKUPSET\2013_09_22\O1_MF_NNNDF_TAG20130922T140621_93X26Y00_.BKP 标记 = TAG20130922T14062
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
完成 restore 于 22-9月 -13



C:\Users\xiangbli>del C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X25VFH_.DBF

这里还原到了C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X25VFH_.DBF,由于数据文件本身存在

C:\Users\xiangbli>rman target /

恢复管理器: Release 12.1.0.1.0 - Production on 星期日 9月 22 14:07:21 2013

Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.

已连接到目标数据库: MACLEAN (DBID=1694338843)

RMAN> restore tablespace test_omf;

启动 restore 于 22-9月 -13
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=20 设备类型=DISK

通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00014 还原到 C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X25VFH_.DBF
通道 ORA_DISK_1: 正在读取备份片段 C:\APP\XIANGBLI\FAST_RECOVERY_AREA\MACLEAN\BACKUPSET\2013_09_22\O1_MF_NNNDF_TAG20130922T140621_93X26Y00_.BKP
通道 ORA_DISK_1: 段句柄 = C:\APP\XIANGBLI\FAST_RECOVERY_AREA\MACLEAN\BACKUPSET\2013_09_22\O1_MF_NNNDF_TAG20130922T140621_93X26Y00_.BKP 标记 = TAG20130922T14062
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
完成 restore 于 22-9月 -13


C:\Users\xiangbli>dir C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X25VFH_.DBF
 驱动器 C 中的卷是 System
 卷的序列号是 C23A-ECDA

 C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE 的目录

找不到文件

C:\Users\xiangbli>dir C:\APP\XIANGBLI\ORADATA1\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X28YSV_.DBF
 驱动器 C 中的卷是 System
 卷的序列号是 C23A-ECDA

 C:\APP\XIANGBLI\ORADATA1\MACLEAN\DATAFILE 的目录

2013/09/22 14:07 5,251,072 O1_MF_TEST_OMF_93X28YSV_.DBF
 1 个文件 5,251,072 字节
 0 个目录 84,377,939,968 可用字节


 
 
RMAN> report schema;

使用目标数据库控制文件替代恢复目录
db_unique_name 为 MACLEAN 的数据库的数据库方案报表

永久数据文件列表
===========================
文件大小 (MB) 表空间 回退段数据文件名称
---- -------- -------------------- ------- ------------------------
1 1117 SYSTEM *** C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSTEM01.DBF
2 358 EXAMPLE *** C:\APP\XIANGBLI\ORADATA\MACLEAN\EXAMPLE01.DBF
3 1390 SYSAUX *** C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSAUX01.DBF
4 10 ILM_DATA *** C:\APP\XIANGBLI\ORADATA\MACLEAN\MACLEAN1.DBF
5 725 UNDOTBS1 *** C:\APP\XIANGBLI\ORADATA\MACLEAN\UNDOTBS01.DBF
6 32763 USERS *** C:\APP\XIANGBLI\ORADATA\MACLEAN\USERS01.DBF
7 20 ILM_PART1 *** C:\APP\XIANGBLI\ORADATA\MACLEAN\ILM_PART1.DBF
8 20 ILM_PART2 *** C:\APP\XIANGBLI\ORADATA\MACLEAN\ILM_PART2.DBF
9 40 LOW_COST_STORE *** C:\APP\XIANGBLI\ORADATA\MACLEAN\LOW_COST_STORE.DBF
10 10 SRC_TBS *** C:\APP\XIANGBLI\ORADATA\MACLEAN\SOURCE_TBS.DBF
11 0 NONOMF *** C:\APP\XIANGBLI\PRODUCT\12.1.0\DBHOME_2\DATABASE\MISSING00011
12 0 LLV *** C:\APP\XIANGBLI\PRODUCT\12.1.0\DBHOME_2\DATABASE\MISSING00012
13 10 USERS *** C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_USERS_93RDWOBL_.DBF
14 0 TEST_OMF *** C:\APP\XIANGBLI\ORADATA1\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X28YSV_.DBF


这次还原到了C:\APP\XIANGBLI\ORADATA1\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X28YSV_.DBF



C:\Users\xiangbli>del C:\APP\XIANGBLI\ORADATA1\MACLEAN\DATAFILE\O1_MF_TEST_OMF_93X2MBCN_.DBF

【AskMaclean技术分享】Oracle dba技能列表

Oracle dba技能列表,来看看你掌握了这张列表里的多少技能? 有多少是熟练的,有多少是仍不熟悉的?

 

【AskMaclean技术分享】Oracle dba技能列表 下载:

 

 

 【AskMaclean技术分享】Oracle dba技能列表-Z.pdf (459.98 KB, 下载次数: 102)

Maclean教你读SQL TRACE TKProf报告

在《Maclean教你读Oracle 10046 SQL TRACE》中我介绍了10046 TRACE的阅读以及其中个字段的含义, 接着我们介绍 10046 sql trace的搭档工具TKPROF。

 

TKPROF是一个可执行文件,自带在Oracle Server软件中,无需额外的安装。 该工具文件可以用来解析ORACLE的SQL TRACE(10046) 以便生成更可读的内容。  实际上tkprof是对10046 SQL trace的内容作了汇总,例如一个语句遇到过的wait event 、其在PARSE、Execute、Fetch三阶段的耗时、CPU_TIME等等。

 

由于tkprof是对10046 SQL TRACE的汇总,所以tkprof中的信息 完全可以从10046中获得, 10046的问题是 由于巨细靡遗 所以TRACE内容可能过多,内容多则难以快速分析, TKPROF将10046  trace 解析过后更适合调优者阅读。

 

TKPROF的语法如下:

tkprof tracefile outfile [explain=user/password] [options…]

几个选项

print=integer     只列出前几个SQL语句,integer    为指定的数量,例如print=10

sys=no                不列出以SYS用户运行的语句

sort=option         排序选项, 选项列表如下:

 

 

  • prscnt number of times parse was called
  • prscpu cpu time parsing
  • prsela elapsed time parsing
  • prsdsk number of disk reads during parse
  • prsqry number of buffers for consistent read during parse
  • prscu number of buffers for current read during parse
  • prsmis number of misses in library cache during parse
  • execnt number of execute was called
  • execpu cpu time spent executing
  • exeela elapsed time executing
  • exedsk number of disk reads during execute
  • exeqry number of buffers for consistent read during execute
  • execu number of buffers for current read during execute
  • exerow number of rows processed during execute
  • exemis number of library cache misses during execute
  • fchcnt number of times fetch was called
  • fchcpu cpu time spent fetching
  • fchela elapsed time fetching
  • fchdsk number of disk reads during fetch
  • fchqry number of buffers for consistent read during fetch
  • fchcu number of buffers for current read during fetch
  • fchrow number of rows fetched
  • userid userid of user that parsed the cursor

 

 

接下来看一个最简单的 TKPROF的例子:

 

 

 

 

drop table fullscan;

create table fullscan as select * from dba_objects;

exec dbms_stats.gather_table_stats(user,'FULLSCAN');

alter system flush shared_pool;
alter system flush buffer_cache;

alter session set events '10046 trace name context forever,level 12';

select count(*) from fullscan;

oradebug setmypid
oradebug tracefile_name;

/s01/admin/G10R25/udump/g10r25_ora_30334.trc

[oracle@vrh8 udump]$ tkprof /s01/admin/G10R25/udump/g10r25_ora_30334.trc 30334.tkf

TKPROF: Release 10.2.0.5.0 - Production on Sun Aug 25 02:21:27 2013   askmaclean.com

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

vi  30334.tkf

Trace file: /s01/admin/G10R25/udump/g10r25_ora_30334.trc
Sort options: default

********************************************************************************
count    = number of times OCI procedure was executed
cpu      = cpu time in seconds executing
elapsed  = elapsed time in seconds executing
disk     = number of physical reads of buffers from disk
query    = number of buffers gotten for consistent read
current  = number of buffers gotten in current mode (usually for update)
rows     = number of rows processed by the fetch or execute call
********************************************************************************

select obj#,type#,ctime,mtime,stime,status,dataobj#,flags,oid$, spare1,
  spare2
from
 obj$ where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null
  and linkname is null and subname is null

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        1      0.00       0.00          2          4          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3      0.00       0.00          2          4          0           1

Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: SYS   (recursive depth: 1)

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  TABLE ACCESS BY INDEX ROWID OBJ$ (cr=4 pr=2 pw=0 time=133 us)
      1   INDEX RANGE SCAN I_OBJ2 (cr=3 pr=1 pw=0 time=74 us)(object id 37)

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       1        0.00          0.00
  SQL*Net message from client                     1        0.01          0.01
  db file sequential read                         2        0.00          0.00
********************************************************************************

select count(*)
from
 fullscan

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          4         15          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.01       0.01       1139       1143          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.02       0.02       1143       1158          0           1

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  SORT AGGREGATE (cr=1143 pr=1139 pw=0 time=15759 us)
  77268   TABLE ACCESS FULL FULLSCAN (cr=1143 pr=1139 pw=0 time=463719 us)  

Elapsed times include waiting on following events:      
  Event waited on                             Times   Max. Wait  Total Waited  
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00  
  db file sequential read                         1        0.00          0.00
  db file scattered read                         80        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00

 

 

 

 

 

在上述例子中我们可以看到TKPROF将 一个SQL Statement 的运行 划分为几个部分的信息:

1. SQL 语句的parse 、execute 、fetch 阶段的耗时:

 

select count(*)
from
 fullscan

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          4         15          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.01       0.01       1139       1143          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.02       0.02       1143       1158          0           1

 

 

 

call: 每一个游标的行为被分成三个步骤:

  • Parse: 解析该游标并生成执行计划的统计信息
  • Execute: 执行该游标阶段的统计信息
  • Fetch : Fetch取得数据行阶段的统计信息

 

  • count   指的是该游标的相关操作 的次数,例如parse count : 2 ,即该游标解析了2次
  • CPU :   相关栏目 所消耗的CPU时间,单位为s
  • elapsed:  相关栏目所消耗的时间,单位为s
  • disk :     相关栏目所消耗的物理读
  • query :  相关栏目所消耗的一致性逻辑读 consistent logical read   ==>一般对于SELECT查询而言 只有query 没有current
  • current: 相关栏目当前逻辑读 current logical read
  • rows 该步骤取回的行数 ==》在本例中由于是 count(*) 所以只有一行
  • Misses in library cache during parse: 1   在解析阶段 library cache 发生了miss,则说明本次解析是硬解析

 

几点释疑:

 

1、对于PL/SQL而言 匿名块/存储过程 以及其中包含的SQL语句会同时体现在TKPROF中,即存在重叠;且SQL将以递归SQL的形式出现:

PARSING IN CURSOR #4 len=56 dep=1 uid=0 oct=6 lid=0 tim=1345130672819745 hv=3509762282 ad=’a7525f30′
UPDATE FULLSCAN SET OWNER=’MACLEAN’ WHERE OBJECT_ID=:B1

 

COMMIT也是这样:

PARSING IN CURSOR #2 len=6 dep=1 uid=0 oct=44 lid=0 tim=1345130672822889 hv=255718823 ad=’0′
COMMIT

 

我们来看一个实际的例子:

 

 

alter system flush shared_pool;
alter system flush buffer_cache;
set timing on;
alter session set events '10046 trace name context forever,level 12';
create index ind_objd on fullscan(object_id);

begin
for i in 1..10000 loop
update fullscan set owner='MACLEAN' where object_id=i;
commit;
end loop;
end;
/
PL/SQL procedure successfully completed.

Elapsed: 00:00:04.00

begin
for i in 1..10000 loop
update fullscan set owner='MACLEAN' where object_id=i;
commit;
end loop;
end;

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.62       0.68        178      20037          0           1
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.62       0.68        178      20037          0           1

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  log file sync                                   1        0.00          0.00
  SQL*Net message to client                       1        0.00          0.00

********************************************************************************

UPDATE FULLSCAN SET OWNER='MACLEAN'
WHERE
 OBJECT_ID=:B1

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute  10000      2.90       2.69        178      20037      19364        9564
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total    10001      2.90       2.69        178      20037      19364        9564

Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS   (recursive depth: 1)

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  db file sequential read                       177        0.00          0.00

COMMIT

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute  10000      0.43       0.52          0          0       9564           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total    10001      0.43       0.52          0          0       9564           0

Misses in library cache during parse: 0
Parsing user id: SYS   (recursive depth: 1)

 

 

 

以上通过一个匿名块  循环执行了10000次的 “update fullscan set owner=’MACLEAN’ where object_id=i;” 以及commit  总的执行 Elapsed: 00:00:04.00 。

该匿名块总耗时为0.68s, 10000次循环update fullscan为2.69s,10000次commit总耗时0.52s ,  0.68+0.52+2.69=3.89s ,此外还有少量的递归SQL耗时也算在这个4.0s里。

 

 

2、 在以上例子中看到, 对于 PL/SQL匿名块、update、commit而言 有execute 阶段 ,而没有 fetch阶段,fetch的次数为0。   对于SELECT语句而言 ,有execute阶段,但是execute阶段的disk、query、current一般为零,统统算在Fetch阶段。

 

 

 

begin
for i in 1..10000 loop
update fullscan set owner='MACLEAN' where object_id=i;
commit;
end loop;
end;

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.62       0.68        178      20037          0           1
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.62       0.68        178      20037          0           1

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  log file sync                                   1        0.00          0.00
  SQL*Net message to client                       1        0.00          0.00

PARSING IN CURSOR #5 len=106 dep=0 uid=0 oct=47 lid=0 tim=1345130672819492 hv=3631473533 ad='a750b960'
begin
for i in 1..10000 loop
update fullscan set owner='MACLEAN' where object_id=i;
commit;
end loop;
end;
END OF STMT
PARSE #5:c=1000,e=891,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=1345130672819487
BINDS #5:

EXEC #5:c=3968396,e=3907489,p=178,cr=20037,cu=28928,mis=0,r=1,dep=0,og=1,tim=1345130676727033
WAIT #5: nam='log file sync' ela= 162 buffer#=8084 sync scn=14950441 p3=0 obj#=96606 tim=1345130676727293
WAIT #5: nam='SQL*Net message to client' ela= 5 driver id=1650815232 #bytes=1 p3=0 obj#=96606 tim=1345130676727343
*** 2013-08-25 03:00:52.748
WAIT #5: nam='SQL*Net message from client' ela= 234159641 driver id=1650815232 #bytes=1 p3=0 obj#=96606 tim=1345130910887016

 

 

 

3、实际在10046 中真实反映了 上述匿名块的执行时间为 3907489 μs = 3.9s 以及其总的cr=20037 cu=28928( update的19364+commit的9564),但在TKPROF中 匿名块等PL/SQL对象显示的信息并不全面,这可能是为了避免用户的误解。

 

 

TKPROF提供了多种排序的方法

 

Sort options: default

********************************************************************************
count    = number of times OCI procedure was executed
cpu      = cpu time in seconds executing
elapsed  = elapsed time in seconds executing
disk     = number of physical reads of buffers from disk
query    = number of buffers gotten for consistent read
current  = number of buffers gotten in current mode (usually for update)
rows     = number of rows processed by the fetch or execute call

 

一般我们对于查询的调优 常用的组合是 SYS=NO  fchela, fchela即按照fetch阶段的elapsed time按照从大到小排列

 

 

[oracle@vrh8 udump]$ tkprof g10r25_ora_30731.trc  30731.tkf sys=no sort=fchela    

TKPROF: Release 10.2.0.5.0 - Production on Sun Aug 25 03:39:46 2013

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Sort options: fchela
********************************************************************************
count    = number of times OCI procedure was executed
cpu      = cpu time in seconds executing
elapsed  = elapsed time in seconds executing
disk     = number of physical reads of buffers from disk
query    = number of buffers gotten for consistent read
current  = number of buffers gotten in current mode (usually for update)
rows     = number of rows processed by the fetch or execute call
********************************************************************************

select count(*)
from
 fullscan

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.01       0.01       1140       1144          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.01       0.01       1140       1144          0           1

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 64

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  SORT AGGREGATE (cr=1144 pr=1140 pw=0 time=14476 us)
  77270   TABLE ACCESS FULL FULLSCAN (cr=1144 pr=1140 pw=0 time=386457 us)

 

 

 

如上Sort options: fchela 后,trace中信息按照fetch elapsed time从长到短排列。

 

 

执行计划

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  SORT AGGREGATE (cr=1144 pr=1140 pw=0 time=14476 us)
  77270   TABLE ACCESS FULL FULLSCAN (cr=1144 pr=1140 pw=0 time=386457 us)

 

 

TKPROF中的执行计划并不现实card、cost等CBO指标, 其所提供的每一个步骤的Rows 、CR、PR 信息对于诊断执行计划到底慢在哪一步有一定帮助, 但是其time耗时信息并不准确。

 

 

等待事件

 

 

  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00
  db file sequential read                         1        0.00          0.00
  db file scattered read                         81        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00

 

 

 

 

TKPROF中简要描述了 语句相关的等待事件, 包括遇到了 多少次该等待事件(Times Waited)、 最长的等待是多久 Max.Wait, 总的等待时间Total Waited ,单位均为 S。

 

10046 中的等待时间描述过于简单,仅为让阅读者简要把握等待问题, 针对等待时间的调优 强烈建议 基于AWR中的wait histogram和ASH去分析, 与他们对比TKPROF显然已经过时了。

 

 

示例解析

 

 

 

select count(1) from big1
where object_id between 10 and 100000
and data_object_id between 1 and 1000
and status like 'VALI%'
and object_type IN ('TABLE', 'INDEX')

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1     20.02 (c)  20.12 (b)      0          1          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      1.13       1.33          0       9087          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4     21.15      21.45 (a)      0       9088          0           1

Misses in library cache during parse: 1  <== 说明是硬解析
Optimizer mode: ALL_ROWS
Parsing user id: 54

 

 

 

  • (a)说明该语句总耗时 21.45s
  • (b) 说明该语句花在解析上的耗时20.12s
  • (c) 说明该语句花在解析上的CPU时间为20.02s
  • 语句解析等待时间= 语句解析耗时 – 语句解析CPU耗时 =  20.12 – 20.02 = 0.10 s

 

以上分析说明 该语句运行的绝大多数耗时花费在解析上, 而解析时 大多数时间是CPU运算, 一般有几种可能导致这么多的CPU运算:

  • 语句过于复杂,导致parse解析和optimize优化 消耗较多CPU
  • 主机CPU忙,进程分配不到足够的CPU时间片
  • 可能遇到resource manager 限制实现CPU

 

视乎实际情况,需要具体分析。

 

Maclean写的Oracle入门书

Maclean写的Oracle入门书

 

maclean liu3

 

 试读目录:

第一章 Oracle数据库源流考

第二章 Oracle体系架构漫谈

 

 

第一章 Oracle数据库源流考

 

  1. Oracle数据库源流考
  2. Oracle数据库今后的大势

 

 

Oracle数据库源流考

 

如果对Oracle软件发展历程不感兴趣,可以跳过本章节

 

Oracle之名源于甲骨文CEO 拉里·埃里森在20世纪70年代在一间名为Ampex的软件公司,为中央情报局设计的一套代号为Oracle的数据库软件,拉里·埃里森是当时的程序员之一。

 

1970年当时还就职于国际商业机器公司(IBM)的Edgar F. Codd发表了名为《A Relational Model of Data for Large Shared Data Banks》的文章,最早提出了关系型模型(Relational Model)。 这篇文章启发了拉里·埃里森开发一个RDBMS数据库的想法。

 

150px-Edgar_F_Codd (1)

Edgar F. Codd在1981年获得图灵奖,

他还设计了能够自我复制的计算机

 

 

 

 

 

 

 

书刊和媒体常将Oracle描述为第一个RDBMS软件,但这个提法是错误的。因为实际上IBM的一个实验室” San Jose Research Laboratory”在1974年以研究为目的开发了一套名为”IBM SYSTEM R”的数据库软件,SYSTEM R同样受到Edgar F. Codd的启发。 SYSTEM R是第一个RDBMS软件,也是第一次采用SQL语言的软件。SYSTEM R有过少量客户例如Pratt & Whitney(U.S.-based aerospace manufacturer with global service operations)。 可惜的是IBM由于商业利益问题(为了保护其 IMS/DB产品的营收),而拒绝大规模采用关系型模型,直到IBM发现RDBMS已经成为市场主流,则悔之晚矣。最终在RDBMS市场上被Oracle这个后起之秀甩到了身后。

一般认为SYSTEM R是第一个RDBMS软件,但没有广泛的商业发行。 而Oracle Database是第一个商业发行的RDBMS软件。

 

拉里·埃里森从 Ed Oates(甲骨文的另一个联合创始人)那里获得了一份IBM的研究杂志,这份杂志上介绍的SYSTEM R系统引起了拉里的兴趣。一开始拉里希望让Oracle的产品能与SYSTEM R相兼容,但IBM封闭守旧的做法让这种想法泡汤了。

 

 

到了70年代末的1977年,拉里和Bob Miner 以及Ed Oates创立了软件开发实验室(Software Development Laboratories (SDL)), 1979年更名为 Relational Software, Inc. (RSI), 到1982年更名为Oracle Systems Corporation沿用至今,1986年Oracle上市时年收入暴增到5500万美元,甲骨文传奇从此为世人熟识。

 

larry bob miner

 左起为Ed Oates,Bruce Scott,Bob Miner,Larry Ellison 

 

 

到今天(2013年)Oracle已经发展成世界第二大独立软件公司,2011年的年收入达到268亿美元,拥有10万名员工,总部位于美国加州红木城。

 

 800px-Oracle_Fountain_(6532480)

 美国加州红木城Oracle总部

 

 

 

1989年Oracle进入中国,1991年7月甲骨文公司在北京建立独资公司——北京甲骨文软件系统有限公司。

 

进入中国之初Oracle数据库并没有大规模占领市场,90年代中国的RDBMS市场还是Sybase和Informix时代。Maclean有幸与一位在国内维护过Oracle 6的老前辈共事过,在那个中国IT的洪荒时代Oracle没有留下太多的印记。

 

在1992年发行的Oracle 版本6中提出了RAC的雏形OPS- Oracle Parallel Server,而在Oracle 7中提出了MPP OPS,较为流行的版本是7.3.4。1997年发行版本Oracle 8,但由于bug太多,市场反应平平。  在1年后1998年,响应互联网的发展提出了8i,这里的i即为Internet互联网。之后Oracle的版本号都是数字加一个字母的组合,字母代表了这个版本的特性指向。  例如版本10和11采用G – GRID,意为网格计算。而版本12则开始采用C-Cloud,那是因为云计算在市场中大热。

 

从8i开始国内的一些电信运营商大规模采用Oracle作为其业务核心数据库,少数最为重要的系统已经不满足于HACMP所实现的高可用,纷纷采用OPS来实现更高的可用性。就算到现在(2013年),据Maclean所知仍有极少数版本8i的数据库运行在 电信运营商、码头公司等机构充当一些历史库环境,在陈旧的机房中那一台台过时的小型机里,屏幕上黑底绿字的终端里一串串字符飘过,虽然经历近15年的服役,但8i的稳健令人敬佩。

 

国内的第一代Oracle DBA在这样的大背景下出现,这些老前辈十分值得我们这些后来者致敬,在因特网不发达的年代除了购买Oracle License附赠的手册Manual和少数基本教材之外,你很难找到更多有用的材料;这种材料匮乏的环境,就需要DBA本人花费更多的精力去尝试测试各种功能和问题。 在此maclean向国内的第一代DBA致以敬意。

 Oracle 3的用户手册

oracle 3 user guide

 

 关于Oracle的版本历史,在初版中不在鏖述,今后可能再次完善。

 

下附 Oracle Database 发行历史年表:

 

版本号 发行年份 距离前一个版本发行的时间 发行公司 内核编程语言
Oracle 1 1978 没有实际发行 Software Development Laboratories (SDL) 汇编
Oracle 2 1979 1 Relational Software, Inc. 汇编
Oracle 3 1983 4 Oracle Corporation C
Oracle 4 1984 1 Oracle Corporation C
Oracle 5 1985 1 Oracle Corporation C
Oracle 6 1988 3 Oracle Corporation C
Oracle 7 1992 4 Oracle Corporation C
Oracle 8 1997 5 Oracle Corporation C
Oracle 8i 1999 2 Oracle Corporation C
Oracle 9iR1 2001 2 Oracle Corporation C
Oracle 9iR2 2002 1 Oracle Corporation C
Oracle 10gR1 2004(存疑,wiki为2003,oracle lifetime为2004) 1 Oracle Corporation C
Oracle 10GR2 2005 2 Oracle Corporation C
Oracle 11gR1 2007 2 Oracle Corporation C
Oracle 11gR2 2009 2 Oracle Corporation C
Oracle 12cR1 2013 4 Oracle Corporation C
Oracle 12cR2 未知 未知 Oracle Corporation C

 

如果你读过oracle的一些内部trace( trace是指对进程运行的追踪,后面我们会详细介绍),那么会了解到 1988年这个特殊的年头,实际上Oracle的源代码在1988年左右被彻底重写过,换句话说现在版本的Oracle  代码主要源流是Oracle 6和Oracle 7。

在Oracle 6是中首次实现了行级锁定,首次实现了数据库热备份,Oracle公司从Belmont移到加利福尼亚的redwood  shores,并引入了PL/SQL。

 

Oracle数据库未来的发展大势

近几年随着 云计算和大数据 2个概念被持续被炒热,因此Oracle的版本特性也不断在往这2个流行词上靠。 实际上甲骨文对于 云cloud概念的热棒还是最近几年的事情,  早几年 拉里·埃里森曾嘲讽 “我完全搞不懂那帮家伙在说些什么,简直就是一派胡扯。这(云计算)到底是指什么?省省这种愚蠢的概念吧。”   但拉里无愧为经历数十年IT风云的运作老手,发觉大势不对,马上扭过头来鼓吹自家的云计算技术。 实际上将Oracle 10g中G所指的Grid Computing 网格运算 调换一下称谓,忽悠成cloud computing ,则在大量应用场景中都无不妥。

 

随着Enterprise Manager 12c Cloud Control的发行,世人惊叹甲骨文以惊人的速度撞入云计算的怀抱;及至2013年Oracle Database 12c发布, 又提出了众多与云计算相关的特性, 例如 多租户的Multitenant Architecture、灵活自动存储管理Flex ASM和 灵活集群 flex cluster。

Flex Cluster原名Big Cluster ,由于不管是OPS还是RAC 均是share disk共享磁盘架构,这大大限制了Oracle Cluster集群的扩展能力,在过去4节点以上的RAC是很少见的。

 

 

flex cluster  ORA

 


 

 

 

reference:

http://zh.wikipedia.org/wiki/%E7%94%B2%E9%AA%A8%E6%96%87%E5%85%AC%E5%8F%B8
http://en.wikipedia.org/wiki/Oracle_Corporation

 

 


 

第二章  自学Oracle数据库的自由之翼

  1. 从哪里开始?
  2. 孤岛危机  哪里找资源/材料?
  3. 如何读文档
  4. 注意事项
  5. 如何实践?
  6. 关于安装和补丁
  7. 关于BUG和意外表现unexpected behavior

 

关于从哪里开始学习, 自来都有争议,有同学推荐 从备份恢复入手 =》到concept 概念 再到 管理手册, 而有同学推荐 从 concept概念入手 再到备份恢复概念和管理手册; 又有的同学建议 直接从OCA、OCP的学生手册入手。

这里说的 备份恢复手册、概念手册、管理手册 均指Oracle官方文档的一部分, Oracle数据库官方文档是任何人都可以阅读的文档, 文档本身也是公开 可以下载的。

Oracle Database 11.2 官方文档目录: http://www.oracle.com/pls/db112/homepage

11.2的 Database concept 概念文档: http://docs.oracle.com/cd/E11882_01/server.112/e25789/toc.htm

11.2的 Oracle Database Backup and Recovery User’s Guide 备份恢复手册: http://docs.oracle.com/cd/E11882_01/backup.112/e10642/toc.htm

 

11.2 的Oracle administrator guide管理员手册 http://docs.oracle.com/cd/E11882_01/server.112/e25494/toc.htm

Oracle Database 10.2的官方文档目录: http://www.oracle.com/pls/db102/homepage

10.2的 Database concept 概念文档 :  http://docs.oracle.com/cd/B19306_01/server.102/b14220/toc.htm

Oracle Database Backup and Recovery Basics  http://docs.oracle.com/cd/B19306_01/backup.102/b14192/toc.htm

 

8i到9i的文档 也可以在文档归档网站 http://tahiti.oracle.com/ 上找到

 

为什么要读文档?  不读文档Oracle的一个小领域就能让你困惑到十万个为什么, 读了文档 的话可以减少到一百个为什么。

 

 

在Maclean看来这几种方法各有优缺点 :

从concept入手 堪称最为根红苗正的路线,未入门的同学如能将concept啃下来可以说大有裨益的, 但对于绝大多数同学而言 由于没有oracle实践动手能力, concept的大段原理概念将学得异常枯燥乏味, 和学 财会、法律背书无异, 往往越读越觉得空虚,越读越觉得没有实际运用价值。

基于备份恢复手册为里程起点的学习有一定的实践优势, 因为简单的备份恢复过程是很容易理解和重复实践的, 同学们可以从实践中获得信心。但由于缺少基础原理知识,很难深入理解

 

 

 

如我从前所说,学习一些Oracle的知识所花费的时间是有限的,而重复学习才是浪费时间的。但避免重复学习又与Oracle技术的深邃似乎是矛盾的,例如Oracle中一个Buffer Pool管理的知识领域,可以有上百个知识点,实际我们在OCP乃至OCM的培训中仅仅谈及十多个知识点而已,这样的限制主要是受限于课时和实际学习收益。

举一个例子来说 花费2个课时 掌握60%的知识点,并因此而能解决 80%的问题 , 与 花费10个课时掌握100%的知识点并解决95%的问题,大多数人会选择前者, 因为前者是 适宜大众和经济实惠的。但问题大多数培训和教材仅仅告知 学习者有 这60%的知识点需要掌握,而并不告知大家这仅仅是60%的知识点,仍有40%的问题存在。

所以在Maclean看来 掌握基础是必要的, 此外也有必要让自己知晓尚未覆盖的那些内容。 这样当我们遇到一些需要复杂原理解释的问题时,我们会明确了解到自己的思考局限,如果问题真的超出了我们认知的范围,则知道如何进一步去探索这个问题。另一个附加的好处是,如果我们再次针对这个领域深入学习,则知道应当从哪里开头。

 


 

 第三章  Oracle数据库体系架构漫谈

 

如果说宇宙的终极意义是42,那么对于Oracle数据库而言其终极意义可能是云端中的盛水的玻璃容器。

要使一个初学者充分了解Oracle数据库的体系架构是困难的,因为这里面充满了 各种术语、机制、数据结构和算法; 实际上任何一个发展超过10年的平台软件都会发展出一种对初学者来说诡异难解的”脾性”来。 初学者学习这些软件技术若浅尝辄止难免不倒胃口,但你不妨想一想,人类的那些美食如牡蛎、茶叶、黑啤酒,难道你尝一口就非常喜欢吗? 法国人吃蜗牛,瑞典人喝接骨木液,难道一开始你就能接受吗? 而Unix、C语言、Oracle数据库正是与这些东西相似的东西,你尝着尝着便上瘾了,欲罢不能。 这也是为什么Oracle圈子总是新人偏少,都是我们这帮老家伙的原因。

Oracle这30多岁的中年老男人生于Unix之中,长于C语言之手,难免沾染了Unix和C的坏秉性;如果对这老男人做个全身透视,无非看到一堆C语言头文件中定义的struct结构和函数算法,对我们这些惯用Windows的小年轻而言未免口味过重。

Unix和C比之Oracle虚长几岁,做起事来有若干原则,这里一一披露:

  • 小即是美。
  • 让程序只做好一件事。
  • 尽可能早地建立原型。
  • 可移植性比效率更重要。
  • 数据应该保存为文本文件。
  • 尽可能地榨取软件的全部价值。
  • 使用shell脚本来提高效率和可移植性。
  • 避免使用可定制性低下的用户界面。
  • 所有程序都是数据的过滤器

 

Oracle在Unix和C的基础上又订了若干准则,这样就建立起Oracle的世界:

  • 世界由 一组后台进程和一堆共享内存组成,世界的别名叫instance,中文名实例
  • 有好几个后台进程 ,他们有自己的名字,有一个叫SMON,还有一个叫PMON,他们是这个世界最早的工人,今后的世界里还有他们。 每个后台进程完成一项或者多项维护工作: 例如SMON ,它的工作很低贱,包括清理临时空间、回滚事务、维护回滚段等等,有时DBA叫它”保洁员”,但世界正常运行不能少了它。 一般后台进程只做自己的工作,不在其位则不谋其政。
  • 有一种叫前台进程或者服务进程的家伙会登陆到世界,他们进入世界后折腾各种查询和更改。有的达到临时性目的后就退出了,被称作”短连接”; 有的来了就不走,工作休息都在世界里的,被称作”长连接”。 Oracle比较偏爱 “长连接”,因为在Oracle里连接是昂贵的。长短连接不是Oracle说了算,是应用程序设计和部署决定的。
  • 前台进程/服务进程一般是自助式的服务的,例如要从磁盘上读一张表,那么除非申请了并行,否则就是它自行完成。例如前台进程自己生成了临时的数据段且它要回退自身的操作(例如create table做了一半被CTRL+C cancel掉),那么它自己去清理残局,除非它意外死亡了,否则别人不会代劳。
  • 世界中有三件事无法避免: 死亡 ,性能损耗 和 实例重启; 但死亡并不可怕,如果个别进程的死亡能换来整个系统不挂起,或者数据不讹误(corruption),那么死亡完全值得。
  • 死亡在世界里是常事,死亡的原因大概有下面几种:
    • 当进程使用到非法的地址,或者收到意外的信号(signal); 这种情况一般会出现ORA-7445的事件或者说错误号
    • 当进程发现如果它进一步工作,可能导致数据逻辑讹误时。一般会出现ORA-600的事件或者说错误号
    • 前台进程的死亡率很高,特别是在世界的初始版本中 例如 10.1 ,10.2.0.1~10.2.0.3和11.2.0.1。每一个新世界都引入几百个新鲜事务,其中有多达几十个是默认打开的,它们是全新的且仅仅经过有限的压力测试,恰好使用到它们的前台进程可能进入程序的exception意外中, 以报出ORA-600错误并生成trace后自行终结terminate结束

 

 

 

如何重命名DB- How to Rename DB_NAME with NID?

如何如何重命名DB- How to Rename DB_NAME with NID?  一般可以Follow 下面的过程:

 

 

rename database 重命名db,原DB_NAME=MACLEANS 需要修改为MACSH

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

 

 

SQL> startup mount;
ORACLE instance started.

Total System Global Area 1653518336 bytes
Fixed Size 2228904 bytes
Variable Size 956304728 bytes
Database Buffers 687865856 bytes
Redo Buffers 7118848 bytes
Database mounted.

 

 
[oracle@mlab1 ~]$ nid target=system/oracle DBNAME=MACSH SETNAME=Y

DBNEWID: Release 11.2.0.3.0 – Production on Tue May 28 12:00:16 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

Connected to database MACLEANS (DBID=639200705)

Connected to server version 11.2.0

Control Files in database:
+DATA/macleansh/controlfile/current.272.816564929
+FRA/macleansh/controlfile/current.256.816564929

Change database name of database MACLEANS to MACSH? (Y/[N]) => Y

Proceeding with operation
Changing database name from MACLEANS to MACSH
Control File +DATA/macleansh/controlfile/current.272.816564929 – modified
Control File +FRA/macleansh/controlfile/current.256.816564929 – modified
Datafile +DATA/macleansh/datafile/system.260.81656479 – wrote new name
Datafile +DATA/macleansh/datafile/sysaux.266.81656479 – wrote new name
Datafile +DATA/macleansh/datafile/undotbs1.264.81656479 – wrote new name
Datafile +DATA/macleansh/datafile/users.273.81656479 – wrote new name
Datafile +DATA/macleansh/datafile/example.263.81656499 – wrote new name
Datafile +DATA/macleansh/tempfile/temp.262.81656497 – wrote new name
Control File +DATA/macleansh/controlfile/current.272.816564929 – wrote new name
Control File +FRA/macleansh/controlfile/current.256.816564929 – wrote new name
Instance shut down

Database name changed to MACSH.
Modify parameter file and generate a new password file before restarting.
Succesfully changed database name.
DBNEWID – Completed succesfully.

 
SQL> startup nomount;
ORACLE instance started.

Total System Global Area 1653518336 bytes
Fixed Size 2228904 bytes
Variable Size 956304728 bytes
Database Buffers 687865856 bytes
Redo Buffers 7118848 bytes

SQL> alter system set db_name=’MACSH’ scope=spfile;

System altered.

 

SQL> startup force;
ORACLE instance started.

Total System Global Area 1653518336 bytes
Fixed Size 2228904 bytes
Variable Size 956304728 bytes
Database Buffers 687865856 bytes
Redo Buffers 7118848 bytes
Database mounted.
Database opened.

 

SQL> show parameter db_name

NAME TYPE VALUE
———————————— ———– ——————————
db_name string MACSH
SQL>
SQL>
SQL> select name from v$database;

NAME
———
MACSH

 

V$SQLCOMMAND SQL opcodes and names


SQL> select command_type,command_name from V$SQLCOMMAND;

COMMAND_TYPE COMMAND_NAME
------------ ----------------------------------------------------------
           0
           1 CREATE TABLE
           2 INSERT
           3 SELECT
           4 CREATE CLUSTER
           5 ALTER CLUSTER
           6 UPDATE
           7 DELETE
           8 DROP CLUSTER
           9 CREATE INDEX
          10 DROP INDEX
          11 ALTER INDEX
          12 DROP TABLE
          13 CREATE SEQUENCE
          14 ALTER SEQUENCE
          15 ALTER TABLE
          16 DROP SEQUENCE
          17 GRANT OBJECT
          18 REVOKE OBJECT
          19 CREATE SYNONYM
          20 DROP SYNONYM
          21 CREATE VIEW
          22 DROP VIEW
          23 VALIDATE INDEX
          24 CREATE PROCEDURE
          25 ALTER PROCEDURE
          26 LOCK TABLE
          27 NO-OP
          28 RENAME
          29 COMMENT
          30 AUDIT OBJECT
          31 NOAUDIT OBJECT
          32 CREATE DATABASE LINK
          33 DROP DATABASE LINK
          34 CREATE DATABASE
          35 ALTER DATABASE
          36 CREATE ROLLBACK SEG
          37 ALTER ROLLBACK SEG
          38 DROP ROLLBACK SEG
          39 CREATE TABLESPACE
          40 ALTER TABLESPACE
          41 DROP TABLESPACE
          42 ALTER SESSION
          43 ALTER USER
          44 COMMIT
          45 ROLLBACK
          46 SAVEPOINT
          47 PL/SQL EXECUTE
          48 SET TRANSACTION
          49 ALTER SYSTEM
          50 EXPLAIN
          51 CREATE USER
          52 CREATE ROLE
          53 DROP USER
          54 DROP ROLE
          55 SET ROLE
          56 CREATE SCHEMA
          57 CREATE CONTROL FILE
          58 ALTER TRACING
          59 CREATE TRIGGER
          60 ALTER TRIGGER
          61 DROP TRIGGER
          62 ANALYZE TABLE
          63 ANALYZE INDEX
          64 ANALYZE CLUSTER
          65 CREATE PROFILE
          66 DROP PROFILE
          67 ALTER PROFILE
          68 DROP PROCEDURE
          70 ALTER RESOURCE COST
          71 CREATE MATERIALIZED VIEW LOG
          72 ALTER MATERIALIZED VIEW LOG
          73 DROP MATERIALIZED VIEW  LOG
          74 CREATE MATERIALIZED VIEW
          75 ALTER MATERIALIZED VIEW
          76 DROP MATERIALIZED VIEW
          77 CREATE TYPE
          78 DROP TYPE
          79 ALTER ROLE
          80 ALTER TYPE
          81 CREATE TYPE BODY
          82 ALTER TYPE BODY
          83 DROP TYPE BODY
          84 DROP LIBRARY
          85 TRUNCATE TABLE
          86 TRUNCATE CLUSTER
          87 CREATE BITMAPFILE
          88 ALTER VIEW
          89 DROP BITMAPFILE
          90 SET CONSTRAINTS
          91 CREATE FUNCTION
          92 ALTER FUNCTION
          93 DROP FUNCTION
          94 CREATE PACKAGE
          95 ALTER PACKAGE
          96 DROP PACKAGE
          97 CREATE PACKAGE BODY
          98 ALTER PACKAGE BODY
          99 DROP PACKAGE BODY
         157 CREATE DIRECTORY
         158 DROP DIRECTORY
         159 CREATE LIBRARY
         160 CREATE JAVA
         161 ALTER JAVA
         162 DROP JAVA
         163 CREATE OPERATOR
         164 CREATE INDEXTYPE
         165 DROP INDEXTYPE
         166 ALTER INDEXTYPE
         167 DROP OPERATOR
         168 ASSOCIATE STATISTICS
         169 DISASSOCIATE STATISTICS
         170 CALL METHOD
         171 CREATE SUMMARY
         172 ALTER SUMMARY
         173 DROP SUMMARY
         174 CREATE DIMENSION
         175 ALTER DIMENSION
         176 DROP DIMENSION
         177 CREATE CONTEXT
         178 DROP CONTEXT
         179 ALTER OUTLINE
         180 CREATE OUTLINE
         181 DROP OUTLINE
         182 UPDATE INDEXES
         183 ALTER OPERATOR
         184 Do not use 184
         185 Do not use 185
         186 Do not use 186
         187 CREATE SPFILE
         188 CREATE PFILE
         189 UPSERT
         190 CHANGE PASSWORD
         191 UPDATE JOIN INDEX
         192 ALTER SYNONYM
         193 ALTER DISK GROUP
         194 CREATE DISK GROUP
         195 DROP DISK GROUP
         196 ALTER LIBRARY
         197 PURGE USER RECYCLEBIN
         198 PURGE DBA RECYCLEBIN
         199 PURGE TABLESPACE
         200 PURGE TABLE
         201 PURGE INDEX
         202 UNDROP OBJECT
         203 DROP DATABASE
         204 FLASHBACK DATABASE
         205 FLASHBACK TABLE
         206 CREATE RESTORE POINT
         207 DROP RESTORE POINT
         209 DECLARE REWRITE EQUIVALENCE
         210 ALTER REWRITE EQUIVALENCE
         211 DROP REWRITE EQUIVALENCE
         212 CREATE EDITION
         213 ALTER EDITION
         214 DROP EDITION
         215 DROP ASSEMBLY
         216 CREATE ASSEMBLY
         217 ALTER ASSEMBLY
         218 CREATE FLASHBACK ARCHIVE
         219 ALTER FLASHBACK ARCHIVE
         220 DROP FLASHBACK ARCHIVE
         222 CREATE SCHEMA SYNONYM
         224 DROP SCHEMA SYNONYM
         225 ALTER DATABASE LINK
         226 CREATE PLUGGABLE DATABASE
         227 ALTER PLUGGABLE DATABASE
         228 DROP PLUGGABLE DATABASE
         229 CREATE AUDIT POLICY
         230 ALTER AUDIT POLICY
         231 DROP AUDIT POLICY
         238 ADMINISTER KEY MANAGEMENT
         239 CREATE MATERIALIZED ZONEMAP
         240 ALTER MATERIALIZED ZONEMAP
         241 DROP MATERIALIZED ZONEMAP

DBA_HIST_PLAN_OPERATION_NAME

  1* select operation_id,operation_name from DBA_HIST_PLAN_OPERATION_NAME
SQL> /

OPERATION_ID OPERATION_NAME
------------ --------------------------------------------------
           0
           1 BITMAP KEY ITERATION
           2 NESTED LOOPS
           3 MERGE JOIN
           4 HASH JOIN
           5 AND-EQUAL
           6 BITMAP AND
           7 INTERSECTION
           8 MINUS
           9 BITMAP MINUS
          10 GENERATE
          11 BITMAP CONVERSION
          12 BITMAP INDEX
          13 CONNECT BY
          14 CONNECT BY PUMP
          15 COUNT
          16 DELETE
          17 UPDATE
          18 FIRST ROW
          19 FILTER
          20 FOR UPDATE
          21 FIXED TABLE
          22 INLIST ITERATOR
          23 INDEX
          24 INDEX BUILD
          25 LOAD AS SELECT
          26 MULTI-TABLE INSERT
          27 INTO
          28 DIRECT LOAD INTO
          29 COLLECTION ITERATOR
          30 DOMAIN INDEX
          31 PARTITION RANGE
          32 PARTITION HASH
          33 PARTITION LIST
          34 PARTITION SYSTEM
          35 PARTITION COMBINED
          36 GRANULE ITERATOR
          37 SEQUENCE
          38 TABLE ACCESS
          39 TABLE QUEUE
          40 INDEX MAINTENANCE
          41 FIFO BUFFER
          42 WINDOW
          43 TEMP TABLE TRANSFORMATION
          44 SORT
          45 BUFFER
          46 BITMAP COMPACTION
          47 BITMAP CONSTRUCTION
          48 BITMAP OR
          49 BITMAP MERGE
          50 CONCATENATION
          51 UNION-ALL
          52 VIEW PUSHED PREDICATE
          53 VIEW
          54 REMOTE
          55 SELECT STATEMENT
          56 INSERT STATEMENT
          57 UPDATE STATEMENT
          58 MERGE STATEMENT
          59 DELETE STATEMENT
          60 CREATE TABLE STATEMENT
          61 ALTER INDEX STATEMENT
          62 CREATE INDEX STATEMENT
          63 DDL STATEMENT
          64 Can't Explain!!
          65 TEMP TABLE GENERATION
          66 TRUNCATE TEMP TABLE
          67 RECURSIVE EXECUTION
          68 MERGE
          69 EXTERNAL TABLE ACCESS
          70 BITMAP JOIN INDEX UPDATE
          71 BITMAP JOIN INDEX UPDATE STATEMENT
          72 VIEW HIERARCHY
          73 SQL MODEL
          74 MAT_VIEW ACCESS
          75 MAT_VIEW REWRITE ACCESS
          76 FREQUENT ITEMSET COUNTING
          77 FIC ENUMERATE FEED
          78 FIC LOAD BITMAPS
          79 FIC LOAD ITEMSETS
          80 DETECT END
          81 RECURSIVE ITERATION
          82 DOMAIN INDEX BUILD
          83 DOMAIN INDEX PARTITION BUILD
          84 FAST DUAL
          85 REFERENCE MODEL
          86 PX RECEIVE
          87 QC SEND
          88 PX SEND
          89 PX COORDINATOR
          90 PX BLOCK
          91 PX PARTITION RANGE
          92 PX PARTITION HASH
          93 PX PARTITION LIST
          94 WINDOW (IN SQL MODEL)
          95 UNION ALL PUSHED PREDICATE
          96 DST ENUMERATE FEED
          97 DST DETECT END
          98 DST RECURSIVE ITERATION
          99 DST SPLIT
         100 DECISION TREE CLASSIFICATION
         101 DST PRUNE
         102 JOIN FILTER
         103 HASH
         104 ERROR LOGGING
         105 LOAD TABLE CONVENTIONAL
         106 PART JOIN FILTER
         107 AW SCAN
         108 PARTITION REFERENCE
         109 PX PARTITION REFERENCE
         110 XPATH EVALUATION
         111 RESULT CACHE
         112 DM FEED PREDICTOR-TARGET PAIRS
         113 DM SUPERVISED BINNING
         114 DM HASH-BROADCAST COUNTS
         115 BULK BINDS GET
         116 OPTIMIZER STATISTICS GATHERING
         117 UNPIVOT
         118 TRANSPOSE
         119 MONITORING
         120 CUBE SCAN
         121 JOINED CUBE SCAN
         122 CUBE ACCESS
         123 MAT_VIEW CUBE ACCESS
         124 MAT_VIEW REWRITE CUBE ACCESS
         125 CUBE TABLE SCAN
         126 JOINED CUBE TABLE SCAN
         127 CUBE TABLE ACCESS
         128 UNION ALL (RECURSIVE WITH)
         129 RECURSIVE WITH PUMP
         130 CUBE JOIN
         131 PX TASK
         132 PX SELECTOR
         133 STATISTICS COLLECTOR
         134 MATCH RECOGNIZE
         135 EXPRESSION EVALUATION
         136 DM EXP MAX PAR
         137 DM EXP MAX AGGR
         138 WINDOW CONSOLIDATOR
         139 FAULT-TOLERANCE BUFFER
         140 XMLTABLE EVALUATION

沪公网安备 31010802001379号

TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569