oracle12C新特性--PDB

一、oracle12c新特性

oracle12c出了一个新特性,实例与数据库是一对一或者一对多的关系。

举个栗子:

① 你有一个四方桌,那么这个四方桌就是一个实例,也就是你安装的oracle12c产品,我们称之为CDB(container database)。四方桌肯定有很多的抽屉,假如编个号,1号抽屉、2号抽屉、3号抽屉,那么我们把这些抽屉称之为PDB(pluggable database)。这个PDB就是所谓一(CDB)对多(PDB)的多方,也就是数据库了。感觉和mysql的创建多个数据库差不多一个意思。

② 在上图中,最上面是Root(CDB$ROOT),明显能看出,这CDB就是所有的PDB的根,所有的PDB都是插在上面的嘛。因此根容器用来做所有容器的跟,用来对每个PDB进行统一管理,sqlplus / as  sysdba连接进来默认是连接的根容器,需要切换到其他的PDB容器才可以对单独的PDB操作。其中有 system数据文件、sysaux数据文件、(undo数据文件、temp数据文件、redo、控制文件)。一般不存放生产数据文件。

③ 图中有一个Seed(PDB$SEED),假如就是我们1号抽屉了,那么这个1号抽屉Seed(PDB$SEED)就是作为创建新PDB的模板,Seed种子嘛。种子容器作为插入PDB的模板而存在,每个CDB都有一个种子容器,且不可对其中对象进行修改。其中有 system数据文件、sysaux数据文件、其他数据文件。

④ 2号和3号抽屉就是我们的PDB了,新插入的容器也就是PDB,该容器用来存放数据库。其中有 system数据文件、sysaux数据文件、其他数据文件。12c中可以插入多个容器进行统一管理,来减少BDA的工作量。其中的数据库可以插入或拔出。

二、创建新的PDB

① 使用命令sqlplus登录数据库,注意在PL/SQL中登录,不列语句不生效

② 查询该容器是CDB 还是非CDB

SQL> select name,cdb,open_mode,con_id from v$database;

NAME               CDB    OPEN_MODE                                    CON_ID
------------------ ------ ---------------------------------------- ----------
ORCL               YES    READ WRITE                                        0

③ 查看当前用户登录的容器

SQL> show con_name;

CON_NAME
------------------------------
CDB$ROOT

④ 查看所创建的PDB

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDBORCL                        MOUNTED
         4 PDB1                           READ WRITE NO

⑤创建新的PDB

create pluggable database pdb2 admin user pdb2 identified by pdb2 file_name_convert=
('D:\development\oracle12\oracle\oradata\orcl\pdbseed','D:\development\oracle12\oracle\oradata\orcl\pdb2\');

注意上面的两个目录需要对应你自己安装的数据库目录,D:\development\oracle12\oracle\oradata\orcl\pdb2\ 这个就是新的PDB数据库目录。注意,因为我已经创建了一个名为pdb1的数据库,这里我创建的名为pdb2。这个名字可以随便叫什么

SQL> create pluggable database pdb2 admin user pdb2 identified by pdb2 file_name_convert=
('D:\development\oracle12\oracle\oradata\orcl\pdbseed','D:\development\oracle12\oracle\oradata\orcl\pdb2\');

插接式数据库已创建。

SQL>

⑥ 启动新创建的数据库

SQL> alter pluggable database pdb2 open;

插接式数据库已变更。

SQL>

⑦ 将当前连接转到PDB2

SQL>  alter session set container=pdb2;

会话已更改。

SQL>

⑧给PDB2分配表空间


SQL> create tablespace users datafile 'D:\development\oracle12\oracle\oradata\orcl\PDB2\users02.dbf' size 100M;

表空间已创建。

SQL>

⑨配置监听文件

D:\development\oracle12\oracle\product\12.1.0\dbhome_2\network\admin\tnsnames.ora

D:D:\development\oracle12\instantclient_19_3\tnsnames.ora

PDB2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PDB2)
    )
  )

D:\development\oracle12\oracle\product\12.1.0\dbhome_1\NETWORK\ADMIN\listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
      (SID_NAME = ORCL)
    )
   (SID_DESC=
      (GLOBAL_DBNAME = PDB2)
      (SID_NAME = PDB2)
    )
  )

⑩使用命令 tnspring pdb2测试一下

PS C:\Users\laiwenbo> tnsping pdb1

TNS Ping Utility for 64-bit Windows: Version 12.1.0.2.0 - Production on 09-12月-2019 16:34:52

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

已使用的参数文件:
D:\development\oracle12\oracle\product\12.1.0\dbhome_1\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PDB1)))
OK (0 毫秒)

⑪连接到PDB2

sqlplus sys/admin@pdb2 as sysdba 或者 sqlplus pdb2/pdb2@pdb2

⑫给pdb2用户授权

使用sqlplus sys/admin@pdb2 as sysdba 登录

grant resource to pdb2;

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值