oracle基础~表空间 内存机制 控制文件 参数文件

零 常用命令
   1 创建表空间
      create tablespace paul datafile '/ora10/product/oradata/ora10/paul01.dbf' size 20m;
   2 删除表空间一切
      DROP TABLESPACE FESCO ‘表空间名’ CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
一 扩充表空间
   1 手工改变已存在数据文件的大小
     ALTER TABLESPACE app_data ADD DATAFILE 'D:ORACLEPRODUCT10.2.0ORADATAEDWTESTAPP03.DBF' SIZE 20480M
  2 增加数据文件,设置自动扩展
    ALTER TABLESPACE SYSTEM ADD DATAFILE 'C:APPORACLEORADATADFYYCDBDATAFILEO2_MF_SYSTEM_CWMNZ9XV_.DBF' maxsize 7167M autoextend on ;
    autoextend on 代表自动扩容 maxsize为扩容的最大值
    问题 一般是否需要限制最大大小
二 临时表空间 临时表空间temp会在重启后才释放
三 表空间使用率监控
  1 针对临时表空间+undo表空间都是可以重复利用,所以监控把这两个空间去掉,因为有可能经常报警
     重启方式能释放掉临时表空间的占用空间
  2 针对其他表空间的处理方式就是按照扩充表空间的方式
  3 具体的sql语句
select a.tablespace_name, total, free, total-free as used, substr(free/total * 100, 1, 5) as "FREE%", substr((total - free)/total * 100, 1, 5) as "USED%" from 
(select tablespace_name, sum(bytes)/1024/1024 as total from dba_data_files group by tablespace_name) a, 
(select tablespace_name, sum(bytes)/1024/1024 as free from dba_free_space group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by a.tablespace_name;
三  补充-用户和 表 表空间关系
   1 单个表 只能属于一个用户 一个表空间
   2 创建用户需要指定表空间 用来存放表,有个默认的表空间为 user表
   3 一个表空间可以包含多个用户,但是一个用户只能属于唯一的表空间
三 补充
   system  sysaux表空间满了一般都是什么原因造成的
   检查不属于sys sytem的数据段
   select * from dba_segments where tablespace_name='system' and owner in ('sys','system')
   select bytes/1024/1204,segment_name,segment_type,owner from dba_segments where blespace_name='system' order by bytes/1024/1204 desc  排序
   segment_type ( cluster,table)
   查看到owner用户
   迁移表空间
四 oracle内存结构
   1 sga:系统全局区,用来存放操作的数据,库缓存,数据字典等控制信息的内存区域,
              成员构成: java pool,large pool,share pool, redolog buffer cache,data buffer cacche
             share pool 共享池是oracle缓冲程序数据的地方,执行过的每一条sql语句在共享池中都存有解析后的内容,共享池中存储这些语句的地方称为高速缓冲(library cache),oracle在每次运行时都时先去高速缓冲中找,而不是再解析一遍
             参数变量:   
             sga_max_size:控制实例运行时sga最大能使用的内存空间
            核心调节
            db_cache_size:data buffer cache
             shared_pool_size:shared pool
      2  pga:进程全局区,服务进程专用的内存区域,大多数内容非共享 每个进程都有自己的PGA区
  排序,hash –join,bitmap
   3  uga:用来保存用户的会话信息(如打开的游标,执行语句的私有变量),如果使用专用服务器,则uga在pga中分配,使用共享服务器,则uga在sga中分配。
  4 参数
      pga_aggregate_target,可以自动对PGA进行调整(9)
      sga_target: 大于0 自动分配 =0 手动分配 真针对SGA的自动管理(10)
      memory_target:用于自动内存管理,,针对的是所有内存 设置memory_target参数后,实际上Oracle会自动设置并调整一下两个参数来分配SGA和PGA的内存 只设置这个就行 (11)
      1 分配公示
        sga_target = memory_target*60%
        pga_aggregate_target = memory_target*40%
     2 MEMORY_MAX_TARGET:这个参数定义了MEMORY_TARGET最大可以达到而不用重启实例的值,如果没有设置MEMORY_MAX_TARGET值,默认等于MEMORY_TARGET的值。
五 控制文件
1 不可以手工修改,是二进制文件
2 在打开和关闭数据库时都要访问该文件
3 一份控制文件只能连接一个DB
4 相关的参数 control_files show parameter control
5 多重路径的备份
6 存储
1 数据库名和创建日期
2 数据库中所有日志文件和数据文件 文件名和相关路径 表空间
3 恢复数据库时所需要的同步信息
7 日常操作
1 增加控制文件镜像:
0 数据库关闭
1 cp c.clt b.ctl 复制两份镜像
2 数据库启动为nomount状态
3 alter system set control_files='dir/a.ctl','dir/b.ctl','dir/c.ctl' scope=spfile
4 数据库重新启动
总结 控制文件相当于控制中心 非常重要,完全记录了整个数据库结构变更记录
七 参数文件
1 特点
静态初始化文件pfile 9i之前
动态初始化文件 spfile spfilesidname.ora 不可编辑 init<sidname>.ora 可编辑
2 概述
1 是一个不用重启就能改变内容的二进制文件
2 通过命令alter system进行修改参数
3 能指定是临时生效还是永久生效变量值
4 修改的值能被删除掉,并重置成安装时的默认值
3 创建
create spfile from pfile
目录ORACLE_HOME/dbs
二进制转文本:create pfile from spfile; 生成init<sidname>.ora 用来修改 可以启动
文本转二进制:create spfile from pfile; 生成 spfilesidname.ora
scope=spfile/both 重启或者全局都生效
4 启动寻找顺序
spfile<sidname>.ora(二进制) -> spfile.ora(二进制)->init<sidname>.ora(可编辑)
推荐用spfile启动


原文地址:https://www.cnblogs.com/danhuangpai/p/14473468.html