一、In-Memory相关参数
1.INMEMORY_ADG_ENABLED

SQL> alter system set inmemory_adg_enabled=true sid='*';
2.INMEMORY_AUTOMATIC_LEVEL

根据大小调整Automatic In-Memory shared pool要求的经验法则,将5 KB乘以SGA内存的INMEMORY段数。 例如,如果10,000个段具有INMEMORY属性,则为Automatic In-Memory保留50 MB的共享池。

alter system set INMEMORY_CLAUSE_DEFAULT='NO INMEMORY' scope=both; alter system set INMEMORY_CLAUSE_DEFAULT='INMEMORY MEMCOMPRESS FOR CAPACITY HIGH' scope=both; alter system set INMEMORY_CLAUSE_DEFAULT='INMEMORY MEMCOMPRESS FOR QUERY LOW PRIORITY LOW' scope=both; alter system set INMEMORY_CLAUSE_DEFAULT='INMEMORY NO MEMCOMPRESS' scope=both; alter system set INMEMORY_CLAUSE_DEFAULT='INMEMORY MEMCOMPRESS FOR QUERY DISTRIBUTE AUTO DUPLICATE ALL' scope=both; alter system set INMEMORY_CLAUSE_DEFAULT='' scope=both;






In-Memory Dynamic Scans需要资源管理器。 因此,当将INMEMORY_SIZE的值从0更改为非零值时,将自动启用资源管理器。 不需要特定的资源计划。


将参数设置为false会导致优化器在优化SQL语句期间忽略表的inmemory属性。 通过将OPTIMIZER_FEATURES_ENABLE初始化参数设置为小于12.1.0.2的值,也可以实现此行为。
二、IM相关视图
1.列压缩级别
set linesize 200 pagesize 200; col col_name for a60; select inst_id, owner || '.' || table_name || '.' || column_name as col_name, INMEMORY_COMPRESSION from gv$IM_COLUMN_LEVEL order by 1, 2;
2.IM段(只标记为IN-MEMORY未POPULATE的不显示)
set linesize 200 pagesize 200; col inst_id heading "实例"; col obj_name heading "对象" for a30; col partition_name heading "分区名" for a10; col segment_type heading "段类型" for a8; col tablespace_name heading "表空间" for a10; col POPULATE_STATUS heading "填充状态" for a10; col INMEMORY_PRIORITY heading "填充优先级" for a10; col INMEMORY_DISTRIBUTE heading "RAC分布" for a10; col INMEMORY_DUPLICATE heading "RAC副本" for a15; col INMEMORY_COMPRESSION heading "压缩级别" for a15; col INMEMORY_SERVICE_NAME heading "服务名" for a10; SELECT inst_id, owner||'.'||segment_name obj_name, SEGMENT_TYPE, partition_name, tablespace_name, BYTES POPU_GB, BYTES_NOT_POPULATED NOT_POPU_GB, POPULATE_STATUS, INMEMORY_PRIORITY, INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE, INMEMORY_COMPRESSION, INMEMORY_SERVICE, INMEMORY_SERVICE_NAME FROM gv$im_segments order by 1,3;
3.IM内存池分配(1MB pool为实际列的填充数据,64KB pool为元数据的填充数据)
set linesize 200 pagesize 200 select INST_ID, POOL, ALLOC_BYTES / 1024 / 1024 ALLOC_MB, USED_BYTES / 1024 / 1024 USED_MB, POPULATE_STATUS from GV$INMEMORY_AREA ORDER BY INST_ID;
4.IM FastStart
set linesize 200 pagesize 200; col tablespace_name heading "表空间" for a20; col status heading "状态" for a11; col ALLOCATED_SIZE heading "已分配GB"; col USED_SIZE heading "已使用GB"; col LAST_CHECKPOINT_TIME heading "fs_ckpt_time" for a30; col LAST_POPULATE_TIME heading "fs_填充" for a30; col NUM_DEFERRED_WRITES heading "延迟写"; select TABLESPACE_NAME, STATUS, ALLOCATED_SIZE, USED_SIZE, LAST_CHECKPOINT_TIME, LAST_POPULATE_TIME, NUM_DEFERRED_WRITES from V$INMEMORY_FASTSTART_AREA;
5.启用IM的对象
set linesize 200 pagesize 200; col owner for a10; col segment_name for a20; col segment_type for a10; SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE, INMEMORY, INMEMORY_PRIORITY FROM DBA_SEGMENTS WHERE INMEMORY = 'ENABLED';
6.启用IM的表
set linesize 200 pagesize 200; col owner for a10; col TABLE_NAME for a20; SELECT OWNER, TABLE_NAME, INMEMORY FROM DBA_TABLES WHERE INMEMORY = 'ENABLED';
7.IM内存
SELECT NAME,VALUE/1024/1024 MB from v$SGA;
三、相关操作 1.启用与禁用IM Column Store
--启用 ALTER SYSTEM SET INMEMORY_SIZE = 10G SCOPE=SPFILE; --禁用 ALTER SYSTEM SET INMEMORY_SIZE =0 SCOPE=SPFILE; --动态增加(最少增加128MB) ALTER SYSTEM SET INMEMORY_SIZE = 11G;
2.启用或禁用表IM Column Store
--新建表启用IM create table test_inmem( id number(5) primary key, test_col varchar2(15)) inmemory; --已存在的表启用IM ALTER TABLE sh.sales INMEMORY; --已存在的表禁用IM ALTER TABLE sh.sales NO INMEMORY;
3.启用表列的IM Column Store
--所有虚拟列启用IM alter table hr.employees add(weekly_sal as (round(salary*12/52,2))); ALTER TABLE hr.employees INMEMORY; ALTER SYSTEM SET INMEMORY_VIRTUAL_COLUMNS=ENABLE SCOPE=SPFILE; --为特定虚拟列启用IM ALTER SYSTEM SET INMEMORY_VIRTUAL_COLUMNS=manual; CREATE TABLE hr.admin_emp ( empno NUMBER(5) PRIMARY KEY, ename VARCHAR2(15) NOT NULL, job VARCHAR2(10), sal NUMBER(7,2), hrly_rate NUMBER(7,2) GENERATED ALWAYS AS (sal/2080), deptno NUMBER(3) NOT NULL) INMEMORY; ALTER TABLE hr.admin_emp INMEMORY(hrly_rate); --为列集启用IM ALTER TABLE oe.product_information INMEMORY MEMCOMPRESS FOR QUERY ( product_id, product_name, category_id, supplier_id, min_price) INMEMORY MEMCOMPRESS FOR CAPACITY HIGH ( product_description, warranty_period, product_status, list_price) NO INMEMORY (weight_class, catalog_url);
4.启用表空间的IM Column Store
--新创建表空间 CREATE TABLESPACE users01 DATAFILE '/oracle/app/oracle/oradata/orcl/users11.dbf' SIZE 40M ONLINE DEFAULT INMEMORY; --已存在表空间 ALTER TABLESPACE users01 DEFAULT INMEMORY MEMCOMPRESS FOR CAPACITY HIGH PRIORITY LOW;
5.启用物化视图IM Column Store
CREATE MATERIALIZED VIEW oe.prod_info_mv INMEMORY AS SELECT * FROM oe.product_information; ALTER MATERIALIZED VIEW oe.prod_info_mv INMEMORY PRIORITY HIGH;
6.强制IM对象填充
EXEC DBMS_INMEMORY.POPULATE('SH', 'CUSTOMERS');
7.捕获、填充和删除IM Expression
EXEC DBMS_INMEMORY_ADMIN.IME_CAPTURE_EXPRESSIONS('CURRENT');
EXEC DBMS_INMEMORY_ADMIN.IME_POPULATE_EXPRESSIONS();
EXEC DBMS_INMEMORY.IME_DROP_EXPRESSIONS('hr', 'employees');
8.IM Column Store启用IM FastSart
create tablespace fs_tbs datafile '/oracle/app/oracle/oradata/orcl/fs_tbs.dbf' size 400m reuse autoextend on;
EXEC DBMS_INMEMORY_ADMIN.FASTSTART_ENABLE('fs_tbs');
--将fastSart迁移到其他表空间
EXEC DBMS_INMEMORY_ADMIN.FASTSTART_MIGRATE_STORAGE('new_fs_tbs');
--禁用fastSart
EXEC DBMS_INMEMORY_ADMIN.FASTSTART_DISABLE;
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- IM列存储参数、视图与相关操作
IM列存储参数、视图与相关操作
26-03-03 - Oracle 19c数据库体系结构-1
Oracle 19c数据库体系结构-1
26-03-03 - Oracle 账号 EXPIRED(GRACE) 意义-拾亿
Oracle 账号 EXPIRED(GRACE) 意义-拾亿
26-03-03 - 主备数据库状态手工比对(一)
主备数据库状态手工比对(一)
26-03-03 - 多表连接的三种方式详解 hash join、merge join、 nested loop
- Oracle 12c SCN推进方法汇总(四)之修改控制文件
Oracle 12c SCN推进方法汇总(四)之修改控制文件
26-03-03 - 从Oracle数据库故障到AIX内存管理
从Oracle数据库故障到AIX内存管理
26-03-03 - 苏宁有货:为“轻创业”而来
苏宁有货:为“轻创业”而来
26-03-03 - Oracle 10g 增删节点
Oracle 10g 增删节点
26-03-03 - 【BUILD_ORACLE】Oracle 19c RAC搭建(六)创建RAC数据库
