Oracle 12c多租户的一些日常简单维护

1.多租户(multi-tenant)介绍
  多租户是Oracle 12c版本中推出的一个新特性,按官方的说法是基于云的理念,我们不去讨论云的概念。简单来讲,多租户架构就是数据库中一个容器database(CDB)中包含多个可插拔DB(Pluggable Database)。简单来说,就是在一个大的容器中,包含有多个数据库。


2.Oracle中的CDB和PDB
  一个CDB中含有3种类型的容器:
  root容器,包含元数据的信息
  seed容器,主要是创建一个新的pdb时,提供一个初始化的模版
  pdb,即可插拔的数据库。包含有用户数据,用户的数据都建立在这些数据库中,对于用户来说,他们并不知道访问的是一个pdb还是一个独立的instance数据库


3.CDB和PDB中的日常维护管理命令
  1)查看数据库是否为cdb
     简单的方法就是查询v$datbase.cdb。CDB是Oracle 12c中新提出的特性,在12c 版本v$database视图中新增加了相应的cdb的字段。


SQL> select cdb from v$database;


CDB
---
YES


  2)创建PDB数据库
    创建PDB可以通过以下几种方式:


   a.通过seed新建一个PDB数据库
CREATE PLUGGABLE DATABASE salespdb ADMIN USER salesadm IDENTIFIED BY password
  STORAGE (MAXSIZE 2G MAX_SHARED_TEMP_SIZE 100M)
  DEFAULT TABLESPACE sales 
    DATAFILE '/disk1/oracle/dbs/salespdb/sales01.dbf' SIZE 250M AUTOEXTEND ON
  PATH_PREFIX = '/disk1/oracle/dbs/salespdb/'
  FILE_NAME_CONVERT = ('/disk1/oracle/dbs/pdbseed/', '/disk1/oracle/dbs/salespdb/');


也可以用下面的语句来创建:
CREATE PLUGGABLE DATABASE salespdb ADMIN USER salesadm IDENTIFIED BY password FILE_NAME_CONVERT = ('/disk1/oracle/dbs/pdbseed/', '/disk1/oracle/dbs/salespdb/');


   
   b.通过克隆一个现有的PDB数据库或非CDB数据库(non-CDB)来创建一个新的PDB
通过一个现有的pdb1创建新的pdb2
CREATE PLUGGABLE DATABASE pdb2 FROM pdb1 
  FILE_NAME_CONVERT = ('/disk1/oracle/pdb1/', '/disk2/oracle/pdb2/‘);


通过non-cdb创建pdb
(1)首先需要将non-cdb置为只读
(2)创建连接指向non-cdb的dblink
(3)创建pdb
  CREATE PLUGGABLE DATABASE pdb2 FROM mydb@mydb_link FILE_NAME_CONVERT = ('/disk1/oracle/non-cdb1/', '/disk2/oracle/pdb2/‘);
  CREATE PLUGGABLE DATABASE pdb2 FROM NON$CDB@mydb_link FILE_NAME_CONVERT = ('/disk1/oracle/non-cdb1/', '/disk2/oracle/pdb2/‘);
  上面这两个语句是等效的。
(4)在pdb上运行@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql脚本




   c.使用XML元数据描述文件将数据库插入到CDB中
     生成XML描述文件
     exec dbms_pdb.DESCRIBE('/home/oracle/pdbprod3_describe.xml','PDBPROD3');


     
     DROP PDB
     drop pluggable database PDBPROD3 keep datafiles;


DECLARE
    compatible CONSTANT VARCHAR2(3) :=
CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
pdb_descr_file => '/home/oracle/pdbprod3_describe.xml',
pdb_name       => 'PDBPROD3')
WHEN TRUE THEN 'YES'
ELSE 'NO'
END;
BEGIN
  DBMS_OUTPUT.PUT_LINE(compatible);
END;



将PDBPROD3中的数据文件目录MOVE为PDBTEST01(数据文件中存在PDBPROD3也改为PDBTEST01);


将数据库改名插入到CDB中,使用NOCOPY的方式:
CREATE PLUGGABLE DATABASE PDBTEST01 USING '/home/oracle/pdbprod3_describe_new.xml'
  SOURCE_FILE_NAME_CONVERT = ('PDBPROD3', 'PDBTEST01')
NOCOPY;




   d.使用DBMS_PDB方式
    将Non-CDB迁移到PDB数据库有几种方式
    (1).通过克隆的方式进行迁移,即第二种方式中使用dblink方式进行创建,这种方式需要PDB和Non-CDB数据库的版本都要高于12.1.0.2,如果没有12.1.0.2,则需要将数据库升级到12.1.0.2之后的版本
    (2).通过DBMS_PDB的方式生成XML元数据文件进行迁移。这种方式要求Non-CDB数据库的版本高于12c。该节我们主要介绍这种方法
    (3).使用数据泵EXPDP/IMPDP的方式。这种方式要求Non-CDB数据库的版本高于11.2.0.3,在使用该方式的时候,expdp数据时,需要添加VERSION参数version=12。如果Non-CDB数据库版本低于11.2.0.3,则可以使用传输表空间的方式进行迁移
    (4)使用GoldenGate的方式进行迁移




    我们主要看一下使用DBMS_PDB的方式将Non-CDB转化为PDB对方式:
    (1)将Non-CDB数据库置为只读
    (2)生成XML描述文件。exec dbms_pdb.describe('/home/oracle/prod4_describe.xml');
    (3)关闭Non-CDB数据库
    (4)在CDB数据库中创建PDB。
         CREATE PLUGGABLE DATABASE ncdb USING '/home/oracle/prod4_describe.xml' COPY FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/PROD4','/u01/app/oracle/oradata/PRODCDB/ncdb');
        创建完成之后不要立即打开PDB,还需要执行noncdb_to_pdb.sql脚本
     (5)执行@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql脚本
         alter session set container=NCDB;
         @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
      (6) 确认没有问题后,打开数据库
          alter pluggable database NCDB open;
     




3)删除PDB
  不保留数据文件:
  drop pluggable database pdb_name including datafiles; 


  保留数据文件:首先将数据库unplug,然后drop keep datafiles
  alter pluggable database PDBPROD2 unplug into '/home/oracle/pdbprod2_describe.xml';
  drop pluggable database pdb_name keep datafiles;




4)查看PDB
  show pdbs
  或查看dba_pdbs视图


5)切换pdb
  alter session set container=pdb_name;   —切换到某个PDB
  alter session set container=cdb$root;   —切换到cdb root


  如果需要创建全局用户,角色时,在cdb root下执行创建语句
  




admin user 这个用户是做什么用的?可以删除,赋予的权限是pdb_dba

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23850820/viewspace-2079301/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23850820/viewspace-2079301/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值