Skip to content

当RAC安装遇到问题需要重新安然或者集群重要组件OCR损坏等场景,需要重装集群环境时,需要对集群配置进行重新配置(Re-configure);本文对此过程进行测试整理,如下:
参考文档:
How to Configure or Re-configure Grid Infrastructure With config.sh/config.bat (文档 ID 1354258.1)
How to Deconfigure/Reconfigure(Rebuild OCR) or Deinstall Grid Infrastructure (文档 ID 1377349.1)

测试环境为LINUX64位+两节点RAC 11.2.0.4.160719.
OCR/voting与数据在同一个ASM磁盘组–DATA.
如下记录Deconfigure/Reconfigure的过程。

1.检查并记录当前集群配置–输出省略

crsctl stat res -t
crsctl stat res -p
crsctl query css votedisk
ocrcheck
oifcfg getif
srvctl config nodeapps -a
srvctl config scan
srvctl config asm -a
srvctl config listener -l listener -a
srvctl config database -d ludarac -a

 

2.解除整个集群的配置

如果 OCR 和 Voting Disk 没有在 ASM 上面,或者在 ASM 上面且为单独的磁盘组–无业务数据
在所有远程节点,使用 root 执行:
# <$GRID_HOME>/crs/install/rootcrs.pl -deconfig -force -verbose
一旦上面命令在所有节点执行完毕,在本地节点,使用 root 用户执行:
# <$GRID_HOME>/crs/install/rootcrs.pl -deconfig -force -verbose -lastnode

如果 OCR 或 Voting Disks 在 ASM 并且有用户数据此磁盘组中:
如果 GI 版本是 11.2.0.3 并且 bug 13058611 和 bug 13001955 被安装,或者 GI 版本是 11.2.0.3.2 GI PSU 或者更高:
在所有远程节点,使用 root 执行:
# <$GRID_HOME>/crs/install/rootcrs.pl -deconfig -force -verbose
一旦上面命令在所有节点执行完毕,在本地节点,使用 root 用户执行:
# <$GRID_HOME>/crs/install/rootcrs.pl -deconfig -force -verbose -keepdg -lastnode
如下为解除配置过程:
节点1:
[root@luda1 ~]# /u01/11.2.0/grid/crs/install/rootcrs.pl -deconfig -force -verbose
Using configuration parameter file: /u01/11.2.0/grid/crs/install/crsconfig_params
Network exists: 1/192.168.57.0/255.255.255.0/eth0, type static
VIP exists: /luda1-vip/192.168.57.216/192.168.57.0/255.255.255.0/eth0, hosting node luda1
VIP exists: /luda2-vip/192.168.57.218/192.168.57.0/255.255.255.0/eth0, hosting node luda2
GSD exists
ONS exists: Local port 6100, remote port 6200, EM port 2016
CRS-2613: Could not find resource ‘ora.registry.acfs’.
CRS-4000: Command Stop failed, or completed with errors.
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on ‘luda1’
CRS-2673: Attempting to stop ‘ora.crsd’ on ‘luda1’
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on ‘luda1’
CRS-2673: Attempting to stop ‘ora.oc4j’ on ‘luda1’
CRS-2673: Attempting to stop ‘ora.ludarac.db’ on ‘luda1’
CRS-2677: Stop of ‘ora.ludarac.db’ on ‘luda1’ succeeded
CRS-2673: Attempting to stop ‘ora.DATA.dg’ on ‘luda1’
CRS-2677: Stop of ‘ora.oc4j’ on ‘luda1’ succeeded
CRS-2672: Attempting to start ‘ora.oc4j’ on ‘luda2’
CRS-2677: Stop of ‘ora.DATA.dg’ on ‘luda1’ succeeded
CRS-2673: Attempting to stop ‘ora.asm’ on ‘luda1’
CRS-2677: Stop of ‘ora.asm’ on ‘luda1’ succeeded
CRS-2676: Start of ‘ora.oc4j’ on ‘luda2’ succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on ‘luda1’ has completed
CRS-2677: Stop of ‘ora.crsd’ on ‘luda1’ succeeded
CRS-2673: Attempting to stop ‘ora.ctssd’ on ‘luda1’
CRS-2673: Attempting to stop ‘ora.evmd’ on ‘luda1’
CRS-2673: Attempting to stop ‘ora.asm’ on ‘luda1’
CRS-2673: Attempting to stop ‘ora.mdnsd’ on ‘luda1’
CRS-2677: Stop of ‘ora.ctssd’ on ‘luda1’ succeeded
CRS-2677: Stop of ‘ora.mdnsd’ on ‘luda1’ succeeded
CRS-2677: Stop of ‘ora.evmd’ on ‘luda1’ succeeded
CRS-2677: Stop of ‘ora.asm’ on ‘luda1’ succeeded
CRS-2673: Attempting to stop ‘ora.cluster_interconnect.haip’ on ‘luda1’
CRS-2677: Stop of ‘ora.cluster_interconnect.haip’ on ‘luda1’ succeeded
CRS-2673: Attempting to stop ‘ora.cssd’ on ‘luda1’
CRS-2677: Stop of ‘ora.cssd’ on ‘luda1’ succeeded
CRS-2673: Attempting to stop ‘ora.crf’ on ‘luda1’
CRS-2677: Stop of ‘ora.crf’ on ‘luda1’ succeeded
CRS-2673: Attempting to stop ‘ora.gipcd’ on ‘luda1’
CRS-2677: Stop of ‘ora.gipcd’ on ‘luda1’ succeeded
CRS-2673: Attempting to stop ‘ora.gpnpd’ on ‘luda1’
CRS-2677: Stop of ‘ora.gpnpd’ on ‘luda1’ succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on ‘luda1’ has completed
CRS-4133: Oracle High Availability Services has been stopped.
Removing Trace File Analyzer
Successfully deconfigured Oracle clusterware stack on this node

节点2:
[root@luda2 ~]# crsctl stat res -t
——————————————————————————–
NAME TARGET STATE SERVER STATE_DETAILS
——————————————————————————–
Local Resources
——————————————————————————–
ora.DATA.dg
ONLINE ONLINE luda2
ora.LISTENER.lsnr
ONLINE ONLINE luda2
ora.asm
ONLINE ONLINE luda2 Started
ora.gsd
OFFLINE OFFLINE luda2
ora.net1.network
ONLINE ONLINE luda2
ora.ons
ONLINE ONLINE luda2
——————————————————————————–
Cluster Resources
——————————————————————————–
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE luda2
ora.luda2.vip
1 ONLINE ONLINE luda2
ora.ludarac.db
1 ONLINE OFFLINE
2 ONLINE ONLINE luda2 Open
ora.cvu
1 ONLINE ONLINE luda2
ora.oc4j
1 ONLINE ONLINE luda2
ora.scan1.vip
1 ONLINE ONLINE luda2
[root@luda2 ~]# /u01/11.2.0/grid/crs/install/rootcrs.pl -deconfig -force -verbose -keepdg -lastnode
Using configuration parameter file: /u01/11.2.0/grid/crs/install/crsconfig_params
CRS resources for listeners are still configured
Network exists: 1/192.168.57.0/255.255.255.0/eth0, type static
VIP exists: /luda2-vip/192.168.57.218/192.168.57.0/255.255.255.0/eth0, hosting node luda2
GSD exists
ONS exists: Local port 6100, remote port 6200, EM port 2016
CRS-2613: Could not find resource ‘ora.registry.acfs’.
CRS-4000: Command Stop failed, or completed with errors.
CRS-2613: Could not find resource ‘ora.registry.acfs’.
CRS-4000: Command Delete failed, or completed with errors.
CRS-2673: Attempting to stop ‘ora.crsd’ on ‘luda2’
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on ‘luda2’
CRS-2673: Attempting to stop ‘ora.ludarac.db’ on ‘luda2’
CRS-2673: Attempting to stop ‘ora.oc4j’ on ‘luda2’
CRS-2677: Stop of ‘ora.ludarac.db’ on ‘luda2’ succeeded
CRS-2673: Attempting to stop ‘ora.DATA.dg’ on ‘luda2’
CRS-2677: Stop of ‘ora.oc4j’ on ‘luda2’ succeeded
CRS-2677: Stop of ‘ora.DATA.dg’ on ‘luda2’ succeeded
CRS-2673: Attempting to stop ‘ora.asm’ on ‘luda2’
CRS-2677: Stop of ‘ora.asm’ on ‘luda2’ succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on ‘luda2’ has completed
CRS-2677: Stop of ‘ora.crsd’ on ‘luda2’ succeeded
CRS-2673: Attempting to stop ‘ora.ctssd’ on ‘luda2’
CRS-2673: Attempting to stop ‘ora.evmd’ on ‘luda2’
CRS-2673: Attempting to stop ‘ora.asm’ on ‘luda2’
CRS-2677: Stop of ‘ora.ctssd’ on ‘luda2’ succeeded
CRS-2677: Stop of ‘ora.evmd’ on ‘luda2’ succeeded
CRS-2677: Stop of ‘ora.asm’ on ‘luda2’ succeeded
CRS-2673: Attempting to stop ‘ora.cluster_interconnect.haip’ on ‘luda2’
CRS-2677: Stop of ‘ora.cluster_interconnect.haip’ on ‘luda2’ succeeded
CRS-2673: Attempting to stop ‘ora.cssd’ on ‘luda2’
CRS-2677: Stop of ‘ora.cssd’ on ‘luda2’ succeeded
CRS-2613: Could not find resource ‘ora.drivers.acfs’.
CRS-4000: Command Modify failed, or completed with errors.
CRS-2672: Attempting to start ‘ora.cssdmonitor’ on ‘luda2’
CRS-2676: Start of ‘ora.cssdmonitor’ on ‘luda2’ succeeded
CRS-2672: Attempting to start ‘ora.cssd’ on ‘luda2’
CRS-2672: Attempting to start ‘ora.diskmon’ on ‘luda2’
CRS-2676: Start of ‘ora.diskmon’ on ‘luda2’ succeeded
CRS-2676: Start of ‘ora.cssd’ on ‘luda2’ succeeded
CRS-4611: Successful deletion of voting disk +DATA.
ASM de-configuration trace file location: /tmp/asmcadc_clean2017-03-18_02-47-04-PM.log
ASM Clean Configuration START
ASM Clean Configuration END

ASM with SID +ASM1 deleted successfully. Check /tmp/asmcadc_clean2017-03-18_02-47-04-PM.log for details.

CRS-2613: Could not find resource ‘ora.drivers.acfs’.
CRS-4000: Command Delete failed, or completed with errors.
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on ‘luda2’
CRS-2673: Attempting to stop ‘ora.ctssd’ on ‘luda2’
CRS-2673: Attempting to stop ‘ora.asm’ on ‘luda2’
CRS-2673: Attempting to stop ‘ora.mdnsd’ on ‘luda2’
CRS-2677: Stop of ‘ora.ctssd’ on ‘luda2’ succeeded
CRS-2677: Stop of ‘ora.mdnsd’ on ‘luda2’ succeeded
CRS-2677: Stop of ‘ora.asm’ on ‘luda2’ succeeded
CRS-2673: Attempting to stop ‘ora.cluster_interconnect.haip’ on ‘luda2’
CRS-2677: Stop of ‘ora.cluster_interconnect.haip’ on ‘luda2’ succeeded
CRS-2673: Attempting to stop ‘ora.cssd’ on ‘luda2’
CRS-2677: Stop of ‘ora.cssd’ on ‘luda2’ succeeded
CRS-2673: Attempting to stop ‘ora.crf’ on ‘luda2’
CRS-2677: Stop of ‘ora.crf’ on ‘luda2’ succeeded
CRS-2673: Attempting to stop ‘ora.gipcd’ on ‘luda2’
CRS-2677: Stop of ‘ora.gipcd’ on ‘luda2’ succeeded
CRS-2673: Attempting to stop ‘ora.gpnpd’ on ‘luda2’
CRS-2677: Stop of ‘ora.gpnpd’ on ‘luda2’ succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on ‘luda2’ has completed
CRS-4133: Oracle High Availability Services has been stopped.
Removing Trace File Analyzer
Successfully deconfigured Oracle clusterware stack on this node

至此解除集群配置完成。

3.在节点1上运行重新配置脚本

grid用户:节点1图形界面运行 $GRID_HOME/crs/config/config.sh

分别在两个节点运行root.sh脚本:
[root@luda1 ~]# sh /u01/11.2.0/grid/root.sh
Performing root user operation for Oracle 11g

The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /u01/11.2.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of “dbhome” have not changed. No need to overwrite.
The contents of “oraenv” have not changed. No need to overwrite.
The contents of “coraenv” have not changed. No need to overwrite.

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Relinking oracle with rac_on option
Using configuration parameter file: /u01/11.2.0/grid/crs/install/crsconfig_params
User ignored Prerequisites during installation
Installing Trace File Analyzer
OLR initialization – successful
root wallet
root wallet cert
root cert export
peer wallet
profile reader wallet
pa wallet
peer wallet keys
pa wallet keys
peer cert request
pa cert request
peer cert
pa cert
peer root cert TP
profile reader root cert TP
pa root cert TP
peer pa cert TP
pa peer cert TP
profile reader pa cert TP
profile reader peer cert TP
peer user cert
pa user cert
Adding Clusterware entries to oracle-ohasd.conf
CRS-2672: Attempting to start ‘ora.mdnsd’ on ‘luda1’
CRS-2676: Start of ‘ora.mdnsd’ on ‘luda1’ succeeded
CRS-2672: Attempting to start ‘ora.gpnpd’ on ‘luda1’
CRS-2676: Start of ‘ora.gpnpd’ on ‘luda1’ succeeded
CRS-2672: Attempting to start ‘ora.cssdmonitor’ on ‘luda1’
CRS-2672: Attempting to start ‘ora.gipcd’ on ‘luda1’
CRS-2676: Start of ‘ora.cssdmonitor’ on ‘luda1’ succeeded
CRS-2676: Start of ‘ora.gipcd’ on ‘luda1’ succeeded
CRS-2672: Attempting to start ‘ora.cssd’ on ‘luda1’
CRS-2672: Attempting to start ‘ora.diskmon’ on ‘luda1’
CRS-2676: Start of ‘ora.diskmon’ on ‘luda1’ succeeded
CRS-2676: Start of ‘ora.cssd’ on ‘luda1’ succeeded

Disk Group DATA mounted successfully.

clscfg: -install mode specified
Successfully accumulated necessary OCR keys.
Creating OCR keys for user ‘root’, privgrp ‘root’..
Operation successful.
CRS-4256: Updating the profile
Successful addition of voting disk 47b91b4201274f50bfd80f57ed0b29d7.
Successfully replaced voting disk group with +DATA.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
## STATE File Universal Id File Name Disk group
— —– —————– ——— ———
1. ONLINE 47b91b4201274f50bfd80f57ed0b29d7 (/dev/asm-diskb) [DATA]
Located 1 voting disk(s).
CRS-2672: Attempting to start ‘ora.asm’ on ‘luda1’
CRS-2676: Start of ‘ora.asm’ on ‘luda1’ succeeded
CRS-2672: Attempting to start ‘ora.DATA.dg’ on ‘luda1’
CRS-2676: Start of ‘ora.DATA.dg’ on ‘luda1’ succeeded
Preparing packages for installation…
cvuqdisk-1.0.9-1
Configure Oracle Grid Infrastructure for a Cluster … succeeded

[root@luda2 ~]# cd /u01/11.2.0/grid/
[root@luda2 grid]# sh root.sh
Performing root user operation for Oracle 11g

The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /u01/11.2.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of “dbhome” have not changed. No need to overwrite.
The contents of “oraenv” have not changed. No need to overwrite.
The contents of “coraenv” have not changed. No need to overwrite.

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Relinking oracle with rac_on option
Using configuration parameter file: /u01/11.2.0/grid/crs/install/crsconfig_params
User ignored Prerequisites during installation
Installing Trace File Analyzer
OLR initialization – successful
Adding Clusterware entries to oracle-ohasd.conf
CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node luda1, number 1, and is terminating
An active cluster was found during exclusive startup, restarting to join the cluster
Preparing packages for installation…
cvuqdisk-1.0.9-1
Configure Oracle Grid Infrastructure for a Cluster … succeeded
[root@luda2 grid]# crsctl stat res -t
——————————————————————————–
NAME TARGET STATE SERVER STATE_DETAILS
——————————————————————————–
Local Resources
——————————————————————————–
ora.DATA.dg
ONLINE ONLINE luda1
ONLINE ONLINE luda2
ora.asm
ONLINE ONLINE luda1 Started
ONLINE ONLINE luda2 Started
ora.gsd
OFFLINE OFFLINE luda1
OFFLINE OFFLINE luda2
ora.net1.network
ONLINE ONLINE luda1
ONLINE ONLINE luda2
ora.ons
ONLINE ONLINE luda1
ONLINE ONLINE luda2
ora.registry.acfs
ONLINE ONLINE luda1
ONLINE ONLINE luda2
——————————————————————————–
Cluster Resources
——————————————————————————–
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE luda1
ora.luda1.vip
1 ONLINE ONLINE luda1
ora.luda2.vip
1 ONLINE ONLINE luda2
ora.cvu
1 ONLINE ONLINE luda1
ora.oc4j
1 ONLINE ONLINE luda1
ora.scan1.vip
1 ONLINE ONLINE luda1

4.添加数据库、监听等资源
添加监听
[grid@luda1 ~]$ srvctl start listener -l listener -n luda1
[grid@luda1 ~]$ srvctl start listener -l listener -n luda2
添加数据库
[oracle@luda1 ~]$ srvctl add database -d ludarac -o /u01/app/oracle/product/11.2.0/dbhome_1 -p +DATA/ludarac/spfileludarac.ora
[oracle@luda1 ~]$ srvctl add instance -d ludarac -i ludarac1 -n luda1
[oracle@luda1 ~]$ srvctl add instance -d ludarac -i ludarac2 -n luda2
[oracle@luda1 ~]$ srvctl config database -d ludarac
Database unique name: ludarac
Database name:
Oracle home: /u01/app/oracle/product/11.2.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/ludarac/spfileludarac.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: ludarac
Database instances: ludarac1,ludarac2
Disk Groups:
Mount point paths:
Services:
Type: RAC
Database is administrator managed
[oracle@luda1 ~]$ srvctl start database -d ludarac
———————————
添加DB时的小问题:
[oracle@luda1 ~]$ srvctl add database -d ludarac -o /u01/app/oracle/product/11.2.0/dbhome_1 -p +DATA/ludarac/spfileludarac.ora
PRCS-1007 : Server pool ludarac already exists
PRCR-1086 : server pool ora.ludarac is already registered
解决:
[grid@luda1 ~]$ crsctl delete serverpool ora.ludarac
————————

检查资源状态:
[root@luda2 grid]# crsctl stat res -t
——————————————————————————–
NAME TARGET STATE SERVER STATE_DETAILS
——————————————————————————–
Local Resources
——————————————————————————–
ora.DATA.dg
ONLINE ONLINE luda1
ONLINE ONLINE luda2
ora.LISTENER.lsnr
ONLINE ONLINE luda1
ONLINE ONLINE luda2
ora.asm
ONLINE ONLINE luda1 Started
ONLINE ONLINE luda2 Started
ora.gsd
OFFLINE OFFLINE luda1
OFFLINE OFFLINE luda2
ora.net1.network
ONLINE ONLINE luda1
ONLINE ONLINE luda2
ora.ons
ONLINE ONLINE luda1
ONLINE ONLINE luda2
ora.registry.acfs
ONLINE ONLINE luda1
ONLINE ONLINE luda2
——————————————————————————–
Cluster Resources
——————————————————————————–
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE luda1
ora.luda1.vip
1 ONLINE ONLINE luda1
ora.luda2.vip
1 ONLINE ONLINE luda2
ora.ludarac.db
1 ONLINE ONLINE luda1 Open
2 ONLINE ONLINE luda2 Open
ora.cvu
1 ONLINE ONLINE luda2
ora.oc4j
1 ONLINE ONLINE luda2
ora.scan1.vip
1 ONLINE ONLINE luda1

此时检查集群、数据库版本,均无异常,均为解除配置前的,包括打的PSU均正常。
[grid@luda1 ~]$ opatch lspatches
22502505;ACFS Patch Set Update : 11.2.0.4.160419 (22502505)
23054319;OCW Patch Set Update : 11.2.0.4.160719 (23054319)
23054359;Database Patch Set Update : 11.2.0.4.160719 (23054359)
[oracle@luda1 ~]$ opatch lspatches
23054319;OCW Patch Set Update : 11.2.0.4.160719 (23054319)
23054359;Database Patch Set Update : 11.2.0.4.160719 (23054359)
[grid@luda1 ~]$ crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [11.2.0.4.0]

SQL> select action_time,action,id,version,comments from dba_registry_history;

ACTION_TIME ACTION ID VERSION COMMENTS
—————————— ————— ———- ————— ——————————
24-AUG-13 12.03.45.119862 PM APPLY 0 11.2.0.4 Patchset 11.2.0.2.0
10-NOV-16 10.27.27.622013 AM APPLY 0 11.2.0.4 Patchset 11.2.0.2.0
10-NOV-16 01.20.24.929806 PM APPLY 160719 11.2.0.4 PSU 11.2.0.4.160719

Oracle RAC环境集群配置重建的过程测试

一、 问题分析

 

在hp-ux上11.2.0.4 RAC,两个节点的节点2上进行恢复数据库操作,数据量大约11T;所需应用的归档日志量大约1.3T,每个归档的大小接近2G,共655个归档日志文件;

客户在8号下午开始进行recover:Recover database until time “to_date(‘2015-12-19 15:40:00′,’yyyy-mm-dd hh24:mi:ss’)”;在9号上班时发现一夜过去,仅应用了13个归档日志文件。

在现场针对该问题进行解决并查找产生原因进行分析。.

如下为本次问题的分析及相关的模拟验证。

 

1.1 查看备份恢复脚本

首先查看了前面备份、恢复的脚本。备份文件存放在HP DP备份软件带库中,备份恢复脚本与正常恢复没有差异。如下recover脚本内容:

Recover database until time “to_date(‘2015-12-19 15:40:00′,’yyyy-mm-dd hh24:mi:ss’)”;

 

1.2 查看当前系统的资源使用情况

 

部分信息如下,系统资源使用情况较为正常。

$>/usr/sbin/kctune|grep filecache

filecache_max                       6527386828  5%            Imm (auto disabled)

filecache_min                       6527386828  5%            Imm (auto disabled)

$>sar -u 2 5

 

HP-UX P2AAAAA2 B.11.31 U ia64    12/29/15

 

16:36:24    %usr    %sys    %wio   %idle

16:36:26      10       0       0      90

16:36:28      10       0       0      90

16:36:30      10       0       0      90

16:36:32      10       0       0      90

16:36:34      10       0       0      89

 

Average       10       0       0      90

 

1.3 查看会话相关等待事件

通过对v$session视图的信息进行查询,当前系统中存在大量并行恢复的进程。当前event大多为parallel recovery slave next change。

 

col EVENT for a45

col USERNAME for a10

set linesize 180

col PROGRAM for a30

set pagesize 100

select sid,USERNAME,PROGRAM,event,SECONDS_IN_WAIT,WAIT_TIME  from v$session;

SID USERNAME                       PROGRAM                        EVENT

———- —————————— —————————— ————————————————–

1 SYS                            sqlplus@P2AAAAA2 (TNS V1-V3)   class slave wait

3 SYS                            oracle@P2AAAAA2 (PR0S)         parallel recovery slave next change

10 SYS                            oracle@P2AAAAA2 (PR0T)         parallel recovery slave next change

17                                oracle@P2AAAAA2 (PMON)         pmon timer

18 SYS                            oracle@P2AAAAA2 (PR00)         parallel recovery read buffer free

20 SYS                            oracle@P2AAAAA2 (PR0U)         parallel recovery slave next change

25                                oracle@P2AAAAA2 (PSP0)         rdbms ipc message

27 SYS                            oracle@P2AAAAA2 (PR0V)         parallel recovery slave next change

33                                oracle@P2AAAAA2 (VKTM)         VKTM Logical Idle Wait

34 SYS                            sqlplus@P2AAAAA2 (TNS V1-V3)   SQL*Net message from client

36 SYS                            oracle@P2AAAAA2 (PR0W)         parallel recovery slave next change

41                                oracle@P2AAAAA2 (GEN0)         rdbms ipc message

42 SYS                            oracle@P2AAAAA2 (PR01)         parallel recovery slave next change

49                                oracle@P2AAAAA2 (DIAG)         DIAG idle wait

50 SYS                            oracle@P2AAAAA2 (PR02)         parallel recovery slave next change

57                                oracle@P2AAAAA2 (DBRM)         rdbms ipc message

58 SYS                            oracle@P2AAAAA2 (PR03)         parallel recovery slave next change

65                                oracle@P2AAAAA2 (PING)         PING

66 SYS                            oracle@P2AAAAA2 (PR04)         parallel recovery slave next change

73                                oracle@P2AAAAA2 (ACMS)         rdbms ipc message

74 SYS                            oracle@P2AAAAA2 (PR05)         parallel recovery slave next change

81                                oracle@P2AAAAA2 (DIA0)         DIAG idle wait

82 SYS                            oracle@P2AAAAA2 (PR06)         parallel recovery slave next change

89                                oracle@P2AAAAA2 (LMON)         rdbms ipc message

90 SYS                            oracle@P2AAAAA2 (PR07)         parallel recovery slave next change

97                                oracle@P2AAAAA2 (LMD0)         ges remote message

98 SYS                            oracle@P2AAAAA2 (PR08)         parallel recovery slave next change

105                                oracle@P2AAAAA2 (RMS0)         rdbms ipc message

106 SYS                            oracle@P2AAAAA2 (PR09)         parallel recovery slave next change

113                                oracle@P2AAAAA2 (LMHB)         GCR sleep

114 SYS                            oracle@P2AAAAA2 (PR0A)         parallel recovery slave next change

121                                oracle@P2AAAAA2 (MMAN)         rdbms ipc message

122 SYS                            oracle@P2AAAAA2 (PR0B)         parallel recovery slave next change

129                                oracle@P2AAAAA2 (DBW0)         rdbms ipc message

130 SYS                            oracle@P2AAAAA2 (PR0C)         parallel recovery slave next change

137                                oracle@P2AAAAA2 (DBW1)         rdbms ipc message

138 SYS                            oracle@P2AAAAA2 (PR0D)         parallel recovery slave next change

145                                oracle@P2AAAAA2 (DBW2)         rdbms ipc message

146 SYS                            oracle@P2AAAAA2 (PR0E)         parallel recovery slave next change

153                                oracle@P2AAAAA2 (DBW3)         rdbms ipc message

154 SYS                            oracle@P2AAAAA2 (PR0F)         parallel recovery slave next change

161                                oracle@P2AAAAA2 (LGWR)         rdbms ipc message

162 SYS                            oracle@P2AAAAA2 (PR0G)         parallel recovery slave next change

169 SYS                            oracle@P2AAAAA2 (PR0H)         parallel recovery slave next change

170                                oracle@P2AAAAA2 (CKPT)         rdbms ipc message

177                                oracle@P2AAAAA2 (SMON)         smon timer

178 SYS                            oracle@P2AAAAA2 (PR0I)         parallel recovery slave next change

185                                oracle@P2AAAAA2 (RECO)         rdbms ipc message

186 SYS                            oracle@P2AAAAA2 (PR0J)         free buffer waits

193                                oracle@P2AAAAA2 (RBAL)         rdbms ipc message

194 SYS                            oracle@P2AAAAA2 (PR0K)         parallel recovery slave next change

201                                oracle@P2AAAAA2 (ASMB)         ASM background timer

202 SYS                            oracle@P2AAAAA2 (PR0L)         parallel recovery slave next change

209                                oracle@P2AAAAA2 (MMON)         rdbms ipc message

211 SYS                            oracle@P2AAAAA2 (PR0M)         parallel recovery slave next change

217                                oracle@P2AAAAA2 (MMNL)         rdbms ipc message

218 SYS                            oracle@P2AAAAA2 (PR0N)         parallel recovery slave next change

225 SYS                            oracle@P2AAAAA2 (PR0O)         parallel recovery slave next change

233                                oracle@P2AAAAA2 (MARK)         wait for unread message on broadcast channel

235 SYS                            oracle@P2AAAAA2 (PR0P)         parallel recovery slave next change

241 SYS                            oracle@P2AAAAA2 (PR0Q)         parallel recovery slave next change

249 SYS                            sqlplus@P2AAAAA2 (TNS V1-V3)   SQL*Net message to client

250 SYS                            oracle@P2AAAAA2 (PR0R)         parallel recovery slave next change

 

63 rows selected.

SQL> select sid,USERNAME,PROGRAM,event  from v$session where PROGRAM like ‘%PR%’;

 

SID USERNAME                       PROGRAM                        EVENT

———- —————————— —————————— ————————————————–

3 SYS                            oracle@P2AAAAA2 (PR0T)         parallel recovery slave next change

10 SYS                            oracle@P2AAAAA2 (PR0U)         parallel recovery slave next change

20 SYS                            oracle@P2AAAAA2 (PR0V)         parallel recovery slave next change

27 SYS                            oracle@P2AAAAA2 (PR0W)         parallel recovery slave next change

36 SYS                            oracle@P2AAAAA2 (PR01)         parallel recovery slave next change

42 SYS                            oracle@P2AAAAA2 (PR02)         parallel recovery slave next change

50 SYS                            oracle@P2AAAAA2 (PR03)         parallel recovery slave next change

58 SYS                            oracle@P2AAAAA2 (PR04)         parallel recovery slave next change

66 SYS                            oracle@P2AAAAA2 (PR05)         parallel recovery slave next change

74 SYS                            oracle@P2AAAAA2 (PR06)         parallel recovery slave next change

82 SYS                            oracle@P2AAAAA2 (PR07)         parallel recovery slave next change

90 SYS                            oracle@P2AAAAA2 (PR08)         parallel recovery slave next change

98 SYS                            oracle@P2AAAAA2 (PR09)         parallel recovery slave next change

106 SYS                            oracle@P2AAAAA2 (PR0A)         parallel recovery slave next change

114 SYS                            oracle@P2AAAAA2 (PR0B)         parallel recovery slave next change

122 SYS                            oracle@P2AAAAA2 (PR0C)         parallel recovery slave next change

130 SYS                            oracle@P2AAAAA2 (PR0D)         parallel recovery slave next change

138 SYS                            oracle@P2AAAAA2 (PR0E)         parallel recovery slave next change

146 SYS                            oracle@P2AAAAA2 (PR0F)         parallel recovery slave next change

154 SYS                            oracle@P2AAAAA2 (PR0G)         parallel recovery slave next change

162 SYS                            oracle@P2AAAAA2 (PR0H)         parallel recovery slave next change

169 SYS                            oracle@P2AAAAA2 (PR0I)         parallel recovery slave next change

178 SYS                            oracle@P2AAAAA2 (PR0J)         parallel recovery slave next change

186 SYS                            oracle@P2AAAAA2 (PR0K)         parallel recovery slave next change

194 SYS                            oracle@P2AAAAA2 (PR0L)         parallel recovery slave next change

202 SYS                            oracle@P2AAAAA2 (PR0M)         parallel recovery slave next change

211 SYS                            oracle@P2AAAAA2 (PR0N)         parallel recovery slave next change

218 SYS                            oracle@P2AAAAA2 (PR0O)         parallel recovery slave next change

225 SYS                            oracle@P2AAAAA2 (PR0P)         parallel recovery slave next change

235 SYS                            oracle@P2AAAAA2 (PR0Q)         parallel recovery slave next change

241 SYS                            oracle@P2AAAAA2 (PR0R)         parallel recovery slave next change

249 SYS                            oracle@P2AAAAA2 (PR0S)         parallel recovery slave next change

250 SYS                            oracle@P2AAAAA2 (PR00)         parallel recovery control message reply

 

33 rows selected.

$>ps -ef|grep ora_pro*

oracle 25652     1  3 16:18:12 ?         1:05 ora_pr0k_p1aaaaa2

oracle 25674     1 40 16:18:12 ?         0:57 ora_pr0u_p1aaaaa2

oracle 25623     1  9 16:18:11 ?         1:13 ora_pr06_p1aaaaa2

oracle 29093 27745  0 16:34:45 pts/5     0:00 grep ora_pro*

oracle 25658     1 28 16:18:12 ?         0:54 ora_pr0m_p1aaaaa2

oracle 25617     1 21 16:18:11 ?         1:17 ora_pr03_p1aaaaa2

oracle 25672     1 16 16:18:12 ?         1:21 ora_pr0t_p1aaaaa2

oracle 25662     1 33 16:18:12 ?         1:19 ora_pr0o_p1aaaaa2

oracle 25629     1 16 16:18:12 ?         1:17 ora_pr09_p1aaaaa2

oracle 25666     1 43 16:18:12 ?         1:03 ora_pr0q_p1aaaaa2

oracle 25645     1 31 16:18:12 ?         1:24 ora_pr0h_p1aaaaa2

oracle 25649     1 42 16:18:12 ?         0:52 ora_pr0j_p1aaaaa2

oracle 25678     1 22 16:18:12 ?         1:19 ora_pr0w_p1aaaaa2

oracle 25647     1 33 16:18:12 ?         1:21 ora_pr0i_p1aaaaa2

oracle 25670     1 21 16:18:12 ?         0:55 ora_pr0s_p1aaaaa2

oracle 25676     1 12 16:18:12 ?         1:13 ora_pr0v_p1aaaaa2

oracle 25627     1 16 16:18:11 ?         1:10 ora_pr08_p1aaaaa2

oracle 25668     1  4 16:18:12 ?         0:53 ora_pr0r_p1aaaaa2

oracle 25643     1 32 16:18:12 ?         1:06 ora_pr0g_p1aaaaa2

oracle 25613     1 16 16:18:11 ?         1:10 ora_pr01_p1aaaaa2

oracle 25641     1 19 16:18:12 ?         0:59 ora_pr0f_p1aaaaa2

oracle 25654     1  7 16:18:12 ?         0:57 ora_pr0l_p1aaaaa2

oracle 25639     1  0 16:18:12 ?         1:15 ora_pr0e_p1aaaaa2

oracle 25664     1 46 16:18:12 ?         1:14 ora_pr0p_p1aaaaa2

oracle 25609     1 254 16:18:10 ?         6:21 ora_pr00_p1aaaaa2

oracle 25625     1 22 16:18:11 ?         0:50 ora_pr07_p1aaaaa2

oracle 25621     1 61 16:18:11 ?         0:54 ora_pr05_p1aaaaa2

oracle 25619     1 14 16:18:11 ?         1:07 ora_pr04_p1aaaaa2

oracle 25637     1 17 16:18:12 ?         2:16 ora_pr0d_p1aaaaa2

oracle 25635     1 55 16:18:12 ?         0:50 ora_pr0c_p1aaaaa2

oracle 25660     1 33 16:18:12 ?         1:15 ora_pr0n_p1aaaaa2

oracle 25631     1 22 16:18:12 ?         1:02 ora_pr0a_p1aaaaa2

oracle 25633     1 13 16:18:12 ?         1:03 ora_pr0b_p1aaaaa2

oracle 25615     1 27 16:18:11 ?         1:05 ora_pr02_p1aaaaa2

 

 

1.4 对数据库内存及并行相关参数进行查验

通过对内存相关参数进行查验,当前使用的是AMM自动内存管理,共分配了1G内存。

当前主机是128G内存的,这个值明显偏小。

对于并行回滚、并行服务等相关参数进行查验,均为系统默认值。

SQL> select status,instance_name from gv$instance;

 

STATUS                   INSTANCE_NAME

———————— ——————————–

MOUNTED                  p1aaaaa2

 

SQL> show parameter memo

NAME                                 TYPE                   VALUE

———————————— ———————- ——————————

hi_shared_memory_address             integer                0

memory_max_target                    big integer            1G

memory_target                        big integer            1G

shared_memory_address                integer                0

 

SQL> show parameter sga

NAME                                 TYPE                   VALUE

———————————— ———————- ——————————

lock_sga                             boolean                FALSE

pre_page_sga                         boolean                FALSE

sga_max_size                         big integer            1G

sga_target                           big integer            0

SQL> show parameter pga

NAME                                 TYPE                   VALUE

———————————— ———————- ——————————

pga_aggregate_target                 big integer            0

SQL> col name for a40

SQL> select * from v$sgainfo;

NAME                                          BYTES RESIZE

—————————————- ———- ——

Fixed SGA Size                              2212392 No

Redo Buffers                                9756672 No

Buffer Cache Size                         159383552 Yes

Shared Pool Size                          381681664 Yes

Large Pool Size                            79691776 Yes

Java Pool Size                              4194304 Yes

Streams Pool Size                                 0 Yes

Shared IO Pool Size                               0 Yes

Granule Size                                4194304 No

Maximum SGA Size                         1068937216 No

Startup overhead in Shared Pool           228519832 No

Free SGA Memory Available                 432013312

12 rows selected.

———————————————

SQL> show parameter PARALLEL_MAX_SERVERS

NAME                                 TYPE                   VALUE

———————————— ———————- ——————————

parallel_max_servers                 integer                120

SQL> show parameter fast_start_parallel

NAME                                 TYPE                   VALUE

———————————— ———————- ——————————

fast_start_parallel_rollback         string                 LOW

SQL> show parameter cpu

NAME                                 TYPE                   VALUE

———————————— ———————- ——————————

cpu_count                            integer                32

parallel_threads_per_cpu             integer                2

resource_manager_cpu_allocation      integer                32

SQL>  show parameter RECOVERY_PARALLELISM

NAME                                 TYPE                   VALUE

———————————— ———————- ——————————

recovery_parallelism                 integer                0

 

问题查到这里,已经有些眉目;较大可能是因为并行恢复引起的争用;同时数据库内存资源分配较少,也会对并行恢复造成影响。

因此环境为迁移后的生产环境,目前进行的是数据恢复测试;因此,为了确认是否并行引起的问题,对恢复进程进行了10046跟踪。

 

 

 

 

1.5 使用trace命令对recover的过程进行跟踪

 

SQL> alter session set tracefile_identifier=’rman7_10046′;

 

Session altered.

 

SQL> alter session set events ‘10046 trace name context forever,level 12′;

 

Session altered.

 

SQL> recover database using backup controlfile until cancel;

ORA-00279: change 10286665324215 generated at 12/19/2015 04:02:42 needed for

thread 2

ORA-00289: suggestion : +DATA/p2aaaaa/arch/2_67571_790336456.dbf

ORA-00280: change 10286665324215 for thread 2 is in sequence #67571

 

 

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

auto

 

trace文件分析:

*** 2015-12-29 11:31:01.992

WAIT #11529215044981989888: nam=’class slave wait’ ela= 1009897 slave id=0 p2=0 p3=0 obj#=-1 tim=341067374554

WAIT #11529215044981989888: nam=’parallel recovery control message reply’ ela= 108015 p1=0 p2=0 p3=0 obj#=-1 tim=341067482664

 

*** 2015-12-29 11:31:03.110

WAIT #11529215044981989888: nam=’class slave wait’ ela= 1009993 slave id=0 p2=0 p3=0 obj#=-1 tim=341068492679

WAIT #11529215044981989888: nam=’parallel recovery control message reply’ ela= 109933 p1=0 p2=0 p3=0 obj#=-1 tim=341068602680

—这里的ela= 109933是微秒,约为1秒

*** 2015-12-29 11:31:04.230

WAIT #11529215044981989888: nam=’class slave wait’ ela= 1009912 slave id=0 p2=0 p3=0 obj#=-1 tim=341069612682

WAIT #11529215044981989888: nam=’parallel recovery control message reply’ ela= 109877 p1=0 p2=0 p3=0 obj#=-1 tim=341069722665

 

*** 2015-12-29 11:31:05.350

WAIT #11529215044981989888: nam=’class slave wait’ ela= 1009978 slave id=0 p2=0 p3=0 obj#=-1 tim=341070732669

WAIT #11529215044981989888: nam=’parallel recovery control message reply’ ela= 109908 p1=0 p2=0 p3=0 obj#=-1 tim=341070842664

 

*** 2015-12-29 11:31:06.470

WAIT #11529215044981989888: nam=’class slave wait’ ela= 1009980 slave id=0 p2=0 p3=0 obj#=-1 tim=341071852670

WAIT #11529215044981989888: nam=’parallel recovery control message reply’ ela= 109948 p1=0 p2=0 p3=0 obj#=-1 tim=341071962664

 

*** 2015-12-29 11:31:07.590

WAIT #11529215044981989888: nam=’class slave wait’ ela= 1009983 slave id=0 p2=0 p3=0 obj#=-1 tim=341072972669

WAIT #11529215044981989888: nam=’parallel recovery control message reply’ ela= 109950 p1=0 p2=0 p3=0 obj#=-1 tim=341073082665

 

———-tkprof格式化后的输出:

从如下输出可以看到在并行恢复上确实存在大量等待。

Elapsed times include waiting on following events:

Event waited on                             Times   Max. Wait  Total Waited

—————————————-   Waited  ———-  ————

KSV master wait                                 8        0.00          0.00

parallel recovery control message reply       568        0.11         60.67

class slave wait                              573        1.01        554.60

SQL*Net break/reset to client                   8        0.00          0.00

SQL*Net message to client                       6        0.00          0.00

SQL*Net message from client                     6        7.20          7.20

latch free                                      2        0.00          0.00

master exit                                    65        3.01         10.12

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

 

通过以上分析,可以发现时间主要花费在class slave wait/parallel recovery control message reply等待事件上。

 

1.6 问题初步小结

通过以上分析,可以发现应用归档日志时大量时间花费在class slave wait/parallel recovery control message reply等待事件上。

通过对数据库相关参数的确认,当前数据库的内存设置偏小。

同时因为CPU数量多达32,对应的默认就会产生32个并行恢复进程。

通过在执行recover时对v$session视图进行查询,以及10046对recover恢复命令进行跟踪,可以确认是并行恢复时的争用引起的recover非常缓慢。

 

二、解决与验证

经过上一步的分析,基本确认是并行争用引起的问题,因此采取如下措施:

计划通过调大内存相关参数,然后再限制并行恢复进程的方式对此问题进行解决与验证。

 

2.1 调整内存相关参数

首先关闭AMM,设置SGA为50G,PGA为10G。

设置内存参数后,并未做其它设置。重新启动数据库,并进行归档日志的恢复应用;此时的恢复速度已经有了较大提高。

经测算,恢复速度大约在每分钟8G归档日志。

 

2.2 设置应用归档日志并发数量再次提高恢复速度

归档日志应用进程的数量,默认是取决于初始化参数CPU_COUNT中的CPU数量,默认启动的日志应用进程的数量与CPU数量相同。

因此,对于归档日志应用进程的数量,也就有两种方式来控制:

1.在恢复过程中人为临时修改cpu_count的值

2.在恢复命令中显式指定并行度

cpu_count默认是在启动时根据主机的CPU数量生成,因此本次不显式指定此参数。通过在命令中指定并行度的方式限制恢复的并行度。

分别通过指定并行度为16、8、4,对不同并行度时的恢复速度进行了对比;在并行为16与8时恢复速度基本一致,达到了每分钟恢复10G左右归档日志。

 

三、相关知识点与总结

3.1 问题总结

在大部分环境中,在创建数据库或者异机恢复时,一般都会对于数据库实例的内存根据经验值进行合理设置;因此很少出现RECOVER时非常慢之类的问题。

从而对于并行恢复是快或者慢的问题,也是很少被注意到。

在此次的故障解决中,通过v$session查看recover时的event,通过10046对恢复过程进行trace,通过这些分析步骤可以确定到问题的原因。通过分步修改内存及使用不同的recover并行度进行测试,可以找到合理的并行参数,来最终得到最优的恢复性能。

 

3.2 关于恢复的并行数量相关参数:

大事务或死事务的回滚进程数可以通过参数fast_start_parallel_rollback来设置是否启用并行恢复。

此参数有3个值:

FALSE  –>Parallel rollback is disabled 即FALSE时关闭并行回滚,使用SMON的串行恢复;

LOW   –>Limits the maximum degree of parallelism to 2 * CPU_COUNT   LOW是11GR2默认值,

HIGH  –>Limits the maximum degree of parallelism to 4 * CPU_COUNT

对应的回滚进程是:ora_p025_orcl  ora_p022_orcl 这种都是后台启动的并行回滚的进程。

 

并行回滚的并发度如果参数是high或low,4倍或2倍的cpu数,也会受到另外一些参数的影响,如PARALLEL_MAX_SERVERS(主要决定于CPU_COUNT, PARALLEL_THREADS_PER_CPU, PGA_AGGREGATE_TARGET),会对最大的并发度限制。

RECOVERY_PARALLELISM 此参数只对instanceor crash recovery有效; Media recovery 不受此参数影响。

而经过测试,recover恢复时的并行进程数量,与以上参数值关系不大。

参考官方文档,对于recover恢复时的并行进程数量,如果在recover命令中进行指定,则按照指定并行度进行;如果未指定,则默认按照cpu_count值,生成相应数量的并行恢复进程。

http://docs.oracle.com/cd/E11882_01/backup.112/e10643/rcmsynta2001.htm#RCMRF140

PARALLEL

Specifies parallel recovery (default).

By default, the database uses parallel media recovery to improve performance

of the roll forward phase of media recovery. To override the default behavior of

performing parallel recovery, use the RECOVER with the NOPARALLEL option,

or RECOVER PARALLEL 0.

In parallel media recovery, the database uses a “division of labor” approach to

allocate different processes to different data blocks while rolling forward,

thereby making the operation more efficient. The number of processes is

derived from the CPU_COUNT initialization parameter, which by default equals

the number of CPUs on the system. For example, if parallel recovery is

performed on a system where CPU_COUNT is 4, and only one datafile is

recovered, then four spawned processes read blocks from the datafile and apply

redo.

Typically, recovery is I/O-bound on reads from and writes to data blocks.

Parallelism at the block level may only help recovery performance if it increases

total I/Os, for example, by bypassing operating system restrictions on

asynchronous I/Os. Systems with efficient asynchronous I/O see little benefit

from parallel media recovery.

 

3.3 对RMAN中命令进行10046跟踪

在RMAN备份恢复中的“异常”问题,也可以通过在RMAN窗口中执行10046命令来进行跟踪:

RMAN> sql “alter session set tracefile_identifier=”rman_10046””;
RMAN> sql “alter session set events ”10046 trace name context forever,level 12””;

 

 

3.4 参考文档

RMAN Backup Performance (文档 ID 360443.1)

RMAN Restore Performance (文档 ID 740911.1)

Advise On How To Improve Rman Performance (文档 ID 579158.1)

如何收集用来诊断性能问题的10046 Trace(SQL_TRACE) (文档 ID 1523462.1)

Interpreting Raw SQL_TRACE output (文档 ID 39817.1)

TKProf Interpretation (9i and above) (文档 ID 760786.1)

Oracle RMAN工具recover应用归档日志速度慢的排查思路

使用IMPDP导入数据时,通常我们会设置并行,希望数据库在导入数据、创建索引等耗时间长的动作中能够使用并行技术来加快导入动作的执行速度;但是在12.2版本上,IMPDP已经设置了并行,但是在trace中发现索引创建始终使用串行,而不是并行。

SQL> conn test/test@PDB1
SQL> create table a(m number,n number) parallel 4;
SQL> create index a_ind on a(m) parallel 3;
SQL> !expdp test/test@PDB1 dumpfile=b.dmp directory=my_dir
SQL> !impdp test/test@PDB1 directory=my_dir dumpfile=b.dmp parallel=2 TRACE=480301

DW trace显示index创建使用的是parallel=1,而不是parallel=2!。

CDB2_dw00_6658.trc
=====================
PARSING IN CURSOR #140037561274968 len=170 dep=2 uid=79 oct=1 lid=79
tim=841576694 hv=1135291776 ad=’61d1c0b0′ sqlid=’apjngud1uqbc0′
CREATE TABLE “TEST”.”A” (“M” NUMBER, “N” NUMBER) SEGMENT CREATION DEFERRED
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING TABLESPACE “USERS” PARALLEL 4
END OF STMT

=====================
PARSING IN CURSOR #140037558550112 len=114 dep=2 uid=79 oct=9 lid=79
tim=842113538 hv=68235534 ad=’6374e7a8′ sqlid=’0u96wjh212c8f’
CREATE INDEX “TEST”.”A_IND” ON “TEST”.”A” (“M”) PCTFREE 10 INITRANS 2
MAXTRANS 255 TABLESPACE “USERS” PARALLEL 1 <=======PARALLEL 1, even if parallel=3 was set during index creation phase
END OF STMT

但是在12.1.0.2却没有这个问题,该并行并行:

R1201_dw00_29326.trc :
=====================
PARSING IN CURSOR #140427279060200 len=115 dep=2 uid=111 oct=9 lid=111
tim=8385394705 hv=1693801083 ad=’77900cf8′ sqlid=’3t4ktqdkgaqmv’
CREATE INDEX “TEST”.”A_IND” ON “TEST”.”A” (“M”) PCTFREE 10 INITRANS 2
MAXTRANS 255 TABLESPACE “SYSTEM” PARALLEL 2 <========PARALLEL 2
END OF STMT

这是ORACLE bug,ORACLE开发的解释是,这是期待的行为,因为,“我们发现这样更快”!

BUG 26091146 – IMPDP CREATE INDEX WITH PARALLEL 1 IGNORING COMMAND LINE PARALLEL=2, Development explained that this is an expected behavior supplying the following explanation:

“General support for parallel import of most object type, including indexes, is a 12.2 feature, which led to study of parallel creation of individual indexes. What was found was that using parallel index creation was generally slower than non-parallel. That led to a decision to backport the change to not use parallel index creation.”

因为在12.2新feature的开发过程中,我们研究了一下impdp时的index的创建,发现“一般情况下”串行比并行建索引更快,所以我们决定把impdp时的索引都改成串行创建,并且在创建完成后,再使用’ALTER INDEX … PARALLEL n’ 设置索引的并行度,以实现查询时的并行效果。

所以,ORACLE开发不认为是BUG;因此在导入数据时,需要注意这个地方,如果时间紧急,要考虑其他方式的并行建索引(如IMPDP导入不建索引,导出建索引SQL文本并人工并行执行等方式灵活处理)。

Oracle在12.2版本使用IMPDP并行导入数据时未并行建索引的分析

1- 检查 locale 的设置,如果需要,请更正。

此处所用示例是配置 Unix 环境以便能够在 Unix 计算机的 shell 中使用 Unicode (UTF-8)、配置 Telnet/SSH 软件、以及将 NLS_LANG 设置为 UTF8 / AL32UTF8 以用于 sqlplus。
要查看当前设置,请使用 “locale” 命令,如下所示:

$ locale

输出示例:

LANG=fr_FR
LC_CTYPE="fr_FR.iso885915@euro"
LC_COLLATE="fr_FR.iso885915@euro"
LC_MONETARY="fr_FR.iso885915@euro"
LC_NUMERIC="fr_FR.iso885915@euro"
LC_TIME="fr_FR.iso885915@euro"
LC_MESSAGES="fr_FR.iso885915@euro"
LC_ALL=fr_FR.iso885915@euro


大多数 Unix 版本默认设置为:

$ locale

LANG=
LC_CTYPE="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_MESSAGES="C"
LC_ALL=


“C”是指 US7ASCII,这意味着仅可显示 a-z、A-Z 和 0-9。

我们建议尽可能使用 UTF-8,如下所示:

$ locale

LANG=en_US
LC_CTYPE="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=en_US.UTF-8


如果您已经选择了一个值,例如在 Linux 上使用 “en_US.UTF-8”,可进行如下设置:

$ export LC_ALL=en_US.UTF-8

或

% setenv LC_ALL en_US.UTF-8


请注意,此命令的输出/语法在不同 Unix 环境中并不完全相同。如果您对如何在特定 Unix/Linux 版本中配置用户环境有任何问题,请咨询您的 OS 供应商。

2- 检查所选择的 locale 是否确实已安装,如果需要,请安装。

要查看所有安装的 locale,请执行以下语句:

$ locale -a

示例输出:

$ locale -a

POSIX
common
en_US.UTF-8
C
iso_8859_1
iso_8859_15
en_CA
en_CA.ISO8859-1
en_US
en_US.ISO8859-1
en_US.ISO8859-15
en_US.ISO8859-15@euro
fr_CA
fr_CA.ISO8859-1
th
th_TH
th_TH.TIS620
ja
...

这将列出 Unix 计算机上所有已安装的 locale。
例如,如果您想要使用 “fr_FR.iso885915@euro”,但它不在列表中,则您需要先安装它。
如果您将用户环境设置为未安装的 locale,您不会收到错误消息,但该设置可能不起作用。
请注意,您需要安装完全匹配的 locale,如果您安装了 “fr_FR.UTF-8”或“UTF-8”,但想要使用 “en_US.UTF-8”,则需要安装 “en_US.UTF-8”。

Locale 参数语法为 “language(_territory)(.encoding)(@modifier)”。language(_territory) 部分用于确定日期的默认格式、OS 级别的接口语言等(有关更多信息,请参阅系统文档),
因此,这部分的设置需要您来决定,而不是 Oracle;但是,如果您希望使用 Unicode shell 环境,则最后的 (.encoding) 部分需要为 UTF-8。注意 Unix Locale 的 Language 和 Territ
ory 设置与在 shell 中使用字符 的能力无关。Locale 设置为 ja_JA.ISO8859-1不代表您可以使用日文,因为 ISO8859-1 不识别日文字符。但 Locale 设置为 en_US.UTF-8 将允许在
shell 中使用日文(假定您的 telnet/ssh 客户端设置正确)。

在上边的示例中,“en_US.UTF-8” 存在于列表中,因此我们可以在此服务器上使用该设置。

3- 检查 telnet/ssh 软件是否已正确配置。

 

需要检查 telnet/ssh 软件是否已正确配置。telnet/ssh 软件负责将 Unix locale 转换给客户端环境(多半为 Windows 系统)。

建议首先使用免费的 PUTTY 客户端进行尝试,据所知,它是与 Unicode 最佳兼容的一款客户端工具。可从此站点下载 Putty:http://www.chiark.greenend.org.uk/~sgtatham/putty/

如示例中一样,在 Unix 端使用 “en_US.UTF-8”,则在 Putty 中更改如下设置:

打开配置窗口,导航到“Window(窗口)”、“Translation(转换)”,并将“Received data assumed to be in which character set(假定接收到的数据使用此字符集)”设置为“UTF-8”

。这需要与 Unix shell 端的编码匹配。如果locale不是UTF-8, 但是比如是en_US.ISO8859-1那么选择”ISO-8859-1:1998 (Latin-1, West Europe)”

导航到“Window(窗口)”、“Appearance(外观)”,然后在“Font used in the terminal window(终端窗口中使用的字体)”中选择一种字体,以便支持您想要使用/查看的语言。

请注意,编码/字符集与字体之间的根本区别在于,编码/字符集定义了每种编码包括哪些字符,而字体用于 OS 在屏幕上“绘制”由编码定义的字符。使用 Telnet/ssh 等基于文本的仿真程序,
远程端不会向客户端发送/从客户端接收“字符”,而使用特定字符集进行编码,客户端 OS 使用 Telnet/ssh 客户端的字体在屏幕上绘制这些字符。这意味着在使用任何字体之前,客户端和远程端首先需要就使用的编码达成一致。

在 Windows 客户端,大多数非亚洲语言可以使用默认的“Courier New” Windows 字体,“Arial Unicode MS”为更加完整的字体。“Arial Unicode MS”通常在所有安装了 Office 2002 或更高版本的 Windows 客户端均可用,可支持各式各样的字符。要了解此字体支持哪些语言,请参阅 http://support.microsoft.com/kb/q287247/ 。如果未安装 office 2002,则可以尝试 GNU FreeFont http://www.gnu.org/software/freefont/index.html 集合。另一个关于 Unicode 字体的非常优秀的资源是 Alan Wood’s website。例如,Shareware“Code2000”字体是最完整的“通用”字体之一。

在 Windows 上,Windows 工具“字符映射表”可用于查看字体中包含哪些字符,或者您可以在编辑器中(如 Wordpad)输入字符并选择字体,然后看这些字符是否正确显示。

请务必检查 telnet/ssh 客户端配置,几乎在所有情况下,在“Unix 提示符”中显示字符存在问题的原因都是由于 telnet/ssh 客户端配置不正确导致,或者是正在使用不可配置的 telnet/ssh 客户端而导致,如标准 Windows telnet。

如果使用 Putty 可以正确显示,但使用您的 telnet/ssh 软件包却不可正确显示,请咨询您的 telnet/ssh 软件供应商。
如果您不使用 telnet/ssh 客户端而使用“真正的”Unix 显示器,请参阅 Note 265090.1 How to check Unix terminal Environments for the capability to display extended characters.

4- 设置 NLS_LANG 并测试。

 

当执行完下列操作后:

1) 正确配置 LC_ALL
2) 确认所使用的 locale 已安装
3) 配置好 telnet/ssh 客户端
然后您就可以使用 NLS_LANG 匹配 locale。

NLS_LANG 的构成为:NLS_LANG=<NLS_LANGUAGE>_<NLS_TERRITORY>.<clients characterset>

以 locale “en_US.UTF-8”为例,这意味着应该将 NLS_LANG 设置为 =AMERICAN_AMERICA.AL32UTF8;如果 locale 设置为“en_US.UTF-8”,则相应的 NLS_LANG 设置将为 AMERICAN_AMERICA.AL32UTF8。

请注意:
* UTF-8 (Unix) 和 UTF8/AL32UTF8 (Oracle) 的表示法之间的区别
* NLS_LANG 的 NLS_LANGUAGE 和 NLS_TERRITORY 设置 与在客户端上“查看”字符/在数据库中存储字符的能力无关。 NLS_LANG 设置为 JAPANESE_JAPAN.WE8ISO8859P15 将不允许存储日文,因为

 WE8ISO8859P15 不识别日文字符。但 NLS_LANG 设置为 AMERICAN_AMERICA.UTF8 将允许使用/存储日文(假定您的 telnet/ssh 客户端和 Locale 设置正确,且您的数据库可以存储日文 - 例如使用 UTF8 或 AL32UTF8 NLS_CHARACTERSET 的数据库)
* 要使 NLS_LANGUAGE 和 NLS_TERRITORY 匹配 LC_ALL 中的 language(_territory) 值,请在 database globalizaton support guide appendix A. 中查看相应的 Oracle 语言和地区值。


因此,以 Unix 用户身份登录并执行以下操作:

a) 对照 locale 检查 LC_ALL 是否设置正确(假定此处为 en_US.UTF-8)

b) 仔细检查 Telnet/ssh 客户端配置(假定此处 Putty 按第 3 点所述进行配置)

c) 设置 NLS_LANG 以匹配 locale 设置
$ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

或

% setenv NLS_LANG AMERICAN_AMERICA.AL32UTF8

之后通过下边的小窍门检查 sqlplus 侦测到的 NLS_LANG 设置:

$ sqlplus /nolog
SQL>@.[$NLS_LANG].

如果得到下边的结果:

SQL>@.[$NLS_LANG].
SP2-0310: unable to open file ".[AMERICAN_AMERICA.AL32UTF8]..sql"

'[]'中包含的"文件名"就是 sqlplus 将会使用的 NLS_LANG 设置。

如果得到下边的结果:

SQL>@.[$NLS_LANG].
SP2-0310: unable to open file ".[$NLS_LANG]..sql"

那么表示 NLS_LANG 没有设或者 sqlplus 没有侦测到。

如果得到" SP2-0310: unable to open file ".[$NLS_LANG]..sql" " 但是下边的命令能返回 AMERICAN_AMERICA.AL32UTF8:

SQL>HOST ECHO $NLS_LANG

那么表明 NLS_LANG 设置了但是没有在环境中 *export*


d) 使用 sqlplus 连接到数据库并查询一些数据。

一个很好的检查方法是执行以下语句“select UNISTR('\20AC') from dual;”。如果选择使用9i 或更高版本数据库,和一个正确的 UTF-8 或 ISO8859-15 Unix 环境,则一个欧元符号会被正确的显示出来,因为这样的环境可以正确处理欧洲语言(AL32UTF8、WE8MSWIN1252、...)。如果可以显示欧元符号但数据库中存储的数据未正确显示,则表明客户端已正确配置,但数据库中的现有数据现在/过去未正确存储。将需要更正数据库中的现有数据,直至其可在正确配置的客户端显示 Note:225938.1 Database Character Set Healthcheck.


如果此方法有效,则将用户配置文件中的 NLS_LANG 也设置为这个值以用于 sqlplus。

如果已完成,则针对在 sqlplus 中交互式插入和查询数据进行了正确配置。

但是,这并不意味着此设置可用于所有应用程序。
NLS_LANG 用于让 Oracle 客户端知道哪些编码/字符集数据将传输到客户端库。如果在此 Unix 计算机上运行 Web 应用程序且输出 iso-8859-1 数据,则对于应用程序,正确的 NLS_LANG 为 WE8ISO8859P1(即使 Unix locale 为 UTF-8)


5- 如果上述方法都不起作用怎么办?

 

如果未看见预期的字符,则请再次检查您的设置。剩余的最常见问题是您的 Telnet/ssh 仿真程序未正确配置。
然而,也可能是您的数据库中数据不正确。

一个简单的检查方法是:

使用 Windows 客户端,从以下地址下载并安装 SqlDeveloper http://www.oracle.com/technology/products/database/sql_developer/index.html ,连接到您的数据库并查看数据在该工具中是否正确显示。
如果数据可以在 SqlDeveloper 中显示,则数据库中的数据是正确的,问题在于客户端。
如果数据未在 SqlDeveloper 中显示,则表明数据库中的数据不正确,这意味着即使您的客户端已正确配置,数据也无法正确显示。

较难的检查方法是:

如果使用 select 语句,例如“select ename from scott.emp where empno='7369';”来返回一行数据,则执行以下语句“select dump(ename,1016),ename from scott.emp where empno='7369';”。
可以在以下文档中查看代码是否匹配您期望数据库字符集中的字符 ( select value from NLS_DATABASE_PARAMETERS where parameter='NLS_CHARACTERSET'; )

或者如果使用的是 (AL32)UTF8 数据库,请使用 Note 69518.1 Storing and Checking Character Codepoints in a UTF8/AL32UTF8 (Unicode) database

如果不知道问题是什么原因造成的,请新开一个服务请求,参阅以下文档并提供所需信息:
* Note 226692.1 Finding out your NLS Setup 文档中要求的信息。
* 在的环境中执行这个select语句“select dump(ename,1016),ename from scott.emp where empno='7369';”并用 spool  保存结果到文件。(!请勿直接复制粘贴!)

6- 进行更深入的调试。

 

第 1-4 步应足以解决 99% 的问题,本文档的剩余部分将讨论深入调试

在某些平台上,使用下列语法可以有效地获取关于
实际使用的代码页的更多详细信息:

$ locale LC_CTYPE | head

HP-UX 环境中的输出示例:
""
""
"iso885915"
""
Linux 环境中的输出示例:
upper;lower;alpha;digit;xdigit;space;print;graph;blank;cntrl;punct;alnum;combining;combining_level3
toupper;tolower;totitle
16
1
ISO-8859-15
70
84
1
0
1

$ locale LC_CTYPE | head
upper;lower;alpha;digit;xdigit;space;print;graph;blank;cntrl;punct;alnum;combining;combining_level3
toupper;tolower;totitle
16
6
UTF-8
70
84
1
0
1


在 Solaris、AIX、TRU64 上,此语法不能提供相关的补充信息。
要查找关于这些设置的更多详细信息:
在 Solaris 上,请查看 /usr/lib/locale。
在 AIX 上,请查看 /usr/lib/nls/README
在 TRU64 上,请查看 /usr/lib/nls
在 HP-UX 上,请查看 /usr/lib/nls/config
在 Linux 上,请查看 /usr/share/locale/locale.alias


如何检查操作系统管理的字符编码:

要了解 Unix 环境中针对字符所生成的字符编码,
可以按如下所示使用“od”命令(使用 iso-8859-1 locale 的示例):

$ od -xc
é
0000000 00e9
351 \0
0000001

正如您所见,hexa-decimal 编码 e9 对应于“é”(小写 e 重读音节)
351 是对应的八进制值(八进制为 od 命令的固有状态)。

您还可以使用“echo”命令检查对应于字符编码的字符,如下所示:

对于 Solaris、AIX、HP-UX、TRU64:

$echo '\0351'
é

对于 Linux:

$echo -e '\0351'
é

正如所见,echo 使用八进制值,因此需要将要检查的值转换为八进制。

7- Locale 和 NLS_LANG 是否*需要*与数据库字符集匹配?

 

不需要,Locale 和 NLS_LANG 设置(如果适用,还包括 telnet/ssh config)需要互相匹配,但从技术角度看它们均与数据库字符集无关,并且它们仅针对该客户端环境相关。

假定您使用 AL32UTF8 NLS_CHARACTERSET 数据库。如果将 Unix 环境配置为(例如)fr_FR.iso885915@euro(相匹配的 NLS_LANG 为 FRENCH_FRANCE.WE8ISO8859P15),则您可以在 Unix shell 中查看/插入欧元字符和法文或西班牙文,但无法查看/插入俄文或中文(也就是 iso885915 中未定义的任何语言)。
然而,如果您使用可以存储/处理这些语言的远程客户端(例如使用 Sqldeveloper 的 Windows 客户端),则可以向 AL32UTF8 数据库插入这些语言或从该数据库选择这些语言。原因很简单,因为服务器 NLS_LANG/Locale 设置仅在服务器本身作为客户端的情况下有关。

许多客户都遇到过这样的麻烦,由于将数据库 NLS_CHARACTERSET 更改为 (AL32)UTF8 从而需要“更正”Unix shell,其实只要不将 Unix 服务器本身作为客户端用于数据输入,则可以免去这些麻烦。您其实更应该担心的是最终用户实际插入数据的客户端。能够在服务器上使用 sqlplus 查看/插入中文可能是不错的体验,但即使奏效,这也与您的 Windows 客户端(例如)无关,因为 Windows 客户端设置与 Unix 端完全无关。

 

对于 Windows 客户端,请参阅 Note 179133.1 The correct NLS_LANG in a Windows Environment

请注意,在服务器上加载普通文本文件时,sqlldr 的字符集取决于该文本/普通文件的字符集,而不是数据库字符集或所使用的 Unix locale,

 

请参阅 Note 227330.1 Character Sets & Conversion – Frequently Asked Questions / point 18. What is the best way to load non-US7ASCII characters using SQL*Loader or External Tables?

8-对于NLS_CHARACTERSET是”xx8MSWIN12xx”(如WE8MSWIN1252等等)的数据库,最好的LANG 和 NLS_LANG的设置是什么

 

一个最常被问到的问题是:对于一个NLS_CHARACTERSET是”xx8MSWIN12xx”(如WE8MSWIN1252等等)的数据库,在Unix client上正确的LANG和NLS_LANG设置是什么?

Server上使用的LANG 和 NLS_LANG并不会影响通过Listener连接进来的客户端。.
很可能你是通过telnet/ssh连接上来做一些管理的工作,而不是真正的输入应用程序数据。.
在这种情况下,可以在Unix profile中把LANG设置为iso-8859-1,把NLS_LANG设置为AMERICAN_AMERICA.WE8MSWIN1252.

从技术上讲这并不是100%正确,但却是个好方案,可以在sqlplus里很简单的运行”xx8MSWIN12xx”编码的脚本(比如在windows操作系统中创建的脚本),并且对于传统的exp/imp你不需要担心NLS_LANG的设置。.

注意:很可能不能够在telnet环境里看到特殊字符,如欧元符号或者阿拉伯文。.
但是在telnet环境中看不到特殊字符,并不影响通过listener连接进来的(Windows)客户端.

如果想仔细检查数据,那么我们建议你使用SqlDevelper来检查;这个工具是一个非常好的客户端,它不需要任何NLS的设置。

Unix 环境中正确设置 NLS_LANG的最佳实践(在 Unix 环境中正确设置 NLS_LANG Doc ID 1548858.1)

最近屡次被客户询问oracle版本上的更新计划,这篇文章做个解释

Oracle数据库版本有两种:长期版本和创新版本.

  • 长期版本:

Oracle数据库长期版本是较少频繁升级到新版本的用法的理想选择。长期发行版提供最高级别的稳定性和最长的错误纠正支持时间。这些版本具有最少5年的主要支持,接下来有3年的扩展支持。必要时,我们可以延长 “Premier Support “的期限,或者免除 “Extended Support”费用。与扩展支持结合使用时,客户通常有将近4年或更久的时间从一个长期版本升级到下一个长期版本

  • 创新版本:

在两个Oracle数据库长期版本之间,Oracle提供了创新版本,其中包括许多增强功能和新功能,这些功能也将包含在下一个长期版本中。创新版本旨在使客户能够持续使用领先技术来快速开发或部署新应用程序或扩展现有应用程序。创新版本支持包括最少2年的主要支持,但没有扩展支持。如果考虑部署计划2年内升级到新版本,则可以在创新版本上部署工作负载。

为了帮助您提前计划,下面是一个可视化的路线图,它捕获了从11.2开始的Oracle数据库版本,显示了每个版本的生命周期支持阶段(Premier、Extended)和错误纠正窗口。  注意,不是所有的版本都有资格获得扩展支持 (i.e. 12.2.0.1, 18c).

 

这里列出Oracle在最近几年的数据库发布计划以作参考:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

表1 -路线图补丁结束日期

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Oracle数据库版本发布实践表如下:

 

 


平台
23c

Long Term Release
21c

Innovation Release
19c

Long Term Release
18c
12.2.0.1
12.1.0.2
12.1.0.1
11.2.0.4


Oracle 公有云版本
Exadata Express Cloud Service
未计划
未计划
未计划
未计划
18-Sep-2016
N/A
Base Database Service1

(Previously known as: Database Cloud Service)
待发布
2020年12月8日
VM可用(RAC 或者 单实例)
BM(单实例)
OCI DB System - VM: Jul-2019

OCI DB System - Bare Metal: April 2020
1-Mar-2018
4-Nov-2016
Sep-2014
N/A
Sep-2014
Exadata Database Service on Dedicated Infrastructure1

(Previously known as: Exadata Cloud Service)
待发布
N/A
19-Jun-2019
Jun-2018
4-Nov-2016
Oct-2015
N/A
Oct-2015
Gen 1 Exadata Cloud at Customer1

(Previously known as: Exadata Cloud at Customer)
待发布
N/A
17-Sep-2019
May-2018
2-May-2017
Dec-2016
N/A
New Exadata Database Service on Cloud at Customer
待发布
N/A
17-Sep-2019
N/A
N/A
N/A
N/A
Autonomous Database on Dedicated Exadata Infrastructure 2
待发布
待发布
26-Jun-2019
N/A
 N/A
 N/A
 N/A
Autonomous Database on Exadata Cloud at Customer 2
待发布
待发布
08-Jul-2020
N/A
 N/A
 N/A
N/A
Autonomous Database on Shared Exadata Infrastructure 2
待发布
待发布
15-Mar-2020
18-Mar-2018
N/A
N/A
N/A


On-Premises Engineered Systems

(和其他平台同样的软件但是在一体机系统上测试)
Oracle Database Appliance
待发布
16-Sep-2021
16-Oct-2019
7-Mar-2018
17-Nov-2017
Apr 2014
N/A
Oct 2013

Exadata
待发布
13-Aug-2021
13-Feb-2019
16-Feb-2018
10-Feb-2017
Oct 2014
Mar 2013
Nov 2013

Supercluster
待发布
待发布
26-Apr-2019
12-Mar-2018
10-Feb-2017
Nov 2014
Apr 2014
Dec 2013



On-Premises Server Releases (includes client)
Linux x86
未计划
未计划
未计划
未计划
未计划
未计划
未计划
28-Aug-2013
Linux x86-64
待发布
13-Aug-2021
25-Apr-2019
23-Jul-2018
1-Mar-2017
22-Jul-2014
25-Jun-2013
27-Aug-2013
Oracle Solaris SPARC (64-bit)
待发布
未计划
26-Apr-2019
30-Jul-2018
1-Mar-2017
22-Jul-2014
25-Jun-2013
29-Aug-2013
Oracle Solaris x86-64 (64-bit)
平台不支持
平台不支持
07-Nov-2019

最终版本
6-Aug-2018
1-Mar-2017
22-Jul-2014
25-Jun-2013
29-Aug-2013
Microsoft Windows x64 (64-bit)
待发布
08-Oct-2021
08-Jun-2019
21-Aug-2018
16-Mar-2017
25-Sep-2014
9-Jul-2013
25-Oct-2013
OpenVMS Itanium
平台不支持
平台不支持
平台不支持
平台不支持
平台不支持
平台不支持
平台不支持
最终版本
HP-UX Itanium7
待发布
28-Sept-2021
28-May-2019
20-Nov -2018
13-Apr-2017
14-Nov-2014
9-Jan-2014
10-Oct-2013
HP-UX PA-RISC (64-bit)
平台不支持
平台不支持
平台不支持
平台不支持
平台不支持
平台不支持
平台不支持
2-Jan-2014
IBM AIX on POWER Systems
待发布
See DOC ID 2766930.1
28-May-2019
20-Nov -2018
13-Apr-2017
14-Nov-2014
9-Jan-2014
10-Oct-2013
IBM Linux on System z
待发布
See DOC ID 2766930.1
06-June-2019
20-Nov -2018
6-Jun-2017
14-Nov-2014
9-Jan-2014
9-Jan-2014
Microsoft Windows (32-bit)
待发布
仅客户端 - Oct 2021
仅客户端 - June 2019
未计划
未计划
未计划
未计划
25-Oct-2013
Platform

 21c
19
18
12.2.0.1
12.1.0.2
12.1.0.1
11.2.0.4


Instant Client-Only Releases
Apple macOS (Intel) download

 
 10-Sept-2019
 Mar-2018
15-Jan-2018
2016
未计划
20-Apr-2014

Download
IBM Linux on POWER (Big Endian)


 
 
 
 
18-Dec-2015 (download)

4-Dec-2014
IBM Linux on POWER (Little Endian)

 
 Jul-2019

download
31-Oct-2018
(download)
7-Jun-2017 (download)
18-Dec-2015

(download)

 
Linux on ARM

 

 待发布
May-2021

download
 
 
 

 

跟客户端有关的链接:


https://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle19c-linux-5462157.html
https://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle19c-windows-5539283.html

32-bit Linux & Windows Instant Clients,

https://www.oracle.com/database/technologies/instant-client/linux-x86-32-downloads.html

https://www.oracle.com/database/technologies/instant-client/microsoft-windows-32-downloads.html

 

Oracle 数据库发布时间表(2023年最新)