shell编程——基本语法

一、判断语句
1、if……then……if语句

#!/bin/bash
read -p "请输入y/n:" ym
if [ "$ym" == "Y" -o "$ym" == "y" ]; then
        echo "你输入的是Y"
        exit 0
elif [ "$ym" == "N" -o "$ym" == "n" ]; then
        echo "你输入的是N"
        exit 0
else
        echo "你输入的不是N或者Y"
fi

note:if附近很多空格,全部用空格隔开

2、case……esac语句

#!/bin/bash
read -p "请输入(Y/n):" fei
case $fei in
y)
        echo '您输入的是y'
        ;;
Y)
        echo '您输入的是Y'
        ;;
n)
        echo '您输入的是n'
        ;;
N)
        echo '您输入的是N'
        ;;
*)
        echo '您输入的不符合要求'
        ;;
esac

二、循环语句
1、while语句

#!/bin/bash
s=0
i=0
while [ "$i" != 100 ]
do
        i=$(($i+1))
        s=$(($s+$i))
done
echo "the result of '1+2+……+100' is $s"

2、until语句

#!/bin/bash
until [ "$yn" == "yes" -o "$yn" == "YES" ]
do
        read -p "Please input yes/YES to stop this program: " yn
done
echo "OK! you input the correct answer."

note:当until满足是进入循环,和while相反

3、for…do…done语句

#举例一
#!/bin/bash
for var in xi fen fei
do
        echo "this is ${var} "
done

#举例二
#!/bin/bash
filelist=$(ls -la)
for var in v$filelist
do
        echo "${var}"
done

#举例三
#!/bin/bash
s=0
for i in $(seq 1 100)
do
        s=$(($s+$i))
done
echo "the result of '1+2+……+100' is $s"

#举例四
#!/bin/bash
echo "请输入从1开始累加到N的值:"
read nu
s=0
for((i=1;i<=$nu;i=i+1))
do
        s=$(($s+$i))
done
echo "1+……+$nu is ==>$s"

安装rlwrap(让sqlplus使用如同在win dos下)

在linux中,使用sqlplus不能使用上线键,有些情况下连backspace键都不能使用,给通过sqlplus对oracle的管理带来了很多不便,使用rlwrap可以解决这个问题,给你一个和win下dos一样的操作感觉
官网:http://utopia.knoware.nl/~hlub/uck/rlwrap/

1、在Ubuntu中安装rlwrap
1)sudo apt-get install rlwrap
2)在/etc/profile文件中添加
alias sqlplus=’rlwrap sqlplus’
alias rman=’rlwrap rman’

2、在centos中安装rlwrap
1)wget http://utopia.knoware.nl/~hlub/uck/rlwrap/rlwrap-0.37.tar.gz
2)tar -xzvf rlwrap-0.37.tar.gz
3)./configure
4)make
5)make install
6)在/home/oracle/.bash_profile中添加
alias sqlplus=’rlwrap sqlplus’
alias rman=’rlwrap rman’

Ubuntu网络管理

一、网络配置
1、配置静态ip地址
1)修改/etc/network/interfaces文件(eth0)
iface eth1 inet static
address 192.168.0.101
netmask 255.255.255.0
network 192.168.0.0
broadcask 192.168.0.255
gateway 192.168.0.2
2)重启网卡
/etc/init.d/networking restart 或者
$ sudo ifdown eth0
$ sudo ifup eth0
3)命令设置
sudo ifconfig eth0 192.168.0.190 netmask 255.255.255.0 (ip地址)
sudo route add default gw 192.168.0.1 (网关)
2、动态获取ip地址
sudo dhclient eth0
3、DNS信息
修改/etc/resolv.conf 文件
nameserver DNS的地址1

二、ssh配置
1、安装ssh
sudo apt-get install ssh
2、重启/开启ssh
sudo /etc/init.d/ssh start/restart
3、查看开启情况
netstat -tlp

Ubuntu10.4安装oracle 11gR2

1、安装Ubuntu并升级至最新
安装省略
升级:
sudo su -(-必须的,重新启动一个新回话,主要就是环境变量)
apt-get update
apt-get dist-upgrade
reboot—-完成后重启

2、安装必要的包(不知道在deb中是否叫做包)
sudo su –
apt-get install build-essential libaio1 gawk ksh libmotif3 alien libtool lsb-rpm

3、建立一些链接
sudo su –
ln -sf bash /bin/sh
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename
mkdir /etc/rc.d
for i in 0 1 2 3 4 5 6 S ; do ln -s /etc/rc$i.d /etc/rc.d/rc$i.d ; done

4、创建组、用户和相关文件夹
addgroup oinstall
addgroup dba
addgroup nobody
usermod -g nobody nobody
useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
passwd -l oracle
mkdir /home/oracle
chown -R oracle:dba /home/oracle
mkdir -p /u01/oracle
chown -R oracle:dba /u01

5、相关参数修改
1)/etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304

2)/etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16383
oracle soft nofile 1023
oracle hard nofile 65535

3)/etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so

4)执行sysctl -p,使得刚刚修改的参数生效

6、修改环境变量/etc/profile文件中添加
ORACLE_SID=orcl
ORACLE_BASE=/u01
ORACLE_HOME=/u01/oracle
NLS_LANG=AMERICAN_AMERICA.UTF8
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_BASE ORACLE_SID ORACLE_HOME PATH NLS_LANG

7、oracle11g安装文件准备
unzip解压
chown -R oracle:dba database(解压的安装文件夹)

8、开始安装
sudo su –
xhost +127.0.0.1(或者使用oracle图形化界面登录安装)
su – oracle
export LANG=en_US(采用英文界面安装,中文乱码,因为jdk问题,不想配置)
./runInstaller -ignoreSysPrereqs(忽略安装时的版本检查)

9、安装过程中
检查的时候,会有错误和警告,全部忽略(不是oracle支持的版本,没有办法)
注意选择数据库编码为utf8,不然会出现乱码(因为在环境变量中设置了数据库客户端编码为utf8)
还有选择地区等信息(建议先安装数据库软件,然后使用dbca创建数据库)
信息比较多,如果不能选择清楚,在网上找些资料,配置起中文正常显示(这样很多变量不用人工去选择)

10、安装结束后执行提示脚本
提示:使用root用户权限执行

11、总体感觉:
因为Ubuntu不是oracle官方支持的linux版本,所以在安装过程中会有很多多于的步骤,如有些是采用链接方式进行的;还在版本检查被强行忽略,安装检查错误提示被忽略,还有和jdk不一致产生乱码问题等。因为在安装过程中忽略了很多警告和错误,到底会不会产生什么影响现在还不知道,只是做了简单的测试工作正常。个人感觉,Ubuntu不是很适合做oracle服务器,至少是在oracle官方没有正式支持前不是很时候,很多东西都是靠网友总结出来的。
我对比了下上次在centos上安装oracle的过程,感觉这里有些东西就是为了模仿redhat的操作系统而执行的操作,而且有些就算是模仿了,也还是没有redhat下面好,如环境变量的地方,在Ubuntu中是全局的(所有用户都有效),而redhat中是oracle单个用户(感觉更安全),当然我linux功底有限,也许说了很多错话。
CentOs 5安装oracle 11g R2数据库

创建Logical Standby

1、Create a Physical Standby Database
具体见linux下使用rman配置standby data guard(11gR2版)

2、Stop Redo Apply on the Physical Standby Database
在primary database上执行ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

3、修改primary上的参数文件并建立LogMiner字典

LOG_ARCHIVE_DEST_1=
'LOCATION=/archive/orcl/
VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=orcl'
LOG_ARCHIVE_DEST_3=
'LOCATION=/archive/standby/orcl/
VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)
DB_UNIQUE_NAME=orcl'
LOG_ARCHIVE_DEST_STATE_3=ENABLE
--LOG_ARCHIVE_DEST_2未作修改没有列出

执行EXECUTE DBMS_LOGSTDBY.BUILD;

4、Physical Standby Database Convert to a Logical Standby Database(standby上执行)
ALTER DATABASE RECOVER TO LOGICAL STANDBY db_name;

5、修改Logical standby database参数

LOG_ARCHIVE_DEST_1=
'LOCATION=/archive/orcl/
VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=boston'
LOG_ARCHIVE_DEST_2=
'SERVICE=orcl ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=orcl'
LOG_ARCHIVE_DEST_3=
'LOCATION=/archive/standby/xff/
VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)
DB_UNIQUE_NAME=xff'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_DEST_STATE_3=ENABLE

6、重启logical standby database
STARTUP MOUNT;
ALTER DATABASE OPEN RESETLOGS;

7、添加standby logfile文件
具体见oracle之data guard(2)——物理standby和primary切换中的添加standby redo部分

8、开启和关闭应用
alter database start logical standby apply immediate;–开启
alter database recover managed standby database cancel;–关闭

9、相关事宜说明
主要参考oracle 的online documentation 11g release 2文档中的data guard部分
注意11g这部分中和10g的不同,多了些新特新,不用新建密码文件