Oracle 12c中DBCA搭建备库体验(r11笔记第92天)

   Oracle 12c中DBCA有一个特性看起来蛮有意思,就是直接通过DBCA来搭建Data Guard,当然这么说也有点噱头,我们来实际看看。

  Oracle提供的官方命令结构如下:       dbca -createDuplicateDB
        -gdbName global_database_name
        -primaryDBConnectionString easy_connect_string_to_primary
        -sid database_system_identifier
        [-createAsStandby
            [-dbUniqueName db_unique_name_for_standby]]
        [-customScripts scripts_list]    至少我开始听到的时候是很兴奋的,真正看到这个帮助命令的时候还是很欣喜的,感觉一种要革命化的冲动,恨不得现在就在生产中马上投入使用,实际上我看简单了。

    部署两套数据库软件,有了静默安装,有了克隆,这些都是分分钟的事情。    使用dbca的help得到的命令解释比官方文档更加细致,还提供了参数示例,这个很难得。$ dbca –silent -createDuplicateDB -help
        -createDuplicateDB - Command to Duplicate a database.
                -gdbName <Global database name>
                -primaryDBConnectionString <EZCONNECT string to connect to primary database for example "host:port/servicename">
                -sid <Database system identifier>
                [-createAsStandby <Option to create a standby database>]
                        [-dbUniqueName <db_unique_name for standby db>]
                [-customScripts <A comma separated list of SQL scripts which needs to be run post db creation.The scripts are run in order they are listed>]
                [-datafileDestination <Destination directory for all database files>]
                [-initParams <Comma separated list of name=value pairs>]
                        [-initParamsEscapeChar <Specify escape character for comma when a specific initParam has multiple values.If the escape character is not specified backslash is the default escape character>]

然后我简单修改了下就开始了DBCA,没想到提示了下面的信息。

$ dbca –silent -createDuplicateDB -primaryDBConnectionString 
newtest.oracle.com:1521/test12c -gdbName test12c -sid test12c
-initParams instance_name=test12c –createAsStandby
DISPLAY not set.
Set DISPLAY environment variable, then re-run.   这个刚开始感觉还挺纳闷,最后发现我这个服务器上安装了多套环境,11g,12c并存,我竟然使用了11g的ORACLE_HOME,所以这个是个开篇的简单问题,我们简单跳过.

    简单调整后继续尝试,发现这次的错误让我大跌眼镜。

$ dbca -silent -createDuplicateDB -primaryDBConnectionString 
newtest.oracle.com:1521/test12c -gdbName test12c -sid test12c
-initParams instance_name=test12c -createAsStandby -dbUniqueName
stest12c
Enter SYS user password:
[FATAL] [DBT-16057] Specified primary database is a container database (CDB).
   CAUSE: Duplicate database operation is supported only for non container databases.
    竟然抛出了一个致命错误,而主要原因就是DBCA不支持容器复制,在非容器数据库环境下才可以。

    带着疑问,再次打开文档,发现这个命令开篇就解释的很清楚了,明确表示了只支持非容器数据库。The DBCA command qualifier used to create the physical standby database is createDuplicateDB .
DBCA can only be used to create standby databases for non-multitenant primary databases.    12c的亮点之一就是容器,而这个场景中我们只能使用非容器模式,然后搭建备库,这个让我的积极性消失了大半。

    究其原因,其实和12cR2里面的PDB层面的特殊定制有关。有一个相关的参数ENABLED_PDBS_ON_STANDBY,在PDB的场景下,可做多重定制,实际上对线上应用来说,和我的预期还有一些差别。

   

   那么我们牵强一下,是否能够轻松完成非容器数据库的Duplicate呢。这个地方实际上也让我不大满意。

我重新dbca初始化了1套环境,指定为非容器模式。

dbca -silent -createDatabase -templateName
$ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc -gdbname
test12cs -sid test12cs  -characterSet UTF8  -createAsContainerDatabase
false -sysPassword oracle -systemPassword oracle然后继续使用上面的命令来尝试创建DG,产生了下面的日志。

Listener config step
33% complete
Auxiliary instance creation
66% complete
RMAN duplicate
DBCA Operation failed.最后还是失败了,这个地方牵扯到一些网络的配置原因。

   当然翻看日志可以很快定位出一些方向,但是实际上的操作让我感觉到,网络的配置不是我期望的那么规范,而最重要的是,最后完成的不是DG的搭建,就如同这个命令选项所说,只是Duplilcate,Data Guard的配置没有,主备库都不用自动启用DG Broker,对于搭建Data Guard的一个最佳实践其实DG Broker就是一个很不错的选择,而在这里似乎没有找到我期望中的亮点。

    所以我感觉这个特性目前对于我而言,没有想象中那么好。而我手工尝试搭建了下,实际上几分钟也能达到同样那个命令的效果,因为只在duplicate部分截止,后期的工作职能通过定制脚本等方式来实现了。与其如此,还不如用我自己之前写脚本,最起码能够达到基本的可控和规范。

    这个特性本身是一个不错的想法,但是在这个特定的版本环境下,竟然有点华而不实,而退开一步来看,其实有些配置还达不到目前我们要求的一个配置要求,所以了解学习一下还是必要的,但是不隆重推荐给大家使用。

   

  

时间: 2024-10-25 03:10:45

Oracle 12c中DBCA搭建备库体验(r11笔记第92天)的相关文章

Oracle 12c Data Guard搭建(一)

    对于使用12c的PDB,如果想尽快熟悉,掌握,那就是和业务挂钩,让它跑在业务上.当然是在能够基本驾驭它的前提下,要不就真成了甩手掌柜.11g可以玩得很好,12c里面也差不到哪里去.     摆在我面前的一个选择就是字符集,尽管有大量的PDB需要整合进来,但是我在分析了几套需要整合的数据库之后,发现字符集还是一个很重要的考量.比如几个已有的旧版本的数据库字符集为 UTF-8 US7ASCII   ZHS16GBK  ZHS16GBK,折中一些,根据实际情况还是选用ZHS16GBK,如果是个

数据库内核月报 - 2015 / 08-PgSQL · 答疑解惑 · RDS中的PostgreSQL备库延迟原因分析

背景 在RDS环境中,多租户使用同一台主机是很常见的事情,为了隔离用户资源,有很多手段,例如使用虚拟机,或者CGROUP技术.以CGROUP为例,可以控制进程的CPU使用.内存使用.块设备的IOPS或者吞吐速率等资源使用.限制资源的好处是可以在共用的硬件层面为多个用户提供承诺的性能指标.当然这种方法也有一定的弊端,例如当用户需要运行消耗较多资源的SQL的时候,无法利用机器的空闲资源,因为它被限制住了.还有一些弊端可能导致RDS的不稳定,本文将展开讨论其中的弊端之一,资源限制是如何导致备库延迟的.

内存表-求高手解答,ORACLE 12C 中新加功能InMemory疑问

问题描述 求高手解答,ORACLE 12C 中新加功能InMemory疑问 在SQLPLUS中设置完一些表为InMemory之后,后面进行维护时,有没有方法可以获取到哪些表为InMemory表 我测试重复设置InMemory和no InMemory,SQLPLUS中也不会有错误信息 SQL> alter table test no inmemory; Table altered. SQL> alter table test no inmemory; Table altered. SQL>

oracle中11gR2 dataguard 备库文件损坏解决案例

某客户的一套11gR2 dataguard环境出现异常,检查发现是备库出现文件损坏,且无法正常情况,已经超过1个多月没同步了. 我们先来看下备库的日志: .......省略部分内容 See Note 411.1 at My Oracle Support for error and packaging details. Slave exiting with ORA-600 exception Errors in file /u01/app/oracle/diag/rdbms/crjnew/crjn

Oracle数据库中的基本建库操作详解_oracle

图形建库: 1. 确定是否存在要建的库    查看 $ORACLE_BASE/admin/和$ORACLE_BASE/oradata 2. 运行dbca 3. 选择新建库--General Purpose(通用库)模版--Global Database Name:库名.域名,可以只使用 库名--SID区分大小写------数据路径选择,模版默认的是$ORACLE_BASE/oradata/dababase--备份数据的路径--内存分配(SGA专用内存,事务处理为主:PGA系统内存,数据为主)|S

Oracle 12c中identity column学习笔记

在12c之前,如果想实现column的自动增长,通常是通过sequence来实现,然而这个问题在12c中得到了解决,Oracle推迟了identity column功能,该功能完美的解决了之前的问题,下面是我的简单测试,供参考! SQL> alter pluggable database all open;   Pluggable database altered.   SQL> select name,open_mode from V$pdbs;   NAME                

Oracle 12c中JOB运行失败的简单处理(r11笔记第66天)

在之前简单分析过一个12c中数据字典的小问题. Oracle 12c数据字典的小问题(r11笔记第49天) 最近查看邮件,12c的一个PDB还是存在JOB运行异常的情况,因为是测试环境,不是业务类的JOB,这个问题就给了我一些时间来修复. 首先因为数据字典cdb_scheduler_job_run_details的问题,还不能一下子就查出数据.我们分阶段来完成这个工作,即分成几条SQL语句来查. 首先查看PDB中的JOB执行情况.可以看到con_id=8的PDB存在失败的JOB SQL> sel

Oracle中的PGA监控报警分析(r11笔记第97天)

最近接到一个数据库报警,让我颇有些意外,这是一个PGA相关的报警.听起来感觉是应用端的资源调用出了问题. 报警内容大体如下: 报警内容: PGA Alarm on alltest ------------------------------------报警级别: PROBLEM ------------------------------------监控项目: PGA:6118.6 这是一个12cR1的环境,是一套测试环境,确切的说是多套环境整合后的一套大的测试环境,里面含有近8个PDB,也就是

Oracle Data Guard延迟的几个可能(r11笔记第69天)

     Oracle Data Guard中很可能出现延迟的情况,而数据一旦出现延迟就意味着丢数据.退一步来说丢数据总比数据乱了好,但是回过头来,能不丢数据但是丢了,这就有些说不过去了.     因为预防人为误操作等,可能有些环境中会特意设置一个延迟,基本就是下面的设置方法: 方法1: alter database recover managed standby database delay 120 disconnect from session;方法2: alter system set l