Oracle12c表空间维护总结

preview
需积分: 0 0 下载量 28 浏览量 更新于2024-03-05 收藏 142KB PDF 举报
### Oracle 12c 表空间维护关键技术点总结 #### 一、表空间概述 在Oracle 12c中,表空间是逻辑存储结构的一部分,用于管理数据库中的数据。一个表空间可以包含多个数据文件(Data Files),这些数据文件存储在物理磁盘上。根据用途的不同,表空间可分为永久表空间、临时表空间和UNDO表空间。 #### 二、创建不同类型的表空间 ##### 1. 创建永久表空间 - **CDB层**:在CDB(Container Database)层面创建永久表空间。 - 示例代码: ```sql SQL> CONNECT system@cdb1 SQL> CREATE TABLESPACE cdb_users DATAFILE '/u01/app/oracle/oradata/cdb1/cdb_users01.dbf' SIZE 5M autoextend off segment space management auto extent management local; ``` - **解释**:此命令创建了一个名为`cdb_users`的表空间,并指定了数据文件的路径、初始大小为5MB且禁用了自动扩展功能。同时启用了自动段空间管理和本地扩展管理。 - **PDB层**:在PDB(Pluggable Database)层面创建永久表空间。 - 示例代码: ```sql SQL> CONNECT system@PDB1 SQL> CREATE TABLESPACE pdb1_users DATAFILE '/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf' SIZE 5M autoextend off segment space management auto extent management local; ``` - **解释**:与CDB层类似,在PDB1中创建了一个名为`pdb1_users`的表空间,同样设置了数据文件路径、初始大小为5MB,禁用自动扩展功能,并启用了自动段空间管理和本地扩展管理。 ##### 2. 创建临时表空间 - **CDB层**:创建临时表空间。 - 示例代码: ```sql SQL> create temporary tablespace temp01 tempfile '/u01/app/oracle/oradata/cdb1/temp02.dbf' size 5m autoextend off; ``` - **解释**:此命令创建了一个名为`temp01`的临时表空间,并指定了临时文件的路径、初始大小为5MB,禁用了自动扩展功能。 - **PDB层**:创建临时表空间。 - 示例代码: ```sql SQL> create temporary tablespace temp01 tempfile '/u01/app/oracle/oradata/cdb1/pdb1/temp02.dbf' size 5m autoextend off; ``` - **解释**:与CDB层类似,在PDB1中创建了一个名为`temp01`的临时表空间,同样设置了临时文件路径、初始大小为5MB,禁用自动扩展功能。 ##### 3. 创建UNDO表空间 - **CDB层**:创建UNDO表空间。 - 示例代码: ```sql SQL> create undo tablespace UNDOTBS2 datafile '/u01/app/oracle/oradata/cdb1/undotbs02' size 5m reuse autoextend off extent management local; ``` - **解释**:此命令创建了一个名为`UNDOTBS2`的UNDO表空间,并指定了数据文件的路径、初始大小为5MB,允许数据文件被重用,并禁用了自动扩展功能,同时启用了本地扩展管理。 - **PDB层**:创建UNDO表空间。 - 示例代码: ```sql SQL> create undo tablespace UNDOTBS2 datafile '/u01/app/oracle/oradata/cdb1/pdb1/undotbs02' size 5m autoextend off extent management local; ``` - **解释**:与CDB层类似,在PDB1中创建了一个名为`UNDOTBS2`的UNDO表空间,同样设置了数据文件路径、初始大小为5MB,禁用自动扩展功能,并启用了本地扩展管理。 #### 三、指定默认表空间 - **永久表空间**:指定默认的永久表空间。 - 在CDB层面: ```sql SQL> CONNECT system@cdb1 SQL> ALTER DATABASE DEFAULT TABLESPACE tbs_CDB_users; ``` - 在PDB层面: ```sql SQL> CONNECT pdb1_admin@pdbhr SQL> ALTER PLUGGABLE DATABASE DEFAULT TABLESPACE pdbhr_users; ``` - **临时表空间**:指定默认的临时表空间。 - 在CDB层面: ```sql SQL> CONNECT system@cdb1 SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_root; ``` - 在PDB层面: ```sql SQL> CONNECT pdb1_admin@pdbhr SQL> ALTER PLUGGABLE DATABASE DEFAULT TEMPORARY TABLESPACE local_temp; ``` #### 四、注意事项 - 在CDB中不应存储任何应用数据,所有的应用数据应存放在PDB中。尽管可以在CDB和PDB中执行相同的表空间操作,但所有对象应存储在PDB中。 - 当在PDB中创建新用户并分配表空间时,必须确保没有其他PDB存在或所有PDB具有相同的表空间,否则将导致错误。如果在PDB与CDB具有相同表空间的情况下为CDB用户分配表空间,则CDB的表空间分配不会影响PDB的表空间。 - 用户在CDB层面创建时,默认情况下只能访问CDB的表空间;如果要访问PDB的表空间,则需要明确地授予相应的权限。 Oracle 12c提供了丰富的表空间管理功能,包括创建不同类型的表空间、指定默认表空间等。通过合理的规划和配置,可以有效提升数据库性能和可管理性。