老谢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