参考文档
https://docs.oracle.com/database/122/ADMIN/creating-removing-application-containers-seeds-with-sql-plus.htm#ADMIN-GUID-3C6D4200-1FEC-4C0F-B335-EFDC655ADABC
40.1.1.3 Creating an Application Container
Example 40-1 Creating an Application Container Using the CDB Seed
CREATE PLUGGABLE DATABASE app_con1 AS APPLICATION CONTAINER ADMIN USER app_admin IDENTIFIED BY oracle
file_name_convert=('/u01/app/oracle12/oradata12/orcl12c/pdbseed/','/u01/app/oracle12/oradata12/app_con1/');
ALTER PLUGGABLE DATABASE app_con1 OPEN;
SYS@orcl12c>conn / as sysdba
Connected.
CREATE PLUGGABLE DATABASE app_con1 AS APPLICATION CONTAINER ADMIN USER app_admin IDENTIFIED BY oracle
2 file_name_convert=('/u01/app/oracle12/oradata12/orcl12c/pdbseed/','/u01/app/oracle12/oradata12/app_con1/');
Pluggable database created.
SYS@orcl12c>
SYS@orcl12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB_PLUGGED MOUNTED
4 APP_CON1 MOUNTED
SYS@orcl12c>
Example 40-2 Creating an Application Container by Cloning a Local PDB
CREATE PLUGGABLE DATABASE APP_CON2 AS APPLICATION CONTAINER FROM PDBS
FILE_NAME_CONVERT = ('/u01/app/oracle12/oradata12/pdb1/', '/u01/app/oracle12/oradata12/app_con2/');
CREATE PLUGGABLE DATABASE APP_CON2 AS APPLICATION CONTAINER FROM PDBS
FILE_NAME_CONVERT = ('/u01/app/oracle12/oradata12/pdb1', '/u01/app/oracle12/oradata12/app_con2');
CREATE PLUGGABLE DATABASE APP_CON2 AS APPLICATION CONTAINER FROM PDBS
*
ERROR at line 1:
ORA-65169: error encountered while attempting to copy file
ORA-01013: user requested cancel of current operation
SYS@mynewdb>
CREATE PLUGGABLE DATABASE APP_CON2 AS APPLICATION CONTAINER FROM PDBS
2 FILE_NAME_CONVERT = ('/u01/app/oracle12/oradata12/pdb1/', '/u01/app/oracle12/oradata12/app_con2/');
Pluggable database created.
SYS@mynewdb>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDBS READ WRITE NO
4 APP_CON1 MOUNTED
5 APP_CON2 MOUNTED
SYS@mynewdb>
40.1.2.2 Unplugging an Application Container
ALTER PLUGGABLE DATABASE APP_CON1 UNPLUG INTO '/home/oracle/APP_CON1.xml';
SYS@mynewdb>ALTER PLUGGABLE DATABASE APP_CON1 UNPLUG INTO '/home/oracle/APP_CON1.xml';
Pluggable database altered.
SYS@mynewdb>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDBS READ WRITE NO
4 APP_CON1 MOUNTED
5 APP_CON2 MOUNTED
SYS@mynewdb>select pdb_name,status from dba_pdbs where PDB_NAME='APP_CON1'
2 ;
PDB_NAME
--------------------------------------------------------------------------------
STATUS
----------
APP_CON1
UNPLUGGED
SYS@mynewdb>
plug in application container
create pluggable database pdb_test using '/home/oracle/APP_CON1.xml' nocopy;
SYS@mynewdb>create pluggable database pdb_test using '/home/oracle/APP_CON1.xml' nocopy;
create pluggable database pdb_test using '/home/oracle/APP_CON1.xml' nocopy
*
ERROR at line 1:
ORA-19505: failed to identify file
"/u01/app/oracle12/oradata12/app_con1/system01.dbf"
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
SYS@mynewdb>create pluggable database pdb_test using '/home/oracle/APP_CON1.xml' nocopy;
create pluggable database pdb_test using '/home/oracle/APP_CON1.xml' nocopy
*
ERROR at line 1:
ORA-27038: created file already exists
ORA-01119: error in creating database file
'/u01/app/oracle12/oradata12/app_con1/temp01.dbf'
SYS@mynewdb>create pluggable database pdb_test using '/home/oracle/APP_CON1.xml' nocopy tempfile reuse;
Pluggable database created.
SYS@mynewdb>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDBS READ WRITE NO
5 APP_CON2 MOUNTED
7 PDB_TEST MOUNTED
SYS@mynewdb>
SYS@mynewdb>select pdb_name,status from dba_pdbs where PDB_NAME='PDB_TEST'
2 ;
PDB_NAME
--------------------------------------------------------------------------------
STATUS
----------
PDB_TEST
NEW
Example 40-7 Creating an Application Seed From the CDB Seed
CREATE PLUGGABLE DATABASE AS SEED ADMIN USER app_con1_admin IDENTIFIED BY oracle
FILE_NAME_CONVERT=('/u01/app/oracle12/oradata12/orcl12c/pdbseed/','/u01/app/oracle12/oradata12/APPSEED/');
ALTER PLUGGABLE DATABASE APP_CON1$SEED OPEN;
ALTER SESSION SET CONTAINER=APP_CON1$SEED;
ALTER PLUGGABLE DATABASE APPLICATION ALL SYNC;
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE OPEN READ ONLY;
ERROR at line 1:
ORA-65190: operation allowed only from within an application root
SYS@orcl12c>alter pluggable database APP_CON1 open;
Pluggable database altered.
CREATE PLUGGABLE DATABASE AS SEED ADMIN USER app_con1_admin IDENTIFIED BY oracle
2 FILE_NAME_CONVERT=('/u01/app/oracle12/oradata12/orcl12c/pdbseed/','/u01/app/oracle12/oradata12/APPSEED/');
Pluggable database created.
SYS@orcl12c>
SYS@orcl12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
4 APP_CON1 READ WRITE NO
5 APP_CON1$SEED MOUNTED
SYS@orcl12c>
SYS@orcl12c>ALTER SESSION SET CONTAINER=APP_CON1$SEED;
Session altered.
SYS@orcl12c>ALTER PLUGGABLE DATABASE APPLICATION ALL SYNC;
Pluggable database altered.
SYS@orcl12c>
Example 40-8 Creating an Application Seed From an Application PDB
CREATE PLUGGABLE DATABASE AS SEED FROM PDB_PLUGGED
file_name_convert=('/u01/app/oracle12/oradata12/orcl12c/pdg_plugged/','/u01/app/oracle12/oradata12/pdbseed1');
ALTER PLUGGABLE DATABASE salesact$SEED OPEN;
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE OPEN READ ONLY;
SYS@orcl12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB_PLUGGED MOUNTED
4 APP_CON1 READ WRITE NO
5 APP_CON1$SEED READ WRITE NO
SYS@orcl12c>
SYS@orcl12c>
CREATE PLUGGABLE DATABASE AS SEED FROM PDB_PLUGGED
2 file_name_convert=('/u01/app/oracle12/oradata12/orcl12c/pdg_plugged/','/u01/app/oracle12/oradata12/pdbseed1');
CREATE PLUGGABLE DATABASE AS SEED FROM PDB_PLUGGED
*
ERROR at line 1:
ORA-65012: Pluggable database APP_CON1$SEED already exists.
-- drop
SYS@orcl12c>drop pluggable database APP_CON1$SEED;
drop pluggable database APP_CON1$SEED
*
ERROR at line 1:
ORA-65179: cannot keep datafiles for a pluggable database that is not unplugged
SYS@orcl12c>drop pluggable database APP_CON1$SEED including datafiles;
Pluggable database dropped.
-- create plug
SYS@orcl12c>conn / as sysdba
Connected.
SYS@orcl12c>alter pluggable database PDB_PLUGGED open;
Pluggable database altered.
CREATE PLUGGABLE DATABASE AS SEED FROM PDB_PLUGGED
2 file_name_convert=('/u01/app/oracle12/oradata12/orcl12c/pdg_plugged/','/u01/app/oracle12/oradata12/pdbseed1');
CREATE PLUGGABLE DATABASE AS SEED FROM PDB_PLUGGED
*
ERROR at line 1:
ORA-65190: operation allowed only from within an application root
SYS@orcl12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB_PLUGGED READ WRITE NO
4 APP_CON1 READ WRITE NO
SYS@orcl12c>alter session set container=APP_CON1;
Session altered.
CREATE PLUGGABLE DATABASE AS SEED FROM PDB_PLUGGED
2 file_name_convert=('/u01/app/oracle12/oradata12/orcl12c/pdg_plugged/','/u01/app/oracle12/oradata12/pdbseed1');
Pluggable database created.
SYS@orcl12c>
SYS@orcl12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB_PLUGGED READ WRITE NO
4 APP_CON1 READ WRITE NO
7 APP_CON1$SEED MOUNTED
Example 40-9 Creating an Application Seed From an Application Root
--drop
SYS@orcl12c>drop pluggable database APP_CON1$SEED including datafiles;
Pluggable database dropped.
CREATE PLUGGABLE DATABASE AS SEED FROM APP_CON1
file_name_convert=('/u01/app/oracle12/oradata12/app_con1/','/u01/app/oracle12/oradata12/pdbseed1')
ALTER PLUGGABLE DATABASE APP_CON1$SEED OPEN;
ALTER SESSION SET CONTAINER=APP_CON1$SEED;
@$ORACLE_HOME/rdbms/admin/pdb_to_apppdb.sql
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE OPEN READ ONLY;
SYS@orcl12c>alter session set container=APP_CON1;
Session altered.
CREATE PLUGGABLE DATABASE AS SEED FROM APP_CON1
2 file_name_convert=('/u01/app/oracle12/oradata12/app_con1/','/u01/app/oracle12/oradata12/pdbseed1')
3 ;
Pluggable database created.
SYS@orcl12c>
SYS@orcl12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB_PLUGGED READ WRITE NO
4 APP_CON1 READ WRITE NO
5 APP_CON1$SEED MOUNTED
SYS@orcl12c>
-- @SQL ,执行sql
40.3 Creating an Application PDB
CREATE PLUGGABLE DATABASE app_con_pdb from APP_CON1
file_name_convert=('/u01/app/oracle12/oradata12/app_con1/','/u01/app/oracle12/oradata12/pdbseed1/')
SYS@orcl12c>alter session set container=APP_CON1;
Session altered.
SYS@orcl12c>show con_name
CON_NAME
------------------------------
APP_CON1
CREATE PLUGGABLE DATABASE app_con_pdb from APP_CON1
2 file_name_convert=('/u01/app/oracle12/oradata12/app_con1/','/u01/app/oracle12/oradata12/pdbseed1/')
3 ;
CREATE PLUGGABLE DATABASE app_con_pdb from APP_CON1
*
ERROR at line 1:
ORA-04031: unable to allocate 1048848 bytes of shared memory ("shared
pool","unknown object","PDB Dynamic He","alls-ktimcem")
SYS@orcl12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
4 APP_CON1 READ WRITE NO
5 APP_CON1$SEED READ WRITE YES
6 APP_CON_PDB MOUNTED
SYS@orcl12c>
总结 ,应用程序PDB,要在应用程序root容器下创建 。
END 。