oracle pdb 使用常用

已邀请:

1Oracle 12C CDB、PDB常用管理命令

–查看PDB信息(在CDB模式下)
show pdbs --查看所有pdb
select name,open_mode from v$pdbs; --v$pdbs为PDB信息视图

select con_id, dbid, guid, name , open_mode from v$pdbs;
--切换容器

alter session set container=orcl1 --切换到PDBorcl1容器
alter session set container=CDB$ROOT --切换到CDB容器
–查看当前属于哪个容器
select sys_context('USERENV','CON_NAME') from dual; --使用sys_context查看属于哪个容器
show con_name --用show查看当前属于哪个容器
–启动PDB
alter pluggable database orcl1 open; --开启指定PDB
alter pluggable database all open; --开启所有PDB
alter session set container=orcl1; --切换到PDB进去开启数据库

startup

–关闭PDB
alter pluggable database orcl1 close; --关闭指定的PDB
alter pluggable database all close; --关闭所有PDB
alter session set container=orcl1; --切换到PDB进去关闭数据库

shutdown immediate

–创建或克隆前要指定文件映射的位置(需要CBD下sysdba权限)

alter system set db_create_file_dest='/u01/app/oracle/oradata/orcl/orcl2';

–创建一个新的PDB:(需要CBD下sysdba权限)

create pluggable database test admin user admin identified by admin;

alter pluggable database test_pdb open; --将test_pdb 打开
–克隆PDB(需要CBD下sysdba权限)
create pluggable database orcl2 from orcl1; --test_pdb必须是打开的,才可以被打开
alter pluggable database orcl2 open; --然后打开这个pdb
–删除PDB(需要CBD下sysdba权限)
alter pluggable database orcl2 close; --关闭之后才能删除
drop pluggable database orcl2 including datafiles; --删除PDB orcl2
–设置CDB启动PDB自动启动(在这里使用的是触发器)

CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;

12 c 多租户选项允许单个容器数据库 (CDB) 来承载多个单独的可插拔数据库 (PDB)。

那么我们如何连接到容器数据库 (CDB) 和可插拔数据库 (PDB)。

1. V$SERVICES视图可以显示数据库中的可用服务。

SQL> col pdb for a40

SQL> col name for a30;

SELECT name, pdb FROM v$services ORDER BY name;SQL>

NAMEPDB

------------------------------ ----------------------------------------

SYS$BACKGROUNDCDB$ROOT

SYS$USERSCDB$ROOT

andycdbCDB$ROOT

andycdbXDBCDB$ROOT

pdb01PDB01

-- lsnrctl实用程序显示可用的服务。

[oracle@12c01 ~]$ lsnrctl status

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=12c01)(PORT=1521)))

Services Summary...

Service "4ecf8621e3da38eee0531019640aa598" has 1 instance(s).

Instance "andycdb", status READY, has 1 handler(s) for this service...

Service "andycdb" has 1 instance(s).

Instance "andycdb", status READY, has 1 handler(s) for this service...

Service "andycdbXDB" has 1 instance(s).

Instance "andycdb", status READY, has 1 handler(s) for this service...

Service "pdb01" has 1 instance(s).

Instance "andycdb", status READY, has 1 handler(s) for this service...

The command completed successfully

2.直接连接到一个容器数据库 (CDB)

连接到数据库的根容器和连接以前版本的单个数据库实例相同。在数据库服务器上,您可以使用操作系统身份验证。

方法一:

[oracle@12c01 ~]$ sqlplus / as sysdba

方法二:

或者 tnsnames.ora 文件配置

ANDYCDB =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 12c01)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = andycdb)

)

)

C:\Users\andy>sqlplus sys/oracle@10.100.25.16:1521/andycdb as sysdba

3.直接连接到一个可插拔的数据库 (PDB)

tnsnames.ora 文件配置:

PDB01 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.25.16)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = pdb01)

)

)

C:\Users\andy>sqlplus sys/oracle@10.100.25.16:1521/pdb01 as sysdba

SQL> show con_name

CON_NAME

------------------------------

PDB01

说明:PDB 具有 SYSDBA、 SYSOPER、 SYSBACKUP 或 SYSDG 特权的用户可以连接到已关闭的 PDB。

PDB 的所有其他用户(CONNECT SESSION权限的用户)仅可以连接已经打开的PDB。

4. 容器之间切换

SQL> ALTER SESSION SET container=pdb01;

Session altered.

SQL> show con_name

CON_NAME

------------------------------

PDB01

SQL> alter session set container=cdb$root;

Session altered.

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

要回复问题请先登录注册