• oracle 12c 13姨


    搞了一下oracle 12c。有些体会还是先记下来。

    12c搞搞新意思,弄了个CDB(容器数据库,可不是商务中心CBD哟)和PDB(可插拔数据库)。PDB插在CDB里。

    简单而言,CDB就是一个数据库实例,而PDB就是实例里一个个的数据库。这跟SQL SERVER是类似的。据说在oracle 11g或以前,一个数据库实例只能承载一个数据库(甚至一个数据库分布于不同的数据库实例中),然后不同的账户对应不同的表空间,在这里,表空间就类似SQL SERVER的数据库。

    有位大虾说的好:“其实大家如果对SQL SERVER比较熟悉的话,这种CDB与PDB是不是感觉和SQL SERVER的单实例多数据库架构是一回事呢。像PDB$SEED可以看成是master、msdb等系统数据库,PDBS可以看成用户创建的数据库。而可插拔的概念与SQL SERVER中的用户数据库的分离、附加其实就是那么一回事。看来ORACLE也“抄袭”了一把SQL SERVER的概念,只是改头换面的包装了一番。

    这里写图片描述

    以下是一些操作语句,仅作个人学习记录

    1、创建可插拔数据库

    可以通过界面来操作,命令行则如下:

    --'pdbseed'是模板数据库 pdb$seed 所在路径最后一个文件夹的名称。猜测如果数据库文件存放在系统默认路径下,则可以用最后一个文件夹来作为参数。本来应该是 file_name_convert('模版库路径','新建库路径')
    
    CREATE PLUGGABLE DATABASE HNHY12 ADMIN USER hydg IDENTIFIED BY hydg file_name_convert=('pdbseed','hnhy');

    原本我开始是酱紫写的:

    CREATE PLUGGABLE DATABASE gdlhjd ADMIN USER coder IDENTIFIED BY coder STORAGE(MAXSIZE 2G MAX_SHARED_TEMP_SIZE 100M) DEFAULT TABLESPACE hydg DATAFILE 'E:GDLHJDgdlhjd.dbf' SIZE 25M AUTOEXTEND ON;

    这句代码会报错,因为还没有指定file_name_convert

    file_name_convert是什么鬼?我找来找去,在网上寻寻觅觅,都找不到确切的答案。隐约得到的大意是,按照模板来生成PDB。这个倒好理解,SQL SERVER里就是这样的,有master、msdb等系统数据库。

    file_name_convert=(‘模板路径’,’新PDB所在路径’)
    如果路径为oracle默认存放路径,可以简化为
    file_name_convert=(‘模板路径所在文件夹名称’,’新PDB所在文件夹名称’)

    问题是,既然是系统模板,为啥还要用户指定?我们哪知道是哪个模板?或者模板文件存放在哪个路径?

    可以运行以下语句,获得pdb$seed的文件路径

    select * from v$dbfile;

    细想,oracle的本意是,可以根据模板库来生成新的库,并且这个模版库不一定是系统默认那个。这点比SQL SERVER要灵活。但用途不大,且难度大。

    2、激活PDB

    SQL> col pdb_name for a20
    SQL> select pdb_name,status from dba_pdbs;
    SQL> alter pluggable database gdlhjd open;
    SQL> select pdb_id,pdb_name,dbid,status,creation_scn from dba_pdbs;
    SQL> alter pluggable database HNHY12 open;

    有一个问题,就是这样的激活是临时性的,下次数据库重启的时候,PDB只是挂载(mounted)状态,仍然需要手动运行 开启语句。一劳永逸的做法是保存这个开启的状态:

    col pdb_name for a20
    
    select pdb_name,status from dba_pdbs;
    
    show pdbs;
    
    alter pluggable database PDBGZFBC open;--开启
    
    show pdbs;
    
    ALTER PLUGGABLE DATABASE PDBGZFBC SAVE STATE;--保存开启状态

    3、删除PDB

    alter pluggable database hnhy12 close;
    
    drop pluggable database hnhy12 including datafiles;

    但好像,物理文件并没删除。

    4、为默认用户指定表空间

    请注意,以下语句必须切换到相应插拔数据库下:
    请注意,以下语句必须切换到相应插拔数据库下:
    请注意,以下语句必须切换到相应插拔数据库下:

    创建PDB语句中有指定管理(?)账户

    CREATE PLUGGABLE DATABASE HNHY12 ADMIN USER hydg IDENTIFIED BY hydg 。。。

    而我们通常都是创建用户的时候,同时指定表空间。那么创建PDB之时,这个ADMIN USER是否已经有表空间了呢?似乎并没有。

    咋办?

    建一个表空间,然后指定给它即可(记得先切换数据库。我们创建数据库的时候,应该是在容器数据库里;那么在这个新建的PDB里建表空间,要先切换到相应的PDB):

    create tablespace hydg datafile 'D:HNHYdbHNHY12Chydg.ora' size 500m autoextend on;
    
    ALTER USER hydg DEFAULT TABLESPACE hydg;

    参考文章:
    ORACLE 12C新特性——CDB与PDB

  • 相关阅读:
    ~随笔A007~html中input输入框的字数限制、同步input的输入内容至div中
    ~随笔A006~微信扫码的授权、用户绑定、关注公众号、消息反馈
    【CV】实验二:特征检测与匹配
    【笔记】DLX算法及常见应用
    【笔记】和算法无关的那些东东
    【笔记】康拓展开&逆康拓展开
    【笔记】离散对数
    【笔记】Shift-And算法&Shift-OR算法
    【模板】中缀表达式求值
    【笔记】数据库系统
  • 原文地址:https://www.cnblogs.com/leftfist/p/6808731.html
Copyright © 2020-2023  润新知