一个称职的数据库DBA仅仅取得ORACLE厂家认证是不够的,关键是真实环境的历练,笔者从事ORACLE DBA多年,经历ORACLE版本从8i到10g(注:对于一个公司或单位的真实环境,对于版本的追求首要的,关键的稳定性),操作系统从windows 单机、双机到主流IBM、HP的UNIX操作系统,以下是笔者多年从事ORACLE DBA的一些心得,希望能给初学者一些启示和鼓励,与同道中人带来一些共鸣。
作为一个专业的DBA必须具备以下技能:
一、os : linux,solaris或其他unix起码要一种
二、bash (不精通也要熟) LINUX与UNIX SHELL编程指南.pdf
三、perl (精通):
Perl_CD_BookShelf.chm,包括learning perl、perl pragramming
四、java(掌握)包括jdbc thin,oci等4类不同的连接方式,性能设置,一些中间件的知识了解一些就够了
五、oracle performance tuning(范围很广)
OCP performance book下tom的书《Wrox - Expert one-on-one Oracle》(Oracle专家高级编程)
本 书是一本关于使用Oracle成功开发应用程序的工具手册,由Oracle公司的资深开发人员Thomas Kyte集自己多年开发经验编写。学习本书能帮助读者彻底理解Oracle的工作原理 ......
SQL> alter tablespace myalan
2 add datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\IRMDB\myspace02.dbf' size 10m;
表空间已更改。
SQL> select file_name from dba_data_files where tablespace_name='MYALAN';
FILE_NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\IRMDB\MYSPACE.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\IRMDB\MYSPACE02.DBF
SQL> alter database datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\IRMDB\MYSPACE02.DBF' offline drop;
数据库已更改。
SQL> select file_name from dba_data_files where tablespace_name='MYALAN';
FILE_NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\IRMDB\MYSPACE.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\IRMDB\MYSPACE02.DBF
SQL> alter tablespace myalan drop datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\IRMDB\MYSPACE02.DBF';
alter tablespace myalan drop datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\IRMDB\MYSP ......
常用的几个数据字典:
user_objects : 记录了用户的所有对象,包含表、索引、过程、视图等信息,以及创建时间,状态是否有效等信息,是非DBA用户的大本营。想知道自己有哪些对象,往这里查。
user_source :包含了系统中对象的原码,如存储过程,FUNCTION、PROCEDURE、PACKAGE等信息
cat或Tab :包含当前用户所有的用户和视图信息和同义词信息,cat还多了一个SYNONYM;
dict :系统中所有的数据字典都存储在这里面
Oracle中的数据字典有静态和动态之分。静态数据字典主要是在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。以下分别就这两类数据字典来论述。
1. 静态数据字典
这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、 all_*、 dba_*。
user_*
该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
all_*
该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并 ......
数据字典dict总是属于Oracle用户sys的。
1、用户:
select username from dba_users;
改口令
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';
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 ......
bbed.exe 数据块浏览和编辑工具
dbv.exe 数据文件逻辑检测工具
exp.exe 数据导出工具
imp.exe 数据导入工具
mig.exe 数据库移植工具
nmumigrate.exe Data Gatherer移植工具
ocopy.exe 裸分区数据文件备份工具
oradim.exe Oracle服务创建、删除工具
orakill.exe Oracle线程删除工具
orapwd.exe Oracle密码文件创建工具
orastack.exe Oracle进程堆栈修改工具
oratclsh.exe TCL脚本解释器
otrccol.exe trace命令行服务管理工具
otrccref.exe trace管理文件生成工具
otrcfmt.exe trace数据格式化工具
otrcrep.exe trace数据统计报表生成工具
rman.exe 备份与恢复工具
setlinks.exe 磁盘分区管理工具
sqlldr.exe sql Load数据批量导入工具
sqlplus.exe 命令行的sqlplus
svrmgrl.exe Oracle实例 ......
对表进行分析,通常情况下可以对表,索引,列进行单独分析,或者进行组合分析,但这三者哪些是相对重要的,哪些分析显得不那么重要?通过本篇文章的实验相信大家也会对直方图有更一步的了解.
1.首先创建测试表,并插入100000条数据
SQL> create table test(id number,nick varchar2(30));
Table created.
SQL> begin
2 for i in 1..100000 loop
3 insert into test(id) values(i);
4 end loop;
5 commit;
6 end;
7 /
PL/SQL procedure successfully completed.
更新nick字段,使数据发生严重倾斜
SQL> update test set nick='abc' where rownum<99999;
99998 rows updated.
SQL> commit;
Commit complete.
SQL> create index idx_test_nick on test(nick);
Index created.
SQL> update test set nick='def' where nick is null;
2 rows updated.
SQL> commit;
Commit complete.
--只对索引进 ......