linux检查oracle数据库,linux终端如何检查远程oracle数据库策略配置

上一篇讲了在linux终端如何检查远程主机策略配置,这一篇继续补充说一下linux终端如何检查远程oracle数据库策略配置。

检查环境和上一篇中描述的一样,接下来我们就进入主题。

我们先看一段我检查的记录,可以从中发现一些小窍门。

[root@byhis01~]#su-oracle

oracle@byhis01:~$sqlplus/nolog

SQL*Plus:Release10.2.0.1.0-ProductiononSatOct1216:56:342013

Copyright(c)1982,2005,Oracle.Allrightsreserved.

SQL>conn/assysdba;

ERROR:

ORA-12545:Connectfailedbecausetargethostorobjectdoesnotexist

通过以上日志可看出我由root切换到oracle用户下,顺利执行sqlplus,但是执行conn/assysdba命令报错。如果对报错信息不熟悉的话,第一反应是数据库关闭了os认证,登陆数据库必须输入数据库的用户名和密码。接下来我们就验证一下是否数据库关闭了os认证。

查看$ORACLE_HOME/network/admin/sqlnet.ora配置如下:

-bash-3.2$more$ORACLE_HOME/network/admin/sqlnet.ora

SQLNET.INBOUND_CONNECT_TIMEOUT=0

NAMES.DIRECTORY_PATH=(TNSNAMES)

TCP.VALIDNODE_CHECKING=YES

TCP.INVITED_NODES=(192.168.1.43,192.168.1.7,192.168.1.2,192.168.1.3,192.168.1.4)

#TCP.EXCLUDED_NODES=()

由上可知sqlnet.ora文件中为无SQLNET.AUTHENTICATION_SERVICES,这一与os认证相关的配置,u数据库未关闭OS认证。

既然未关闭OS认证,那为什么登陆失败呢。其实我们通过报错的信息可知连接失败是因为目标主机或者对象不存在。即另外一种原因:oracle并非数据库的安装和启动用户。我们可以通过查看系统的进程来判断。日志如下:

oracle@his01:~$ps-ef|grepora_

orasrv271710Sep17?00:06:14ora_pz99_orcl1

orasrv624310Sep17?00:13:56ora_j000_orcl1

oracle62694909016:57pts/900:00:00grepora_

orasrv712810Sep04?00:46:14ora_pmon_orcl1

orasrv713210Sep04?00:00:39ora_diag_orcl1

orasrv714310Sep04?00:00:06ora_psp0_orcl1

orasrv714910Sep04?00:20:13ora_lmon_orcl1

orasrv715510Sep04?00:26:36ora_lmd0_orcl1

orasrv715710Sep04?01:10:43ora_lms0_orcl1

orasrv717310Sep04?00:00:13ora_mman_orcl1

orasrv719110Sep04?00:42:22ora_dbw0_orcl1

orasrv719510Sep04?00:41:33ora_dbw1_orcl1

orasrv719710Sep04?00:49:17ora_lgwr_orcl1

orasrv719910Sep04?00:11:13ora_ckpt_orcl1

orasrv720110Sep04?00:04:17ora_smon_orcl1

orasrv720310Sep04?00:00:01ora_reco_orcl1

orasrv720610Sep04?00:11:18ora_cjq0_orcl1

orasrv720810Sep04?00:00:24ora_mmon_orcl1

通过日志可知:当前正在运行的oracle进行的用户不是oracle,而是orasrv。

其实通过查看系统信息页可以看出一些端倪。

[sysroot@his01~]$more/etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

nfsnobody:x:65534:4294967294:AnonymousNFSUser:/var/lib/nfs:/sbin/nologin

sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin

sabayon:x:86:86:Sabayonuser:/home/sabayon:/sbin/nologin

oracle:x:100:101::/usr/local/oracle:/bin/bash

orasrv:x:116:101:orasrv:/df8003/rdbm/orasrv:/bin/bash

sysroot:x:500:500::/home/sysroot:/bin/bash

由上可知:当前有两个数据库用户oracle和orasrv。那么当oracle用户下切换有问题时,自然要想到是否与orasrv用户有关。

接下来再说一个小窍门,目前只知道root用户的密码,oracle和orasrv的密码都不知道,在oracle用户下如何切换到orasrv用户下呢,答案是oracle先su到root输入密码,然后再su到orasrv,因为root到orasrv是高向低用户切换,无需密码。如下所示:

oracle@byhis01:~$su-root

Password:

[root@byhis01~]#su-orasrv

-bash-3.2$

之后就顺利通过os认证,无需sys用户的密码即可以以sysdba的角色登陆数据库。

-bash-3.2$sqlplus/nolog

SQL*Plus:Release10.2.0.4.0-ProductiononSatOct1216:58:222013

Copyright(c)1982,2007,Oracle.AllRightsReserved.

SQL>conn/assysdba;

Connected.

接下来进入主题,说一下linux终端如何检查oracle数据库策略配置。

oraclescript.txt

setechoon;

spooloracle.txt

setlinesize512;

setpagesize1024;

select*fromglobal_name;

archiveloglist;

selectusername,profilefromdba_users;

selectusername,account_statusfromdba_users;

select*fromdba_profileswhereprofile='DEFAULT';

selectname,statusfromv$controlfile;

selectgroup#,status,memberfromv$logfile;

selectnamefromv$archived_log;

selectname,passwordfromuser$;

selecttablespace_name,sum(bytes)/1024/1024fromdba_data_filesgroupbytablespace_name;

selecttablespace_name,sum(bytes)/1024/1024fromdba_free_spacegroupbytablespace_name;

showparameter;

showparameteraudit;

showparameteros_auth;

showparameterremote_login_passwordfile;

showparameter07_DICTIONARY_ACCESSIBILITY;

selectgranted_rolefromdba_role_privswheregrantee='PUBLIC';

selectgrantee,privilege,admin_optionfromdba_sys_privs;

selectgrantee,granted_role,default_rolefromdba_role_privs;

selectgrantee||''||owner||'.'table_namefromdba_tab_privswheregrantee='PUBLIC'andtable_namelike'UTL_%';

selectgrantee||''||owner||'.'table_namefromdba_tab_privswheregrantee='PUBLIC'andtable_namelike'DBMS_%';

selectusername,account_status,default_tablespace,temporary_tablespace,profilefromdba_usersorderbyusername;

selectprofile,resource_name,resource_type,limitfromdba_profilesorderbyprofile;

selecttablespace_name,sum(bytes)/1024/1024asFreeSizefromdba_free_spacegroupbytablespace_nameorderbytablespace_name;

selecttablespace_name,status,contents,loggingfromdba_tablespacesorderbytablespace_name;

selectstatus||''||namefromv$controlfile;

selectgroup#,statusfromv$log;

selectgroup#||''||status||''||memberfromv$logfileorderbygroupbygroup#;

selectname||''||valuefromv$parameterwherenamelike'%archive%';

selectstamp||''||namefromv$archived_logorderbystamp;

selectsid||':'||serial#||':'||username||':'||command||':'||status||':'||programfromv$session;

selectevent||''||sum(seconds_in_wait)fromv$session_waitgroupbyeventorderbysum(seconds_in_wait)desc;

selectwait_class||''||sum(total_waits)||''||sum(time_waited)astimeWaitedfromv$system_wait_classgroupbywait_classorderbywait_class;

spooloff

此脚本的重点是:

1、第一条命令setechoon至关重要,以为如果不执行这个命令,那么最后的检查结果中只有命令执行后的结果,无执行的命令,会很混乱。

2、spooloracle.txt中oracle.txt文件默认是存在了$ORACLE_HOME的目录下。

3、一定要记得最后要用spooloff来终止spool的录屏功能。

然后检查一下一些数据库配置文件

cat$ORACLE_HOME/rdbms/admin/utlpwdmg.sql

cat$ORACLE_HOME/network/admin/sqlnet.ora

cat$ORACLE_HOME/network/admin/listener.ora

最后通过scp拷贝出oracle的alert日志,对oracle的报错信息进行分析即可。

文章中以列出了针对风险评估的oracle检查的命令脚本。希望这个能对大家有用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值