oracle 一些系统表

dba_开头
dba_users    数据库用户信息   
dba_segments 表段信息   
dba_extents   数据区信息   
dba_objects   数据库对象信息   
dba_tablespaces  数据库表空间信息   
dba_data_files   数据文件设置信息   
dba_temp_files  临时数据文件信息   
dba_rollback_segs  回滚段信息   
dba_ts_quotas  用户表空间配额信息   
dba_free_space数据库空闲空间信息   
dba_profiles  数据库用户资源限制信息   
dba_sys_privs  用户的系统权限信息   
dba_tab_privs用户具有的对象权限信息   
dba_col_privs用户具有的列对象权限信息   
dba_role_privs用户具有的角色信息   
dba_audit_trail审计跟踪记录信息   
dba_stmt_audit_opts审计设置信息   
dba_audit_object  对象审计结果信息   
dba_audit_session会话审计结果信息   
dba_indexes用户模式的索引信息

user_开头   
user_objects  用户对象信息   
user_source  数据库用户的所有资源对象信息   
user_segments  用户的表段信息   
user_tables   用户的表对象信息   
user_tab_columns  用户的表列信息   
user_constraints  用户的对象约束信息   
user_sys_privs  当前用户的系统权限信息   
user_tab_privs  当前用户的对象权限信息   
user_col_privs  当前用户的表列权限信息   
user_role_privs  当前用户的角色权限信息   
user_indexes  用户的索引信息   
user_ind_columns用户的索引对应的表列信息   
user_cons_columns  用户的约束对应的表列信息   
user_clusters  用户的所有簇信息   
user_clu_columns 用户的簇所包含的内容信息  
user_cluster_hash_expressions   散列簇的信息
 
 v$开头  
 v$database   数据库信息  
 v$datafile  数据文件信息  
 v$controlfile控制文件信息   
 v$logfile  重做日志信息   
 v$instance  数据库实例信息  
 v$log  日志组信息   
 v$loghist 日志历史信息   
 v$sga  数据库SGA信息   
 v$parameter 初始化参数信息  
 v$process  数据库服务器进程信息   
 v$bgprocess  数据库后台进程信息  
 v$controlfile_record_section  控制文件记载的各部分信息
 v$thread  线程信息   
 v$datafile_header  数据文件头所记载的信息   
 v$archived_log归档日志信息  
 v$archive_dest  归档日志的设置信息   
 v$logmnr_contents  归档日志分析的DML DDL结果信息   
 v$logmnr_dictionary  日志分析的字典文件信息  
 v$logmnr_logs  日志分析的日志列表信息   
 v$tablespace  表空间信息  
 v$tempfile  临时文件信息   
 v$filestat  数据文件的I/O统计信息   
 v$undostat  Undo数据信息   
 v$rollname  在线回滚段信息  
 v$session  会话信息  
 v$transaction 事务信息   
 v$rollstat   回滚段统计信息   
 v$pwfile_users  特权用户信息  
 v$sqlarea    当前查询过的sql语句访问过的资源及相关的信息   
 v$sql         与v$sqlarea基本相同的相关信息   
 v$sysstat   数据库系统状态信息
 
 all_开头   
 all_users  数据库所有用户的信息   
 all_objects  数据库所有的对象的信息   
 all_def_audit_opts  所有默认的审计设置信息   
 all_tables  所有的表对象信息   
 all_indexes所有的数据库对象索引的信息
 
 session_开头   
session_roles   会话的角色信息  
 session_privs   会话的权限信息
 
 index_开头   
 index_stats  索引的设置和存储信息伪表  
 
 dual  系统伪列表信息

Oracle 10g 错误“ORA-00988 口令缺失或无效”终极解决办法!

如果在安装Oracle的时候出现如下问题:创建数据库完成让你输入密码的时候弹出"ora-00988 缺少或无效口令"的对话框如下图


这是因为Oracle对密码的要求如下:
系统用户(SYS、SYSTEM)口令长度不能小于7个字符第一个字符不能为数字且全部字符中应该为字母和数字混合
解决方法:
运行 cmd 按如下输入命令 sqlplus / as sysdba ——— 注意以上的语句中"/"两边都要有空格哦!——— 以sys登陆 alter user 用户名 account unlock; ——— 解除锁定 alter user 用户名 identified by 密码;————-修改密码然后用你改好的密码登陆就行 举例:sqlplus / as sysdbaalter user sys account unlock;alter user sys identified by manager;希望你看过本文章后能顺利解决问题! 

linux 内核模块(LKM)检测工具

在生产环境中,系统被入侵后,黑客会放置自己的后门。LKM后门和传统的后门不一样,它可以通过隐藏进程、端口、文件的方式隐藏自己,不被管理员轻易发现,也就是常说的rootkit技术。
LKM是什么?load kernel module,可加载内核模块的缩写。
xlkm一个脚本,通过对准上线机器现加载内核模块进行备份,来判别模块是否替换、篡改。
主要思路就是:列出系统加载的内核模块并备份,对现加载的模块的md5校验并备份其信息,然后进行对比。

实现起来比较简单,我shell也不是很好,大家就凑活着看吧。

 

#!/bin/bash

 

#code:key1088

#mail:key1088@163.com

#bash –version

#GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)

#Copyright (C) 2005 Free Software Foundation, Inc

 

if [ $(whoami) != "root" ];

then

echo "Not root"

exit 0

fi

 

xlkmroot=/usr/local/xlkm

 

help(){

echo -e " 33[32m List:"

echo "[1.Start LKM List Backup]"

echo "[2.Test LKM List Change]"

echo "[3.Delete All Backup]"

echo "[4.Quit]"

echo -e " 33[0m"

}

 

SETUPXLKM(){

if test -d $xlkmroot ;then

echo "LKM exist Backup!!"

exit 1

fi

mkdir $xlkmroot

chmod 700 $xlkmroot

}

 

DELXLKM(){

rm -rf $xlkmroot

echo

echo -e " 33[34mDelete XLKM Backup Sccessfully 33[0m"

echo

}

 

START(){

while [ -z $passwd ]

do

echo

echo -n "Input encrypt passwd[No Null]:"

read passwd

done

echo "WAITing….."

lsmod > $xlkmroot/lkmlist.main

for i in $(modprobe -l)

do

md5sum $i >> $xlkmroot/lkmfile.md5.main

done

cd $xlkmroot

zip -P $passwd mainfile.zip ./.main > /dev/null

rc=$?

if [ "$rc" == 0 ];

then

echo

echo -e " 33[34mLKM List Backup Successfully! 33[0m"

echo 

else

echo

echo -e " 33[34mBeijule! Error! 33[0m"

echo 

fi

rm -f $xlkmroot/lkm > /dev/null

}

 

LKMCHANGE(){

echo "Test LKM Change"

 

cd $xlkmroot

while [ "$ra" != 0 ]

do

echo

echo -n "Input encrypt passwd[No Null]:"

read passwd

unzip -P $passwd mainfile.zip > /dev/null 2>&1

ra=$?

if [ "$ra" != 0 ];then echo "Invalid password!! "; fi

done

echo "WAITing….."

lsmod > $xlkmroot/lkmlist.new

for i in $(modprobe -l)

do

md5sum $i >> $xlkmroot/lkmfile.md5.new

done

echo "LKM List Change:"

echo -e " 33[31m"

diff $xlkmroot/lkmlist.main $xlkmroot/lkmlist.new

echo -e " 33[0m"

echo "LKM File Md5 Change:"

echo -e " 33[31m"

diff $xlkmroot/lkmfile.md5.main $xlkmroot/lkmfile.md5.new

echo -e " 33[0m"

rm -f *.new .main

 

}

 

while :

do

 

help

echo -n "Input List num:"

read x

 

case "$x" in

1)

SETUPXLKM

START

;;

2)

LKMCHANGE

;;

3)

DELXLKM

;;

4)

exit 0

;;

)

echo -e " 33[31mError !!!!!"

echo -e "Pleae input [1-4] list option 33[0m"

;;

esac

 

done

 

awk中的时间函数strftime() systime()

systime函数返回从1970年1月1日开始到当前时间(不计闰年)的整秒数

利用strftime()函数格式化时间

  • 实例:

                 $ awk '{ now = systime(); print now }'
  • strftime函数使用C库中的strftime函数格式化时间。格式如下:

                 systime( [format specification][,timestamp] )

    Table 3. 日期和时间格式说明符

    格式描述%a星期几的缩写(Sun)%A星期几的完整写法(Sunday)%b月名的缩写(Oct)%B月名的完整写法(October)%c本地日期和时间%d十进制日期%D日期 08/20/99%e日期,如果只有一位会补上一个空格%H用十进制表示24小时格式的小时%I用十进制表示12小时格式的小时%j从1月1日起一年中的第几天%m十进制表示的月份%M十进制表示的分钟%p12小时表示法(AM/PM)%S十进制表示的秒%U十进制表示的一年中的第几个星期(星期天作为一个星期的开始)%w十进制表示的星期几(星期天是0)%W十进制表示的一年中的第几个星期(星期一作为一个星期的开始)%x重新设置本地日期(08/20/99)%X重新设置本地时间(12:00:00)%y两位数字表示的年(99)%Y当前月份%Z时区(PDT)%%百分号(%)

    实例:

  •             $ awk '{ now=strftime( "%D", systime() ); print now }'
  •             $ awk '{ now=strftime("%m/%d/%y"); print now }'

php 添加扩展模块

线上想用zabbix做监控。php安装的时候有很多模块没有安装,mbstring就是其中一个,所以现在要扩展安装一下。

就拿mbstring为例吧

环境php5.2.14, 不支持mbstring扩展

上传php源码,tar 之。
shell>cd /usr/local/src/php-5.2.14/ext

shell>ls        #下面都模块源码,想安装那个就进那个目录

shell>cd mbstring

shell>phpize
shell>./configure --with-php-config=/usr/local/php/bin/php-config                #指定php-config文件
shell>make
shell>make install               #看这一步的输出可以看出是模块的目录,我的是/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613

shell>vim /usr/local/php/lib/php.ini              #编辑php.ini添加扩展目录。

extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613

extension=mbstring.so

重启一个web服务,用phpinfo看看是否支持mbstring。

 

自动建立ssh信任脚本

转自:www.chinaunix.net。作者:老表

 

在工作中经常遇到给两台主机建立ssh信任,手动建立太费事了,索性胡乱写了个脚本ssh_trust.sh来自动建立信任:

  1. #!/bin/bash
  2. src_host=$1
  3. src_username=$2
  4. src_passwd=$3

  5. dst_host=$4
  6. dst_username=$5
  7. dst_passwd=$6

  8. #在远程主机1上生成公私钥对
  9. Keygen()
  10. {
  11. expect << EOF

  12. spawn ssh $src_username@$src_host ssh-keygen -t rsa
  13. while 1 {

  14.         expect {
  15.                         "password:" {
  16.                                         send "$src_passwdn"
  17.                         }
  18.                         "yes/no*" {
  19.                                         send "yesn"
  20.                         }
  21.                         "Enter file in which to save the key*" {
  22.                                         send "n"
  23.                         }
  24.                         "Enter passphrase*" {
  25.                                         send "n"
  26.                         }
  27.                         "Enter same passphrase again:" {
  28.                                         send "n"
  29.                                         }

  30.                         "Overwrite (y/n)" {
  31.                                         send "nn"
  32.                         }
  33.                         eof {
  34.                                    exit
  35.                         }

  36.         }
  37. }
  38. EOF
  39. }

  40. #从远程主机1获取公钥保存到本地
  41. Get_pub()
  42. {
  43. expect << EOF

  44. spawn scp $src_username@$src_host:~/.ssh/id_rsa.pub /tmp
  45. expect {
  46.              "password:" {
  47.                             send "$src_passwdn";exp_continue
  48.                 }
  49.                 "yes/no*" {
  50.                             send "yesn";exp_continue
  51.                 }   
  52.                 eof {
  53.                                 exit
  54.                 }
  55. }
  56. EOF
  57. }
  58. #将公钥的内容附加到远程主机2的authorized_keys
  59. Put_pub()
  60. {
  61. src_pub="$(cat /tmp/id_rsa.pub)"
  62. expect << EOF
  63. spawn ssh $dst_username@$dst_host "chmod 700 ~/.ssh;echo $src_pub >> ~/.ssh/authorized_keys;chmod 600 ~/.ssh/authorized_ke
  64. ys"
  65. expect {
  66.             "password:" {
  67.                         send "$dst_passwdn";exp_continue
  68.              }
  69.             "yes/no*" {
  70.                         send "yesn";exp_continue
  71.              }   
  72.             eof {
  73.                         exit
  74.              }
  75. }
  76. EOF
  77. }
  78. Keygen
  79. Get_pub
  80. Put_pub
脚本主要由3个expect组成,比较简单,用法是
  1. ./ssh_trust.sh host1 user1 passwd1 host2 user2 passwd2
即建立从user1@host1到user2@host2的ssh信任。
说明:
1、当然得安装expect
2、脚本放在第三方机器(能远程登录host1和host2)上运行即可,当然放在host1和host2上运行也行。
3、如果想批量建立信任,可以编辑一个文件夹file如:
  1. host1 user1 passwd1 host2 user2 passwd2
  2. host3 user3 passwd3 host4 user4 passwd4
  3. host5 user5 passwd5 host6 user6 passwd6
使用下面命令执行脚本即可:
  1. xargs -n6 ./ssh_trust.sh < file
4、仓促写的,脚本只是简单实现功能,使用前确保参数的可用性(用户密码主机名),不然很容易报错
5、只在linuxredhat上测试过,运行成功,欢迎大家提意见~~

centos 5.5添加新的字符集

1.下载相应的字符集。

2.在服务器上,进入/usr/share/fonts/目录下 

新建一个目录,随便了。myfont

3。复制字符集到myfont目录。

进入myfont

运行下边的命令更新字符集。
mkfontscale
mkfontdir     
fc-cache

cat fonts.dir 看看支持的字符。

4.如果要修改系统的话,就LANG=‘字符集’

 

paste 命令

linux下命令使用详解---合并文件的列

 

功能说明:合并文件的列。

 

语  法:paste [-s][-d ][--help][--version][文件...]

补充说明:paste指令会把每个文件以列对列的方式,一列列地加以合并。

参  数:

 -d或--delimiters=  用指定的间隔字符取代跳格字符。

 -s或--serial  串列进行而非平行处理。

 --help  在线帮助。

 --version  显示帮助信息。

 

例:

 

1.paste的拼凑原理是什么?

 

这个很简单,和cut的原理几乎一样,就是将几个文件的相应行用制表符连接起来,并输出到标准输出。

 

paste最简单的使用方法是:

 

[rocrocket@rocrocket programming]$ cat p1.txt

 

123[rocrocket@rocrocket programming]$ cat p2.txt

a

b

c

[rocrocket@rocrocket programming]$ paste p1.txt p2.txt

1    a

2    b

3    c

[rocrocket@rocrocket programming]$ paste p1.txt p2.txt|sed-n l

1ta$

2tb$

3tc$

看到制表符了吧,它就是默认的间隔符。

 

2 上面的例子是两个文件的,那三个文件呢?

 

当然也可以了。看看例子吧:

 

[rocrocket@rocrocket programming]$ cat p3.txt

I

II

III

[rocrocket@rocrocket programming]$ paste p1.txt p2.txt p3.txt

1    a    I

2    b    II

3    c    III

[rocrocket@rocrocket programming]$ paste p3.txt p2.txt p1.txt

I    a    1

II   b    2

III  c    3

可见paste的结果是和文件列表的顺序有关的。

 

3 我不想用制表符来间隔,我想用星号(*),可以么?

 

行的!使用-d符号就可以设定间隔符,这和cut没有两样。看看例子:

 

[rocrocket@rocrocket programming]$ paste -d'*' p3.txt p2.txt p1.txt

I*a*1

II*b*2

III*c*3

要注意一点,此处一定要把星号用引号括起来哦(单引号双引号均可),否则shell会把星号扩展为当前目录下的文件列表哦,小心小心。

 

4 我看过paste命令的man,里面提到了一个-s选项,我不懂是什么意思?

 

这个很好解释,继续上面的例子,看看这个命令:

 

[rocrocket@rocrocket programming]$ paste -s-d"*" p3.txt p2.txt p1.txt

I*II*III

a*b*c

1*2*3

呵呵,懂了吧,-s就是以每个文件为一个处理单元,将其中的所有行以-d设定的间隔符相连接组成一大行,输出到标准输出中。

 

linux scsi硬盘热插拔

在生产环境中,有很多情况不能随便重启设备,例如scsi硬盘的更换(非raid卡环境)。

在linux下面修改/proc/scsi/scsi文件可以实现热插拔。

 

测试环境red hat 5.5+vmware8.0

具体步骤:

1.硬盘添加到服务上,看好接口,插槽。

2.管理员登陆,看一个/proc/scsi/scsi文件


3.用户运行下面命令

例:echo "scsi add-single-device x y z u" > /proc/scsi/scsi

其中:

  x是硬盘所在SCSI控制器号(一般机器就一个SCSI控制器,所以就是0);

  y是硬盘所在SCSI通道的编号(一般单通道的就是0,多通道的要看是哪个通道了);

  z是硬盘的SCSI ID号(可以通过具体插入的硬盘插槽来判断,从0开始);

  u是硬盘的lun号(默认情况都是0)

4.查看文件/proc/scsi/scsi,多出来一个硬盘。fdisk -l 也可以发现多一个硬盘。


5.拔下硬盘,别忘了挂载点,运行下面命令。

echo "scsi remove-single-device x y z u" > /proc/scsi/scsi


硬盘被安全移除。