表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为 4K、8K、16K、32K、64K等几种大小,ORACLE的物理文件最大只允许4194304个数据块(由操作系统决定),表空间数据文件的最大值为 4194304×DB_BLOCK_SIZE/1024M。
生产环境考虑到数据库可能一直增加,所以放开表空间大小限制,语句如下:
--改变用户表空间容量限制,不做限制 ALTER USER ankangreli QUOTA UNLIMITED ON ankangrelir_data;
1、 DB_BLOCK_SIZE作为数据库的最小操作单位,是在创建数据库的时候指定的,在创建完数据库之后便不可修改。要修改DB_BLOCK_SIZE,需要重建数据库。一般可以将数据EXP出来,然后重建数据库,指定新的DB_BLOCK_SIZE,然后再将数据IMP进数据库。
2、 DB_BLOCK_SIZE一般设置为操作系统块的倍数,即2K,4K,8K,16K或32K,但它的大小一般受数据库用途的影响。对于联机事务,其特点是事务量大,但每个事务处理的数据量小,所以DB_BLOCK_SIZE设置小点就足够了,一般为4K或者8K,设置太大话一次读出的数据有部分是没用的,会拖慢数据库的读写时间,同时增加无必要的IO操作。而对于数据仓库和ERP方面的应用,每个事务处理的数据量很大,所以DB_BLOCK_SIZE一般设置得比较大,一般为8K,16K或者32K,此时如果DB_BLOCK_SIZE小的话,那么I/O自然就多,消耗太大。
3、 大一点的DB_BLOCK_SIZE对索引的性能有一定的提高。因为DB_BLOCK_SIZE比较大的话,一个DB_BLOCK一次能够索引的行数就比较多。
4、 对于行比较大的话,比如一个DB_BLOCK放不下一行,数据库在读取数据的时候就需要进行行链接,从而影响读取性能。此时DB_BLOCK_SIZE大一点的话就可以避免这种情况的发生。
Oracle12c在WindowsServer2019中安装后,默认的db_block_size为8K
--value为db_block_size的默认值
select value from v$parameter where name='db_block_size'
--输出如下
8192 = 8K
--查看INITIAL_EXTENT值,为DB_BLOCK_SIZE的整数倍
select owner,initial_extent/8192 from dba_rollback_segs
--输出
1 SYS 14
2 PUBLIC 16
3 PUBLIC 16
4 PUBLIC 16
5 PUBLIC 16
6 PUBLIC 16
7 PUBLIC 16
8 PUBLIC 16
9 PUBLIC 16
10 PUBLIC 16
11 PUBLIC 16
---查看表空间名称及表空间文件位置
select t1.name,t2.name from v$tablespace t1,v$datafile t2 where t1.ts# = t2.ts#;
---1.表空间信息查看
select * from dba_tablespaces; ---查看表空间
select * from dba_data_files; --查看数据库文件位置
select * from dba_free_space;
---2.临时表空间信息查看
select * from dba_temp_files;
select * from dba_temp_free_space;
---修改表的表空间
select 'alter table ' || TABLE_NAME || ' move tablespace docmanagement;'
from USER_TABLES UT
where UT.TABLESPACE_NAME = 'USERS'
--查询当前用户下在 USERS 表空间中的所有索引 ,并修改索引的表空间为 docmanagement
select 'alter index '|| index_name ||' rebuild tablespace docmanagement;' from user_indexes i
where i.tablespace_name = 'USERS'
--删除表空间及数据库文件
drop tablespace TEMPORARY_DOCMANAGEMENT including contents and datafiles;
以表空间
testdb
与临时表空间temporary_testdb
为例
--创建表空间
create tablespace testdb
datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\TESTDB.DBF' --dbf文件位置
size 500M
autoextend on next 100M
maxsize unlimited;
--创建临时表空间
create temporary tablespace temporary_testdb
tempfile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\TESTDB_TEMP.DBF'
size 500M
autoextend on
next 100M maxsize unlimited
extent management local;
CDB是Oracle12c版本的新特性
PDB与CDB创建用户的区别在与是否在用户名前面加
C##
,CDB需要加在用户名前加c##
,而PDB则不需要;如果启用了CDB则在客户端连接的时候必须加上
c##
PDB全称为Pluggable Database,即可插拔数据库
---创建用户并指定默认表空间及临时表空间
create user test_user identified by test_user
profile default
default tablespace testdb
temporary tablespace temporary_testdb
account unlock;
--用户授权
grant connect,resource,dba to test_user
--删除用户
--drop user test_user cascade
CDB全称:Container Database,即容器数据库
--select * from dba_users t where t.username like 'C##%'
--创建用户并制定默认表空间
create user c##test_user identified by test_user
profile default
default tablespace testdb
temporary tablespace temporary_testdb
account unlock;
--用户授权
grant connect,resource,dba to c##test_user
--删除用户
--drop user c##test_user cascade
Oracle12c新特性:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/newft/new-features.html