oracle系统表格大全整理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
oracle系统表查询
2005-4-29 网络
数据字典dict总是属于Oracle用户sys的。
******************************************************************************* *******************************************
1、用户:
select username from dba_users;
创建用户
CREATE USER jzmis PROFILE DEFAULT IDENTIFIED BY jzmis
DEFAULT
TABLESPACE USERS TEMPORARY
TABLESPACE TEMP ACCOUNT UNLOCK;
GRANT DBA TO jzmis WITH ADMIN OPTION;
commit;
改口令
alter user spgroup identified by spgtest;
2、表空间:
select * from dba_data_files;
select * from dba_tablespaces;//表空间
select tablespace_name,sum(bytes), sum(blocks)
from dba_free_space group by tablespace_name;//空闲表空间
select * from dba_data_files
where tablespace_name='RBS';//表空间对应的数据文件
select * from dba_segments
where tablespace_name='INDEXS';
删除表空间
drop TABLESPACE XNMIS INCLUDING CONTENTS;
创建表空间
CREATE TABLESPACE "XNMIS"
LOGGING
DATAFILE ‘E:\oracle\product\10.2.0\oradata\jzmis\xnmis.dbf’ SIZE 2048M EXTENT
MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
CREATE TABLESPACE "XNMIS"
LOGGING
DATAFILE 'E:\oracle\product\10.2.0\oradata\jzmis\XNMIS.dbf' SIZE 2048M REUSE AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
;
'E:\oracle\admin\cmid\JTAIS.ora' (path)
"CTAIS" (表空间名)
3、数据库对象:
select * from dba_objects;
CLUSTER、DATABASE LINK、FUNCTION、INDEX、LIBRARY、PACKAGE、PACKAGE BODY、PROCEDURE、SEQUENCE、SYNONYM、TABLE、TRIGGER、TYPE、UNDEFINED、VIEW。
4、表:
select * from dba_tables;
analyze my_table compute statistics;->dba_tables后6列
select extent_id,bytes from dba_extents
where segment_name='CUSTOMERS' and segment_type='TABLE'
order by extent_id;//表使用的extent的信息。
segment_type='ROLLBACK'查看回滚段的空间分配信息
列信息:
select distinct table_name
from user_tab_columns
where column_name='SO_TYPE_ID';
5、索引:
select * from dba_indexes;//索引,包括主键索引
select * from dba_ind_columns;//索引列
select i.index_name,i.uniqueness,c.column_name
from user_indexes i,user_ind_columns c
where i.index_name=c.index_name
and i.table_name ='ACC_NBR';//联接使用
6、序列:
select * from dba_sequences;
7、视图:
select * from dba_views;
select * from all_views;
text 可用于查询视图生成的脚本
8、聚簇:
select * from dba_clusters;
9、快照:
select * from dba_snapshots;
快照、分区应存在相应的表空间。
10、同义词:
select * from dba_synonyms
where table_owner='SPGROUP';
//if owner is PUBLIC,then the synonyms is a public synonym.
if owner is one of users,then the synonyms is a private synonym.
11、数据库链:
select * from dba_db_links;
在spbase下建数据库链
create database link dbl_spnew
connect to spnew identified by spnew using 'jhhx';
insert into acc_nbrdbl_spnew
select * from acc_nbr where nxx_nbr='237' and line_nbr='8888';
12、触发器:
select * from dba_trigers;
存储过程,函数从dba_objects查找。
其文本:select text from user_source where name='BOOK_SP_EXAMPLE';
建立出错:select * from user_errors;
oracle总是将存储过程,函数等软件放在SYSTEM表空间。
13、约束:
(1)约束是和表关联的,可在create table或alter table table_name add/drop/modify 来建立、修改、删除约束。
可以临时禁止约束,如:
alter table book_example
disable constraint book_example_1;
alter table book_example
enable constraint book_example_1;
(2)主键和外键被称为表约束,而not null和unique之类的约束被称为列约束。
通常将主键和外键作为单独的命名约束放在字段列表下面,而列约束可放在列定义的同一行,这样更具有可读性。
(3)列约束可从表定义看出,即describe;表约束即主键和外键,可从dba_constraints 和dba_cons_columns 查
select * from user_constraints
where table_name='BOOK_EXAMPLE';
select owner,CONSTRAINT_NAME,TABLE_NAME
from user_constraints
where constraint_type='R'
order by table_name;
(4)定义约束可以无名(系统自动生成约束名)和自己定义约束名(特别是主键、外键)
如:create table book_example
(identifier number not null);
create table book_example
(identifier number constranit book_example_1 not null);
14、回滚段:
在所有的修改结果存入磁盘前,回滚段中保持恢复该事务所需的全部信息,必须以数据库发生的事务来相应确定其大小(DML语句才可回滚,create,drop,truncate等DDL不能回滚)。
回滚段数量=并发事务/4,但不能超过50;使每个回滚段大小足够处理一个完整的事务;
create rollback segment r05
tablespace rbs;
create rollback segment rbs_cvt
tablespace rbs
storage(initial 1M next 500k);
使回滚段在线
alter rollback segment r04 online;
用dba_extents,v$rollback_segs监测回滚段的大小和动态增长。
回滚段的区间信息
select * from dba_extents
where segment_type='ROLLBACK' and segment_name='RB1';
回滚段的段信息,其中bytes显示目前回滚段的字节数
select * from dba_segments
where segment_type='ROLLBACK' and segment_name='RB1';
为事物指定回归段
set transaction use rollback segment rbs_cvt
针对bytes可以使用回滚段回缩。
alter rollback segment rbs_cvt shrink;
select bytes,extents,max_extents from dba_segments
where segment_type='ROLLBACK' and segment_name='RBS_CVT';
回滚段的当前状态信息:
select * from dba_rollback_segs
where segment_name='RB1';
比多回滚段状态status,回滚段所属实例instance_num
查优化值optimal
select ,s.optsize
from v$rollname n,v$rollstat s
where n=n;
回滚段中的数据
set transaction use rollback segment rb1;/*回滚段名*/
select ,s.writes
from v$rollname n,v$rollstat s
where n=n;
当事务处理完毕,再次查询$rollstat,比较writes(回滚段条目字节数)差值,可确定事务的大小。
查询回滚段中的事务
column rr heading 'RB Segment' format a18
column us heading 'Username' format a15
column os heading 'Os User' format a10
column te heading 'Terminal' format a10
select rr,nvl(ername,'no transaction') us,s.osuser os,s.terminal te
from v$lock l,v$session s,v$rollname r
where l.sid=s.sid(+)
and trunc(l.id1/65536)=N
and l.type='TX'
and l.lmode=6
order by ;
15、作业
查询作业信息
select job,broken,next_date,interval,what from user_jobs;
select job,broken,next_date,interval,what from dba_jobs;
查询正在运行的作业
select * from dba_jobs_running;
使用包exec dbms_job.submit(:v_num,'a;',sysdate,'sysdate + (10/(24*60*60))')加入作业。
间隔10秒钟
exec dbms_job.submit(:v_num,'a;',sysdate,'sysdate + (11/(24*60))')加入作业。
间隔11分钟使用包exec dbms_job.remove(21)删除21号作业。
安装Oracle后,经常使用的修改表空间的SQL代码(1)
配置:
Windows NT 4.0 中文版
5块10.2GB S CS I硬盘
分:C:盘、D:盘、E:盘、F:盘、G:盘
Oracle 8.0.4 for Windows NT
NT安装在C:\WINNT,Oracle安装在C:\ORANT
目标:
因系统的回滚段太小,现打算生成新的回滚段,
建立大的、新的表空间(数据表空间、索引表空间、回滚表空间、临时表空间、)
建两个数据表空间、两个索引表空间,这样建的目的是根据实际应用,
如:现有10个应用用户,每个用户是一个独立子系统(如:商业进销存MIS系统中的财务、收款、库存、人事、总经理等)
尤其大型商场中收款机众多,同时访问进程很多,经常达到50-100个进程同时访问,
这样,通过建立多个用户表空间、索引表空间,把各个用户分别建在不同的表空间里(多个用户表空间放在不同的物理磁盘上),
减少了用户之间的I/O竞争、读写数据与写读索引的竞争(用户表空间、索引表空间也分别放在不同的物理磁盘上)
规划:
C:盘、NT系统,Oracle系统
D:盘、数据表空间1(3GB、自动扩展)、回滚表空间1(1GB、自动扩展)
E:盘、数据表空间2(3GB、自动扩展)、回滚表空间2(1GB、自动扩展)
F:盘、索引表空间1(2GB、自动扩展)、临时表空间1(0.5GB、不自动扩展)
G:盘、索引表空间2(2GB、自动扩展)、临时表空间2(0.5GB、不自动扩展)
注:这只是一个简单的规划,实际规划要依系统需求来定,尽量减少I/O竞争
实现:
1、首先查看系统有哪些回滚段及其状态。
SQL> col owner format a20
SQL> col status format a10
SQL> col segment_name format a20
SQL> col tablespace_name format a20
SQL> SELECT OWNER,SEGMENT_NAME,TABLESPACE_NAME,SUM(BYTES)/1024/1024 M
2 FROM DBA_SEGMENTS
3 WHERE SEGMENT_TYPE='ROLLBACK'
4 GROUP BY OWNER,SEGMENT_NAME,TABLESPACE_NAME
5 /
OWNER SEGMENT_NAME TABLESPACE_NAME M
-------------------- -------------------- -------------------- ---------
SYS RB1 ROLLBACK_DATA .09765625
SYS RB10 ROLLBACK_DATA .09765625
<>
安装Oracle后,经常使用的修改表空间的SQL代码(2) SYS RB11 ROLLBACK_DATA .09765625
SYS RB12 ROLLBACK_DATA .09765625
SYS RB13 ROLLBACK_DATA .09765625
SYS RB14 ROLLBACK_DATA .09765625
SYS RB15 ROLLBACK_DATA .09765625
SYS RB16 ROLLBACK_DATA .09765625
SYS RB2 ROLLBACK_DATA .09765625
SYS RB3 ROLLBACK_DATA .09765625
<>
安装Oracle后,经常使用的修改表空间的SQL代码(3) SYS RB4 ROLLBACK_DATA .09765625
SYS RB5 ROLLBACK_DATA .09765625
SYS RB6 ROLLBACK_DATA .09765625
SYS RB7 ROLLBACK_DATA .09765625
SYS RB8 ROLLBACK_DATA .09765625
SYS RB9 ROLLBACK_DATA .09765625
SYS RB_TEMP SYSTEM .24414063
SYS SYSTEM SYSTEM .1953125
查询到18记录.
SQL> SELECT SEGMENT_NAME,OWNER,
<>
安装Oracle后,经常使用的修改表空间的SQL代码(4) 2 TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS
3 FROM DBA_ROLLBACK_SEGS
4 /
SEGMENT_NAME OWNER TABLESPACE_NAME SEGMENT_ID FILE_ID STATUS -------------------- -------------------- -------------------- ---------- --------- ----------
SYSTEM SYS SYSTEM 0 1 ONLINE
RB_TEMP SYS SYSTEM 1 1 OFFLINE
RB1 PUBLIC ROLLBACK_DATA 2 3 ONLINE
RB2 PUBLIC ROLLBACK_DATA 3 3 ONLINE
安装Oracle后,经常使用的修改表空间的SQL代码(5) RB3 PUBLIC ROLLBACK_DATA 4 3 ONLINE
RB4 PUBLIC ROLLBACK_DATA 5 3 ONLINE
RB5 PUBLIC ROLLBACK_DATA 6 3 ONLINE
RB6 PUBLIC ROLLBACK_DATA 7 3 OFFLINE
RB7 PUBLIC ROLLBACK_DATA 8 3 OFFLINE
RB8 PUBLIC ROLLBACK_DATA 9 3 OFFLINE
<>
安装Oracle后,经常使用的修改表空间的SQL代码(6) RB9 PUBLIC ROLLBACK_DATA 10 3 OFFLINE
RB10 PUBLIC ROLLBACK_DATA 11 3 OFFLINE
RB11 PUBLIC ROLLBACK_DATA 12 3 OFFLINE
RB12 PUBLIC ROLLBACK_DATA 13 3 OFFLINE
RB13 PUBLIC ROLLBACK_DATA 14 3 OFFLINE
RB14 PUBLIC ROLLBACK_DATA 15 3 OFFLINE
<>
安装Oracle后,经常使用的修改表空间的SQL代码(7) RB15 PUBLIC ROLLBACK_DATA 16 3 OFFLINE
RB16 PUBLIC ROLLBACK_DATA 17 3 OFFLINE
查询到18记录.
2、修改代码如下,可把以下代码存入一.sql文件,如cg_sys.sql,然后以SQL> cg_sys.sql调用执行。
--注意:各个硬盘上要事先建好oradata目录
--修改现有回滚段,使之失效,下线
alter rollback segment rb1 offline;
alter rollback segment rb2 offline;
alter rollback segment rb3 offline;
alter rollback segment rb4 offline;
alter rollback segment rb5 offline;
alter rollback segment rb6 offline;
alter rollback segment rb7 offline;
alter rollback segment rb8 offline;
alter rollback segment rb9 offline;
alter rollback segment rb10 offline;
alter rollback segment rb11 offline;
alter rollback segment rb12 offline;
alter rollback segment rb13 offline;
alter rollback segment rb14 offline;
alter rollback segment rb15 offline;
alter rollback segment rb16 offline;
--删除原有回滚段
drop rollback segment rb1;
drop rollback segment rb2;
drop rollback segment rb3;
drop rollback segment rb4;
drop rollback segment rb5;
drop rollback segment rb6;
drop rollback segment rb7;
drop rollback segment rb8;
drop rollback segment rb9;
drop rollback segment rb10;
drop rollback segment rb11;
drop rollback segment rb12;
drop rollback segment rb13;
drop rollback segment rb14;
drop rollback segment rb15;
drop rollback segment rb16;
--建数据表空间1
<>
安装Oracle后,经常使用的修改表空间的SQL代码(8) --收款、库存、订货、远程通信
create tablespace USER_DATA1 datafile
'd:\oradata\user1_1.ora' size 512M,
'd:\oradata\user1_2.ora' size 512M,
'd:\oradata\user1_3.ora' size 512M,
'd:\oradata\user1_4.ora' size 512M,
'd:\oradata\user1_5.ora' size 512M,
'd:\oradata\user1_6.ora' size 512M
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 128K next 2M pctincrease 0);
--initial 128K,因为,用户建在表空间上,而表建在用户里,为用户所拥有,
--用户继承数据表空间的存储参数,表继承用户的存储参数
--如果initial设的过大,如:5M,则每建一个空表就要占用5M的空间,即使一条记录也没有
--AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED,设置数据文件自动扩展,每一次扩展增加5M,最大空间不受限
--建数据表空间2
--物价、人事、结算、财务、总经理、合同、统计
create tablespace USER_DATA2 datafile
'e:\oradata\user2_1.ora' size 512M,
'e:\oradata\user2_2.ora' size 512M,
'e:\oradata\user2_3.ora' size 512M,
'e:\oradata\user2_4.ora' size 512M,
'e:\oradata\user2_5.ora' size 512M,
'e:\oradata\user2_6.ora' size 512M
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 128K next 2M pctincrease 0);
--建索引表空间1
create tablespace INDEX_DATA1 datafile
'f:\oradata\index1_1.ora' size 512M,
'f:\oradata\index1_2.ora' size 512M,
'f:\oradata\index1_3.ora' size 512M,
'f:\oradata\index1_4.ora' size 512M
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 128K next 2M pctincrease 0);
--建索引表空间2
create tablespace INDEX_DATA2 datafile
'g:\oradata\index2_1.ora' size 512M,
'g:\oradata\index2_2.ora' size 512M,
'g:\oradata\index2_3.ora' size 512M,
'g:\oradata\index2_4.ora' size 512M
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 128K next 2M pctincrease 0);
--建回滚表空间1
--设置初始值40M(initial 40M),则每在这个表空间中建一个回滚段,--此回滚段自动继承此回滚表空间的存储参数,也即默认文件为40M create tablespace ROLLBACK_DATA1 datafile
'd:\oradata\roll1_1.ora' size 512M,
'd:\oradata\roll1_2.ora' size 512M
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 40M next 5M pctincrease 0);
--建回滚表空间2
create tablespace ROLLBACK_DATA2 datafile
<>
安装Oracle后,经常使用的修改表空间的SQL代码(9) 'e:\oradata\roll2_1.ora' size 512M,
'e:\oradata\roll2_2.ora' size 512M
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 40M next 5M pctincrease 0);
--建临时表空间1
create tablespace TEMPORARY_DATA1 datafile
'f:\oradata\temp1_1.ora' size 512M
default storage (initial 10M next 3M pctincrease 0);
--建临时表空间2
create tablespace TEMPORARY_DATA2 datafile
'g:\oradata\temp2_1.ora' size 512M
default storage (initial 10M next 3M pctincrease 0);
--使其真正成为临时的
alter tablespace TEMPORARY_DATA1 temporary;
alter tablespace TEMPORARY_DATA2 temporary;
--建立新的回滚段,每个都一样大,不同大小的回滚段没有什么意义,系统是随机选择的。
--建多少个,根据并发访问用户的多少,
--如果你们公司每天有50-100个人员使用Oracle系统开发的管理软件,应该20个以上
create public rollback segment rb01 tablespace rollback_data1;
create public rollback segment rb02 tablespace rollback_data1;
create public rollback segment rb03 tablespace rollback_data1;
create public rollback segment rb04 tablespace rollback_data1;
create public rollback segment rb05 tablespace rollback_data1;
create public rollback segment rb06 tablespace rollback_data1;
create public rollback segment rb07 tablespace rollback_data1;
create public rollback segment rb08 tablespace rollback_data1;
create public rollback segment rb09 tablespace rollback_data2;
create public rollback segment rb10 tablespace rollback_data2;
--前8个建在回滚表空间1中,后8个在回滚表空间2
create public rollback segment rb11 tablespace rollback_data2;
create public rollback segment rb12 tablespace rollback_data2;
create public rollback segment rb13 tablespace rollback_data2;
create public rollback segment rb14 tablespace rollback_data2;
create public rollback segment rb15 tablespace rollback_data2;
create public rollback segment rb16 tablespace rollback_data2;
create public rollback segment rb17 tablespace rollback_data2;
create public rollback segment rb18 tablespace rollback_data2;
create public rollback segment rb19 tablespace rollback_data2;
<>
安装Oracle后,经常使用的修改表空间的SQL代码(10)create public rollback segment rb20 tablespace rollback_data2;
--使回滚段online,即有效
alter rollback segment rb01 online;
alter rollback segment rb02 online;
alter rollback segment rb03 online;
alter rollback segment rb04 online;
alter rollback segment rb05 online;
alter rollback segment rb06 online;
alter rollback segment rb07 online;
alter rollback segment rb08 online;
alter rollback segment rb09 online;
alter rollback segment rb10 online;
alter rollback segment rb11 online;
alter rollback segment rb12 online;
alter rollback segment rb13 online;
alter rollback segment rb14 online;
alter rollback segment rb15 online;
alter rollback segment rb16 online;
alter rollback segment rb17 online;
alter rollback segment rb18 online;
alter rollback segment rb19 online;
alter rollback segment rb20 online;
--查看现有回滚段及其状态
col segment format a30
SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;
--查看数据文件及其所在表空间、大小、状态
col file_name format a40
col tablespace_name format a20
select file_name,file_id,tablespace_name,bytes,status from dba_data_files;
至此,表空间重新规划完毕,这里讲的比较通俗,还有好多参数值得设置,能够把Oracle设置到最优的境界,
表空间设置完了,下面,就该好好的整理一下Oracle的存区了,
Oracle很有意思,存越大,效果越明显,所以有必要好好调整一下SGA区,也就是主要配置ininorcl.ora 参数文件。
. ORACLE体系结构组成
Oracle server=Oracle instance+Oracle database
Oracle instance=Memory(SGA+PGA)+Background Process
SGA: startup nomount时就被分配,写在参数文件里。
SGA_MAX_Size --------SGA区最大大小
颗粒:连续的虚拟存分配。
颗粒大小取决于SGA_MAX_SIZE的大小,若SGA_MAX_SIZE<128M,颗粒为4M,否则颗粒为16M.
SGA启动时,每个组成部分会要求尽可能多的颗粒。
固定的SGA至少会要求3个颗粒(包括redo buffers1个颗粒,Database Buffer Cache 1个,Share poor1个颗粒)
Shared Pool :用于存放最近执行的SQl 代码和最近的数据定义,包含Library Cache和Data Dictionary Cache,大小由shared_pool_size决定,
Library Cache(存放statement text, SQl 解析代码和解析计划,以避免表述被重解析)• Stores information about the most recently used SQL and PL/SQL statements
• Enables the sharing of commonly used statements
• Is managed by a least recently used (LRU) algorithm
• Consists of two structures:
– Shared SQL area
– Shared PL/SQL area
• Size determined by the Shared Pool sizing
Data Dictionary Cache:包含从数据字典表对表,列,权限的定义.
Database Buffer Cache:包含3个独立的子cache,统计信息由v$DB_CACHE_ADVICE DB_CACHE_SIZE: 定义标准Block默认的Buffer Cache; 至少一个颗粒。
buffer cache分为default,keep,recycle.
DB_KEEP_CACHE_SIZE: 对应用于存放经常存放的数据的缓冲池大小。
DB_RECYCLE_CACHE_SIZE: 用于存放一次性数据缓冲池大小。
Redo Log Buffer :记录数据库Block的改变,主要用于恢复,大小由Log_Buffer决定。
Large Pool:用于分担Shared Pool池负担,主要用于RMAN备份中和共享服务器模式下!不使用LRU List,大小由Large_Pool_Size决定。
Java Pool: 存放Java命令和代码,大小由Java_Pool_Size决定。
共享服务器模式:多个客户机连接共享一个已分配数据库的共享池,如果需要并行连接到数据库并有效使用系统资源的用户较多,请使用该模式,此时将启用oracle共享服务器模式。
专用服务器模式:数据库将为每一个客户机连接分配专用资源,当预期客户机连接总数较小或客户机向数据库发出的请求连续时间较长,使用该模式。
PGA:用户独占,有用户连接启动服务器进程时分配,包括4个部分:
1)用户会话信息
2)用户curse信息
3)排序区大小(每一个用户连接,就分配一个排序区)
4)堆栈信息
后台进程:
DBWR会触发LGWR,但DBWR和LGWR之间互相独立,无绝对的先后顺序。
要深刻理解5类后台发生的条件及所作的操作
Checkpoint发生时所作的操作:
• DBWn writes a number of dirty database buffers,which are covered by the log that is being checkpointed,to the data files.
• The checkpoint background process CKPT updates the control file to reflect that it has completed a checkpoint successfully. If the checkpoint is caused by a log switch,
CKPT also updates the headers of the data files.
• Checkpoints can occur for all data files in the database or only for specific data files. Checkpoint发生的条件:
•日志切换时switch logfile
•实例以normal,transactional,or immediate选项关闭时。
• When forced by setting the FAST_START_MTTR_TARGET initialization parameter
•When manually requested by the database administrator
•When the ALTER TABLESPACE [OFFLINE NORMAL|READ ONLY|BEGIN BACKUP]command causes checkpointing on specific data files
SCN is the System Change Number,
sequentially assigned by LGWR ,to indicate the “time” of a commit,rollback or checkpoint
The full checkpoint is only done:
• A LTER SYSTEM CHECKPOINT
• SHUTDOWN (except abort)
A log switch does not perform a full checkpoint.
/showthread.php?s=&threadid=612858&perpage=10&pagenumber=1
buffer 容被写到磁盘,仅仅表示该buffer 可以被覆盖(其他进程可以pin住这个buffer 读block 进来),并不表示这个buffer 里面的数据就没了,至于被踢走更是一个模糊的说法。
--------------------------------------------------------------------------
所有Dirty Buffer,首先要被移动到Dirty List上去,然后从Dirty List上被写出。
一旦Buffer变得Dirty,在被写出之前都不能被重用。
也就是不存在Hot/Cold之说了。
Hot/Cold是针对LRU List,并非Dirty List。
加深(有价值的)文章
1)oracle体系结构介绍.pdf(en).
2)redo logs and recovery.ppt,checkpoint constructor.ppt(讲redolog,rollforward&back
最透彻的)
3)ITPUB第十期
4) oracle存分配与调整.pdf(by biti_rainy)
5) oracle中需要牢牢记住的几个进程触发条件
2. Getting started with the oracle server
1)use DBCA create/configure/del/manage DB
the usage of templates of dbca: 创建好数据库模板后,下次用DBCA时会出现以前创建的模板!
Sys,system都是在创建数据库时自动创建,并被赋予了DBA角色(记住,sysdba,sysper 是权限,dba是角色),它们的初始密码分别是change_on_install和manager。
----------------------------------------------------------------------------
Ora-12560错误原因(更多地出现在windows主机上):
一台host上安装了多个DB,但连接时没有指定,可用set oracle_sid=***
----------------------------------------------------------------------------
Oracle OEM:为DBA提供了一个集中管理多个oracle数据库节点的图形工具。
创建OEM的步骤:
1)在客户端利用Enterprise Manager Configuration Assitant创建repository资料
档案库(创建过程中会让你在server端指定新建一个用户,一个OEM_reposity表空间)。
2)在客户端主机上,启动相关服务(ManagementServer,Agent)
3)在客户端启动OEM控制台
以sysman/oem_temp用户登陆(sysman用户是默认存在于客户端的图形化工具里的,系统此时会提醒你修改sysman密码。
说明:也可以选择独立启动进入OEM,用这种方法就不需要上面的步骤。
但此时的OEM 的功能会少很多。
4)连接server端数据库,输入你在创建数据库时新建的用户名及密码或以sys用户登陆。
说明:建好OEM后又修改了sys密码,可能需要重建repository。
3。
管理oracle实例
spfile,pfile的互相创建
spfile是二进制文件,oracle推荐,RMAN已把spfile纳入备份体系中。
create spfile from pfile(若该命令不能运行,证明instance由spfile启动)
修改静态参数时,又想从spfile启动,可以:
1)shutdown db
2)edit pfile
3)create spfile from pfile
4)startup
应经常同步pfile和spfile
(动态)修改spfile的参数
alter system set undo_tablespace=undo2
(不加scope表示就是both,默认也是both,如果只想在memory or spfile两者中选其一,就需要在scope里说明.
ALTER SYSTEM RESET undo_suppress_errors SCOPE=BOTH SID=’*’;删除或重设参数Order of precedence:
spfileSID.ora> Default SPFILE>initSID.ora>Default PFILE
DB启动的3个步骤
1)nomount( 读spfile/pfile,初始化SGA)
2)mount(读控制文件)
3)open(读控制文件描述的各个文件并检查一致性)
session:一个用户的连接
transaction:事务,一次修改或select。
Alert_SID.log(对应background_dump_dest)实例的监控调试文件
User Trace Files(对应USER_DUMP_DEST),大小由MAX_DUMP_FILE_SIZE Enabling or Disabling User Tracing
• 会话级:
ALTER SESSION SET SQL_TRACE = TRUE
dbms_system.SET_SQL_TRACE_IN_SESSION
•事例级在参数文件里设置:SQL_TRACE = TRUE
加深(有价值的)文章:pfile和spfile文件(by eygle)
4. 创建数据库
数据库管理的认证方式(需要查找文章仔细看):
1)OS认证
2)password文件(参数文件只保存sys用户的口令,其他用户包括system用户的口令都保存在数据字典中。
语法orapwd file=/opt/dbs/ora password=abc123 entries=5
entries :最多有sys用户权限的用户数量
初始化文件里的参数remote_login_password_file=exclusive
----look /opt/rdbms/admin/buildall.sql
create database db01
maxlogfiles 10
maxdatafiles 1024
maxinstances 2
logfile
GROUP 1 ('/u01/oradata/db01/log_01_db01.rdo') SIZE 15M,
GROUP 2 ('/u01/oradata/db01/log_02_db01.rdo') SIZE 15M,
GROUP 3 ('/u01/oradata/db01/log_03_db01.rdo') SIZE 15M,
datafile 'u01/oradata/db01/system_01_db01.dbf') SIZE 100M,
undo tablespace UNDO
datafile '/u01/oradata/db01/undo_01_db01.dbf' SIZE 40M
default temporary tablespace TEMP
tempfile '/u01/oradata/db01/temp_01_db01.dbf' SIZE 20M
extent management local uniform size 128k
character set AL32UTE8
national character set AL16UTF16
set time_zone='America/New_York';
---------------------------------------------------------------------
创建数据库最好的方法:推荐用DBCA
用手工创建比较复杂!
数据库管理的认证方式(需要找文章看)
图解oracle口令认证方法
我们在linux 把oracle 安装完毕后我们可以通过下边的命令进入数据库. $ cd $ORACLE_HOME/dbs
$ sqlplus “/ as sysdba”
SQL>show user
USER is "SYS"
并没有让我们输入用户名和密码
这就是说.用户只要登陆到LINUX系统就可以进入到ORACLE数据库系统里.这样对ORACLE的安全有很多隐患.
下面我们就ORACLE进行设置使它必须输入用户名和密码才能进入.
首先我们修改参数文件.将参数文件REMOTE_LOGIN_PASSWORDFILE 修改为
EXCLUSIVE (一般默认就是EXCLUSIVE. 如果不是改成. 参数文件一般在
/opt/oracle/admin/ora9i/pfile/ 下)
除了参数文件我们还要修改网络配置文件 SQLNET.ORA以改变数据库的人证方式.
该文件位于 /opt/oracle/product/9.2/network/admin/sqlnet.ora
在SQLNET.ORA增加一行
SQLNET.AUTHENTICATION_SERVICES= (NTS)
这时候我们在输入 $sqlplus “/ as sysdba”会要求你输入用户名和密码. sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Sun Sep 3 16:18:44 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
这时我们输入用户名和密码也不能进入.我们应当这么书写
$ sqlplus “sys/你的密码 as sysdba”
就可以进入了!
这个方法对ORACLE9.2 以上版本十分有效.
5. 使用数据字典或动态性能视图
数据字典:DB的核心,sys用户拥有,保存在system表空间,描述数据库及其对象,
为只读,通过select来查询。
数据字典包含:1)基础表: 保存DB的描述,由create db时的sql.bsl创建
2)数据字典视图:用于简化基础表信息,通过公用别名来访问,由catalog.sql创建。
Catproc.sql :创建PL/SQL的环境。
数据字典视图类别:
DBA_XXX:所有对象
ALL_XXX:用户所能访问的所有对象
USER_XXX:用户所拥有的所有对象
通用视图:DICTIONARY(可查所有数据字典),DICT_COLUMNS
SCHEMA对象:DBA_TABLES,DBA_INDEXES,DBA_TAB_COLUMNS,DBA_CONSTRAINS 空间分配:DBA_SEGMENTS,DBA_EXTENTS
数据库结构:DBA_TABLESPACES,DBA_DATA_FILES
动态性能表:sys用户拥有,记录数据库当前活动的虚拟表,存在于存中,以V$开头,在v$fixed_table中列出。
• V$DATABASE
• V$DATAFILE
• V$INSTANCE
• V$PARAMETER
• V$SESSION
• V$SGA
• $SPPARAMETER
• V$TABLESPACE
• V$THREAD
• V$VERSION
set wrap off
user_tables;
all_tables;
dba_tables;
6 管理控制文件
当数据库的结构发生变化的时候,控制文件随即发生变化。
添加控制文件步骤:
1)sql>alter system set control_files='/opt/oradata/u01/ctrl01.ctl','/opt/oradata/u01/ctrl02.ctl' scope=spfile;(必须加spfile,因为修改不能写到存里
2)sql>shutdown immediate;
3) cp /opt/oradata/u01/ctrl01.ctl /opt/oradata/u01/ctrl02.ctl
1)startup;
重要的视图:
V$CONTROLFILE:
V$PARAMETER:
V$CONTROLFILE_RECORD_SECTION:
V$BACKUP
V$DATAFILE
V$TEMPFILE
V$TABLESPACE
V$ARCHIVE
V$LOG
V$LOGFILE
V$LOGHIST
V$ARCHIVED_LOG
V$DATABASE
show parameter control;
select * from v$controlfile_record_section;
select * from v$tempfile;
备份控制文件
alter database backup controlfile to '../filepath/control.bak';
备份控制文件,并将二进制控制文件变为了arc 的文本文件
alter database backup controlfile to trace;
控制文件在备份中意义重大,建议每次对其单独备份。
同时应该增大CONTROL_FILE_RECORD_KEEP_TIME这个初始化参数的值。
以便备份信息能更长时间的保留。
7 管理在线重做日志
redo log会记录数据库的所有操作,不仅仅只包括修改操作!
Redo log switch时会触发checkpoint,同时信息会写到controlfile里。
alter system switch logfile;强行进行一次日志switch,归档/非归档均可使用
alter system archive log current;强行归档并进行日志切换,用于归档模式下
alter system checkpoint;--强制进行一次checkpoint
FAST_START_MTTR_TARGET:checkpoint 同步频率参数,9I新参数,表示将来系统crash后你期望recover的时间。
用来替代以前版本里的FAST_START_IO_TARGET,LOG_CHECKPOINT_TIMEOUT
将参数LOG_CHECKPOINT_TO_ALERT设为true(默认为false),系统会将每个SCN 记录在alert_SID.log里!
加入一个日志组
alter database add logfile group 3 ('opt/oracle/log6.rdo' size 10M);
向日志组中加入一个成员
alter database add logfile member '/opt /oracle/log6b.rdo' to group 3;
删除日志组:当前日志组不能删;活动的日志组不能删;非归档的日志组不能删
alter database drop logfile group 3;
删除日志组中的某个成员,但每个组的最后一个成员不能被删除???????
alter databse drop logfile member '/opt/oracle/log6.rdo';
redo log的状态:
1)inactive :非活动的状态
2)active: 活动的状态,oracle认为可疑的状态
3)current:当前将要写的redo log,执行归档后,current之前的redo log肯定也必须
被归档,否则数据库处于挂死状态。
4)unused:新增加的redo log状态
重命名日志文件
1--- shutdown immediate;
2---移动online redo log
3---startup mount
4---alter database rename file '/6.rdo' to '/6a.rdo';
5---alter database open
清除在线日志
alter database clear logfile '/opt/oracle/ora_log_file6.rdo'; alter database clear logfile group 3;
清除非归档日志
alter database clear unarchived logfile group 3;
归档模式到非归档模式的互换
1---startup mount;
2---alter database noarchivelog/archivelog;
3---alter database open
achive log start;---启动自动归档
alter system archive all;--手工归档所有日志文件
archive log list;
alter system archive log start;--启动自动存档
show parameter log_archive;
LOGMINOR的使用
v$log;
v$log_history;
能看出已归档的redo log seq.
v$archived_log;
v$logfile;
从v$Log重要列:
ARC : redo log是否被归档
STATUS: current / inactive/ active/
First_time: 记录该redo log记录数据库第一次修改的时间
8.管理表空间和数据文件
Locally managed tablespace:空闲extent的管理放在本地表空间里,位图用于
记录空闲extent,位图的值0,1对应free or used,每个bit对应一个extent。
优点:由于空闲extent的管理放在本地表空间里,因而减少了对数据字典的竞争,空间的分配和回收也不会产生系统undo段。
由于采用标准大小,无需愈合!默认的,分配的空间按标准大小来划分。
若创建时UNIFORM SIZE为128K,则新建的extent初始划分了128K,即使你创建的表只分配了64K;
uniform size=sort_area_size*N
sort_area_size在PGA区
Dictionary-managed tablespace:空闲extent的管理放在数据字典里,空
间的分配和回收会修改相关表!易产生碎片!
Temp表空间:初始创建时分配的大小只是最大值,并不是立刻就分配的大小,磁盘空间足够的话就可以创建永旧表空间来排序,不一定非要用,也不推荐用,会产生OS级别的碎片!restart时由SMON收回。
创建默认Temp表空间:
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE default_temp2;
Temp表空间的限制:不能在没有新的临时表空间的情况下删除当前的临时表空间,不能被offline或改为永久表空间。
Create temporary tablespace userdata tempfile '/opt/oradata/undo101.dbf' size 10m extent management local;
设置数据库缺省的临时表空间
alter database default temporary tablespace tablespace_name;
系统/临时/在线的undo表空间不能被offline
永久表空间:初始创建时分配的大小就是立刻就分配的大小。
将表空间设为read only的限制条件:
1)表空间必须online
2)在线备份该表空间时不能设为read only
3)系统会等待当前事务完成
4)不能包含活动回滚段
只读表空间里的对象可以删除,因为删除只是在数据字典里删除这个对象
将数据字典管理的表空间转换为本地管理表空间:
DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL(’SYSTEM’);
创建undo tablespace(只能用本地管理模式下)
create undo tablespace undo1 datafile '*.dbf' size 40M extent management local;
Dropping Tablespaces user
• INCLUDING CONTENTS :drops the segments.
• INCLUDING CONTENTS AND DATAFILES :deletes data files.
• CASCADE CONSTRAINTS drops all referential integrity constraints.
检查数据文件是否有extent的方法:检查DBA_EXTENT里是否有extent,如果无,则表明无数据!
使数据文件自动扩展:
1)create tablespace userdata datafile '*.dbf' size 100M AUTOEXTEND ON NEXT 5M MAXSIZE 200M;
2) alter database datafile '*.dbf' autoextend on/off;
手工修改数据文件大小(在open时操作,只要resize的大小大于已使用的即可)
alter database datafile '/opt/oradata/undo102.dbf' resize 50m;
给表空间扩展空间
alter tablespace userdata add datafile '*.dbf' size 10m;
移动数据文件:
1)将对应的表空间offline(系统会等待当前事务结束)
2)alter tablespace user rename datafile '*01.dbf' to '*02.dbf';
重命名系统表空间
1)sql>shutdown immediate;
2)sql>startup mount;
3)sql>alter database rename file '*1.dbf' to '*2.dbf';
表空间和数据文件的对应关系
select , from v$tablespace t1,v$datafile t2 where t1.ts=t2.ts; 在创建表空间时,设置表空间的段空间管理模式,这里用的是自动管理
create tablespace userdata datafile '*01.dbf' size 100M extent management dictionary default storage(initial 100k next 100k pctincrease 10) offline;。