2、打开侦听
lsnrctl start
3、查看侦听
Lsnrctl status
4、关闭侦听
lsnrctl stop
3. ORACLE的启动和关闭
3.1 在单机环境下
要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下
su - oracle
启动oracle 数据库命令:
$sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 7月 16 16:09:40 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba 已连接到空闲例程。 SQL> startup
ORACLE 例程已经启动。
Total System Global Area 369098752 bytes Fixed Size 1249080 bytes Variable Size 201326792 bytes Database Buffers 159383552 bytes Redo Buffers 7139328 bytes 数据库装载完毕。 数据库已经打开。
关闭 oracle 数据库命令:
$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 7月 16 16:08:10 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> conn / as sysdba 已连接。
SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。
ORACLE 例程已经关闭。 SQL>
3.2 在双机环境下
要想启动或关闭crs服务必须首先切换到root用户,如下
su - root
启动crs 服务: ? 启动CRS
#$CRS_HOME/crs/bin/crsctl start crs
? 查看CRS状态
#$CRS_HOME/crs/bin/crsctl check crs
? 关闭CRS
#$CRS_HOME/crs/bin/crsctl stop crs
? 查看CRS内部各资源状态
#$CRS_HOME/crs/bin/crs_stat –t
启动数据库服务
# srvctl start database -d tdb
#tdb为数据库名
4. 数据库管理员日常工作
4.1 检查alterSID.log
这个日志文件位于参数BACKGROUND_DUMP_DEST指定的目录,可能通过以下命令来查看。
SQL> SHOW PARAMETER background_dump_dest
在出现大故障前,数据库有可能会报一些警告或错误信息,应该充分重视这些信息,未雨绸缪,避免更大错误的发生。
检查alterSID.log 的什么内容。
? 检查数据库是否出现过宕机(可能在晚间重启而维护人员不知道) ? Oracle 出错信息,通过$grep ORA- alterSID.log查找 ? 产品有关的问题:ORA-00600/ORA-07445等错误 ? 相应的TRACE文件
4.2 环境确认
数据库实例是否正常工作
SQL > select status from v$instance;
数据库监听器是否正常工作
-
$ lsnrctl status
是否存在故障表空间
-
SQL> select tablespace_name,status from dba_tablespace;
控制文件、日志文件是否正常
SQL> select * from v$controlfile; SQL> select * from v$log;
SQL> select * from v$logfile;
性能监测
? 每天按业务峰值情况,对数据库性能数据进行定时采集 ? 每天检查数据库的主要性能指标
? 每天检查最消耗资源的SQL语句变化情况。 ? 每天检查是否有足够的资源 ? 检查所有表空间的剩余情况 ? 识别出一些异常的增长
? 检查CPU、内存、网络等是否异常
5. 数据库日常操作SQL
5.1 查看表空间物理文件的名称及大小
select tablespace_name, file_id, file_name,
round(bytes / (1024 * 1024), 0) filesize from dba_data_files
order by tablespace_name;
5.2 查询表空间使用情况
select a.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-dd hh24:mi:ss') \采样时间\ from (select f.tablespace_name,
sum(f.bytes) bytes_alloc,
sum(decode(f.autoextensible, 'YES', f.maxbytes, 'NO', f.bytes)) maxbytes
from dba_data_files f
group by tablespace_name) a,
(select f.tablespace_name, sum(f.bytes) bytes_free from dba_free_space f
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name order by 2 desc;
5.3 查询表空间的碎片程度
select tablespace_name, count(tablespace_name) from dba_free_space
group by tablespace_name
having count(tablespace_name) > 10;
alter tablespace HS_USER_DATA coalesce; alter table name deallocate unused;
5.4 碎片程度
select tablespace_name, count(tablespace_name) from dba_free_space
group by tablespace_name
having count(tablespace_name) > 10; alter tablespace name coalesce;
alter table name deallocate unused; create or replace view ts_blocks_v as
select tablespace_name, block_id, bytes, blocks, segment_name from dba_free_space union all
select tablespace_name, block_id, bytes, blocks, segment_name from dba_extents;
select * from ts_blocks_v;
select tablespace_name, sum(bytes), max(bytes), count(block_id) from dba_free_space
group by tablespace_name;
查看碎片程度高的表
SELECT segment_name table_name, COUNT(*) extents FROM dba_segments
WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BY segment_name
HAVING COUNT(*) = (SELECT MAX(COUNT(*))