老谢oracle视频笔记_day02

1:database
 a:physical structure
   1:controlfile控制文件
    select * from v$controlfile;
    11g 以三个11g二个互为镜像文件
    坏了数据库就打不开了..
     IO一个块 16k一个文件2MB不会太大?10MB
     数据库名
     数据文件位置
     很多的参数.....
   2:datafile 数据文件
     select file_name,file_id from dba_data_files;
     数据文件都是由8k块组成
     show parameter db_block_size;
     



   3:redo logfile
     select * from v$logfile;
     SELECT * from v$log;//当前日志状态

 b:logical  structure
   tablespace


  ---------------------------------
  v$controlfile 视图[动态内存]
  dba_data_files 视图[静态表]


  



2:instance

  1:sga(system global area) 内存区域
    select * from v$sga_dynamic_components;
    select * from v$sga;
    select component from v$sga_dynamic_components;
    
    sga由如下6个部分组成
    1:data buffer cache 
      数据以8K为单位..-->读取到data buffer cache
      就是一块内存区..
    2:shared pool
      a:library cache    执行sql语句
        parse 解析[编译]-->cache
        select .. 有cache 不用再次解析
        如果足够大,保存很多cache
        如果sql重复使用机率很小没用..
      b:dictionary cache 系统表放在内容..[数据字典]
      旧版本可以设置,新版本不能动..
    3:large pool
      大块,大IO
    4:java pool
    5:streams pool
      数据同步
      1:shareplx
      2:glodengate
    6:log buffered

    通过视图查看log buffer
    show parameter log_buffer;
    show parameter share
    shared_pool_size   big integer 128M
    在旧系统中需要手工修改
    alter system set shared_pool_size=80m;

    select component,min_size from v$sga_dynamic_components;
 
    alter system set sga_target=0;//手工管理6区大小
    alter system set sga_target=300m;

//-----------------------------------------
2:background process
select paddr,name from v$bgprocess;
select paddr,name from v$bgprocess where paddr<>00;
DBWD[DB WRITER PROCESS 0] 数据库写进程

修改
表--读取-->data buffer->修改-->DBWD->表中
DBWD 最多20个-->
SQL> select paddr,name from v$bgprocess where name like %DBW%;
36 个进程
如果地址00没有启动
启动几个进程有参数限制

show parameter db_writer_processes
db_writer_processes                  integer     1
这个参数是一个静态参数不能直接修改
alter system set db_writer_processes=2;
//------------------------------------
LGWR  Redo etc..
修改数据
表-->读取-->data buffer-->修改-->LOG BUFFER[512byte]-->LGWR(优先)-->log file->data buffer-->dbwd-->表中

//-----------------------------------
SMON
oracle 启动时SMON协调
从日志文件读取没有写到数据文件中的数据

//----------------------------
PMON process clearnup
清理杀死的进程所占资源...

查看所有oracle的进程
 select addr,pname from v$process;
//-----------------------------------------

oracle 启动阶段
shutdown
nomount
mount
open

查看实例状态
select status from v$instance;
open/用户可以连接使用
shutdown immediate;

注册表可以设置
启动服务不启动实例
ORA_TEST1_AUTOSTART=TRUE
服务启动实例也启动...


//-----------------------------------
startup nomount;//
oracle 读取文件spfile;
show parameter spfile;
spfileTEST1.ora

spfile:server parameter file;
spfileSID.ora 文件格式
select status from v$instance;

startup mount;//

//----------------------------------------
案例:删除spfile...inittest1.ora 文件
SQL> startup nomount
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file D:\DEV\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITTEST1.ORA

oracle 中spfile和inittest1.ora 可以相互转换

仃止实例才可以做这样的操作
shutdown immediate


//-----------------------------------


create pfile from spfile;
create spfile from pfile;

spfiletest.ora oracle9.2开始使用(优先高)
必须放在服务器上..

二进制文件可以动态修改;;
INITtest1.ORA 文本文件修改[客户端]
需重启服务器

启动服务器到mount状态
使用控制文件
alter database mount;
show parameter control_files;
查看一下状态
select status from v$instance;

alter database open;
到这个状态才真正用到数据文件日志文件

//----------------------------------
示例删除控制文件

0: shutdown immediate
1:D:\DEV\ORACLEDATA\TEST\CONTROL01.CTL,
  D:\DEV\ORACLE\FLASH_RECOVERY_AREA\TEST\CONTROL02.CTL
2:startup mount
显示乱码可以通过
注册表解决
NLS_LANG
american_CHINA.ZHS16GBK


系统出错需要找日志文件 文件最大2GB
oracle\diag\rdbms\test\test1\alert_test1.log

//----------------------------------------
alter database close;
没有session



//----------------------------------------
修改参数
1:实例级别
  alter system(instnace)
2:session级别
 alter session
3:database 级别
alter database


instance database 关系
1:startup  nomount 启动实例
2:mount
3:open     

一个数据库至少需要一个实例
多个实例为一个数据库服务
[RAC real application cluster]
多台oracle服务器  对应一台数据文件服务器


select * from v$instnace;
select * from v$database;
select * from gv$instance;//rac



show parameter shared;

实例的参数可以查询
select name,value,type from v$system_parameter;
session级别的参数
select name,value,issys_modifiable from v$parameter
immediate 
false  改完不能立即生效..

实例级别
alter system set shared_pool_size=100m;

//---------------------------
示例:修改静态属性

alter system set processes=200; //静态参数不能直接修改
alter system set processes=200 scope=spfile;//可以
立即查看spfile文件

show parameter process;//还是原来地的值
shutdown immediate
startup
show parameter process;//还是原来地的值
//-------------------------------------------
alter system set shared_pool_size=100m;
alter system set shared_pool_size=120m scope=memory//重启动失效...
alter system set shared_pool_size=110m scope=both//spfile内存一块修改
alter system set shared_pool_size=110m 不加scope默认both

show parameter shared_pool_size; 112 //4MB颗粒


//------------------------------------------
示例
修改session级别的变量
show parameter nls_date_format
alter session set nls_date_format=yyyy/mm/dd hh24:mi:ss;

SQL> select sysdate from dual;

SYSDATE
-------------------
2014/03/06 22:34:33



//-------------------------------
创建pfile文件

1:create pfile=d:\init20140306.ora from spfile;
2:shotdown immediate
3:delete a controfile
4:select * from v$controlfile
5:修改参数
  startup nomount
6:show parameter control_files;
7:alter system set control_files=‘‘ scope=spfile;
8:alter database mount
9:alter database open
10:show parameter control_files;



//-------------------------------------------------------
Logical  Structure

tablespace
segments
extent
blocks
select * from dba_tablespaces;
永久表空间
undo表空间
临时表空间
select * from dba_data_files;
select * from dba_temp_files;//临时表空间对应临时文件


//-------------------------------
创表空间


create tablespace tom datafile D:\DEV\ORACLEDATA\TEST\tom01.DBF size 5m;
select * from dba_data_files;查看文件大小

create table tt(id int)tablespace tom;


//------------------------------
表空间包含哪些对象
select * from dba_segments where tablespace_name=TOM;

metadata  元数据
data      数据

描述数据的数据..[元数据]
id number(39)
name varchar(20)  描述数据..

insert into tt values(1,2);//数据..
元数据永远放在system表空间中

表的元数据信息
select table_name,tablespace_name from dba_tables where table_name=T1;
列的元数据认息
select table_name,column_name,column_id from dba_tab_cols where table_name=T1;
数据段
select segment_name from dba_segments where segment_name=T1;
数据段中有多少个区
select * from dba_extents where segment_name=T1;
oracle 有二个id一个指向元数据,一个指向数据
select object_id,data_object_id,object_name from dba_objects where object_name=T1;


多添加记录。。
insert into t1 select object_id,object_id,object_name from dba_objects;

查询数据字典14336块..
SQL> select segment_name,blocks from dba_segments where segment_name =T1;

SEGMENT_NAME                                                                          BLOCKS
--------------------------------------------------------------------------------- ----------
T1                                                                                         8
T1                                                                                     14336

//------------------------------------
修必表所在的表空间
alter table t1 move tablespace jerry;

//向jerry表空间添加表
create table t2(id int)tablespace jerry;

SQL> select segment_name,tablespace_name from dba_segments where tablespace_name=JERRY;

SEGMENT_NAME                                                                      TABLESPACE_NAME
--------------------------------------------------------------------------------- ---------------
T1                                                                                JERRY
T2                                                                                JERRY

//----------------------------------------------------
向表空间添加数据文件

alter tablespace jerry add datafile D:\DEV\ORACLEDATA\TEST\JERRY02.DBF size 50m;



//-----------------------------------------------------
数据文件不够用解决问题
1:改变数据文件的大小
  select * from dba_data_files;
  alter database datafile 10 resize 20m;
  一个数据文件最大32g
2:向表空间里添加文件
alter tablespace jerry add datafile D:\DEV\ORACLEDATA\TEST\JERRY02.DBF size 50m;
3:让数据文件自动扩展
alter database datafile 10 autoextend on ;//默认一次扩展1block
alter database datafile 10 autoextend on next 1m;
alter database datafile 10 autoextend on next 1m maxsize 200m;


//-----------------------------------------------
create tablespace tbs datafile D:\DEV\ORACLEDATA\TEST\tbs01.DBF size 5m autoextend on next 1m maxsize unlimited autoallocate;
//每一个数据段128k
create tablespace tbs datafile D:\DEV\ORACLEDATA\TEST\tbs01.DBF size 5m autoextend on next 1m maxsize unlimited uniform size 128k;












3:session

老谢oracle视频笔记_day02,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。