oracle 12c 手工创建CDB v2

原创 2013年12月02日 12:43:43

(修改版)

环境:redhat linux 5企业版

创建时需要指定enable pluggable database,不加为non-CDB

seed file_name_convert 指定如何通过root的文件来生成seed的文件,做的是目录转换。

pdb_file_name_convert 指定pdb文件和seed文件的转换路径关系

手工建库:
1 参数:
vi initnewcdb.ora

*.control_files='/u01/app/oracle/oradata/newcdb/control01.ctl','/u01/app/oracle/oradata/newcdb/control02.ctl'
*.db_block_size=16384
*.db_name='newcdb'
*.diagnostic_dest='/u01/app/oracle'
*.enable_pluggable_database=true                                            --新参数
*.memory_target=800m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
2 创建目录,口令文件
cd $ORACLE_HOME/dbs
orapwd file=orapwnewcdb  password=oracle entries=30 format=12

cd $ORACLE_BASE/oradata
mkdir -p newcdb/pdbseed

3 执行建库语句 ,捎带解释一下
CREATE DATABASE newcdb
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/newcdb/redo01a.log','/u01/app/oracle/oradata/newcdb/redo01b.log')
SIZE 10M BLOCKSIZE 512,
GROUP 2 ('/u01/app/oracle/oradata/newcdb/redo02a.log','/u01/app/oracle/oradata/newcdb/redo02b.log')
SIZE 10M BLOCKSIZE 512,
GROUP 3 ('/u01/app/oracle/oradata/newcdb/redo03a.log','/u01/app/oracle/oradata/newcdb/redo03b.log')
SIZE 10M BLOCKSIZE 512
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 1024
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/newcdb/system01.dbf' SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
SYSAUX DATAFILE '/u01/app/oracle/oradata/newcdb/sysaux01.dbf' SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
DEFAULT TABLESPACE deftbs DATAFILE '/u01/app/oracle/oradata/newcdb/deftbs01.dbf' SIZE 50M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oracle/oradata/newcdb/temp01.dbf'
SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
UNDO TABLESPACE undotbs1
DATAFILE '/u01/app/oracle/oradata/newcdb/undotbs01.dbf'
SIZE 20M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
ENABLE PLUGGABLE DATABASE                                --这个必须有,要不创建是的non-CDB
SEED                                                                                --cdb的数据库包括root,seed,pdb,我们跑完这个脚本,创建的是root,seed
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/newcdb/',                                       --seed的文件参照cdb的产生,所以这里需要对应root和cdb文件目录的对应关系
'/u01/app/oracle/oradata/newcdb/pdbseed/')
SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
SYSAUX DATAFILES SIZE 100M
USER_DATA TABLESPACE usertbs
DATAFILE '/u01/app/oracle/oradata/newcdb/pdbseed/usertbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
-执行成功,看看生成的文件:
oracle@linux12c:/u01/app/oracle/oradata/newcdb$ls
control01.ctl  deftbs01.dbf  redo01a.log  redo02a.log  redo03a.log  sysaux01.dbf  temp01.dbf
control02.ctl  pdbseed       redo01b.log  redo02b.log  redo03b.log  system01.dbf  undotbs01.dbf
oracle@linux12c:/u01/app/oracle/oradata/newcdb$
oracle@linux12c:/u01/app/oracle/oradata/newcdb$
oracle@linux12c:/u01/app/oracle/oradata/newcdb$
oracle@linux12c:/u01/app/oracle/oradata/newcdb$cd pdbseed
oracle@linux12c:/u01/app/oracle/oradata/newcdb/pdbseed$ls
deftbs01.dbf  sysaux01.dbf  system01.dbf  temp01.dbf  usertbs01.dbf
oracle@linux12c:/u01/app/oracle/oradata/newcdb/pdbseed$

oracle@linux12c:/u01/app/oracle/oradata/newcdb$du -sm
1899    .
oracle@linux12c:/u01/app/oracle/oradata/newcdb$


-运行脚本
用sysdba权限用户执行
conn /as sysdba
@?/rdbms/admin/catcdb.sql  --发现此脚本竟然没有,难道是官档bug
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
--发现上面两个脚本的执行比9、10、11版本的执行要多很多东西

system用户执行
conn system/oracle
@?/sqlplus/admin/pupbld.sql

 

在/etc/oratab中添加如下行:
newcdb:/u01/app/oracle/product/12.1.0/dbhome_1:N


4 配置EM EXPRESS for CDB
--发现使用https://192.168.11.20:1158/em可以访问,但使用system和密码不能登录:
如果手工设定端口,存在两个协议:
如果为http,使用
conn /as sysdba
exec DBMS_XDB_CONFIG.SETHTTPPORT(http_port_number);
如果为https,使用
conn /as sysdba
exec DBMS_XDB_CONFIG.SETHTTPSPORT(http_port_number);

SQL> conn /as sysdba
Connected.
SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(1158);

PL/SQL procedure successfully completed.

SQL>
SQL>
--但是通过https://192.168.11.20:1158/em还是无法访问
重启cdb,依旧不能访问
重启os,不能访问
此问题留给以后处理吧


5 之后配置
--现在数据库只有CDB和SEED,如果需要添加PDB,需要自己添加
--这个内容在后面章节

遗憾的是em express没有成功打开。

 

 

 

虽然手工创建cdb成功了,但是发现在cdb下创建pdb的时候说缺包,可能是哪块还是少了

下面摘录了一份dbca下创建cdb的脚本,写的比较全,大家可以适当参考如下的脚本,特别是创建系统必须的数据字典的部分。

======================================================================================================

1.               概述

Oracle 12c使用dbca创建cdb保存的脚本

2.               产生的所有脚本

oracle@linux12c:/home/oracle$cd/u01/app/oracle/admin/newcdb/scripts/

oracle@linux12c:/u01/app/oracle/admin/newcdb/scripts$ll

total 72

-rw-r----- 1 oracle oinstall  378 Dec 3 00:56 apex.sql

-rw-r----- 1 oracle oinstall  978 Dec 3 00:56 context.sql

-rw-r----- 1 oracle oinstall  540 Dec 3 00:56 CreateClustDBViews.sql

-rw-r----- 1 oracle oinstall 1823 Dec  3 00:56 CreateDBCatalog.sql

-rw-r----- 1 oracle oinstall  404 Dec 3 00:56 CreateDBFiles.sql

-rw-r----- 1 oracle oinstall 1677 Dec  3 00:56 CreateDB.sql

-rw-r----- 1 oracle oinstall  345 Dec 3 00:56 cwmlite.sql

-rw-r----- 1 oracle oinstall  357 Dec 3 00:56 datavault.sql

-rw-r----- 1 oracle oinstall 1957 Dec  3 00:56 init.ora

-rw-r----- 1 oracle oinstall  334 Dec 3 00:56 interMedia.sql

-rw-r----- 1 oracle oinstall 1139 Dec  3 00:56 JServer.sql

-rw-r----- 1 oracle oinstall  336 Dec 3 00:56 labelSecurity.sql

-rw-r----- 1 oracle oinstall 1153 Dec  3 00:56 lockAccount.sql

-rwxr-xr-x 1 oracle oinstall  855 Dec 3 00:56 newcdb.sh

-rwxr-xr-x 1 oracle oinstall 1085 Dec  3 00:56 newcdb.sql

-rw-r----- 1 oracle oinstall  352 Dec 3 00:56 ordinst.sql

-rw-r----- 1 oracle oinstall  845 Dec 3 00:56 postDBCreation.sql

-rw-r----- 1 oracle oinstall  327 Dec 3 00:56 spatial.sql

oracle@linux12c:/u01/app/oracle/admin/newcdb/scripts$

 

3.               一一展开

l  newcdb.sh

oracle@linux12c:/u01/app/oracle/admin/newcdb/scripts$morenewcdb.sql

set verify off

ACCEPT sysPassword CHAR PROMPT 'Enter newpassword for SYS: ' HIDE

ACCEPT systemPassword CHAR PROMPT 'Enternew password for SYSTEM: ' HIDE

host/u01/app/oracle/product/12.1.0/dbhome_1/bin/orapwdfile=/u01/app/oracle/product/12.1.0/dbhome_1/dbs/orapwnewcdb force=y format=12

@/u01/app/oracle/admin/newcdb/scripts/CreateDB.sql

@/u01/app/oracle/admin/newcdb/scripts/CreateDBFiles.sql

@/u01/app/oracle/admin/newcdb/scripts/CreateDBCatalog.sql

@/u01/app/oracle/admin/newcdb/scripts/JServer.sql

@/u01/app/oracle/admin/newcdb/scripts/context.sql

@/u01/app/oracle/admin/newcdb/scripts/ordinst.sql

@/u01/app/oracle/admin/newcdb/scripts/interMedia.sql

@/u01/app/oracle/admin/newcdb/scripts/cwmlite.sql

@/u01/app/oracle/admin/newcdb/scripts/spatial.sql

@/u01/app/oracle/admin/newcdb/scripts/labelSecurity.sql

@/u01/app/oracle/admin/newcdb/scripts/apex.sql

@/u01/app/oracle/admin/newcdb/scripts/datavault.sql

@/u01/app/oracle/admin/newcdb/scripts/CreateClustDBViews.sql

@/u01/app/oracle/admin/newcdb/scripts/lockAccount.sql

@/u01/app/oracle/admin/newcdb/scripts/postDBCreation.sql

oracle@linux12c:/u01/app/oracle/admin/newcdb/scripts$

 

l  CreateDB.sql

oracle@linux12c:/home/oracle$more/u01/app/oracle/admin/newcdb/scripts/CreateDB.sql

SET VERIFY OFF

connect"SYS"/"&&sysPassword" as SYSDBA

set echo on

spool/u01/app/oracle/admin/newcdb/scripts/CreateDB.log append

startup nomountpfile="/u01/app/oracle/admin/newcdb/scripts/init.ora";

CREATE DATABASE "newcdb"

MAXINSTANCES 8

MAXLOGHISTORY 1

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 1024

DATAFILE'/u01/app/oracle/oradata/newcdb/system01.dbf' SIZE 700M REUSE AUTOEXTEND ONNEXT  10240K MAXSIZE UNLIMITED

EXTENT MANAGEMENT LOCAL

SYSAUX DATAFILE'/u01/app/oracle/oradata/newcdb/sysaux01.dbf' SIZE 550M REUSE AUTOEXTEND ONNEXT  10240K MAXSIZE UNLIMITED

SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMPTEMPFILE '/u01/app/oracle/oradata/newcdb/temp01.dbf' SIZE 20M REUSE AUTOEXTENDON NEXT  640K MAXSIZE UNLIMITED

SMALLFILE UNDO TABLESPACE"UNDOTBS1" DATAFILE '/u01/app/oracle/oradata/newcdb/undotbs01.dbf' SIZE 200M REUSEAUTOEXTEND ON NEXT  5120K MAXSIZEUNLIMITED

CHARACTER SET ZHS16GBK

NATIONAL CHARACTER SET AL16UTF16

LOGFILE GROUP 1('/u01/app/oracle/oradata/newcdb/redo01.log') SIZE 50M,

GROUP 2('/u01/app/oracle/oradata/newcdb/redo02.log') SIZE 50M,

GROUP 3('/u01/app/oracle/oradata/newcdb/redo03.log') SIZE 50M

USER SYS IDENTIFIED BY"&&sysPassword" USER SYSTEM IDENTIFIED BY"&&systemPassword"

enable pluggable database

seedfile_name_convert=('/u01/app/oracle/oradata/newcdb/system01.dbf','/u01/app/oracle/oradata/newcdb/pdbseed/system01.dbf','/u01/app/oracle/oradata/newcdb/sysaux01.dbf','/u01/a

pp/oracle/oradata/newcdb/pdbseed/sysaux01.dbf','/u01/app/oracle/oradata/newcdb/temp01.dbf','/u01/app/oracle/oradata/newcdb/pdbseed/temp01.dbf','/u01/app/oracle/oradata/newcdb/un

dotbs01.dbf','/u01/app/oracle/oradata/newcdb/pdbseed/undotbs01.dbf');

spool off

oracle@linux12c:/home/oracle$

 

l  CreateDBFiles.sql

oracle@linux12c:/home/oracle$more/u01/app/oracle/admin/newcdb/scripts/CreateDBFiles.sql

SET VERIFY OFF

connect"SYS"/"&&sysPassword" as SYSDBA

set echo on

spool /u01/app/oracle/admin/newcdb/scripts/CreateDBFiles.logappend

CREATE SMALLFILE TABLESPACE"USERS" LOGGING  DATAFILE  '/u01/app/oracle/oradata/newcdb/users01.dbf'SIZE 5M REUSE AUTOEXTEND ON NEXT  1280KMAXSIZE UNLIMITED  EXTENT MANAGEMENT

LOCAL SEGMENT SPACE MANAGEMENT  AUTO;

ALTER DATABASE DEFAULT TABLESPACE"USERS";

spool off

oracle@linux12c:/home/oracle$

 

l  CreateDBCatalog.sql

oracle@linux12c:/home/oracle$more/u01/app/oracle/admin/newcdb/scripts/CreateDBCatalog.sql

SET VERIFY OFF

connect"SYS"/"&&sysPassword" as SYSDBA

set echo on

spool/u01/app/oracle/admin/newcdb/scripts/CreateDBCatalog.log append

alter session set"_oracle_script"=true;

alter pluggable database pdb$seed close;

alter pluggable database pdb$seed open;

host perl/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/catcon.pl -n 1 -l/u01/app/oracle/admin/newcdb/scripts -b catalog/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/adm

in/catalog.sql;

host perl/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/catcon.pl -n 1 -l/u01/app/oracle/admin/newcdb/scripts -b catblock/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/ad

min/catblock.sql;

host perl/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/catcon.pl -n 1 -l/u01/app/oracle/admin/newcdb/scripts -b catproc/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/adm

in/catproc.sql;

host perl/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/catcon.pl -n 1 -l/u01/app/oracle/admin/newcdb/scripts -b catoctk/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/adm

in/catoctk.sql;

host perl/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/catcon.pl -n 1 -l/u01/app/oracle/admin/newcdb/scripts -b owminst/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/adm

in/owminst.plb;

host perl/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/catcon.pl -n 1 -l/u01/app/oracle/admin/newcdb/scripts -b pupbld -uSYSTEM/&&systemPassword /u01/app/oracle/product

/12.1.0/dbhome_1/sqlplus/admin/pupbld.sql;

connect"SYSTEM"/"&&systemPassword"

set echo on

spool/u01/app/oracle/admin/newcdb/scripts/sqlPlusHelp.log append

host perl /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/catcon.pl-n 1 -l /u01/app/oracle/admin/newcdb/scripts -b hlpbld -uSYSTEM/&&systemPassword -a 1 /u01/app/oracle/p

roduct/12.1.0/dbhome_1/sqlplus/admin/help/hlpbld.sql1helpus.sql;

spool off

spool off

oracle@linux12c:/home/oracle$

 

l  中间组件脚本不再贴出

l  lockAccount.sql

 

oracle@linux12c:/home/oracle$more/u01/app/oracle/admin/newcdb/scripts/lockAccount.sql

SET VERIFY OFF

connect"SYS"/"&&sysPassword" as SYSDBA

set echo on

spool/u01/app/oracle/admin/newcdb/scripts/lockAccount.log append

alter session set"_oracle_script"=true;

alter pluggable database pdb$seed close;

alter pluggable database pdb$seed open;

BEGIN

 FORitem IN ( SELECT USERNAME FROM DBA_USERS WHERE ACCOUNT_STATUS IN ('OPEN','LOCKED', 'EXPIRED') AND USERNAME NOT IN (

'SYS','SYSTEM') )

 LOOP

 dbms_output.put_line('Locking and Expiring: ' || item.USERNAME);

 execute immediate 'alter user ' ||

        sys.dbms_assert.enquote_name(

        sys.dbms_assert.schema_name(

        item.USERNAME),false) || ' password expire account lock' ;

 ENDLOOP;

END;

/

alter session set container=pdb$seed;

BEGIN

 FORitem IN ( SELECT USERNAME FROM DBA_USERS WHERE ACCOUNT_STATUS IN ('OPEN','LOCKED', 'EXPIRED') AND USERNAME NOT IN (

'SYS','SYSTEM') )

 LOOP

 dbms_output.put_line('Locking and Expiring: ' || item.USERNAME);

 execute immediate 'alter user ' ||

        sys.dbms_assert.enquote_name(

        sys.dbms_assert.schema_name(

        item.USERNAME),false) || ' password expire account lock' ;

 ENDLOOP;

END;

/

alter session set container=cdb$root;

spool off

oracle@linux12c:/home/oracle$

 

l  postDBCreation.sql

oracle@linux12c:/home/oracle$more/u01/app/oracle/admin/newcdb/scripts/postDBCreation.sql

SET VERIFY OFF

spool/u01/app/oracle/admin/newcdb/scripts/postDBCreation.log append

host perl/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/catcon.pl -n 1 -l/u01/app/oracle/admin/newcdb/scripts -b catbundle -a 1  /u01/app/oracle/product/12.1.0/dbhome_1/r

dbms/admin/catbundle.sql 1psu 1apply;

connect"SYS"/"&&sysPassword" as SYSDBA

set echo on

createspfile='/u01/app/oracle/product/12.1.0/dbhome_1/dbs/spfilenewcdb.ora' FROMpfile='/u01/app/oracle/admin/newcdb/scripts/init.ora';

connect"SYS"/"&&sysPassword" as SYSDBA

host perl/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/catcon.pl -n 1 -l/u01/app/oracle/admin/newcdb/scripts -b utlrp/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin

/utlrp.sql;

select comp_id, status from dba_registry;

shutdown immediate;

connect"SYS"/"&&sysPassword" as SYSDBA

startup ;

spool off

exit;

oracle@linux12c:/home/oracle$

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Oracle 12c 手工创建CDB数据库

下面我们来看一下,Oracle 12c 如何的来手工创建cdb的数据库 与10G,11G一样,创建数据库的基本的流程是一样的 1. 手工创建密码文件 2. 创建服务器参数文件spfile 3....
  • u012422541
  • u012422541
  • 2015年10月21日 15:50
  • 1201

Oracle 12c手工建库(非CDB及CDB创建)

对于Oracle数据库的创建,Oracle除了支持dbca(GUI界面),同时也支持手工方式创建数据库,即使用CREATE DATABASE语句创建数据库。使用此语句对使用DBCA的一个优点是可以从脚...
  • robinson_0612
  • robinson_0612
  • 2017年05月31日 17:01
  • 2257

oracle 12c 手工创建CDB v2

创建时需要指定enable pluggable database,不加为non-CDB seed file_name_convert 指定如何通过root的文件来生成seed的文件,做的是目录转换。 ...
  • wangzizhzxy
  • wangzizhzxy
  • 2013年12月02日 12:43
  • 1974

oracle11g手工建库需要注意的点

1. 密码文件需要建在执行的目录,如果file不指定路径的话,将会创建在当前目录 [oracle@centos6 dbs]$ orapwdfile=/u01/app/oracle/product/11...
  • gumengkai
  • gumengkai
  • 2016年09月03日 16:46
  • 881

手工创建cdb数据库(create database语句)

1. 创建newcdb的参数文件 [oracle@12cr2 ~]$ cd $ORACLE_HOME/dbs [oracle@12cr2 dbs]$ cat initnewcdb.ora db...
  • u010692693
  • u010692693
  • 2017年06月27日 22:00
  • 449

ORACLE 12C ——01 CDB 与 PDB 区别

Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(...
  • snowfoxmonitor
  • snowfoxmonitor
  • 2015年11月25日 16:15
  • 837

oralce手工建库

我的实验环境是redhat5.5 + oracle 11.2.0.1 第一步:设置ORACL_SID 编辑 /home/oracle/.bash_profile,添加如下红色框线内容...
  • psaer
  • psaer
  • 2013年11月19日 09:53
  • 869

手工建库ORA-01501 ORA-01504

CREATE DATABASE prod * ERROR at line 1: ORA-01501: CREATE DATABASE failed ORA-01504: database name '...
  • Morandas
  • Morandas
  • 2016年04月18日 12:32
  • 858

二、Oracle12c中的CDB与PDB

1、Oracle Multitenant多租户数据库 Oracle Multitenant 是 Oracle Database 12c 的一个新选件,它提供的新架构允许多租户容器数据库(CDB)容纳多...
  • wang_san_shi
  • wang_san_shi
  • 2015年02月28日 15:57
  • 5017

浅谈Oracle12c 数据库、用户、CDB与PDB之间的关系

浅谈Oracle12c 数据库、用户、CDB与PDB之间的关系 名词介绍: 数据库:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生 于距今六十多年前,随着信息...
  • u011161786
  • u011161786
  • 2015年08月30日 19:54
  • 8373
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle 12c 手工创建CDB v2
举报原因:
原因补充:

(最多只允许输入30个字)