ORACLE 数据库表空间的管理以及IM列式存储
2023-09-14 09:13:29 时间
与Non-CDB相比,CDB中的表空间主要有以下几个特点:
- 一个永久表空间只能与一个容器相关联。
- 在当前容器中创建表空间时,表空间将与该容器相关联。
- 当CDB禁用本地UNDO模式时,CDB只能有一个活动的UNDO表空间,或者Oracle RAC CDB的每一个节点各有一个活动的UNDO表空间。当为CDB启用本地UNDO模式时,CDB中的每个容器都有子句的UNDO表空间。
- 在ORACLE RAC集群中,每个节点都需要一个本地UNDO表空间。
- CDB中的每个容器都有子句的默认临时表空间,包括CDB root、每个PDB、每个应用程序root和每个应用程序PDB。
管理CDB表空间
1.查看默认表空间
SQL>
SQL> set pagesize 200
SQL> col property_name format a30
SQL> col property_value format a20
SQL> select property_name,property_value from database_properties where property_name in ('DEFAULT_PERMANENT_TABLESPACE','DEFAULT_TEMP_TABLESPACE');
PROPERTY_NAME PROPERTY_VALUE
------------------------------ --------------------
DEFAULT_PERMANENT_TABLESPACE USERS
DEFAULT_TEMP_TABLESPACE TEMP
SQL>
2.创建临时表空间
SQL> col file_name format a30
SQL> select file_name,tablespace_name from dba_temp_files;
FILE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
/u02/oradata/CDB1/temp01.dbf TEMP
SQL> create temporary tablespace temp02 tempfile '/u02/oradata/CDB1/temp02.dbf' size 5m autoextend off;
Tablespace created.
SQL> select file_name,tablespace_name from dba_temp_files;
FILE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
/u02/oradata/CDB1/temp01.dbf TEMP
/u02/oradata/CDB1/temp02.dbf TEMP02
SQL>
3.创建永久表空间
SQL> CREATE TABLESPACE CDB_USERS DATAFILE '/u02/oradata/CDB1/cdb_users01.dbf' size 5m autoextend off segment space management auto extent management local;
Tablespace created.
SQL> select name from v$datafile;
NAME
------------------------------------------------------------------------------------------------------------------------------------------------------
/u02/oradata/CDB1/system01.dbf
/u02/oradata/CDB1/sysaux01.dbf
/u02/oradata/CDB1/undotbs01.dbf
/u02/oradata/CDB1/pdbseed/system01.dbf
/u02/oradata/CDB1/pdbseed/sysaux01.dbf
/u02/oradata/CDB1/users01.dbf
/u02/oradata/CDB1/pdbseed/undotbs01.dbf
/u02/oradata/CDB1/pdb1/system01.dbf
/u02/oradata/CDB1/pdb1/sysaux01.dbf
/u02/oradata/CDB1/pdb1/undotbs01.dbf
/u02/oradata/CDB1/pdb1/users01.dbf
/u02/oradata/CDB1/pdb2/system01.dbf
/u02/oradata/CDB1/pdb2/sysaux01.dbf
/u02/oradata/CDB1/pdb2/undotbs01.dbf
/u02/oradata/CDB1/pdb2/users01.dbf
/u02/oradata/CDB1/cndbapdb/system01.dbf
/u02/oradata/CDB1/cndbapdb/sysaux01.dbf
/u02/oradata/CDB1/cndbapdb/undotbs01.dbf
/u02/oradata/CDB1/cndbapdb/cndba01.dbf
/u02/oradata/CDB1/cndbapdb2/system01.dbf
/u02/oradata/CDB1/cndbapdb2/sysaux01.dbf
/u02/oradata/CDB1/cndbapdb2/undotbs01.dbf
/u02/oradata/CDB1/cndbapdb2/cndba01.dbf
/u02/oradata/CDB1/EE966433CFF1B7D7E0538A08A8C04375/datafile/o1_mf_system_krc75pcx_.dbf
/u02/oradata/CDB1/EE966433CFF1B7D7E0538A08A8C04375/datafile/o1_mf_sysaux_krc75pd1_.dbf
/u02/oradata/CDB1/EE966433CFF1B7D7E0538A08A8C04375/datafile/o1_mf_undotbs1_krc75pd1_.dbf
/u02/oradata/CDB1/EE966433CFF1B7D7E0538A08A8C04375/datafile/o1_mf_cndba_krc75pd2_.dbf
/u02/oradata/CDB1/cndbapdb4_fresh/system01.dbf
/u02/oradata/CDB1/cndbapdb4_fresh/sysaux01.dbf
/u02/oradata/CDB1/cndbapdb4_fresh/undotbs01.dbf
/u02/oradata/CDB1/cndbapdb4_fresh/users01.dbf
/u02/oradata/CDB1/EECFD8030E829AE2E0538A08A8C02B62/datafile/o1_mf_system_krlrcwxh_.dbf
/u02/oradata/CDB1/EECFD8030E829AE2E0538A08A8C02B62/datafile/o1_mf_sysaux_krlrcwxm_.dbf
/u02/oradata/CDB1/EECFD8030E829AE2E0538A08A8C02B62/datafile/o1_mf_undotbs1_krlrcwxn_.dbf
/u02/oradata/CDB1/EECFD8030E829AE2E0538A08A8C02B62/datafile/o1_mf_users_krlrcwxn_.dbf
/u02/oradata/CDB1/cdb_users01.dbf
36 rows selected.
SQL>
4.创建UNDO表空间
SQL> create undo tablespace undotbs02 datafile '/u02/oradata/CDB1/undotbs02.dbf' size 5m reuse autoextend off extent management local;
Tablespace created.
SQL> select name from v$datafile;
NAME
------------------------------------------------------------------------------------------------------------------------------------------------------
/u02/oradata/CDB1/system01.dbf
/u02/oradata/CDB1/sysaux01.dbf
/u02/oradata/CDB1/undotbs01.dbf
/u02/oradata/CDB1/pdbseed/system01.dbf
/u02/oradata/CDB1/pdbseed/sysaux01.dbf
/u02/oradata/CDB1/users01.dbf
/u02/oradata/CDB1/pdbseed/undotbs01.dbf
/u02/oradata/CDB1/pdb1/system01.dbf
/u02/oradata/CDB1/pdb1/sysaux01.dbf
/u02/oradata/CDB1/pdb1/undotbs01.dbf
/u02/oradata/CDB1/pdb1/users01.dbf
/u02/oradata/CDB1/pdb2/system01.dbf
/u02/oradata/CDB1/pdb2/sysaux01.dbf
/u02/oradata/CDB1/pdb2/undotbs01.dbf
/u02/oradata/CDB1/pdb2/users01.dbf
/u02/oradata/CDB1/cndbapdb/system01.dbf
/u02/oradata/CDB1/cndbapdb/sysaux01.dbf
/u02/oradata/CDB1/cndbapdb/undotbs01.dbf
/u02/oradata/CDB1/cndbapdb/cndba01.dbf
/u02/oradata/CDB1/cndbapdb2/system01.dbf
/u02/oradata/CDB1/cndbapdb2/sysaux01.dbf
/u02/oradata/CDB1/cndbapdb2/undotbs01.dbf
/u02/oradata/CDB1/cndbapdb2/cndba01.dbf
/u02/oradata/CDB1/EE966433CFF1B7D7E0538A08A8C04375/datafile/o1_mf_system_krc75pcx_.dbf
/u02/oradata/CDB1/EE966433CFF1B7D7E0538A08A8C04375/datafile/o1_mf_sysaux_krc75pd1_.dbf
/u02/oradata/CDB1/EE966433CFF1B7D7E0538A08A8C04375/datafile/o1_mf_undotbs1_krc75pd1_.dbf
/u02/oradata/CDB1/EE966433CFF1B7D7E0538A08A8C04375/datafile/o1_mf_cndba_krc75pd2_.dbf
/u02/oradata/CDB1/cndbapdb4_fresh/system01.dbf
/u02/oradata/CDB1/cndbapdb4_fresh/sysaux01.dbf
/u02/oradata/CDB1/cndbapdb4_fresh/undotbs01.dbf
/u02/oradata/CDB1/cndbapdb4_fresh/users01.dbf
/u02/oradata/CDB1/EECFD8030E829AE2E0538A08A8C02B62/datafile/o1_mf_system_krlrcwxh_.dbf
/u02/oradata/CDB1/EECFD8030E829AE2E0538A08A8C02B62/datafile/o1_mf_sysaux_krlrcwxm_.dbf
/u02/oradata/CDB1/EECFD8030E829AE2E0538A08A8C02B62/datafile/o1_mf_undotbs1_krlrcwxn_.dbf
/u02/oradata/CDB1/EECFD8030E829AE2E0538A08A8C02B62/datafile/o1_mf_users_krlrcwxn_.dbf
/u02/oradata/CDB1/cdb_users01.dbf
/u02/oradata/CDB1/undotbs02.dbf
37 rows selected.
SQL>
5.指定默认表空间
ALTER DATABASE DEFAULT TABLESPACE cdb_users;
6.指定默认临时表空间
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp01;
7.查看内存池的大小
SQL> col pool format a9
SQL> col populate_status format a15
SQL> select con_id,pool,trunc(ALLOC_BYTES/(1024*1024*1024),2) "ALLOC_GB",
2 TRUNC(USED_BYTES/(1024*1024*1024),2) "USED_GB",
3 POPULATE_STATUS
4 FROM V$INMEMORY_AREA;
CON_ID POOL ALLOC_GB USED_GB POPULATE_STATUS
---------- --------- ---------- ---------- ---------------
1 1MB POOL 0 0 OUT OF MEMORY
1 64KB POOL 0 0 OUT OF MEMORY
2 1MB POOL 0 0 OUT OF MEMORY
2 64KB POOL 0 0 OUT OF MEMORY
3 1MB POOL 0 0 OUT OF MEMORY
3 64KB POOL 0 0 OUT OF MEMORY
4 1MB POOL 0 0 OUT OF MEMORY
4 64KB POOL 0 0 OUT OF MEMORY
5 1MB POOL 0 0 OUT OF MEMORY
5 64KB POOL 0 0 OUT OF MEMORY
6 1MB POOL 0 0 OUT OF MEMORY
CON_ID POOL ALLOC_GB USED_GB POPULATE_STATUS
---------- --------- ---------- ---------- ---------------
6 64KB POOL 0 0 OUT OF MEMORY
7 1MB POOL 0 0 OUT OF MEMORY
7 64KB POOL 0 0 OUT OF MEMORY
8 1MB POOL 0 0 OUT OF MEMORY
8 64KB POOL 0 0 OUT OF MEMORY
9 1MB POOL 0 0 OUT OF MEMORY
9 64KB POOL 0 0 OUT OF MEMORY
18 rows selected.
SQL>
8.查看当前IM内存的大小
SQL> SELECT NAME,VALUE/(1024*1024*1024) "SIZE_IN_GB" FROM V$SGA;
NAME SIZE_IN_GB
-------------------- ----------
Fixed Size .008510396
Variable Size .36328125
Database Buffers .20703125
Redo Buffers .00711441
SQL>
启动IM 列式存储的具体步骤:
9.查看当前INMEMORY_SIZE的大小
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
SQL> set lines 120
SQL> show parameter inmemory_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_size big integer 0
SQL>
10.修改INMEMROY_SIZE的大小,INMEMRORY_SIZE最小为100MB
SQL>
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
SQL> set lines 120
SQL> show parameter inmemory_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_size big integer 0
SQL>
SQL>
SQL> ALTER SYSTEM SET INMEMORY_SIZE=100M SCOPE=SPFILE;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 629145392 bytes
Fixed Size 9137968 bytes
Variable Size 251658240 bytes
Database Buffers 255852544 bytes
Redo Buffers 7639040 bytes
In-Memory Area 104857600 bytes
Database mounted.
Database opened.
SQL> show parameter inmemory_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_size big integer 100M
SQL>
11.动态修改IM列式存储的大小
SQL>
SQL> show parameter inmemory_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_size big integer 100M
SQL> alter system set inmemory_size = 250m scope=both;
System altered.
SQL> show parameter inmemory_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_size big integer 250M
SQL>
12.禁用IM列式存储
SQL>
SQL> ALTER SYSTEM SET INMEMORY_SIZE=0M SCOPE=SPFILE;
System altered.
SQL> show parameter inmemory_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_size big integer 250M
SQL> ALTER SYSTEM SET INMEMORY_SIZE=0M SCOPE=SPFILE;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup
ORACLE instance started.
Total System Global Area 629145392 bytes
Fixed Size 9137968 bytes
Variable Size 297795584 bytes
Database Buffers 314572800 bytes
Redo Buffers 7639040 bytes
Database mounted.
Database opened.
SQL> show parameter inmemory_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_size big integer 0
SQL>
将对象存储到IM列式存储中
注意以下对象不支持IM列式存储:
- 索引
- 索引组织表
- 散列群集(Hash Cluster)
- SYS用户的对象和存储在SYSTEM或SYSAUX表空间中的对象。
默认情况下,需要用户指定需要将某个对象存储到IM列式存储中。如果一个segment(分段)在磁盘上占用的空间小于64KB,那么将不会存储到IM列式存储中。
[oracle@oracle-db-19c ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Dec 5 20:17:50 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> ALTER SYSTEM SET INMEMORY_SIZE=100M SCOPE=SPFILE;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup
ORACLE instance started.
Total System Global Area 629145392 bytes
Fixed Size 9137968 bytes
Variable Size 251658240 bytes
Database Buffers 255852544 bytes
Redo Buffers 7639040 bytes
In-Memory Area 104857600 bytes
Database mounted.
Database opened.
SQL>
SQL>
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
4 PDB2 MOUNTED
5 CNDBAPDB MOUNTED
6 CNDBAPDB3 MOUNTED
7 CNDBAPDB2 MOUNTED
8 CNDBAPDB4_FRESH MOUNTED
9 CNDBAPDB6 MOUNTED
SQL>
SQL> alter session set container=PDB1;
Session altered.
SQL> create user cndba identified by cndba;
User created.
SQL> grant connect,resource,dba to cndba;
Grant succeeded.
SQL>
USER is "SYS"
SQL>
SQL> alter session set container=PDB1;
Session altered.
SQL> create table cndba.cndba INMEMORY PRIORITY LOW as select * from dba_objects;
Table created.
SQL> select segment_name,populate_status from v$im_segments where segment_name = 'CNDBA';
no rows selected
## 查询表,已经将数据加载到内存
SQL> select count(1) from cndba.cndba;
COUNT(1)
----------
73275
SQL>
SQL> col SEGMENT_NAME FORMAT A20
SQL> col populate_status FORMAT A20
SQL> select segment_name,populate_status from v$im_segments where segment_name = 'CNDBA';
SEGMENT_NAME POPULATE_STATUS
-------------------- --------------------
CNDBA COMPLETED
SQL>
IM列式存储的优先级
优先级设置适用于整个表、分区、子分区,但不适用于列。
相关文章
- Oracle-查看oracle是否有表被锁
- oracle数据库启动
- 【Python Oracle】使用cx_Oracle 连接oracle的简单介绍
- 《oracle每天一练》Oracle冷备份与数据恢复
- Oracle 查询并删除重复记录的SQL语句
- 安装配置plsql连接远端oracle数据库
- cx_Oracle连接oracle数据库
- Oracle Linux 7配置vncserver
- JDBC连接oracle RAC数据库配置
- Oracle Enterprise Linux6.3下安装Oracle11g Grid ASM
- Oracle v$sql,v$sqlarea,v$sqltext区别
- Oracle数据库冷备份与恢复(救命稻草)
- oracle数据库的备份与恢复
- 在64位机器上使用plSQL连接Oracle的问题(SQL*Net not properly installed)
- oracle 判断列是否在数据库中存在
- Atitit 为什么oracle这类大型数据库比mysql的性能机制目录1. 分区机制差别 11.1. Join算
- 数据库(mysql oracle)学习小结
- 索引使用的好处与坏处(Oracle测试)
- Oracle 11g 数据库备份和恢复 —— 筑梦之路
- 【JSP】JSP与oracle数据库交互案例
- Linux下的Oracle的数据库备份与恢复(emp和imp命令)
- Oracle 数据库用户创建、重启、导入导出
- 【数据库管理】①② Oracle逻辑存储架构(上)
- 【数据库管理】①① Oracle逻辑存储架构
- Oracle的学习心得和知识总结(十七)|Oracle数据库Real Application Testing之重放客户端wrc工具
- 【大数据开发运维解决方案】Sqoop全量同步mysql/Oracle数据到hive