跳至主要内容

博文

Oracle学习笔记20080129

环境和shell变量 $ variable-name = value 或 ${variable-name = value} 注意,等号两边可以有空格。如果取值包含空格,必须用双引号括起来。shell变量可以用大小写字母。 表14-1变量设置时的不同模式 Variable-name=value 设置实际值到variable-name Variable-name+value如果设置了variable-name,则重设其值 Variable-name:?value 如果未设置variable-name,显示未定义用户错误信息 Variable-name?value 如果未设置variable-name,显示系统错误信息 Variable-name:=value 如果未设置variable-name,设置其值Variable-name:-value 同上,但是取值并不设置到variable-name,可以被替换 显示变量直接echo,清除变量unset,可将多个变量结合使用 有时要测试是否已设置或初始化变量。如果未设置或初始化,就可以使用另一值。 此命令格式为: $ {variable : -value }意即如果设置了变量值,则使用它,如果未设置,则取新值。 $ { variable : =value }测试变量是否取值,如果未设置,则返回一空串。 方法如下: $ { variable : +value }使用下述方法初始化变量为空字符串。v ariable = " "$DETINATION = " " 如果设置变量时,不想再改变其值,可以将之设置为只读方式。如果有人包括用户本人想要改变它,则返回错误信息。 格式如下:variable - name = valuereadonly variable-name 设置环境变量VARIABLE - NAME = value;export VARIABLE-NAME在两个命令之间是一个分号,也可以这样写:VARIABLE - NAME = valueExport VARIABLE-NAME用env查看所有环境变量,同样是用unset命令清楚环境变量 CDPATH改变目录路径变量,保留一系列由冒号隔开的路径名,用于cd命令。如果设置了CDPATH,cd一个目录时,首先查找CDPATH,如果C...

Oracle学习笔记20080128

表7-1 基本元字符集及其含义 ^ 只匹配行首 $ 只匹配行尾 * 一个单字符后紧跟 *,匹配0个或多个此单字符 [ ] 匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以使用 - 表示[ ]内字符序列范围,如用[1-5]代替[12345]\ 只用来屏蔽一个元字符的特殊含义。因为有时在shell中一些元字符有 特殊含义。\可以使其失去应有意义. 只匹配任意单字符pattern\{n\} 只用来匹配前面pattern出现次数。n为次数pattern\{n,\} m 只含义同上,但次数最少为npattern\{n,m\} 只含义同上,但pattern出现次数在n与m之间 实例:A\{2\}B出现的AAB,A\{4\}B出现的是AAAAB或AAAAAAAAB 表7-2经常使用的正则表达式举例 ^ 对行首 $ 对行尾 ^[the] 对以the开头行 [Ss]igna[lL] 对匹配单词signal、signaL、Signal、SignaL[Ss]igna[lL]\. 对同上,但加一句点[mayMAY] 对包含may大写或小写字母的行 ^USER$ 对只包含USER的行[tty]$ 对以tty结尾的行\. 对带句点的行^d..x..x..x 对对用户、用户组及其他用户组成员有可执行权限的目录 ^[^l] 对排除关联目录的目录列表 [.*0] 对0之前或之后加任意字符 [000*] 对000或更多个 [iI] 对大写或小写I[iI][nN] 对大写或小写i或n [^$] 对空行[^.*$] 对匹配行中任意字符串 ^......$ 对包括6个字符的行[a-zA-Z] 对任意单字符[a-z][a-z]* 对至少一个小写字母 [^0-9\$] 对非数字或美元标识 [^0-0A-Za-z] 对非数字或字母[123] 对1到3中一个数字 [Dd]evice 对单词device或DeviceDe..ce 对前两个字母为De,后跟两个任意字符,最后为ce\^q 对以^q开始行^.$ 对仅有一个字符的行^\.[0-9][0-9] 对以一个句点和两个数字开始的行'"Device"' 对单词deviceDe[Vv]ice\. 对单词Device或device[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}对日期格式dd-mm-yyyy[...

Oracle20080124

awk略过。。实在是看不下去。。下次补上具体的,但是从进程来看,似乎和上面的grep差不多,但是一个是查询一个是显示还是拥有域的概念,多用来显示sql的报表类。今天看的是echo,今天就看一章吧,手头上还有个设计稿。。汗。。为难我了 echo echo string echo命令有很多功能,其中最常用的是下面几个: \c 不换行。 \f 进纸。 \t 跳格。 \n 换行。 你可以echo任何东西,linux系统用-n选项禁止echo输出换行,必须使用-e选项才能使转义符生效:如果想把一个字符串输出到文件中,使用重定向符号 >。或者可以追加到一个文件的末尾,使用重定向符号 >>这意味着不覆盖原有的内容. echo命令输出这样的字符串:“/dev/rmt0”,那么我们只要在引号前面加上反斜杠\即可: $ echo "\"/dev/rmt0"\" 可以使用read语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车。 它的一般形式为:read varible1 varible2 ... 例如 $read name tu lei $echo $name tu lei 第一个单词将被赋给第一个变量,而由于变量数少于单词数,字符串后面的部分将被全部赋给第二个变量。可以使用多个变量名进行定义。 cat $ cat myfile more或$ cat myfile pgcat命令的一般形式为: cat [options] filename1 ... filename2 ... cat命令最有用的选项就是:-v 显示控制字符 重定义文件至另一文件 $ cat myfile1 myfile2 myfile3 > bigfile $cat > myfile最后按 结束输入即可 管道可以通过管道把一个命令的输出传递给另一个命令作为输入。 管道用竖杠 表示。它的一般形式为:命令1 命令2 tee命令作用可以用字母T来形象地表示。它把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。如果希望在看到输出的同时,也将其存入一个文件,那么这个命令再合适不过了。 它的一般形式为:tee -a files ...

Oracle学习笔记20080122

sed。。没用过。。 先这么学者吧sed是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。标准输入可能是来自键盘、文件重定向、字符串或变量,或者是一个管道的文本。 sed可以做些什么呢?别忘了,Vi(Ubuntu下为vim)也是一个文本编辑器。sed可以随意编辑小或大的文件,有许多sed命令用来编辑、删除,并允许做这项工作时不在现场。sed一次性处理所有改变,因而变得很有效,对用户来讲,最重要的是节省了时间 调用sed有三种方式: 在命令行键入命令; 将sed命令插入脚本文件,然后调用sed; 将sed命令插入脚本文件,并使sed脚本可执行。 使用sed命令行格式为:sed [选项] sed命令 输入文件。 记住在命令行使用sed命令时,实际命令要加单引号。 sed也允许加双引号。使用sed脚本文件,格式为: sed [选项] -f sed脚本文件 输入文件要使用第一行具有sed命令解释器的sed脚本文件,其格式为: sed脚本文件 [选项] 输入文件不管是使用shell命令行方式或脚本文件方式,如果没有指定输入文件,sed从标准输入中接受输入,一般是键盘或重定向结果。 sed选项如下: n 不打印;sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。 p 命令可以用来打印编辑行。 c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条sed命令,此选项无用,但指定它也没有关系。 f 如果正在调用sed脚本文件,使用此选项。此选项通知sed一个脚本文件支持所有的sed命令,例如:sed -f myscript.sed input_file,这里myscript.sed即为支持sed命令的文件。 使用sed在文件中查询文本的方式sed浏览输入文件时,缺省从第一行开始,有两种方式定位文本: 1) 使用行号,可以是一个简单数字,或是一个行号范围。 2) 使用正则表达式,怎样构建这些模式请参见第 7章。 x x为一行号,如1x,y 表示行号范围从x到y,如2,5表示从第2行到第5行/pattern/ 查询包含模式的行。例如/disk/或/[a-z]/ /pattern/pattern/ 查询包含两个模式的行。 例如/disk/disks/pattern/,x 在给定行号上查询包含模式的行。 如/ribbon/,3x,/pattern/ 通过...

Oracle学习笔记20080121

为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数: $ crontab davecron 这样可以提交该文件 $ crontab -e可编辑 crontab文件(进去后发觉编辑界面简直难受的要死,还是vim好) $ crontab -l可列出crontab crontab -l > ...可将文件输出到别的地方 在编辑crontab的时候可以加入执行语句 30 3 1 * * /bin/find -name "core" -exec rm {} \;该语句的意思是每个月1号3点半把core文件找出来然后删掉(ubuntu下不知道,难道需要只能切换用户或者直接root?) 删除crontab 直接$crontab -r 如果不小心误删了crontab文件,假设你在自己的$HOME目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/ ,其中 是用户名。 如果由于权限问题无法完成拷贝,可以用: $ crontab 其中 是你在$HOME目录中副本的文件名。 我建议你在自己的$HOME目录中保存一个该文件的副本。这就是为什么有些系统文档建议不要直接编辑crontab文件,而是编辑该文件的一个副本,然后重新提交新的文件。有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按 ,否则你将丢失crontab文件。 at命令允许用户向cron守护进程提交作业,使其在稍后的时间运行。 也可通过/etc/at.allow和/etc/at.deny来控制用户运用at命令 at命令的基本形式为: at [-f script] [-m -l -r] [time] [date] 其中,-f script 是所要提交的脚本或命令。 -l 列出当前所有等待运行的作业。 atq命令具有相同的作用。 -r 清除作业。为了清除某个作业,还要提供相应的作业标识(ID);有些UNI X变体只接受atrm作为清除命令。 -m 作业完成后给用户发邮件。 time at命令的时间格式非常灵活;可以是H、HH.HHMM、HH:MM或H:M,其中H和M分别是小时和分钟。还可以使用a.m.或...

Oracle学习笔记20080118

做个rman的backup脚本,发觉对shell研究不是很深,纯建立脚本以后chmod a+x backup.ramn后,还差点,转战shell下,虽然一直想把shell好好用,但是好像没什么进展。 今天开始看shell 当然首先出现的还是ls,最常用的是ls -l,ls -la包含的信息: total 4232:该目录中所有文件所占的空间。 - r w x r- x r- x:这是该文件的权限位。 前面的横杠有: d 目录。 l 符号链接(指向另一个文件)。 s 套接字文件。 b 块设备文件。 c 字符设备文件。 p 命名管道文件。 - 普通文件,或者更准确地说,不属于以上几种类型的文件。 如果除去最前面的横杠,这里一共是9个字符,他们对应9个权限位。通过这些权限位,可以设定用户对文件的访问权限。这9个字符可以分组: r w x:文件属主权限 这是前面三位r- x:同组用户权限 这是中间三位r- x:其他用户权限 这是最后三位 1 该文件硬链接的数目。 root 文件的属主。root 文件的属主r o o t所在的缺省组(也叫做r o o t )。 3578 用字节来表示的文件长度,记住,不是K字节!Oct 14 04:44 文件的更新时间。 dmesg 文件名。 - rw- r-- r-- 文件类型为普通文件 文件属主可以读、写 同组用户可以读 其他用户可以读r-- --- --- 文文件属主可读,但不能写或执行 r-- r-- --- 文文件属主和同组用户(一般来说,是文件属主所在的缺省组)可读 r-- r-- r- - 文任何用户都可读,但不能写或执行 rwx r-- r- - 文文件属主可读、写、执行,同组用户和其他用户只可读 rwx r-x --- 文文件属主可读、写、执行,同组用户可读、执行 rwx r-x r- x 文文件属主可读、写、执行,同组用户和其他用户可读、执行 rw- rw- --- 文文件属主和同组用户可读、写 rw- rw- r- - 文文件属主和同组用户可读、写,其他用户可读 rw- rw- --- 文文件属主和同组用户及其他用户读可以读、写,慎用这种权限设置,因为任何用户都可以写入该文件 chmod [who] operator [permission] filenamewho的含义是: u 文件属主权限。g 同组用户权限。o 其他...

Oracle学习笔记20080117

大家都清楚,联机日志分为当前联机日志和非当前联机日志。 非当前联机日志的损坏是比较简单的,一般通过clear命令就可以解决问题。 1、启动数据库,遇到ORA-00312 or ORA-00313错误, 如ORA-00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1: 'D:\ORACLE\ORADATA\TEST\REDO01.LOG' 从这里我们知道日志组1的数据文件损坏了从报警文件可以看到更详细的信息 2、用CLEAR命令重建该日志文件 SQL>alter database clear logfile group 1; 如果是该日志组还没有归档,则需要用 SQL>alter database clear unarchived logfile group 1; 3、打开数据库,重新备份数据库 SQL>alter database open; 说明: 1、如果损坏的是非当前的联机日志文件,一般只需要clear就可以重建该日志文件,但是如果该数据库处于归档状态但该日志还没有归档,就需要强行clear。 2、建议clear,特别是强行clear后作一次数据库的全备份。 3、此方法适用于归档与非归档数据库 损坏当前联机日志归档模式下当前日志的损坏有两种情况: 一、是数据库是正常关闭,日志文件中没有未决的事务需要实例恢复,当前日志组的损坏就可以直接用 SQL>alter database clear unarchived logfile group n 来重建。 二、是日志组中有活动的事务,数据库需要媒体恢复,日志组需要用来同步,有两种补救办法 A.最好的办法就是通过不完全恢复,可以保证数据库的一致性,但是这种办法要求在归档方式下,并且有可用的备份 B.通过强制性恢复,但是可能导致数据库不一致。下面分别用来说明这两种恢复方法 5.1.2.1 通过备份来恢复 1、打开数据库,会遇到一个类似的错误 ORA-00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1: 'D:\ORACL...