Oracle运维手册.docx
- 文档编号:20174280
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:49
- 大小:169.20KB
Oracle运维手册.docx
《Oracle运维手册.docx》由会员分享,可在线阅读,更多相关《Oracle运维手册.docx(49页珍藏版)》请在冰豆网上搜索。
Oracle运维手册
Oracle运维手册
1.前言:
有一定Linux/Unix操作系统、Oracle数据库基础的工程人员和维护人员,证券公司信息技术人员等。
本手册可作为工具,Oralce运维提供帮助。
2.简单命令使用
2.1进入SQL*Plus
$sqlplus 用户名/密码
2.2退出SQL*Plus
SQL>exit
2.3在sqlplus下得到帮助信息
列出全部SQL命令和SQL*Plus命令
SQL>help
列出某个特定的命令的信息
SQL>help 命令名
2.4显示表结构命令DESCRIBE
SQL>DESC 表名
2.5SQL*Plus中的编辑命令
Ø显示SQL缓冲区命令
SQL>L
Ø修改SQL命令
首先要将待改正行变为当前行
SQL>n
Ø用CHANGE命令修改内容
SQL>c/旧/新
Ø重新确认是否已正确
SQL>L
Ø使用INPUT命令可以在SQL缓冲区中增加一行或多行
SQL>i
SQL>输入内容
2.6调用外部系统编辑器
SQL>edit 文件名
可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行
DEFINE_EDITOR=vi
2.7运行命令文件
SQL>START test
SQL>@test
2.8关于侦听
1、新建/修改/删除侦听
以oracle用户登录,运行netca,会跳出图形配置界面。
2、打开侦听
lsnrctlstart
3、查看侦听
Lsnrctlstatus
4、关闭侦听
lsnrctlstop
3.ORACLE的启动和关闭
3.1在单机环境下
要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下
su - oracle
启动oracle数据库命令:
$sqlplus/nolog
SQL*Plus:
Release10.2.0.1.0-Productionon星期一7月1616:
09:
402007
Copyright(c)1982,2005,Oracle.Allrightsreserved.
SQL>conn/assysdba
已连接到空闲例程。
SQL>startup
ORACLE例程已经启动。
TotalSystemGlobalArea369098752bytes
FixedSize1249080bytes
VariableSize201326792bytes
DatabaseBuffers159383552bytes
RedoBuffers7139328bytes
数据库装载完毕。
数据库已经打开。
关闭oracle数据库命令:
$sqlplus/nolog
SQL*Plus:
Release10.2.0.1.0-Productionon星期一7月1616:
08:
102007
Copyright(c)1982,2005,Oracle.Allrightsreserved.
SQL>conn/assysdba
已连接。
SQL>shutdownimmediate
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL>
3.2在双机环境下
要想启动或关闭crs服务必须首先切换到root用户,如下
su - root
启动crs服务:
Ø启动CRS
#$CRS_HOME/crs/bin/crsctlstartcrs
Ø查看CRS状态
#$CRS_HOME/crs/bin/crsctlcheckcrs
Ø关闭CRS
#$CRS_HOME/crs/bin/crsctlstopcrs
Ø查看CRS内部各资源状态
#$CRS_HOME/crs/bin/crs_stat–t
启动数据库服务
#srvctlstart database-dtdb#tdb为数据库名
4.数据库管理员日常工作
4.1检查alterSID.log
这个日志文件位于参数BACKGROUND_DUMP_DEST指定的目录,可能通过以下命令来查看。
SQL>SHOWPARAMETERbackground_dump_dest
在出现大故障前,数据库有可能会报一些警告或错误信息,应该充分重视这些信息,未雨绸缪,避免更大错误的发生。
检查alterSID.log的什么内容。
Ø检查数据库是否出现过宕机(可能在晚间重启而维护人员不知道)
ØOracle出错信息,通过$grepORA-alterSID.log查找
Ø产品有关的问题:
ORA-00600/ORA-07445等错误
Ø相应的TRACE文件
4.2环境确认
数据库实例是否正常工作
SQL>selectstatusfromv$instance;
数据库监听器是否正常工作
-$lsnrctlstatus
是否存在故障表空间
-SQL>selecttablespace_name,statusfromdba_tablespace;
控制文件、日志文件是否正常
SQL>select*fromv$controlfile;
SQL>select*fromv$log;
SQL>select*fromv$logfile;
性能监测
Ø每天按业务峰值情况,对数据库性能数据进行定时采集
Ø每天检查数据库的主要性能指标
Ø每天检查最消耗资源的SQL语句变化情况。
Ø每天检查是否有足够的资源
Ø检查所有表空间的剩余情况
Ø识别出一些异常的增长
Ø检查CPU、内存、网络等是否异常
5.数据库日常操作SQL
5.1查看表空间物理文件的名称及大小
selecttablespace_name,
file_id,
file_name,
round(bytes/(1024*1024),0)filesize
fromdba_data_files
orderbytablespace_name;
5.2查询表空间使用情况
selecta.tablespace_name"表空间名称",
100-round((nvl(b.bytes_free,0)/a.bytes_alloc)*100,2)"占用率(%)",
round(a.bytes_alloc/1024/1024,2)"容量(M)",
round(nvl(b.bytes_free,0)/1024/1024,2)"空闲(M)",
round((a.bytes_alloc-nvl(b.bytes_free,0))/1024/1024,2)"使用(M)",
to_char(sysdate,'yyyy-mm-ddhh24:
mi:
ss')"采样时间"
from(selectf.tablespace_name,
sum(f.bytes)bytes_alloc,
sum(decode(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes))maxbytes
fromdba_data_filesf
groupbytablespace_name)a,
(selectf.tablespace_name,sum(f.bytes)bytes_free
fromdba_free_spacef
groupbytablespace_name)b
wherea.tablespace_name=b.tablespace_name
orderby2desc;
5.3查询表空间的碎片程度
selecttablespace_name,count(tablespace_name)
fromdba_free_space
groupbytablespace_name
havingcount(tablespace_name)>10;
altertablespaceHS_USER_DATAcoalesce;
altertablenamedeallocateunused;
5.4碎片程度
selecttablespace_name,count(tablespace_name)
fromdba_free_space
groupbytablespace_name
havingcount(tablespace_name)>10;
altertablespacenamecoalesce;
altertablenamedeallocateunused;
createorreplaceviewts_blocks_vas
selecttablespace_name,block_id,bytes,blocks,segment_name
fromdba_free_space
unionall
selecttablespace_name,block_id,bytes,blocks,segment_name
fromdba_extents;
select*fromts_blocks_v;
selecttablespace_name,sum(bytes),max(bytes),count(block_id)
fromdba_free_space
groupbytablespace_name;
查看碎片程度高的表
SELECTsegment_nametable_name,COUNT(*)extents
FROMdba_segments
WHEREownerNOTIN('SYS','SYSTEM')
GROUPBYsegment_name
HAVINGCOUNT(*)=(SELECTMAX(COUNT(*))
FROMdba_segments
GROUPBYsegment_name);
5.5查看回滚段名称及大小
selectsegment_name,
tablespace_name,
r.status,
(initial_extent/1024)InitialExtent,
(next_extent/1024)NextExtent,
max_extents,
v.curextCurExtent
Fromdba_rollback_segsr,v$rollstatv
Wherer.segment_id=v.usn(+)
orderbysegment_name;
5.6查看控制文件
selectnamefromv$controlfile;
5.7查看日志文件
selectmemberfromv$logfile;
5.8查看表空间的使用情况
selectsum(bytes)/(1024*1024)asfree_space,tablespace_name
fromdba_free_space
groupbytablespace_name;
SELECTA.TABLESPACE_NAME,
A.BYTESTOTAL,
B.BYTESUSED,
C.BYTESFREE,
(B.BYTES*100)/A.BYTES"%USED",
(C.BYTES*100)/A.BYTES"%FREE"
FROMSYS.SM$TS_AVAILA,SYS.SM$TS_USEDB,SYS.SM$TS_FREEC
WHEREA.TABLESPACE_NAME=B.TABLESPACE_NAME
ANDA.TABLESPACE_NAME=C.TABLESPACE_NAME;
5.9查看数据库对象
selectowner,object_type,status,count(*)count#
fromall_objects
groupbyowner,object_type,status;
5.10查看数据库的版本
Selectversion
FROMProduct_component_version
WhereSUBSTR(PRODUCT,1,6)='Oracle';
5.11查看Oracle字符集
select*fromsys.props$wherename='NLS_CHARACTERSET';
5.12在某个用户下找所有的索引
selectuser_indexes.table_name,
user_indexes.index_name,
uniqueness,
column_name
fromuser_ind_columns,user_indexes
whereuser_ind_columns.index_name=user_indexes.index_name
anduser_ind_columns.table_name=user_indexes.table_name
orderbyuser_indexes.table_type,
user_indexes.table_name,
user_indexes.index_name,
column_position;
5.13表、索引的存储情况检查
selectsegment_name,sum(bytes),count(*)ext_quan
fromdba_extents
wheretablespace_name='&tablespace_name'
andsegment_type='TABLE'
groupbytablespace_name,segment_name;
selectsegment_name,count(*)
fromdba_extents
wheresegment_type='INDEX'
andowner='&owner'
groupbysegment_name;
5.14查看数据库的创建日期和归档方式
SelectCreated,Log_Mode,Log_ModeFromV$Database;
5.15显示所有数据库对象的类别和大小
selecttype,
count(name)num_instances,
sum(source_size)source_size,
sum(parsed_size)parsed_size,
sum(code_size)code_size,
sum(error_size)error_size,
sum(source_size)+sum(parsed_size)+sum(code_size)+
sum(error_size)size_required
fromdba_object_size
groupbytype
orderby1;
5.16设置RAC为归档模式?
步骤:
1.以SYSDBA身份登陆2个节点,执行
altersystemsetcluster_database=falsescope=spfilesid=’*’;
设置归档路径
altersystemsetlog_archive_start=truescope=spfile;
2.2个节点
shutdownimmediate
3.在一个节点上执行
startupmount
alterdatabasearchivelog;
shutdownimmediate;
alterdatabaseopen;
altersystemsetcluster_database=truescope=spfilesid=’*’;
shutdownimmediate
4、分别启动2个节点,修改完毕
6.AWR报告
与9i中的statspack相似,awr报告也需要两个快照,才能生成这两个时间点之间的性能报告。
$sqlplus/assysdba
Ø生成快照一(10g中自动会每个整点都会生成一个快照)
SQL>execdbms_workload_repository.create_snapshot();
Ø(间隔一段时间)生成快照二
SQL>execdbms_workload_repository.create_snapshot();
Ø生成报告
SQL>@?
/rdbms/admin/awrrpt.sql
7.Troubleshooting
常用性能相关SQL,监控数据库性能的SQL语句。
什么时侯需要重建索引?
答:
(1)表上频繁发生update,delete操作
在分析(analyze)指定索引之后,查询index_stats的height字段的值,如果这个值>=4,则最好重建(rebuild)这个索引。
虽然这个规则不是总是正确,但如果这个值一直都是不变的,则这个索引也就不需重建。
(2)表上发生了altertable..move操作(move操作导致了rowid变化)。
怎样查询某进程正在运行的SQL?
答:
可以执行以下的查询语句:
selectsq.sql_text
fromv$sessionse,v$sqlsq,v$processpr
wherese.sql_address=sq.address(+)
andse.sql_hash_value=sq.hash_value(+)
andse.paddr=pr.addr
andpr.spid='<进程号>'
怎样终止某用户的会话?
答:
执行以下的查询语句查出用户的会话id:
Selectsid,serial#,username,machine,program
Fromv$session
再利用查出的会话sid和serial号终于用户会话:
Altersystemkillsession‘
怎样查询表空间使用率?
答:
执行以下语句进行查询:
SELECTA.TABLESPACE_NAME,
A.BYTESTOTAL,
B.BYTESUSED,
C.BYTESFREE,
(B.BYTES*100)/A.BYTES"%USED",
(C.BYTES*100)/A.BYTES"%FREE"
FROMSYS.SM$TS_AVAILA,SYS.SM$TS_USEDB,SYS.SM$TS_FREEC
WHEREA.TABLESPACE_NAME=B.TABLESPACE_NAME
ANDA.TABLESPACE_NAME=C.TABLESPACE_NAMEorderby"%USED"DESC;
怎样查询正在使用临时表空间的语句?
答:
执行以下的查询语句:
SELECTse.username,se.sid,su.extents,
su.blocks*to_number(rtrim(p.value))asSpace,
tablespace,
segtype,
sql_text
FROMv$sort_usagesu,v$parameterp,v$sessionse,v$sqls
WHEREp.name='db_block_size'
ANDsu.session_addr=se.saddr
ANDs.hash_value=su.sqlhash
ANDs.address=su.sqladdr
ORDERBYse.username,se.sid;
怎样查询当前的系统等待事件?
答:
执行以下的查询语句:
SELECTs.sid,s.username,w.seq#,w.event,w.p1text,w.p1,w.p2text,w.p2,w.p3text,w.p3,w.seconds_in_wait,w.state,s.logon_time,s.osuser,s.program
FROMv$sessions,v$session_waitw
WHEREs.sid=w.sid
ANDw.eventNOTLIKE'%SQL*Net%'
ANDw.eventNOTLIKE'%rdbms%'
ANDw.eventNOTLIKE'%timer%'
ANDw.eventNOTLIKE'%jobq%'
ORDERBYw.event,w.seconds_in_wait;
怎样迁移lob字段表空间?
答:
ALTERTABLE<表名>MOVELOB('
怎样迁移分区表表空间?
答:
altertable<表名>movePARTITION<表分区名>tablespace<另外的表空间名>;
7.1监控事务的等待
selectevent,
sum(decode(wait_Time,0,0,1))"Prev",
sum(decode(wait_Time,0,1,0))"Curr",
count(*)"Totol"
fromv$session_Wait
groupbyevent
orderby4;
7.2查看一些等待信息:
selectsid,event
fromv$session_wait
whereeventnotlike'SQL%'
andeventnotlike'%ipc%';
查看是否存在下面等常见的等待事件:
Øbufferbusywaits,
Øfreebufferwaits,
Ødbfilesequentialread,
Ødbfilescatteredread,
Øenqueue,latchfree,
Ølogfileparallelwrite,
Ølogfilesync
7.3查看等待(wait)情况
SELECTv$waitstat.class,
v$waitstat.countcount,
SUM(v$sysstat.value)sum_value
FROMv$waitstat,v$sysstat
WHEREv$sysstat.nameIN('dbblockgets','consistentgets')
groupbyv$waitstat.class,v$waitstat.count;
7.4回滚段查看
selectrownum,
sys.dba_rollback_segs.seg
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 手册