问题描述
1) 当在Init参数文件下未定义SGA_MAX_SIZE和SGA_TARGET时会发生什么?
2) 当使用自动扩展命令扩展数据文件而不指定大小时,会发生什么?
2) 当使用自动扩展命令扩展数据文件而不指定大小时,会发生什么?
专家解答
1) 我们在可能的情况下使用默认值。我在6G RAM (虚拟) 机器上这样做
[Oracle @ vbgeneric ~]$ cat /u01/应用程序/Oracle/产品/12.2/db_2/dbs/initnever.ora
db_name = 从不
[Oracle @ vbgeneric ~]$ 导出ORACLE_SID = 从不
[Oracle @ vbgeneric ~]$ sqlplus / as sysdba
SQL * Plus: 发布12.2.0.1.0在Thu 8月3日生产08:38:40 2017
版权所有 (c) 1982,2016,Oracle.保留所有权利。
连接到:
Oracle数据库12c企业版版本12.2.0.1.0-64位生产
SQL> 启动nomount
ORACLE实例启动。
总系统全局区域243269632字节
固定大小8619256字节
可变大小180357896字节
数据库缓冲区50331648字节
重做缓冲区3960832字节
SQL> 显示参数sga
名称类型值
-
允许组访问sga布尔FALSE
锁定 _ sga布尔FALSE
pre_page_sga布尔真
sga_max_size大整数232M
sga_min_size大整数0
sga_target大整数0
统一 _ 审计 _ sga _ 队列 _ 大小整数1048576
SQL> 显示参数记忆
名称类型值
-
hi_shared_memory_address整数0
内存 _ adg _ 启用布尔值TRUE
默认字符串
内存 _ 表达式 _ 使用字符串启用
默认内存 _ 强制字符串
内存 _ 最大 _ 填充 _ 服务器整数0
inmemory_query字符串启用
内存 _ 大小大整数0
内存 _ trick _ 重新填充 _ 服务器 _ 整数1
百分比
内存 _ 虚拟 _ 列字符串手册
内存 _ 最大值 _ 目标大整数0
memory_target大整数0
优化 _ 记忆 _ 感知布尔TRUE
共享 _ 记忆 _ 地址整数0
SQL> 显示参数共享
名称类型值
-
hi_shared_memory_address整数0
最大共享服务器整数
共享 _ 记忆 _ 地址整数0
shared_pool_reserved_size大整数8808038
shared_pool_size大整数168M
共享 _ 服务器 _ 会话整数
共享 _ 服务器整数0
SQL> 显示参数db_cach
名称类型值
-
数据库缓存 _ 建议字符串
db_cache_size大整数48M
2) 我们可以做一个简单的测试。我有一个名为T的表,它使用表空间中的 * 大部分 * 空间,然后创建一个新表T1并慢慢向其中添加行。
你可以看到,我们的成长只是足够的,即,适应下一个程度。
[Oracle @ vbgeneric ~]$ cat /u01/应用程序/Oracle/产品/12.2/db_2/dbs/initnever.ora
db_name = 从不
[Oracle @ vbgeneric ~]$ 导出ORACLE_SID = 从不
[Oracle @ vbgeneric ~]$ sqlplus / as sysdba
SQL * Plus: 发布12.2.0.1.0在Thu 8月3日生产08:38:40 2017
版权所有 (c) 1982,2016,Oracle.保留所有权利。
连接到:
Oracle数据库12c企业版版本12.2.0.1.0-64位生产
SQL> 启动nomount
ORACLE实例启动。
总系统全局区域243269632字节
固定大小8619256字节
可变大小180357896字节
数据库缓冲区50331648字节
重做缓冲区3960832字节
SQL> 显示参数sga
名称类型值
-
允许组访问sga布尔FALSE
锁定 _ sga布尔FALSE
pre_page_sga布尔真
sga_max_size大整数232M
sga_min_size大整数0
sga_target大整数0
统一 _ 审计 _ sga _ 队列 _ 大小整数1048576
SQL> 显示参数记忆
名称类型值
-
hi_shared_memory_address整数0
内存 _ adg _ 启用布尔值TRUE
默认字符串
内存 _ 表达式 _ 使用字符串启用
默认内存 _ 强制字符串
内存 _ 最大 _ 填充 _ 服务器整数0
inmemory_query字符串启用
内存 _ 大小大整数0
内存 _ trick _ 重新填充 _ 服务器 _ 整数1
百分比
内存 _ 虚拟 _ 列字符串手册
内存 _ 最大值 _ 目标大整数0
memory_target大整数0
优化 _ 记忆 _ 感知布尔TRUE
共享 _ 记忆 _ 地址整数0
SQL> 显示参数共享
名称类型值
-
hi_shared_memory_address整数0
最大共享服务器整数
共享 _ 记忆 _ 地址整数0
shared_pool_reserved_size大整数8808038
shared_pool_size大整数168M
共享 _ 服务器 _ 会话整数
共享 _ 服务器整数0
SQL> 显示参数db_cach
名称类型值
-
数据库缓存 _ 建议字符串
db_cache_size大整数48M
2) 我们可以做一个简单的测试。我有一个名为T的表,它使用表空间中的 * 大部分 * 空间,然后创建一个新表T1并慢慢向其中添加行。
SQL> create table t ( x varchar2(1000)) tablespace blah; Table created. SQL> insert into t select rpad('x',1000,'x') from dual connect by level <= 7800; 7800 rows created. SQL> commit; Commit complete. SQL> select bytes from user_segments where segment_name = 'T'; BYTES ---------- 9437184 1 row selected. SQL> select bytes from v$datafile where name like '%BLAH%'; BYTES ---------- 10485760 1 row selected. SQL> SQL> create table t1 ( x varchar2(1000)) tablespace blah; Table created. SQL> SQL> set serverout on SQL> declare 2 x int; 3 begin 4 loop 5 insert into t1 values ( rpad('x',1000,'x') ) ; 6 commit; 7 select bytes into x from v$datafile where name like '%BLAH%'; 8 if x > 10485760 then 9 dbms_output.put_line(x); 10 exit; 11 end if; 12 end loop; 13 end; 14 / 10551296 PL/SQL procedure successfully completed.
你可以看到,我们的成长只是足够的,即,适应下一个程度。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。