前面是日常维护使用基础操作,需要参考归档日志清除请直接跳到目录四。
一、Oracle 服务、监听启动与关闭
**Oracle 启动:**
su - oracle
sqlplus /nolog
connect /as sysdba;
startup;
exit
lsnrctrl start ##开启监听
**Oracle关闭:**
su - oracle
lsnrctrl stop ##首先关闭监听(让远程客户端无法再连进来);
sqlplus /nolog
connect /as sysdba;
shutdown 参数;
参数列表:
Normal 需要等待所有的用户断开连接;
Immediate 等待用户完成当前的语句; **(常用)**
Transactional 等待用户完成当前的事务;
Abort 不做任何等待,直接关闭数据库;
normal需要在所有连接用户断开后才执行关闭数据库任务,所以有的时候看起来好象命令没有运行一样!在执行这个命令后不允许新的连接; immediate在用户执行完正在执行的语句后就断开用户连接,并不允许新用户连接;
transactional在拥护执行完当前事物后断开连接,并不允许新的用户连接数据库;
abort 执行强行断开连接并直接关闭数据库。
注: shutdown immediate后,如果是比较繁忙的数据库,可能正在执行的事务很多,发出关闭命令,会出现回滚的情况,这有可能会等很长时间,一般可以在2步骤之前先杀掉这些会话,可以在数据库里面杀,也可以在系统级别杀(如果是linux、unix系统的话)
例如:
ps -ef |grep LOCAL=NO|grep -v grep|awk '{print $2}'|xargs kill -9
二、Oracle 登录方式
1、#使用指定用户连接:
sqlplus test/test123
2、#使用sysdba连接:
sqlplus /nolog
SQL> connect /as sysdba;
3、 #使用PLSQL工具连接异地oracle数据库:
用户密码正常输入
数据库:IP:1521/实例名
connect as 为Normal
三、密码更改
Oracle提示错误消息 ORA-28001: the password has expired,是由于Oracle11G的新特性所致,Oracle11G创建用户时缺省密码过期限制是180天(即6个月),如果超过180天用户密码未做修改则该用户无法登录,如果oracle 用户密码过期会导致业务无法访问,可以修改为原密码。
1、 #使用sys用户查看数据库下全部用户的状态(是否锁定过期)
select username,account_status from dba_users;
2、#先更改密码周期策略为无限期:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
3、#重启数据库服务;
4、#使用sysdba 修改oracle用户密码:
alter user 用户名 identified by 密码;
5、#解锁oracle用户:
alter user 用户名 account unlock;
四、Oracle归档日志查看清除
1、#列归档日志,查看归档日志存放路径:
archive log list;
2、 #开启归档日志:
conn / as sysdba --(以DBA身份连接数据库)
shutdown immediate; --(立即关闭数据库)
startup mount; --(启动实例并加载数据库,但不打开) 启动数据库到mount状态
alter database archivelog; --(更改数据库为归档模式)
alter database open; --(打开数据库)
alter system archive log start; --(启用自动归档)
3、 #查看归档日志设置大小:
show parameter db_recovery_file_dest_size;
4、#查看归档日志使用情况:
select * from v$recovery_file_dest;
NAME:存放路径
SPACE_LIMIT:该区域的大小是多少;
SPACE_USED:已经使用了多少空间;
SPACE_RECLAIMABLE:删除一些垃圾数据之后可以回收的空间大小(如obsolete,redundant、low priority);
NUMBER_OF_FILES:该区域目前存在有多少文件。
5、#查看归档日志占有率:
select * from v$flash_recovery_area_usage;
注:如果 ARCHIVED LOG 超过90%,Oracle随时有宕机的危险
6、#清除归档日志:
进入rman,连接实例connect target /
#校验日志的可用性(同步控制文件的信息和实际物理文件的信息):
RMAN> crosscheck archivelog all;
#列出所有失效的归档日志:
RMAN> list expired archivelog all;
#删除15天前所有归档日志:
RMAN> delete archivelog all completed before ‘sysdate-15’;
#删除15天到现在的归档 :
RMAN> DELETE ARCHIVELOG FROM TIME 'SYSDATE-15';
#删除所有过期归档日志:
RMAN> delete expired archivelog all;
#清除所有归档日志(慎用!!!):
RMAN> delete noprompt archivelog all completed before ‘sysdate';
注:
如果是oracle集群多数据库架构清理oracle归档日志前,需要在节点上切换到指定数据库:
su - oracle
ps -ef | grep test ##主要看实例名后面的数字,这里设置操作的数据库是test
*注意:此处会看到如oracleTEST1,记录oracle后的部分,最后一位数字一并记录*
export ORACLE_SID=test1 ##这里是设置环境变量为test1,要操作test1
到这一步后,进入sqlplus查看归档日志和rman清理归档日志都是针对test1数据库做操作。
END