以前一直使用默认的rpm安装,创建PDB数据库是不会有这样的问题。
但是RPM安装的oracle所有信息都保存在opt/oracle目录下,这会导致系统盘空间不足。
于是,把opt/oracle/oradata目录下的数据文件,redo等文件全部移到数据盘。
移动的时候,是在cdb环境下操作的,一切正常。
但是在重新创建信息的pdb数据库的时候,就报错了,报错:
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: '/opt/oracle/oradata/ORCLCDB/pdbseed/temp01.dbf'
select name from v$datafile
于是,切换到PDB里面,把临时文件的指向改到新地址就可以愉快的创建PDB了。
具体操作如下:
[#zeyu#]
#打开PDB数据库
alter pluggable database ORCLPDB1 open;
#把PDB数据库启动为restricted 模式
alter pluggable database ORCLPDB1 close immediate instances=all;
alter pluggable database ORCLPDB1 open read write restricted;
#查看临时表空间
select file_name,tablespace_name from dba_temp_files;
#修改临时表空间地址(to后面的地址为你的实际地址,请修改)
alter database rename file '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/temp01.dbf' to '/data/oradata/ORCLCDB/ORCLPDB1/temp01.dbf';
#这句是修改默认字符集,12c以后默认都是Utf8,不修改字符集,可以跳过下面这一句
alter database character set internal_use zhs16gbk;
alter pluggable database ORCLPDB1 close immediate;
#启动pdb确认
alter pluggable database ORCLPDB1 open instances=all;
#切换到cdb,保存PDB的信息
alter session set container=CDB$ROOT;
alter pluggable database all save state;
[/#zeyu#]
至此,修改默认ORCLPDB的操作就完成了,下面就是创建新的PDB数据库,从默认PDB克隆创建。
create pluggable database newpdb from ORCLPDB1;