【Oracle Database 12c】12c 常见问题FAQ

【Oracle Database 12c】12c 常见问题FAQ

补充:

#ORACLE DATABASE 12c# 很多运营商那里遇到了scn headroom的问题,在12cR2中将引入BIG SCN的特性,SCN的格式将从6个字节变成8个字节存储,这意味着更高的SCN上限 以及能满足更快的SCN增速

#ORACLE DATABASE 12c# 随着12c In-Memory Option IMCC 特性的引入, 12c的内核将加入一个新的模块 Kernel Data Layer in-memory database 简称 KDM, 这个模块已经有了几十万行的代码量

【Oracle Database 12c新特性】In-Memory Option 虽然在12.1.0.1中还未引入该特性,12c in-memory database cache的灵魂是 in memory in compressed columnar 简称IMCC ,在数据库中所有启用了IMCC 的表 将被加载在 in-memory snapshot store.http://t.cn/8kvLc2A

#ORACLE DATABASE 12c# 12c的SPM加强了对SQL PLAN Baseline执行计划基线的分类功能,这个特性同样是为了满足某日本汽车企业的EA架构需求。可以看到ORACLE database的新特性开发在国外还是很贴地气的, 有国内企业的新特性需求直接在新版本中得到满足的例子吗,bug不算,scn 搞死DB那事也不算.

#ORACLE DATABASE 12c# 12c的32k varchar出现之前,竞争对手如DB2 支持32k的char,SQL SERVER支持2GB(虽然order by 操作有限制),MYSQL是65535字节。12c的varchar选择32k,一方面是为了持平DB2,另一方面产品用户 Toyota丰田汽车对这个特性的明确要求,ORACLE数据库为日本的用户特意开发了不少特性。

#ORACLE DATABASE 12c# 11g中推出的高可用特性Automatic Block Media Repair BMR可以有效利用物理备库来修复主库上的坏块,具体见http://t.cn/zRW02vd。 但该特性在11g中只能修复普通data block,对于datafile header无能为力,12.2中将加入datafile header的修复功能,总的来说DG越来越有用了!

#ORACLE DATABASE 12c# 12c中将加强查询重写能力,原来的Query WRite只支持如MV: SUM(c1 + c2), Query: SUM(c2 + c1),12c中将加强分配性,支持例如MV: SUM(c1*(c2+c3)), Query: SUM(c1*c2 +c1*c3) MV: SUM(2*c1), Query: SUM(10*c1) 的组合

12c中可能出现一个有点吓人的新特性《nologging standby》,无需在primary上设置FORCE LOGGING,由于 nologging造成的无效数据块,通过直接传输数据块来解决,从而大幅减少DW系统中数据加载产生的大量redo

#ORACLE DATABASE 12c# 12c 分区特性官方课程,学习地址:http://t.cn/zRSo2DO

12c: Network Recovery in RMAN新特性,可以在standby数据库上直接recover database from service 来恢复备库,这个算实用特性了。 对于那些使用迁移数据库后要apply日志来追平数据的场景,不需要再搞归档那么复杂了,一条命令搞定。 http://t.cn/zRJRMMH

oracle database 12c 是否比11g要更快? 可以参考下这篇文章, http://t.cn/zRJRylq ,需要科学上网。 作者的观点是 逻辑读上12c要比11g少。

Oracle GoldenGate 12c – 新版本,新特性 ogg 12c支持DB 12c的multi-tenant container databases (CDB).多租户特性,同时现在有了不急于trigger触发器捕捉DDL的天然Native DDL Capture http://t.cn/zRx3ufi

 

配合ORACLE DATABASE 12C (12.1.0.1) 安装 ORACLE GOLDEN GATE 12C (12.1.2) ,OGG oracle goldengate 终于有了oracle标准的 OUI安装界面!!! http://t.cn/zRx3Ogy

 

 

问题 : 从哪里可以下载到Oracle Database 12c?

目前从OTN页面:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 可以下载到

 

问题 : 12c的补丁机制 patchset、security patch update spu和 patch set update PSU有改变吗?

从Oracle数据库版本12.1.0.1起,Oracle将只提供Patch Set Update (PSU)补丁来满足Critical Patch Update (CPU)对于安全性补丁程序的要求。SPU(Security Patch Update)补丁将不再提供

 

 

问题 :那些Solaris版本与Oracle Database 12c兼容?

Solaris Sparc
Solaris 10
Solaris 11

Solaris X86_64
Solaris 10
Solaris 11

 

问题 : 对于Oracle Database 12c而言那些平台目前或今后会出32bit的CLIENT客户端软件?

Linux x86
Solaris x86 and Solaris SPARC
Windows 7 & 8

 

 

问题 :在OOW 2013中宣传的”in-memory” database cache特性 何时可用?

在”in-memory” database cache特性将在Oracle Database 12c patchset 12.1.0.2中release ,12.1.0.2计划在2014年度放出

 

问题 : 与Oracle Database 12c支持较好的Linux版本是哪几个?

Oracle Linux 5
Oracle Linux 6
RedHat Linux 5
RedHat Linux 6
SLES 11

 

问题 : 如何配置数据库实例以便其能运行在12.1.0.1的Oracle Flex cluster leaf nodes上?

Oracle Database 12c中引入了新的集群拓扑,称之为Flex Cluster ,在Flex CLuster集群中节点被按照角色分为 HUB node 和 Leaf Node。 在版本12.1.0.1中,LEAF Node不能配置数据库, 数据库实例不支持运行在12.1.0.1的Leaf Node上。 askmac.cn

 

 

问题 :  在新的多租户架构中,数据库(PDBS)以及其他options选项需要如何购买许可证license?

虽然多租户是一种新的逻辑架构, 但其许可证license仍采取和版本12.1之前一样的模式。  软件 包括 数据库和 其他选项的license基于CPU数目 计算。 对于 Named User  Plus NUP也是如此的。

 

因此一台 2个Intel 处理器总共8核的服务器,需要购买4个core( 8* 0.5    , 0.5是Intel 核心的license 因子)的  包括 数据库和 其他选项(例如分区)的license 。

举例来说, 例子1:

1个CDB 带了 3个PDB , PDB1 使用了partitioning 分区特性, PDB2只使用ASO特性,而PDB3 不使用任何options。 由此 基于core的数目,用户必须购买 database 、multitenant 多租户特性、ASO 特性 ,以及4个 core 的partitioning分区特性,所有上述的许可证license。 如果使用Named User Plus 命名用户方式计算, 则 最少需要购买 100个NUP(4*25),或者实际的用户数量, 哪个更高则采用哪一个。

综上所述,license的计算和实际某个PDB使用或者不使用某个options是没关系的, 只要你的这个CDB里有用任何option,就需要根据服务器核数来决定license 。 同时CDB里的任何一个PDB都可以使用已购买的option 。

 

例子2:

在与例子1中同样的硬件环境中,有3个CDB运行着,每一个CDB都包含多个PDB,而仅有CDB2的一个PDB1使用分区选项。 和之前的例子完全一样,还是要购买4核的 数据库,multitenant 多租户特性 和分区特性。

 

 问题 : 到目前为止(12.1.0.1) Oracle Database 12c是否支持Oracle Database Appliance (ODA)?

目前还不支持,  Oracle计划在12.1.0.2版本中支持Oracle Database Appliance (ODA)

 

问题 :Oracle Database 12.1是否支持Exadata 数据库一体机?

是的, Oracle Database 12.1支持Exadata 。 最低的支持Oracle 12.1的Exadata Storage Server Software 版本是11.2.3.2.1, 同时也可以在Exadata上同时运行 12.1 和 11.2的数据库。

 

所有Oracle 12.1的新特性,包括 多租户可拔插数据库都在  Exadata上支持。 但在12.1中 smart scan智能扫描不从Exadata Storage上过滤行,同时12.1的IORM plan可能不适用。 这些限制将在 Exadata storage server software version 12.1.1.1.0中被改善。 其他特性例如HCC, Smart Flash Cache, Smart Logging均支持。

 

问题 : 在多租户架构中的pluggable database 可拔插数据库是什么玩样?

 

pluggable database (PDBS)是Oracle Database Release 12.1中的新特性,  你可以在一个Oracle数据库中 存放很多个pluggable database。 pluggable database 向后兼容,可以像操作12.1之前的数据库那样操作pluggable database ,这里指绝大多数常规操作。

 

问题 :  哪样场景我应当考虑使用pluggable database PDB?

以下几个场景适合于使用pluggable database:

  1. 在产品系统中的某些应用实际仅使用十分少量的硬件资源。但是如果存在大量这样的应用,则还是需要构造大量的数据库实例并为这些小规模的数据库分配存储空间
  2. 对于那些并不十分复杂或重要,需要全职DBA花费大量时间管理的数据库
  3. 为了更好地利用硬件和DBA资源,用户有必要将大量的部门级应用整合到少数几个oracle RDBMS数据库中以便部署和管理

 

Pluggable Database 可拔插数据库允许DBA整合大量的小的部门级数据库到一个更庞大的数据库中。

 

问题: 为什么我启用了heat_map=on 但是 v$heat_map_segment没有数据?

检查下 enable_pluggable_database,如果=true 那说明是CDB,目前(12.1.0.1)多租户特性无法 与 heat map特性一起工作。如果启用了CDB就用不了heat map

 

 

 

问题 : PDB带来哪些好处?

 

在一个集中化的平台上操作多个数据库将有效降低成本:

  1. 更少的实例损耗
  2. 更低的存储成本

 

减少对DBA资源的使用,以及便于维护安全性:

  • 无需应用修改
  • 更快和简便的配置
  • 节省了打patch和升级的时间
  • 分离了以下责任:
    • 不同应用的管理员
    • 应用程序管理员和DBA
    • 应用用户
  • 提供isolation
  • 保证与非CDB 完整的向后兼容性
  • 完整的RAC操作使用
  • 与Oracle Enterprise Manager和Resource Manager整合在一起
  • 可以集中化管理多个数据库
    • 备份和灾难恢复
    • 补丁和升级

 

 

问题 : 如何从12.1之前的数据库迁移到 12c的多租户数据库?

 

计划A:

  • 先把12.1之前的数据库升级到12.1
  • 将数据库装换为CDB container database

 

计划B:

  • 创建一个12c的CDB,并建立一个空的PDB
  • 使用data pump/goldengate工具将数据导入到新的PDB中

 

 

问题  : 哪些 Oracle Database 特性还在12.1.0.1多租户环境中不被支持?

  • Continuous Query Notification
  • Flashback Data Archive
  • Heat Maps
  • Automatic Data Optimization

如果必须使用以上特性,则必须要创建non-cdb数据库

 

问题  : 如何知道我的数据库是否是多租户的CDB/PDB?

 

可以通过如下语句查询:

SQL> select NAME, DECODE(CDB, 'YES', 'Multitenant Option enabled', 'Regular 12c Database: ') "Multitenant Option ?" , OPEN_MODE, CON_ID from V$DATABASE;

NAME                        Multitenant Option ?                  OPEN_MODE              CON_ID
---------           ------------------------------           --------------------           ----------
CDB2              Multitenant Option enabled                      MOUNTED                       0

OR

SQL>  select NAME, DECODE(CDB, 'YES', 'Multitenant Option enabled', 'Regular 12c Database: ') "Multitenant Option ?" , OPEN_MODE, CON_ID from V$DATABASE;

NAME               Multitenant Option ?           OPEN_MODE                                    CON_ID
------------------ ------------------------------ ---------------------------------------- ----------
MACLEAN            Regular 12c Database:          MOUNTED                                           0

 

 

问题  : 如何知道一个容器数据库中有多少个pluggable database?

可以通过下面的查询得知:

 

 

 

SQL>  select CON_ID, NAME, OPEN_MODE from V$PDBS;

    CON_ID NAME                          OPEN_MODE
---------- ------------------------       ------------
         2 PDB$SEED                         READ ONLY
         3 PDB1                                 MOUNTED
         4 PDB2                                 MOUNTED
         5 PDB3                                 MOUNTED
         6 PDB4                                 MOUNTED
         7 PDB5                                 MOUNTED
         8 PDB6                                 MOUNTED
         9 PDB7                                 MOUNTED
 ...

 

 

问题  : 如何连接到一个PDB ,例如PDB6?

 

你可以从现有的链接切换到PDB6:

SQL> alter session set container = pdb6;

你也可以直接从SQLPLUS里直接登录PDB:

A)

使用easy connect 方式:

CONNECT username/password@host[:port][/service_name][:server][/instance_name]

例如:

$ sqlplus hpal/hpal@//hpal-node1:1521/pdb2
OR
$ sqlplus hpal/hpal@//localhost:1521/pdb2
OR
$ sqlplus hpal/hpal@//localhost/pdb2

SQL> show con_name

CON_NAME
——————————
PDB2

 

B)

通过Net Service name 连接

 

TNSNAMES.ora:

=======

LISTENER_CDB1 =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
CDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cdb1)
)
)

PDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hpal-node1.us.oracle.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb2)
)
)
=======
使用sqlplus 登录

$ sqlplus hpal/hpal@pdb2

 

问题: 是否支持将 non-cdb非CDB转换为CDB?

不行, 无法直接转换。

对于12c之前的数据库 可以在升级到12c之后,然后作为PDB 插入plug到12c的CDB中。

或者采用data pump导入到12c的CDB中。  但是目前(12.1.0.1)不存在直接将non-CDB转换为CDB的方法。

For upgrade of 11g database to 12c, can we not convert non container database to CDB, during upgrade or post upgrade?

 

The only option I know is to move non-cdb as pdb.

that’s true – you can only create a fresh CDB in Oracle 12c. Earlier database versions need to be either upgraded first to 12c and can be plugged in as a PDB, or you can use Data Punp export/import or Full Transportable Export/Import for 11.2.0.3 databases.

 

问题  : 连接后如何切换到容器root数据库?

SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;

 

问题  : 如何判断我连接的是CDB还是PDB?

可以通过 show con_name  或者 select sys_context ( ‘Userenv’, ‘Con_Name’) “Container DB” from dual;  查看

 

问题  : 如何启动一个 Pluggable Database?

启动当前已连接的PDB :

alter pluggable database open;

连接到root 后启动某一个PDB:

alter pluggable database pdb6 open;

 

 问题  : 如果shutdown 关闭一个Pluggable Database?

关闭当前已连接的PDB :

alter pluggable database close;

连接到root 后关闭某一个PDB:

alter pluggable database pdb6 close;

 

问题: 如何关闭和启动容器数据库 container database?

使用管理普通数据库的 shutdown /startup命令来关闭和启动 ROOT Database

当容器数据库被关闭,则所有的PDB均不可访问。

 

问题: 那些参数可以在PDB级别做修改?

select NAME, ISPDB_MODIFIABLE from V$PARAMETER;

==》主要是一些优化器参数、Pl/SQL、NLS参数可以被在pluggable databasei级别修改

 

问题: 在我的CDB中有那些用户是 common user?

select distinct USERNAME from CDB_USERS where common = ‘YES’;

 

问题: 如何创建一个 common user?

create user c##db_dba1 identified by manager1 container=all;

 

问题: 为什么我在12c中创建user失败 ORA-65049? 

在CDB 中创建common user,用户名必须以C##开头,例如C##MACLEAN

 

问题 : 我在CDB中创建common user能够不以c##为开头吗?

可以的,需要修改隐藏参数 _common_user_prefix   (默认为:C## Enforce restriction on a prefix of a Common User/Role/Profile name)

 

问题: 如何创建一个 local user?

create user pdb6_dba1 identified by manager1 container=current;

 

 问题: Container ID   CON_ID  0 和1 的区别是什么?

CON_ID =0  不指代任何的特定 容器,而指代整个CDB。  举例来说从V$DATABASE返回的一行结果 指代整个CDB 而非某一个容器, 因此CON_ID是0 。

CON_ID=0  代表整个CDB

1 代表root container
2 代表seed
3~254 指向某一个PDB

 

问题: 对于 PDB是否有独立的一套PMON、SMON后台进程?

没有, PDB和root共享同一套 后台进程

 

问题: 对于 PDB是否有独立的控制文件?

没有,  整个CDB 使用同一套redolog 和 controlfile

 

问题: 对于 PDB是否有独立的redo重做日志文件?

没有,  整个CDB 使用同一套redolog 和 controlfile

 

 

问题: 如何监控一个PDB对于SGA内存的使用?

PDB和root共享同一个SGA, 但仍可以通过如下脚本来计算每一个容器消耗的内存量:

SQL> alter session set container=CDB$ROOT;

SQL> select POOL, NAME, BYTES from V$SGASTAT where CON_ID = ‘&con_id’;

SQL> select CON_ID, POOL, sum(bytes) from  v$sgastat
group by CON_ID, POOL order by  CON_ID, POOL;

 

问题: 我可以限制某一个PDB对SGA内存的使用吗?

目前12.1.0.1中还不可以,可能作为今后 12.2的新特性加入该功能

 

问题: 如何监控一个PDB对PGA内存的使用?

select CON_ID, sum(PGA_USED_MEM), sum(PGA_ALLOC_MEM), sum(PGA_MAX_MEM)
from  v$process
group by CON_ID order by  CON_ID;

 

alter session set container =CDB$ROOT;
select NAME , value from  v$sysstat  where NAME like ‘workarea%’;

alter session set container = <targetPDB>;
select NAME , value from  v$sysstat  where NAME like ‘workarea%’;

 

问题: 每一个PDB是否独立配置一套Undo tablespace?

还是和普通数据库一样, 一个实例拥有一套undo tablespace, RAC每个实例一个undo tablespace

 

问题: 每一个PDB是否配置独立的SYSTEM表空间?

是的, root和每一个pdb都有独立的SYSTEM表空间

 

问题: 每一个PDB是否配置独立的SYSAUX表空间?

是的, root和每一个pdb都有独立的SYSAUX表空间

 

问题: 每一个PDB是否配置独立的Temporary tablespaces临时表空间?

整个CDB使用一个默认的临时表空间,但确实可以在独立的PDB中创建临时表空间。

 

问题: 我可以为PDB指定默认的表空间default tablespace吗?

可以

 

问题 : 对于root和PDB是否所有的物理数据文件都是独立的?

对于root、seed、和每一个pdb 都有独立的数据文件

在一个CDB中,绝大多数用户数据应当存放在PDB中。

 

问题 : PDB可以使用不同的字符集吗?

不能,整个CDB中的root、pdb使用同一套字符集

 

问题 : 在pluggable database环境下如何配置Oracle NET文件?

对整个CDB仍是使用同一套listener.ora, tnsnames.ora和 sqlnet.ora 网络配置文件

 

问题s : 我如何能够创建一个Container Database?

首先安装12c软件,之后启动DBCA 创建数据库为 容器数据库:

 

cdb1

 

 

 

问题s : 对于PDB有那些常见操作?

  • 创建PDB
  • 拔出PDB unplug pdb
  • 插入PDB plug pdb
  • drop pdb
  • 设置pdb的open_mode

 

问题s : 如何创建一个pluggable database?

create pluggable database x admin user a identified by p;

create pluggable database y admin user a identified by p file_name_convert = (‘pdbseed’, ‘y’);

问题s : 如何drop一个pluggable database?

drop pluggable database x  including datafiles;

问题s : 如何从现有的pdb 克隆一个新的pdb?

被克隆的PDB应当是read only状态

— Using Oracle-Managed Files

create pluggable database x2  from x;

 

问题s : 如何拔出一个pdb?

alter pluggable database x unplug into ‘/some_directory/x_description.xml’ ;

INTO后面指向 一个绝对目录,会写出描述PDB的XML

 

 

问题s : 如何增加或修改 user-managed service?

srvctl add service … –pdb <pdb_name>

 

问题s : 如何查看某个服务是否加入了某个pluggable database?

SQL> column NAME format a30

SQL> select PDB, INST_ID, NAME from gv$services order by 1;

PDB                                    INST_ID    NAME
——————————– ———- ——————————–
CDB$ROOT                                  1 cdb1XDB
CDB$ROOT                                  1 SYS$BACKGROUND
CDB$ROOT                                  1 SYS$USERS
CDB$ROOT                                  1 cdb1
PDB1                                           1 pdb1
PDB2                                           1 pdb2

 

 

问题: 我的pluggable database的alert log在哪里?

所有的PDB都只有一份alert log ,XML版和TEXT文本版的告警日志在12c中仍同时存在,具体可以参考 V$DIAG_INFO视图

 

问题: 我的pluggable database的trace file在哪里?

所有的PDB的trace文件一样存放在container database的DIAG TRACE目录下

具体可以参考V$DIAG_INFO视图

 

问题: 在Oracle标准版standard edition中多租户选项是否可用?

是的,但是在一个CDB里你只能建一个PDB

 

问题: 事务内否在PDB之间跨越?

不能,虽然可以在启动一个事务后 使用”alter session set container”在PDB之间切换,但仅有select 查询允许在第二PDB中操作。原事务被保留,用户仍可以切换到原来的PDB并commit或者rollback。

 

 

 问题: 在PDB中如果有一个用户定义的common user创建了对象,之后这个PDB 被拔出了,并插入到另一个CDB中,且该CDB中不存在该common user, 则如何?

 

如果用户将一个包含common user的PDB插入到一个CDB中,则将发生如下情况:

在PDB中的common user 账号丢失commonly赋予的权限,包括SET CONTAINER这个权限。

如果目标CDB中含有与 该common user账号一样名字的common user账号,则新的common user将被合并到目标库的common user。并采用目标CDB common user的密码。   否则在新的插入的PDB中的common user将被锁住locked。

在此情况下,用户可以选择:

保持该账号被锁,并使用其名下的对象

使用Oracle Data Pump将数据复制到别的schema 下,并删除源账号

关闭PDB,并连接到ROOT,并创建一个与被锁定的账号同名的 common user。当重新打开PDB时,Oracle自动会将必要的commonly 角色和权限赋予给锁定的用户。 之后用户可以解锁PDB中的账号,本地授予的权限和角色保持不变。

 

 

问题: 12c中的Flex ASM是什么东西?

Oracle Flex ASM是指在集群中以预定义的基数数量运行的ASM实例。默认的基数cardinality是3,用户可以通过srvctl modify asm来修改该基数。  换句话说,ASM不需要运行在集群中的每一个节点上。

在之前的版本中,ASM运行在集群的每一个节点上,ASM的客户程序例如database、ACSF、ADVM均只能访问本地主机上的ASM实例。

通过Oracle Flex ASM, 客户程序可以通过网络连接(例如ASM network)远程ASM实例。 如果运行着一个ASM的主机宕了,Oracle Clusterware会在别的服务器上启动一个ASM实例,以便维持基数。  如果一个12c的数据库使用某个特定的ASM实例,当该ASM实例由于服务器crash或者ASM实例奔溃而不可用,则Oracle 12c数据库实例将重新连接到现有运行的其他ASM实例中。 该特性统称Oracle Flex ASM。

 

 

问题: Oracle Flex Cluster和Oracle Flex ASM有什么区别?

Oracle Flex Cluster是将集群中的节点分为 Hub和Leaf 节点。  仅仅有Hub Node可以直接访问OCR和VoteDisk, Leaf node不能直接访问共享存储。

Flex Cluster需要Flex ASM,而Flex ASM不需要Flex Cluster。

在Flex Cluster节点中,Flex ASM运行在HUB node上并服务于Flex Cluster中的其他HUB node上的应用。

默认情况下不启用Flex Cluster,需要用户显式地自行启用。

 

 

问题: 什么是ASM Network和ASM listener?

在12c之前, Oracle 集群软件要求一个公用网络以便客户端访问 和 一个私有网络以便节点之间通信,并包括了ASM的节点之间通信。

在Flex ASM中,ASM network提供分离ASM内部网络流量的功能,以便其独享一个私有网络。OUI安装界面上会让DBA选择是否为ASM使用独占的网络。  ASM network是数据库与ASM以及ASM与ASM之间通信的通路,其主要流量应当是一些文件extent map类的元数据信息。基于用户的选择,ASM 私有网络可以为ASM通信而独占,也可以与CSS服务共享。

 

在Flex ASM运行的节点上将有本地ASM监听运行。 ASM的客户端透过3个ASM监听获得endpoint信息并通过ASM network连接到Flex ASM。ASM集群的负载应当是均衡的。

 

 

问题: 如何启用Flex ASM特性?

以以下2种途径启用Flex ASM

纯12c Flex ASM,该模式下Grid Infrastructure 和数据库均运行12c版本,这样database数据库将充分利用12c系特性

与12c之前的版本混合使用 ,该模式下为了支持12c之前的数据库,ASM需要运行每一个节点上。 只需要设置ASM cardinality为ALL即可保证ASM运行在集群中的每一个节点上。 这种方式的优势是如果12c的数据库实例丢失与ASM实例的连接,则数据库连接将切换到另一个服务器上的另一个ASM实例。

 

 

问题: 如何检查Oracle Flex ASM是否启用了?

ASMCMD> showclustermode
ASM cluster : Flex mode enabled

 

ASMCMD> showclusterstate
Normal

 

问题:如何修改集群中ASM实例启动的数量,基数cardinality?

[root@ol6r02 bin]# ./srvctl modify asm -count 1
[root@ol6r02 bin]# ./srvctl config asm
ASM home: /u01/app/12.1.0/grid
Password file: +DATA/orapwASM
ASM listener: LISTENER
ASM instance count: 1
Cluster ASM listener: ASMNET1LSNR_ASM

 

问题: 如何重定位数据库到其他ASM?

如果ASM实例奔溃,客户程序将自动重定位到可用ASM实例,并保证连接是负载均衡的。

也可以手动来重定位:

ALTER SYSTEM RELOCATE CLIENT

SQL> ALTER SYSTEM RELOCATE CLIENT ‘<instance_name>:<db_name>’;
— Query GV$ASM_CLIENT to determine instance_name and db_name.

 

 

问题: 如何检查ASM实例运行在哪几个节点上?

$ srvctl status asm -detail
ASM is running on ol6r01,ol6r02
ASM is enabled

 

 

问题:如何非Flex ASM切换到 Flex ASM

 

可以使用asmca图形界面 或者 静默模式

 

 

[oracle@ol6r01 ~]$ asmca -silent -convertToFlexASM -asmNetworks eth1/10.154.138.0 -asmListenerPort 1521

To complete ASM conversion, run the following script as privileged user in local node.

/u01/app/oracle/cfgtoollogs/asmca/scripts/converttoFlexASM.sh

CRS-2673: Attempting to stop 'ora.crsd' on 'ol6r01'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'ol6r01'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN2.lsnr' on 'ol6r01'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN3.lsnr' on 'ol6r01'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'ol6r01'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'ol6r01'
CRS-2673: Attempting to stop 'ora.cvu' on 'ol6r01'
CRS-2677: Stop of 'ora.LISTENER_SCAN2.lsnr' on 'ol6r01' succeeded
CRS-2673: Attempting to stop 'ora.scan2.vip' on 'ol6r01'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'ol6r01' succeeded
CRS-2673: Attempting to stop 'ora.ol6r01.vip' on 'ol6r01'
CRS-2677: Stop of 'ora.LISTENER_SCAN3.lsnr' on 'ol6r01' succeeded
CRS-2673: Attempting to stop 'ora.scan3.vip' on 'ol6r01'
CRS-2677: Stop of 'ora.cvu' on 'ol6r01' succeeded
CRS-2672: Attempting to start 'ora.cvu' on 'ol6r02'
CRS-2676: Start of 'ora.cvu' on 'ol6r02' succeeded
CRS-2677: Stop of 'ora.scan2.vip' on 'ol6r01' succeeded
CRS-2672: Attempting to start 'ora.scan2.vip' on 'ol6r02'
CRS-2677: Stop of 'ora.scan3.vip' on 'ol6r01' succeeded
CRS-2672: Attempting to start 'ora.scan3.vip' on 'ol6r02'
CRS-2676: Start of 'ora.scan2.vip' on 'ol6r02' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN2.lsnr' on 'ol6r02'
CRS-2677: Stop of 'ora.ol6r01.vip' on 'ol6r01' succeeded
CRS-2672: Attempting to start 'ora.ol6r01.vip' on 'ol6r02'
CRS-2676: Start of 'ora.scan3.vip' on 'ol6r02' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN3.lsnr' on 'ol6r02'
CRS-2676: Start of 'ora.ol6r01.vip' on 'ol6r02' succeeded
CRS-2672: Attempting to start 'ora.storage' on 'ol6r02'
CRS-2676: Start of 'ora.storage' on 'ol6r02' succeeded
+ echo 'Cluster bounced in node ol6r02'

Cluster bounced in node ol6r02

ASMCMD> showclustermode
ASM cluster : Flex mode enabled
ASMCMD> showclusterstate
Normal

 

 

 


Posted

in

by

Tags:

Comments

One response to “【Oracle Database 12c】12c 常见问题FAQ”

Leave a Reply

Your email address will not be published. Required fields are marked *