• oracle 12C 之 Clone 数据库


    oracle12C Clone 数据库

    1 关于Clone技术

    本文包含 针对12CR1,12C-19C 两种版本下clone操作.

    11.2.0.2 及之前的版本中,并没有Clone db 的技术,而所谓的Clone, 仅限于RDBMS ,执行一个perl 脚本。

    Clone 技术方便我们快速部署数据库软件和数据库。但是对于 Oracle 10G /11G 来说,安装部署时间并没有太大的提升。

    12C 以后,Clone 技术,可以很方便的将我们的非cdb/pdb 实例转换成 CDB中的PDB.

    2 12CR1

    从其他pdb clone 一个新的pdb 。在12C R1 中执行clone 操作,需要将源端pdb 置为read only 状态。要么生产系统 不允许,要么运维人员受熬夜之苦。

    2.1 将源Pdb 置为只读

    SQL> col name for a10
    SQL> select name,open_mode,restricted from v$containers;
    
    NAME       OPEN_MODE  RES
    ---------- ---------- ---
    CDB$ROOT   READ WRITE NO
    PDB$SEED   READ ONLY  NO
    CBOSS      READ WRITE NO
    
    SQL> alter pluggable database cboss close;
    插接式数据库已变更。
    SQL> alter pluggable database cboss open read only;
    插接式数据库已变更。
    
    

    2.2 clone 新的pdb

    SQL> create pluggable database amscenter from cboss file_name_convert=('/u01/oradata/BOSS/cboss','/u01/oradata/amscenter') ;
    插接式数据库已创建。
    
    SQL> select name,open_mode,restricted from v$containers;
    
    NAME       OPEN_MODE  RES
    ---------- ---------- ---
    CDB$ROOT   READ WRITE NO
    PDB$SEED   READ ONLY  NO
    CBOSS      READ WRITE NO
    AMSCENTER  READ WRITE NO
    

    2.3 恢复原库

    alter pluggable database cboss close;
    alter pluggable database cboss open;
    

    3 12CR2-19C

    12C R2 clone 技术得到了提升,原实例不再需要以readonly 打开。可以在线Clone。

    3.1 从本地clone

     

    3.1.1 从pdb$seed 创建新的pdb

    从pdb$seed 创建新的Pdb ,是从种子数据库直接将文件复制过来。只包含了系统表空间。严格来说, 这并不是clone技术范畴内的。

    CREATE PLUGGABLE DATABASE osp ADMIN USER system IDENTIFIED BY System123
    -- STORAGE (MAXSIZE 2G)
    -- DEFAULT TABLESPACE ypdb1
    -- DATAFILE '/u01/app/oracle/oradata/ora12c/ypdb1/ypdb01.dbf' SIZE 100M AUTOEXTEND ON
    PATH_PREFIX = '/u01/app/oradata/osp/'
    FILE_NAME_CONVERT = ('/u01/app/oradata/BOSS/pdbseed',
    '/u01/app/oradata/osp);
    -- 若未指定管理用户的默认表空间,则默认使用system表空间作为管理用户的默认表空间。
    

    3.1.2 从其他PDB clone 新pdb

    从本地pdb clone 出新pdb, 与从pdb$seed clone 类似。

    alter system set db_create_file_dest='/u01/app/oradata/amscenter';
    create pluggable database amscenter from cboss;
    alter pluggable database amscenter open;
    

    3.2 从远程clone

     

    3.2.1 要求

    该操作有一些要求。源和目标 CDB 平台必须满足以下要求:

    • 相同的 endian
    • 相同的字符集和国家字符集,或者目标库兼容源库。
    • 源库是否启用local undo(源端CDB 若未使用,则必须置为只读)(参见12cr1)。
    • 源库是否启用归档,否则需要将源库置为只读模式(参见12cr1)。
    • 本地创建public database link 指向源库。
    1. 查看源库的字符集
      col parameter for a30
      col value for a30
      select * from nls_database_parameters where parameter='NLS_CHARACTERSET'
      or parameter='NLS_LANGUAGE' or parameter='NLS_NCHAR_CHARACTERSET';
         -- 或者
      select userenv('language') from dual;
      
    2. 查看源库是否启用 local undo
      COLUMN property_name FORMAT A30
      COLUMN property_value FORMAT A30
      
      SELECT property_name, property_value
      FROM database_properties
      WHERE property_name = 'LOCAL_UNDO_ENABLED';
      
      PROPERTY_NAME PROPERTY_VALUE
      ------------------------------ ------------------------------
      LOCAL_UNDO_ENABLED TRUE
      
    3. 查看源库是否启用归档
      select log_mode from v$database;
      
      LOG_MODE
      ------------
      ARCHIVELOG
      
    4. 创建public database link
      • 源库创建用户

        create user pdbclone identified by pdbclone;
        grant create session,create pluggable database to pdbclone;
        
      • 目标库创建db_link

        create public database link rdb connect to pdbclone identified by pdbclone using '&ip:&port/&service_name';
        

    3.2.2 源库为CDB

    create pluggable database newpdb from &source_pdb@rdb file_name_convert=('&source_path,'&target_path') ;
    

    3.2.3 源为Non-CDB

    源库为非CDB时,clone至pdb ,需要额外执行脚本,然后再打开数据库。

    create pluggable database pdb_test from NON$CDB@rdb create_file_test='&data_file_path';
    alter session set container=pdb_test;
    @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb;
    alter pluggable database pdb_test open;
    

    Author: halberd.lee

    Created: 2020-06-10 Wed 17:31

    Validate

  • 相关阅读:
    Spark Standalone集群搭建
    虚拟机Ubuntu磁盘扩容
    Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not runn
    centos脚本编写
    centos中的shell编程
    从零开始部署hadood分布式数据平台!
    从0开始部署hadoop HA集群,使用zk实现自动容灾
    zookeeper动物园管理员学习笔记
    hive UDF
    创建视图
  • 原文地址:https://www.cnblogs.com/halberd-lee/p/13086874.html
Copyright © 2020-2023  润新知