Oracle 日常操作 (开启归档等)
1.启动
sqlplus / as sysdba
如果提示connected to a idle instance,说明数据库实例未启动
可以通过startup 启动 {startup nomount,startup mount,startup}
真实启动的阶段:
a 】 nomount阶段 数据库读取参数文件,分配内存,SGA+PGA,启动后台进程,生成实例,实例状态是started(通过select语句查看v$instance的status)
b】 mount阶段,读取控制文件,获取文件位置记录数据库状态,维护数据库一致性,此时如果要继续启动,可以通过以下命令继续启动。但是也只是附加了数据库
alter database mount
此时通过select语句可以查到数据库实例的状态已经从started变更为了mounted状态
select status from v$instance;
c】open阶段,检查三大文件--参数文件,数据文件,在线日志文件,检查数据库一致性
alter database open
检查数据库一致性
select FILE#,CHECKPOINT_CHANGE# from v$datafilep;
如果出现的文件列表的序号都相同,那么 数据库就一致
平时使用的话,一般是直接startup 包含了三个阶段的启动
2.启动监听
在系统命令行状态下:lsnrctl start 启动监听,加速监听:sqlplus下:alter system register
如果要在sqlplus下启动监听,则在sqlplus下直接通过叹号加监听启动命令的方式启动监听即可
!lsnrctl start
3.关库
关库首先要先关闭监听 lsnrctl stop 关闭监听
其次关闭数据库 :shutdown immediate 一致性关库
4.客户端配置
a】 下载对应版本的oracle客户端安装包,32位,PL/DEVELOPER 不支持64
b】 安装略
c】 配置监听network/admin下
11GR2前不能有空格,必须顶格
5.密码过期处理
过期策略
select * from dba_users; select username,profile from dba_users where username='SCOTT'; select * from dba_profiles;
默认存活时间为180天
修改password_life_time为无限制
sqlplus :alter profile default limit password_life_time unlimited 就可以更改策略
然后一定要给用户更改密码 alter user xxx identified by xxxxxxx
6.监听日志清理
$ORACLE_BASE/diag/tnslsnr/主机名/listener/alert/log.xml是告警日志 ,达到11M的时候会自动切换,重新生成
真正的监听日志
find $ORACLE_BASE -name listener
进入trace目录下,listener.log 这个是监听日志,最大4G
登入到监听界面
lsnrctl> show
查看日志状态
lsnrctl> show log_status
关闭日志
lsnrctl> set log_status off
回到linux系统界面,mv重新命名原来的日志,
开启日志
lsnrctl> set log_status on ,等待生成新的日志以后,删除原来的日志
重新加载
lsnrctl>reload
这样清理监听对业务没有影响。
7.自动收集统计信息job
CBO:优化器生成执行计划
查询定时统计任务
select t1.window_name,t1.repeat_interval,t1.duration,enabled from dba_scheduler_windows t1,dba_scheduler_wingroup_members t2 where t1.window_name = t2. window_name and t2.window_group_name IN ('MAINTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED');
关闭自动执行任务
#关闭自动执行任务 BEGIN DBMS_SCHEDULER.DISABLE( name=>'"SYS"."SATURDAY_WINDOW"', force=>TRUE); END; /
修改定时任务
BEGIN dbms_scheduler.set_attribute('SATURDAY_WINDOW','REPEAT_INTERVAL','freq=daily;byday=SAT;byhour=10;byminute=0;bysecond=0;) dbms_scheduler.set_attribute('SATURDAY_WINDOW','DURATION','+000 04:00:00');
end;
/
开启定时任务
BEGIN DBMS_SCHEDULER.ENABLE( name=>'"SYS"."SATURDAY_WINDOW"'); END; /
8.11G RAC的关库及启库
查看集群状态
crs_stat -t -v
RAC关闭
a】查询实例及DB NAME,instance_name
show parameter name
srvctl status listener #查看监听状态,使用grid用户 su - grid
srvctl stop listener #停止监听
#停库
srvctl stop database -d DBNAME
#停实例
srvctl stop instance -o immediate -d DBNAME -i instance_name
#停止集群服务 root用户
crsctl stop cluster -all
#停止高可用 HAS root用户
crsctl stop has
#启动数据库,服务设置自启动,服务器启动后自己拉起数据库
#在每个节点上找到crsctl路径 启动或关闭整个crs
find / -name crsctl 找到路径
cd 路径
crsctl start crs #可以拉起整个crs服务
crsctl start cluster #启动集群
9.RAC的日常管理命令
#检查集群的命令
crsctl check cluster
#检查集群的状态
crs_stat -t -v
#ocr磁盘校验
ocrcheck
#查看数据库状态
srvctl status database -d 数据库名
#查看数据库配置
srvctl config database -d 数据库名 -a
#节点应用状态
srcctl status nodeapps
#ASM实例
srvctl status asm
#监听
srvctl status listener
srvctl config status -a
#scan
srvctl status scan
#VIP查询
srvctl config vip -n rac1
10.oracle归档日志
#查看是否开启归档 archive log list #通过数据库查询也能获取 select name,log_mode from v$database;
归档路径选择
oracle判断归档目的地时按如下优先级选取
1.log_archive_dest_n
2.db_recover_file_dest指定的快速恢复区
3.$ORACLE_HOME/dbs参数指定的位置
一般不把归档路径放在快速闪回区
更改归档路径
mkdir -p /u01/app/oracle/arch sqlplus / as sysdba alter system set log_archive_dest_1='location=/u01/app/oracle/arch' scope=both; show parameter log_archive_dest_1 alter system set log_archive_format='arch_prod_t%_%s_%r.dbf' scope=spfile;
#参照spfile创建静态文件pfile create pfile='xxxxxxx' from spfile='xxxxxxx'; #参照pfile创建动态文件spfile create spfile='xxxxx' from pfile='xxxxx';
#正常关库 shutdown immediate; #启库到挂载附加状态,但是数据库并没有进入到打开状态 startup mount #查看归档日志是否起效 archive log list #更改数据库为归档模式 alter database archivelog; #打开数据库 alter database open;