oracle 19c创建pdb,删除插入,pdb连接

一.创建pdb

命令行的方式可以使用PDB$SEED这个种子容器生成该容器的副本,从而快速创建新的PDB

1.如果使用的是OMF,例如是集群环境,直接使用create pluggable database命令创建PDB,如下:

create pluggable database pdb1 admin user cz identified by 123456;

这里由于使用的是OMF,可以不指定新建的PDB数据文件路径,则会将数据文件存放到DB_CREATE_FILE_DEST下的GUID目录下(GUID可以在v$pdbs中查询到).

还可以指定文件的创建路径,例如:

create pluggable database pdb1 admin user pdb1admin identified by 123456 create_file_dest='+PDBDATA';

 2.如果使用的是非OMF环境,则需要指定PDB数据文件的目录.由于是从PDB$SEED进行的克隆,所以需要指定一个FILE_NAME_CONVERT参数,将PDB$SEED的数据文件目录进行转换.

我的PDBSEED文件目录为

[oracle@dg2 pdbseed]$ pwd
/u01/app/oracle/oradata/ORCL/pdbseed
[oracle@dg2 pdbseed]$ ll
total 712148
-rw-r-----. 1 oracle oinstall 335552512 May 15 03:57 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 283123712 May 15 03:57 system01.dbf
-rw-r-----. 1 oracle oinstall  37756928 May 15 03:50 temp012024-05-15_03-41-23-314-AM.dbf
-rw-r-----. 1 oracle oinstall 104865792 May 15 03:57 undotbs01.dbf

则创建新的PDB语法如下:

create pluggable database hrpdb admin user test identified by 123456 file_name_convert=('/u01/app/oracle/oradata/ORCL/pdbseed','/u01/app/oracle/oradata/ORCL/hrpdb');

这样创建的PDB默认只创建了SYSTEM,SYSAUX,TEMP,UNDO表空间(19c环境)

还可以进行简写,如下:

create pluggable database pdb2 admin user lihua identified by 123456 file_name_convert=('pdbseed','pdb2');
SQL> create pluggable database pdb2 admin user lihua identified by 123456 file_name_convert=('pdbseed','pdb2');

Pluggable database created.

pdb2已创建
[oracle@dg2 pdb2]$ ll
total 706640
-rw-r----- 1 oracle oinstall 335552512 May 16 11:18 sysaux01.dbf
-rw-r----- 1 oracle oinstall 283123712 May 16 11:18 system01.dbf
-rw-r----- 1 oracle oinstall  37756928 May 16 11:17 temp012024-05-15_03-41-23-314-AM.dbf
-rw-r----- 1 oracle oinstall 104865792 May 16 11:18 undotbs01.dbf
[oracle@dg2 pdb2]$ 

 上面的意思,默认从pdb$seed容器进行拷贝,并且将pdb$seed的数据文件路径中的pdbseed都替换为pdb2.

查看刚生成的pdb2  状态为mount

SQL> show pdbs;

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 ORCLPDB			  MOUNTED
	 4 HRPDB			  READ WRITE NO
	 5 PDB2 			  MOUNTED
	 6 PDB1 			  READ WRITE NO

需要手工将PDB进行open,之后pdb才会创建刚刚的默认表空间和数据文件

 alter pluggable database pdb2 open;

再次查看状态,已经是打开状态

SQL> show pdbs;

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 ORCLPDB			  MOUNTED
	 4 HRPDB			  READ WRITE NO
	 5 PDB2 			  READ WRITE NO
	 6 PDB1 			  READ WRITE NO

3.还可以从其他的PDB(非PDB$SEED)容器进行克隆,生成新的PDB

使用此方法需要注意:

    i)如果使用的是12.1版本,则源PDB必须处于只读模式.如果使用的是12.2版本,则源PDB可以处于打开状态,只要CDB处于归档模式,并且使用本地的UNDO管理(默认选项)

    ii)CDB中的每一个PDB必须被唯一标识

    iii)一旦克隆完毕,新PDB至少需要以读写模式打开一次,以便进行后继的操作

    1)在OMF环境中的克隆

    在OMF中克隆PDB非常简单,无需指定额外的子句即可.例如克隆PDB1来创建PDB5

CREATE PLUGGABLE DATABASE PDB5 FROM PDB1;
alter pluggable database pdb5 open;

    2)在非OMF环境中克隆

    同意在非OMF环境中克隆需要指定FILE_NAME_CONVERT子句,例如克隆hrpdb来创建pdb3

 create pluggable database pdb3 from hrpdb  file_name_convert=('/u01/app/oracle/oradata/ORCL/hrpdb','/u01/app/oracle/oradata/ORCL/pdb3');


    注意这里的文件名称转换是将hrpdb转换成pdb3

二.删除PDB


删除PDB之前需要将PDB先关闭,使用drop pluggable database命令,如下:

SQL> alter pluggable database pdb3 close;
 
Pluggable database altered.
 
SQL>  drop pluggable database pdb3 including datafiles;
 
Pluggable database dropped.


如果是删除PDB一般使用including datafiles则会将数据文件一起删除.

还可以使用keep datafiles为保留数据文件,默认如果不添加任何参数即为keep datafiles,但是注意keep datafiles则必须先将PDB拔出,所以一般是用在拔出和插入PDB场景下.

三.拔出和插入PDB


1.拔出PDB

    1)关闭PDB

SQL> alter pluggable database pdb2 close immediate;
 
Pluggable database altered.


    2)拔出PDB

    拔出PDB的时候指定xml位置,xml中记录了PDB的信息,例如数据文件目录,DBID,PDB参数等等

SQL> alter pluggable database pdb2 unplug into '/home/oracle/pdb2.xml';


    被拔出的PDB只能被删除,不能做其它操作,例如mount,打开等.    

    3)删除PDB

    下面删除PDB,如果不加任何参数,默认为keep datafiles保留数据文件.

SQL> drop pluggable database pdb2;
 
Pluggable database dropped.


2.插入PDB

    1)插入PDB

    使用create pluggable database指定xml位置来插入PDB

SQL> create pluggable database testpdb4 using '/home/oracle/pdb2.xml' nocopy;   
 
Pluggable database created.

四、连接pdb并创建用户

1.打开pdb1

SQL> alter pluggable database pdb1 open;

Pluggable database altered.

2.切入到pdb1

SQL> alter session set container=pdb1;

Session altered.

3、创建用户并授予权限

create user test01 identified by 123456;
grant resource,connect,dba to test01;
grant create session to test01;
grant create table to  test01;
grant unlimited tablespace to test01;
grant select any table to test01;

4.创建表空间并指定用户默认表空间

create tablespace test01 logging datafile   '/u01/app/oracle/oradata/ORCL/hrpdb/test01.dbf'    size 100m  ; 
alter user test01  default tablespace test01;

5.查询测试用户默认表空间

SQL> select default_tablespace from dba_users where username='TEST01';

DEFAULT_TABLESPACE
------------------------------
TEST01

6.修改监听文件tnsnames.ora

加入监听对象

pdb1=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.140)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb1)
    )
  )

7.启动监听 

8.使用sqlplus直接连接指定pdb

[oracle@dg2 admin]$ sqlplus test01/123456@pdb1

SQL*Plus: Release 19.0.0.0.0 - Production on Thu May 16 12:21:45 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Last Successful login time: Thu May 16 2024 10:40:34 -04:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> 

9.查看连接的pdb名称和用户

SQL> show con_name;

CON_NAME
------------------------------
PDB1
SQL> show user;
USER is "TEST01"

10、同理,设置其他pdb,比如我设置的hrpdb

create user test02 identified by 123456;
grant resource,connect,dba to test02;
grant create session to test02;
grant create table to  test02;
grant unlimited tablespace to test02;
grant select any table to test02;


create tablespace test02 logging datafile   '/u01/app/oracle/oradata/ORCL/hrpdb/test02.dbf'    size 100m  ; 

alter user test02  default tablespace test02;

select default_tablespace from dba_users where username='TEST02';

11、修改监听文件tnsnames.ora

hrpdb=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.140)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = hrpdb)
    )
  )

12、连接测试

打开hrpdb连接

SQL> alter pluggable database hrpdb open;

Pluggable database altered.

 连接成功

[oracle@dg2 admin]$ sqlplus test02/123456@hrpdb

SQL*Plus: Release 19.0.0.0.0 - Production on Thu May 16 12:30:51 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Last Successful login time: Thu May 16 2024 10:59:45 -04:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> 

测试被连接的pdb名称和用户名称

SQL> show con_name;

CON_NAME
------------------------------
HRPDB
SQL> show user;
USER is "TEST02"
SQL> 

这样就可以同时启动多个pdb,同时连接,我这里就同时连接了pdb1和hrpdb

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值