dbca 之前 先启动监听。
管理员角色
cdba 容器管理员角色
pdba
pdb 之间访问需要dblink 访问
查看是否是容器数据库:
select name,cdb from v$database;
登录连接根容器:
sqlplus sys/oracle@cdb1 as sysdba
show con_name;
CDB$ROOT 跟容器 编号为1
查看可拔插数据库pdb的状态:
select name,con_id,open_mode from v$pdbs;
PDB$SEED 2 种子容器
PDB1 3
多租户容器 只有一个实例 CDB1 ,后台进程 *CDB1
export ORACLE_SID=cdb1
sqlplus / as sysdba
show pdbs
show con_name
CDB$ROOT 默认登录根容器
登录PDB,不能使用export ORACLE_SID=pdb1 连接pdb
实例只有一个,对应的SID是cdb1 ,不存在pdb1的实例。
方法1:
alter session set container=pdb1;
show con_name;
show pdbs;
select name,con_id from v$service;
方法2:配置tnsnames.ora
pdb1=
(DISCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST=hostname)(PORT=1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1.emodou.com)
)
)
sqlplus sys/oracle@pdb1 as sysdba
show pdbs
PDB1 MOUNTED
方法3:
sqlplus sys/oracle@192.168.6.121:1521/ pdb1.emodou.com as sysdba
服务名: 查看监听注册的服务名
从pdb1 切换到根容器:
alter session set container=cdb$root;
从cdb 切换到pdb: conn sys/oracle@pdb1 as sysdba
一个特殊的地方:
sqlplus / as sysdba
连接到了根容器。
CDB实例的启动与关闭
conn sys@cdb1 as sysdba
show con_name;
shutdown immediate;
启动:
1、startup nomount 读取初始化参数文件spfilecdb1.ora ,分配内存,启动进程
SQL>select name,con_id,open_mode from v$pdbs;
now rows selected;
2、启动CDB实例
读取参数文件
show parameter control_files
value记录了控制文件的位置。
alter database mount;
加载控制文件。
select instance_name,status from v$instance;
cdb1 mounted
SQL>select name,con_id,open_mode from v$pdbs;
此时查看监听程序状态,cdb1实例已经被监听,状态为ready.
pdb1并未注册
2、装载cdb
conn sys@cdb1 as sysdba
startup mount
或者
alter database cdb1 mount;
select name,open_mode from v$pdbs;
cdb控制文件已为实例打开
根已装载
pdb已装载。
3、alter database open;
show pdbs;
跟容器打开状态
种子pdb read only
pdb 仍然是 mounted 状态。
进一步打开pdb
方法1: pdb 内部执行
conn sys/oracle@pdb1 as sysdba
alter database open;
show pdbs ;
pdb1 状态正常。
关闭当前pdb
>shutdown immediate;
Pluggable database closed;
show pdbs;
发现pdb1 回到了mounted 状态。
方法2:根容器执行操作
conn sys@cdb1 as sysdba
alter pluggable database pdb1 open;
alter pluggable database all open;--打开所有非种子pdb。
关闭: 状态为mounted
alter pluggable database pdb1 close immediate;
设置自动打开pdb
如果当前是open 状态,设置之后,下次启动cdb,默认打开pdb
SQL>alter pluggable database pdb1 save state;
SQL>alter pluggable database pdb1 discard state; --取消设置
数据字典视图:
col FILE_NAME for a50
select con_id,file_id,file_name,tablespace_name from cdb_data_files;
select file_id,file_name,tablespace_name from dba_data_files;
col member for a50
select member from v$logfile;
col NAME for a50
select name from v$controlfile;
用户权限管理:
common 公用用户,所有容器都存在
local 本地用户,存在于pdb
select username,common,con_id from cdb_users;
cdb中创建公用用户:
craete user C##JIM identified by * container=all;
show parameter prefix
name type value
common_user_prefix string C##
默认创建公用用户必须以C##开头,才可以成功,此处可以将这个参数置空,不使用。
pdb创建用户:
craete user C##JIM identified by * ;
等价
craete user C##JIM identified by * container=current;
授权:
grant connect to C##JIM container=current;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




