本节内容有助于你轻松掌握 Unix 环境。本节首先介绍当你作为 Oracle 用户登录到 Unix中会自动被执行的命令。在主目录下有一个特殊的文件,这个文件中可以写入一些当该用户登录到系统后就自动运行的命令。如果使用Korn shell,那么文件名就是.profile。如果使用 C shell,那么文件名就是.cshrc。
1.设置标准 Unix 提示符(ksh)
www.ixdba.net
将下面的代码放到.profile 中,就会得到一个包含服务器名称、数据库名称和当前工
作目录的提示符。这样可以防止我们执行误操作。
PS1=" `hostname`*\${ORACLE_SID}-\${PWD} >"
下面是具体的效果:
corphp*PROD-/home/oracle >pwd
/home/oracle
corphp*PROD-/home/oracle >cd /u01/oradata/PROD
corphp*PROD-/u01/oradata/PROD >
在上面的例子中,corphp 是主机名,PROD 是 Oracle 实例名,后面跟的是当前目录。
注意,这个方法在 ksh 下一般都有效,如果是别的 shell 可能不行。
2.获取 Oracle 主目录(ksh):
$ cat /etc/oratab|grep ^$ORACLE_SID:|cut -f2 -d':'
/poll/oracle/ora92
3.为 Oracle 创建有用的 unix 别名
alias 命令可以用一个短小的名字来代表一长的 Unix 命令。例如:
alias log='cd $ORACLE_HOME/$ORACLE_SID/bdump'
rm 命令在删除数据的时候默认不确认,这就非常危险,为了避免误删除,我们可以用下面的办法:
alias rm='rm -i'
这样,执行 rm 的时候相当于执行的 rm -i,就会确认是否删除。
我们可以通过这样的方法,把常用的命令组合用别名来代替,放到.profile 文件中。
需要调用的时候调用别名即可。下面在.profile 中定义了一些常用的别名:
# Aliases
#
alias alert='tail -100\
$ORACLE_HOME/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.lo
g|more' alias arch='cd $ORACLE_HOME/admin/$ORACLE_SID/arch'
alias bdump='cd $ORACLE_HOME/admin/$ORACLE_SID/bdump'
alias cdump='cd $ORACLE_HOME/admin/$ORACLE_SID/cdump'
alias pfile='cd $ORACLE_HOME/admin/$ORACLE_SID/pfile'
alias rm='rm -i'
alias sid='env|grep ORACLE_SID'
alias admin='cd $ORACLE_HOME/admin'
4.将 SQL*Plus 脚本放入 Unix shell 中
这个例子中的脚本叫做 run_sql.ksh,该脚本调用了 SQL*Plus 来执行一条 SQL 语句,
然后执行/home/oracle/sql/longscriptl.sql
#!/bin/ksh
#请用正确的 sid 替换下面的 sidname
ORACLE_SID=sidname
export ORACLE_SID
ORACLE_HOME=`cat /etc/oratab|grep ^$ORACLE_SID:|cut -f2 -d':'`
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH
$ORACLE_HOME/bin/sqlplus system/manager<<!
SELECT name FROM v\$datafile;
@/home/oracle/sql/longscript.sql
exit
!
然后要用 chmod 755 run_sql.ksh 来将此脚本改成可执行。接下来就可以直接在提示符下调用了(假设该脚本位于当前目录下):
# ./run_sql.ksh
当然,我们也可以在提示符下用下面的命令来执行 SQL*Plus 脚本:
# sqlplus system/manager @/home/oracle/sql/longscript.sql
5.将任务提交到后台执行
nohup 命令可以作为一个后台进程来提交任务。这对长时间执行的 Oracle 作业尤其有用,因为这可以释放命令提示符,从而你可以进行其他工作。例如:
nohup run_sql.ksh > logfile.lst 2>&1 &
上面这条命令中不光 nohup,还有其他内容,让我们来了解一下各部分的含义:
nohup
将这个任务提交,让其持续运行,甚至你断开终端会话。
run_sql.ksh
指定想在后台中运行的 Unix 脚本
>logfile.lst
指定存放输出的文件名
2>&1