方式一:新建UNDO表空间替换旧的表空间
务必保持数据库实例状态为open
SQL> select status,instance_name from v$instance;
如果是mounted的状态则修改为open
SQL> alter database open;
进入到pdb01的容器数据库
SQL> alter session set container=pdb01;
查询当前容器数据库undo表空间大小
SQL> select bytes/1024/1024 "Size(M)",name from v$datafile where name like '%undo%';
在当前容器数据库创建容器表空间为30G
SQL> create undo tablespace UNDOTBS2 datafile '/home/u01/app/oracle/oradata/ORCL/pdb01/undotbs02.dbf' size 30720M;
切换到新的 Undo 表空间:
SQL> ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS2 SCOPE=BOTH;
查看undo segment的状态,判断old undo tablespace中的segment是否都处于offline状态。
SQL> select tablespace_name, status, count(*) from dba_rollback_segs group by tablespace_name, status;
如果旧Undo表空间中的所有Undo段都处于OFFLINE状态,则删除该表空间。
SQL> drop tablespace UNDOTBS1 including contents and datafiles;
方式二:在原来的基础上增加undo表空间大小
进入到pdb02的容器数据库
SQL> alter session set container=pdb02;
使数据库处于open的状态
SQL> alter database open;
在原有的undo表空间调整其大小到30720M
SQL> alter database datafile '/home/u01/app/oracle/oradata/ORCL/pdb02/undotbs01.dbf' resize 30720M;
修改默认temp表空间大小
查看当前临时表空间temp的大小
SQL> select name, bytes/1024/1024 as "大小(M)" from v$tempfile order by bytes;
将临时表空间扩容到30G
SQL> alter tablespace TEMP add tempfile '/home/u01/app/oracle/oradata/ORCL/pdb01/temp02.dbf' size 30g autoextend off;
Tablespace altered.