• CDB和PDB的创建、连接、启动、关闭


    一、CDB和PDB基本管理

    基本概念:

    Multitenant Environment:多租户环境

    CDB(Container Database):数据库容器

    PD(Pluggable Database):可插拔数据库

    clip_image001[6]

    二、创建

    2.1创建CDB

    PDB包含在CDB中,所以,要创建PDB,必须先创建CDB。一台机器上可以有多个CDB。Oracle软件安装完成后,就可以创建CDB

    启动DBCA  (C:apporacleproduct12.1.0dbhome_1BINdbca.bat)

    clip_image002[4] clip_image003[4] clip_image004[4] clip_image005[4] clip_image006[4]

    2.2创建PDB

    C:apporacleproduct12.1.0dbhome_1BINdbca.bat

    clip_image007[4]

    clip_image008[4] clip_image009[4] clip_image010[4] clip_image011[4] clip_image012[4] clip_image013[4]

    三、连接

    3.1连接CDB

    Sqlplus默认连接CDB

    sqlplus sys/oracle as sysdba

    clip_image014[4]

    3.2连接PDB

    pdb可以通过在CDB中alter session container

    alter session set container=pdb1

    clip_image015[4]

    也可以直接通过tns方式(如下)登录

    sqlplus sys/oracle@pdb1 as sysdba

    其中tnsnames.ora添加

    PDB1 =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = pdb1)
    )
    )
    View Code

    四、启动与关闭

    4.1启动关闭CDB

    SQL> show con_name
    
    CON_NAME
    
    ------------------------------
    
    CDB$ROOT
    
    SQL> shutdown immediate
    
    数据库已经关闭。
    
    已经卸载数据库。
    
    ORACLE 例程已经关闭。
    
    SQL> startup
    
    ORACLE 例程已经启动。
    
    Total System Global Area 5044088832 bytes
    
    Fixed Size 2413072 bytes
    
    Variable Size 1040190960 bytes
    
    Database Buffers 3992977408 bytes
    
    Redo Buffers 8507392 bytes
    
    数据库装载完毕。
    
    数据库已经打开。
    
    SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
    
    CON_ID DBID NAME OPEN_MODE
    
    ---------- ---------- ------------------------------ ----------
    
    2 4122484437 PDB$SEED READ ONLY
    
    3 3387525155 PDB1 MOUNTED
    
    4 3946119498 PDB2 MOUNTED
    
    SQL>
    View Code

    从上面的操作中可以看到数据库启动的时候所有的PDBs的状态为MOUNTED

    4.2启动关闭PDB

    pdb的管理可以在cdb中进行也可以在pdb中进行,如果是cdb中进行,需要PLUGGABLE关键字,如果是在pdb中直接和普通数据库一样

    SQL> show con_name
    
    CON_NAME
    ------------------------------
    CDB$ROOT
    SQL>  select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
    
        CON_ID       DBID NAME                           OPEN_MODE
    ---------- ---------- ------------------------------ ----------
             2 4122484437 PDB$SEED                       READ ONLY
             3 3387525155 PDB1                           MOUNTED
             4 3946119498 PDB2                           MOUNTED
    
    SQL> alter pluggable database pdb1 open;
    
    插接式数据库已变更。
    
    SQL>  select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
    
        CON_ID       DBID NAME                           OPEN_MODE
    ---------- ---------- ------------------------------ ----------
             2 4122484437 PDB$SEED                       READ ONLY
             3 3387525155 PDB1                           READ WRITE
             4 3946119498 PDB2                           MOUNTED
    
    SQL> alter pluggable database pdb2 open;
    
    插接式数据库已变更。
    
    SQL>  select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
    
        CON_ID       DBID NAME                           OPEN_MODE
    ---------- ---------- ------------------------------ ----------
             2 4122484437 PDB$SEED                       READ ONLY
             3 3387525155 PDB1                           READ WRITE
             4 3946119498 PDB2                           READ WRITE
    
    SQL> alter pluggable database pdb1 close;
    
    插接式数据库已变更。
    
    SQL>  select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
    
        CON_ID       DBID NAME                           OPEN_MODE
    ---------- ---------- ------------------------------ ----------
             2 4122484437 PDB$SEED                       READ ONLY
             3 3387525155 PDB1                           MOUNTED
             4 3946119498 PDB2                           READ WRITE
    
    SQL> alter pluggable database pdb2 close;
    
    插接式数据库已变更。
    
    SQL>  select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
    
        CON_ID       DBID NAME                           OPEN_MODE
    ---------- ---------- ------------------------------ ----------
             2 4122484437 PDB$SEED                       READ ONLY
             3 3387525155 PDB1                           MOUNTED
             4 3946119498 PDB2                           MOUNTED
    
    SQL> alter pluggable database all open;
    
    插接式数据库已变更。
    
    SQL> alter pluggable database all close;
    
    插接式数据库已变更。
    
    SQL> alter session set container=pdb1 ;
    
    会话已更改。
    
    SQL>  select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
    
        CON_ID       DBID NAME                           OPEN_MODE
    ---------- ---------- ------------------------------ ----------
             3 3387525155 PDB1                           MOUNTED
    
    SQL> startup
    插接式数据库已打开。
    SQL> shutdown
    插接式数据库已关闭。
    SQL>  select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
    
        CON_ID       DBID NAME                           OPEN_MODE
    ---------- ---------- ------------------------------ ----------
             3 3387525155 PDB1                           MOUNTED
    
    SQL>
    View Code

    4.3自动启动所有PDB

    从上面的操作中可以看到数据库启动的时候所有的PDBs的状态为MOUNTED,在实际应用可以考虑增加如下的触发器使所有的PDBs都处于打开状态。

    create or replace trigger sys.after_startup after startup on database
    begin
    execute immediate 'alter pluggable database all open ' ;
    end after_startup ;

    验证过程

    SQL> create or replace trigger sys.after_startup after startup on database
    
    2 begin
    
    3 execute immediate 'alter pluggable database all open ' ;
    
    4 end after_startup ;
    
    5 /
    
    触发器已创建
    
    SQL> shutdown
    
    数据库已经关闭。
    
    已经卸载数据库。
    
    ORACLE 例程已经关闭。
    
    SQL> startup
    
    ORACLE 例程已经启动。
    
    Total System Global Area 5044088832 bytes
    
    Fixed Size 2413072 bytes
    
    Variable Size 1040190960 bytes
    
    Database Buffers 3992977408 bytes
    
    Redo Buffers 8507392 bytes
    
    数据库装载完毕。
    
    数据库已经打开。
    
    SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
    
    CON_ID DBID NAME OPEN_MODE
    
    ---------- ---------- ------------------------------ ----------
    
    2 4122484437 PDB$SEED READ ONLY
    
    3 3387525155 PDB1 READ WRITE
    
    4 3946119498 PDB2 READ WRITE
    
    SQL>
    View Code

    四、常用SQL

    --查看ORACLE 12C版本
    select * from v$version;
    
    --查看容器名称和ID
    show con_name ;
    
    --查看状态
    select name ,open_mode from v$pdbs ;
    
    --切换container
    alter session set container=pdb1

     参考

    ORACLE-BASE - Multitenant : Overview of Container Databases (CDB) and Pluggable Databases (PDB)

    【ORACLE】ORACLE 12c PDB 基础 - 临渊羡鱼 - 博客频道 - CSDN.NET

    CDB和PDB基本管理 - Ziyoo - 博客园

    Oracle 12C 多租户(Oracle Multitenant)--基本概念-zerocool88888888-ChinaUnix博客

    ORACLE 12C PDB 维护基础介绍 – 提供专业ORACLE技术咨询和支持@Phone:13429648788 - 惜分飞

    Oracle 12c CDB PDB - 丁应思 - 博客园

    Oracle 12c入门第三讲: Oracle 12c基本体系结构 (3) pdb,cdb元数据关系 ...,数据智能网,Oracle 12C

    浅谈Oracle数据库12c PDB技术 - Oracle安装与升级 - TechTarget数据库

  • 相关阅读:
    数据库被注入daxia123原因及解决办法
    Alipay数字证书管理员权限问题
    关闭数据库的xp_cmdshell命令以防止黑客攻击
    如何使用JavaScript来写ASP程序
    VBscript操作DOM
    如何做好性能压测丨压测环境设计和搭建
    10倍性能提升!DLA SQL推出基于Alluxio的数据湖分析加速功能
    高德地图驾车导航内存优化原理与实战
    「直播实录」中英数据库专家谈:数据库的过去、未来和现在
    Flink 助力美团数仓增量生产
  • 原文地址:https://www.cnblogs.com/xqzt/p/4472146.html
Copyright © 2020-2023  润新知