记录清理Oracle归档日志相关操作
一、登录数据库
1. 切换到Oracle用户
su命令 – 切换用户身份
su命令来自于英文单词“switch user”的缩写,其功能是用于切换用户身份。管理员切换至任意用户身份而无需密码验证,而普通用户切换至任意用户身份均需密码验证。另外添加单个减号(-)参数为完全的身份变更,不保留任何之前用户的环境变量信息。
常用指令:
变更至指定用户身份:
[root@linuxcool ~]# su linuxcool
完全变更至指定用户身份:
[root@linuxcool ~]# su - linuxcool
现在我们切换到oracle用户
linux查看是否安装oracle的方法:
ps -ef | grep ora
一般安装oracle,默认会有oracle的用户id【oracle】
2.登录到Oracle数据库
这里介绍下几种连接用到的命令形式:
1.sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程
2.sqlplus sys/oracle 这种连接方式只能连接本机数据库,同样不需要listener进程
3.sqlplus sys/oracle@orcl 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。
以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。
sqlplus / as sysdba
sqlplus /nolog
SQL> connect / as sysdba
以上两种方式是一个意思
为什么输入sqlplus / as sysdba就能连上数据库?
其实在这种情况下,Oracle采用的是 操作系统认证方式,当属于操作系统DBA组用户登陆到数据库服务器,那么Oracle认为这样的用户就可以授权以SYSDBA身份登录数据库,这时的用户名和密码随便输什么,都能连上库,使用show user命令查看登陆用户,其实都是SYS用户。
Linux下,使用id命令,查看用户所在组,如果在dba组,那么也可以以操作系统的方式直接连库
SQLPlus 在连接时通常有三种方式
-
sqlplus / as sysdba
操作系统认证,不需要数据库服务器启动listener,也不需要数据库服务器处于可用状态。比如我们想要启动数据库就可以用这种方式进入然后通过startup命令来启动。sqlplus / as sysdba 是操作系统用户验证登录方式,通过OS本地的IPC可以直接连接到实例,IPC由本地OS提供,允许各种进程在主机内进行通信。所以不需要listener也可以连接到实例。
-
sqlplus username/password
连接本机数据库,不需要数据库服务器的listener进程,但是由于需要用户名密码的认证,因此需要数据库服务器处于可用状态才行。 -
sqlplus usernaem/password@orcl
通过网络连接,这是需要数据库服务器的listener处于监听状态。此时建立一个连接的大致步骤如下
a. 查询sqlnet.ora,看看名称的解析方式,默认是TNSNAME
b. 查询tnsnames.ora文件,从里边找orcl的记录,并且找到数据库服务器的主机名或者IP,端口和service_name
c. 如果服务器listener进程没有问题的话,建立与listener进程的连接。
d. 根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。
e. 这时连接已经建立,可以操作数据库了。
3、查看归档日志的位置
在使用 sqlplus / as sysdba 登录Oracle数据库后使用以下命令查看归档日志
show parameter archive;
查看log_archive_desc_1后面的value是否有值,如没有,请设置一个路作为归档日志存放路径。切记不要讲归档日志存放在闪回区
找到物理路径后,在有备份的情况删除归档日志,如没有备份请先行备份,以免数据丢失。
二、排查Oracle数据库问题常用命令
1、补充,在oracle无法加载实例的情况下如何进入rman清理归档日志
>sqlplus /nolog #不登录数据库
>conn / as sysdba #以DBA账户连接到Oracle
>startup mount; #启动数据库到mount状态
>rman tar get / #连接到rman
>crosscheck archivelog all; #检查失效归档日志
>delete expired archivelog all; #删除失效归档日志
>delete archiavelog completed before 'sysdate-7'; #删除七天之前的归档日志
2、监听器有关
在切换到Oracle用户后
su - oracle -- 切换用户
lsnrctl status [listener_name] --查看服务器端listener进程的状态
lsnrctl start [listener_name] -- 启动监听器,启动监听对已有连接会话没有影响
lsnrctl stop [listener_name] -- 关闭监听器,关闭监听对已有连接会话没有影响
lsnrctl service [listener_name] -- 通过查看监听服务,可以知道专用服务器和共享服务器的服务情况。如监听当前的负载,拒绝连接的数量等信息。
lsnrctl reload [listener_name] -- 如在listener.ora中新增加了实例信息,可以通过重新装载监听使得监听为新增加的实例服务。