CONNECT_NUMBERS;
alter user USERNAME profile PROFILENAME;
数据库参数文件
1、参数文件位置$ORACLE_HOME/dbs/spfileINSTANCE_NAME.ora,参数主要分为
动态参数和非动态参数,动态参数修改够直接生效,非动态参数需要重新启动数据库才能生效。 2、 修改参数的方法
altersystem set PARAMETER_NAME = VAlUE scope=both(system/spfile)
3、几个重要的参数
A、db_block_size 数据库块大小,数据库创建时决定,创建后不能修改。 B、db_block_buffers 数据高速缓冲区大小为此值与db_block_buffes的乘
积,该区越大越好。
C、share_pool_size 程序高速缓冲区和数据字典缓冲区的大小,主要用于存
储执行过的sql语句,减少重复分析,提高运行速度。该区也越大越好,但建议数据高速缓冲区加上程序高速缓冲区和数据字典缓冲区的大小(即SGA)一般不超过系统物理内存的50%。
D、sort_area_size 每个会话用于排序操作的内存大小,建议为默认值的两
倍到1M之间。
E、process 能同时访问数据库的最大进程数,根据连接数的多少,来设定,
一般为300以上。
F、db_io_slaves 后台写进程数 对I/O比较繁忙的数据库,可以将其设为多
于1个。
(以上参数以9i为参考,在10g里个别参数名有所变化) 数据库概况的查询
1、表空间的情况
select tablespace_name,stauts from dba_tablespaces;
2、数据文件的情况
SELECT FILE_NAME,FILE_ID,TABLESPACE_NAME FROM DBA_DATA_FILES;
3、段的情况
SELECT SEGMENT_NAME,,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;
4、表、存储过程的拥有者名字和创建日期
select owner,object_name,object_type,created from all_objects
where object_type=’TABLE’OR OBJECT_TYPE=’PROCEDURE'
5、其他常用的视图和表
v$lock 锁的情况 v$session 会话的情况 v$process 进程的情况 v$parameter 数据库参数 v$rollname 回滚段的情况 v$sqlarea 共享池中的SQL语句 v$waitstat 等待的会话 dba_jobs 数据里定义的作业
dba_jobs_running 数据库里正在运行的作业 dba_views 数据库中所有视图的文本 dba_indexs 数据库中所有索引的描述 dba_free_space 数据库中所有表空间自由分区 dba_db_links 数据库中所有数据库链接
常用对象的创建和使用
1、表的创建(在表空间zy上创建表dhhm为例)
create table dhhm
(hm varchar2(11) ,
yhmc varchar2(60)) tablespace zy;
2、索引的创建(将DHHM表上hm字段建立索引hmsy存储在表空间zy上为例)
create index hmsy on dhhm(hm) tablespace zy;
3、已有存储过程、函数、包源代码的查找
select name,text from user_source where name=NAME;
4、数据库链接的创建和使用
create public database link DBLINKNAME.world connect to USERNAME identdied by PASWORD using SERVICENAME; select * from TABLE_NAME@DBLINKNAME;
5、同义词的创建和使用(以dyh用户可以查询并修改yyxt用户的dhhm表为例)
cratesynonyn dyh.dhhm for yyxt.dhhm; grant select on yyxt.dhhm to dyh; grant update on yyxt.dhhm to dyh;
失效数据库对象的检测和编译
1、失效存储过程的查找和编译
select 'alter procedure'||object_name||' compile;' from
user_objects where status = 'INVALID' and object_type='PROCEDURE’ 然后复制粘贴并执行第一条语句的输出结果
2、失效的包的查找和编译
select 'alter package'||object_name||' compile;' from
user_objects where status = 'INVALID' and object_type= 'PACKAGE’ 然后复制粘贴并执行第一条语句的输出结果
表空间的管理
1、查看所有表空间大小和使用率
select a.tablespace_name,sum(a.bytes)/1024/1024 \
round(10000*(sum(a.bytes)/1024/1024-sum(b.bytes)/1024/1024))/ 1000\
round(10000*(sum(a.bytes)/1024/1024-sum(b.bytes)/1024/1024)/ (sum(a.bytes)/1024/1024))/100 \
from dba_data_files a,(select tablespace_name,file_id, sum(bytes) bytes
from dba_free_space group by tablespace_name,file_id ) b where a.tablespace_name=b.tablespace_name
and a.file_id=b.file_id group by a.tablespace_name; 2、使用文件系统的表空间扩展
alter database TABLESPACE_NAME add datafile FILE_NAME size SIZE; 3、用裸设备表空间的扩展
alter database TABLESPACE_NAME add datafile RAW_DEVICE_NAME size SIZE; 这里需要注意的是裸设备要提前建立后,且这里使用的是裸设备的字符文件
(类型为C),SIZE值要比其实际大小要稍微小一些。
4、集群中,在某一台主机上共享卷组上增加文件系统和裸设备后,一定要 同步到集群中另外的主机,否则当数据库在另外的主机中启动时,会找不着相应的设备号,导致数据库不能够被打开。
5、查找表空间的剩余空间块数以及最大空闲块的大小,如果碎片过多或最大空闲块过小,需要手工合并表空间碎片
select tablespace_name,count(*)
\\
\
6、手工合并某表空间碎片
alter tablespace TABLESPACE_NAME coalesce;
数据文件I/O的统计优化
col 文件名 format a35; select
df.name 文件名,fs.phyrds 读次数,fs.phywrts 写次数, (fs.readtim/decode(fs.phyrds,0,-1,fs.phyrds)) 读时间, (fs.writetim/decode(fs.phywrts,0,-1,fs.phywrts)) 写时间
from v$datafile df,v$filestat fs
where df.file#=fs.file#order by df.name;
错误号的跟踪出理
1、在操作系统级显示其错误详细信息和常用解决办法以报ora_4031错误为例)
$>oerr ora 4031
2、有时为了进一步跟踪其错误,让其产生更详细的告警日志在用户报警文件
里,需要在数据库的初始化文件里加下面一句配置,并重新启动数据库
event = \
这里注意的是,跟踪完毕后,应将此句话屏蔽掉,以免影响数据库性能。
ORACLE数据库日常检查
1、登录到主机上利用sqlplus 检查是否可用;
2、数据库告警日志的检查
$ORACLE_HOME/admin/INSTANCE_NAME/bdump/alert_INSTANCE_NAME.log 此文件中记载数据库的启动、停止、系统级修改、告警信息、日志切换,是日常维护中的重要依据。
会话连接日志的清理
会话连接日志$ORACLE_HOME/network/log/listener.log,此文件中记载着每个连接登录时的IP地址和时间等情况,可作为监测的依据,因为此文件不断增大,需要定期清空,清空方式为在$ORACLE_HOME/network/log目录下运行操作系统命令
>listener.log。
数据库hang住时的停止和方法
在某个帐务数据库发生故障时,在将其对应的服务和后台帐务应用停完后,需要数据库重新启动,具体停止方法如下: $lsnrctl stop
$kill –9 `ps –ef|grep LOCAL=NO|grep –v grep|awk ‘{print $2}’`
$sqlplus ‘/as sydba’
sqlplus >alter system switch logfile; sqlplus >shutdown immediate
启动方法为:
$sqlplus ‘/as sydba’ sqlplus >startup
$lsnrctl start
扩表空间方法
方法一:利用图形化得OEM工具来扩,选择存储管理的表空间; 方法二:利用脚本:
alter database TABLESPACE_NAME add datafile RAW_DEVICE_NAME size SIZE;(注:三个大写字符串是需要变化的具体值)
这里需要注意的是裸设备要提前建立,且这里使用的是裸设备的字符文件(类型为c),SIZE值要比其实际大小要稍微小一些,如设备大小为15M,语句里就不能使用15M,只要比15M小10K左右就可以。

