暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle SQL_Target,表空间问题

askTom 2017-08-03
241

问题描述

1) 当在Init参数文件下未定义SGA_MAX_SIZE和SGA_TARGET时会发生什么?
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并慢慢向其中添加行。

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论