目录
一、CDB查看
1、查看当前CDB
SQL> select cdb from v$database;
如果cdb为yes就是安装了容器,如果是no就是传统方式。
2、查看EM expres的端口
SQL>select dbms_xdb_config.gethttpsport() from dual;
https://192.168.20.196:5502
二、CDB创建命令
1、创建参数文件
DB_CREATE_FILE_DEST='/u01/app/orac1e/oradata' --这里如果写了路径,后面创建数据库则不需要写文件的路径。 ENABLE_PLUGGABLE_DATABASE=true db_name=ocporcl audit_file_dest='/u01/app/oracle/admin/CDBDEV/adump' db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' db_recovery_file_size='30G' diagnostic_dest='/u01/app/oracle' dispatchers='(PROTOCOL-TCP) (SERVICE-CDBDEVXDB)' control files=('/u01/app/oracle/oradata/ora. contro101.ct1','/u01/app/oracle/fast_recovery_area/ora_contro102.ctl') compatible= '19.0.0.0'
2、挂载数据
SQL>startup mount
3、创建数据库(可以编辑为脚本sql,然后执行即可)
(1)方法1:sql执行
SQL> CREATE DATABASE cdb1 USER SYS IDENTIFIED BY p1 USER SY STEM IDENTIFIED BY p2 LOGFILE GROUP 1 ( '/u01/app/oradata/CDB1/redo1a.log' ,'/u02/app/oradata/CDB1/redo1b.1og') SIZE 100M, GROUP 2 ('/u01/app/oradata/CDB1/redo2a.1og','/u02/app/oradata/CDB1/redo2b . log') SIZE 100M CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL1 6UTF16 EXTENT MANAGEMENT LOCAL DATAFILE '/u01/app/oradata/CDB1/system01.dbf' SIZE 325M SYSAUX DATAFILE '/u01/app/oradata/CDB1/sysaux01.dbf' SIZE 325M DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/u01/app/oradata/CDB1/temp01.dbf' SIZE 20M UNDO TABLESPACE undotbs DATAFILE '/u01/app/oradata/CDB1/undotbs01. dbf' SIZE 200M ENABLE PLUGGABLE DATABASE SEED FILE_NAME_CONVERT =('/u01/app/oradata/CDB1','/u01/app/oradata/CDB1/seed');
(2)方法2:编辑为sql脚本然后被执行
--编辑脚本
vi /oracle/createcdb.sql
CREATE DATABASE cdb1 USER SYS IDENTIFIED BY p1 USER SY STEM IDENTIFIED BY p2 LOGFILE GROUP 1 ( '/u01/app/oradata/CDB1/redo1a.log' ,'/u02/app/oradata/CDB1/redo1b.1og') SIZE 100M, GROUP 2 ('/u01/app/oradata/CDB1/redo2a.1og','/u02/app/oradata/CDB1/redo2b . log') SIZE 100M CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL1 6UTF16 EXTENT MANAGEMENT LOCAL DATAFILE '/u01/app/oradata/CDB1/system01.dbf' SIZE 325M SYSAUX DATAFILE '/u01/app/oradata/CDB1/sysaux01.dbf' SIZE 325M DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/u01/app/oradata/CDB1/temp01.dbf' SIZE 20M UNDO TABLESPACE undotbs DATAFILE '/u01/app/oradata/CDB1/undotbs01. dbf' SIZE 200M ENABLE PLUGGABLE DATABASE SEED FILE_NAME_CONVERT =('/u01/app/oradata/CDB1','/u01/app/oradata/CDB1/seed');
--执行sql语句
SQL>@/oracle/createcdb.sql
4、创建完成后跑sql脚本(时间较久)
@$ORACLE_ HOME/rdbms/admin/catalog.sql @$ORACLE_ HOME/rdbms/admin/catproc.sql
三、不使用SEED FILE_NAME_CONVERT功能
1、使用OMF,oracle文件自动管理模式
DB_CREATE_FILE_DEST='/oracle/app/oracle/oradata';
2、设置初始化参数:PDB_FILE_NAME_CONVERT
PDB_FILE_NAME_CONVERT='/orac.le/app/oracle/oradata/CDB1','/oracle/app/oracle/oradata/seed'
四、打开em express端口
1、设置为5500端口
SQL> exec DBMS_ XDB_ CONFIG.SETHTTPSPORT(5500);
2、查看端口
SQL> select dbms_ _xdb_ config.gethttpsport() from dual;
使用上述端口,监听必须要打开才可以。
五、CDB和PDB的关系
1、所有PDB共享的内容
Background processes Shared/process memory Oracle metadata Redo log files Control files Undo tablespace (可以单独为PDB创建undo表空间(在dbca时选择),也是官方建议的) dig_info(adr自动诊断存储库的目录,是所有cdb,pdb共享的)
1、CDB启动startup(4个阶段)
shutdown、nomount、mount、open四个阶段。
PDB可以设置随CDB启动,也可以设置只启动到mount状态,而单独手动进行open;
(1)PDB设置随CDB启动
SQL>alter pluggable database database pdb1 save state;
(2)PDB设置取消随CDB启动而启动
SQL>alter pluggable database database pdb1 discard state;
2、CDB的shutdown的四个参数
参数值 | transaction | normal | immediate | abort |
数据一致性 | 是 | 是 | 是 | 否 |
允许新链接 | 否 | 否 | 否 | 否 |
等待当前会话结束 | 是 | 否 | 否 | 否 |
等待当前交易结束 | 是 | 是 | 否 | 否 |
强制检查点和关闭文件 | 是 | 是 | 是 | 否 |
是否需要崩溃恢复 | 否 | 否 | 否 | 是 |
3、PDB的启停
所有PDB共享control和redo,单独的pdb没有自己的control文件和redo。
(1)PDB的四种打开模式
读写 只读 迁移(pluggable) mounted(PDB关闭状态)
(2)PDB的打开和关闭命令
使用ALTER PLUGGABLE DATABASE命令或STARTUP和SHUTDOWN命令打开和关闭PDB。
--打开PDB
sql>ALTER PLUGGABLE DATABASE orclPDB1 open;(在cdb或orclpdb1中都可以用) 或 sql>startup;(注意:在pdb中使用(通过切换会话进入当前pdb容器中,alter session set container=orclpdb1,再使用startup命令,PDB必须处于mounted状态)
--关闭PDB
sql>ALTER PLUGGABLE DATABASE orclPDB1 close;((在cdb或orclpdb1中都可以用)只是关闭pdb1,如果此时由用户连接,则无法关闭,需要使用immediate参数,SQL> alter pluggable database orclpdb1 close immediate; 或 sql>shutdown immediate(注意:在pdb中使用(通过切换会话进入当前pdb容器中,alter session set container=orclpdb1,再使用startup命令,PDB必须处于mounted状态)
注:ALTER PLUGGABLE DATABASE命令允许您从任何打开模式更改为其他模式。
六、CDB和PDB的日常管理操作
1、查看当前cdb
SQL> show con_name
2、查看pdb
SQL> show pdbs
3、查看当前实例进程
[oracle@ocp196:/home/oracle]$ps -ef|grep smon oracle 24357 30483 0 16:26 pts/2 00:00:00 grep --color=auto smon oracle 28774 1 0 Jun11 ? 00:00:01 ora_smon_ocporcl
4、查看参数db_create_file_dest
这个参数如果有值,则创建pdb时,不需要转换目录;
如果是空值,则创建pdb时,需要转换目录。
SQL> show parameter db_create_file_dest;
5、查看当前数据文件位置
SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /oracle/app/oracle/oradata/OCPORCL/system01.dbf /oracle/app/oracle/oradata/OCPORCL/pdbseed/system01.dbf /oracle/app/oracle/oradata/OCPORCL/sysaux01.dbf /oracle/app/oracle/oradata/OCPORCL/pdbseed/sysaux01.dbf /oracle/app/oracle/oradata/OCPORCL/undotbs01.dbf /oracle/app/oracle/oradata/OCPORCL/pdbseed/undotbs01.dbf /oracle/app/oracle/oradata/OCPORCL/users01.dbf
5、PDB创建方法1:没有指定db_create_file_dest
注意:pdb可以单独一个目录,和cdb同级,也可以在cdb的下一级。本案例是同级。
(1)首先创建pdb的目录
[oracle@ocp196:/oracle]$mkdir -p /oracle/app/oracle/oradata/orclpdb1
(2)SQL命令创建pdb1(也可以使用dbca创建)
SQL>CREATE PLUGGABLE DATABASE orclPDB1 ADMIN USER admin IDENTIFIED BY oracle ROLES=(CONINECT) FILE_NAME_CONVERT=('/oracle/app/oracle/oradata/OCPORCL/pdbseed','/oracle/app/oracle/oradata/orclpdb1');
(3)创建完成,查看生成文件
因为在创建cdb时,我们选择undo是在local模式下独享,所以后续的pdb创建都会单独创建一个undo。
[oracle@ocp196:/home/oracle]$ll /oracle/app/oracle/oradata/orclpdb1
total 1116252
-rw-r-----. 1 oracle oinstall 309338112 Jun 12 16:51 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 283123712 Jun 12 16:51 system01.dbf
-rw-r-----. 1 oracle oinstall 39854080 Jun 12 16:51 temp01.dbf
-rw-r-----. 1 oracle oinstall 550510592 Jun 12 16:51 undotbs01.dbf
(4)查看pdbs
SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ---------------------- ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCLPDB1 MOUNTED
6、PDB创建方法2:指定db_create_file_dest目录
(1)设置db_create_file_dest;
SQL>alter system set db_create_file_dest='/oracle/app/oracle/oradata'; 注: 如果设置了/oracle/app/oracle/oradata,则会在oradata下的现有CDB名称目录(OCPORCL)下创建一个pdb目录 如果设置了/oracle/pdbtest(当前目录是新建),则会在/oracle/pdbtest下,自动创建当前CDB名称目录(OCPORCL),并在此目录下创建一个pdb目录
(2)SQL命令创建pdb2,第二个案例(也可以使用dbca创建)
SQL>CREATE PLUGGABLE DATABASE orclPDB2 ADMIN USER admin IDENTIFIED BY oracle ROLES=(CONINECT);
(3)查看目录
--db_create_file_dest目录设置在/oracle/app/oracle/oradata
会自动在当前目录下的CDB目录下OCPORCL下创建pdb的目录。
[oracle@ocp196:/home/oracle]$ll /oracle/app/oracle/oradata/OCPORCL
total 2893760
-rw-r-----. 1 oracle oinstall 18726912 Jun 12 17:19 control01.ctl
drwxr-x---. 3 oracle oinstall 4096 Jun 12 17:19 E13D476B05DA65EFE055C72F45483EB2
drwxr-x---. 2 oracle oinstall 4096 Jun 11 15:26 pdbseed
-rw-r-----. 1 oracle oinstall 209715712 Jun 12 17:19 redo01.log
-rw-r-----. 1 oracle oinstall 209715712 Jun 12 06:00 redo02.log
-rw-r-----. 1 oracle oinstall 209715712 Jun 12 14:10 redo03.log
-rw-r-----. 1 oracle oinstall 608182272 Jun 12 17:14 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 954212352 Jun 12 17:19 system01.dbf
-rw-r-----. 1 oracle oinstall 39854080 Jun 12 14:10 temp01.dbf
-rw-r-----. 1 oracle oinstall 744497152 Jun 12 17:15 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 5251072 Jun 12 14:15 users01.dbf
--db_create_file_dest目录设置在/oracle/pdbtest
[oracle@ocp196:/oracle/pdbtest/OCPORCL]$ll /oracle/pdbtest/OCPORCL/ total 4 drwxr-x---. 3 oracle oinstall 4096 Jun 12 17:22 E13D476B05DC65EFE055C72F45483EB2
7、测试pdb的save state功能
(1)打开pdb1,但pdb2,pdb3不打开
SQL> alter pluggable database orclpdb1 open;
(2)查看当前数据库状态
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCLPDB1 READ WRITE NO 4 ORCLPDB2 MOUNTED 5 ORCLPDB3 MOUNTED
(3)保存当前所有pdb状态,并查看
SQL>alter pluggable database all save state;
SQL> select con_id,con_name from dba_pdb_saved_states;
CON_ID CON_NAME ---------- ---------------- 3 ORCLPDB1
(4)关闭所有pdb
SQL>alter pluggable database all close;
(5)关闭cdb(即整个数据库实例)
SQL>shutdown immediate;
(6)打开cdb(即整个数据库实例)
SQL>startup
(7)查看pdbs状态
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- --------------------- ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCLPDB1 READ WRITE NO 4 ORCLPDB2 MOUNTED 5 ORCLPDB3 MOUNTED
(8)关闭save 状态(关闭后,重启pdb后-所有的pdb启动都是mounted状态)
SQL>alter pluggable database all discard state;
8、从CDB切换到pdb中
SQL>alter session set container=orclpdb1;