oracle批处理脚本学习总结

Oracle自动备份脚本



废话不多说了,直接给大家贴代码了,具体代码如下所示:


#!/bin/sh
#******************************************************************
# File: oraclebak.sh
# Creation Date: 2014/1/22 17:57:32
# Last Modified: 2014/1/22 17:57:34
# 脚本功能:oracle备份脚本
# 执行方法:1、第一次执行需要root用户执行,脚本会以询问的方式创建备份目录和相关参数
# 2、脚本会自动写入crontab调度里面定时执行,crontab设置是在第一次执行的时候自动添加的
#******************************************************************
echo $USER
if [ $USER != root ]
then
echo "检测到安装用户不是root用户,请用root用户登录再执行安装文件"
exit 1
fi
echo "开始安装oracle数据库备份工具.........................."
echo "请输入备份程序的安装目录:"
read installdir
mkdir -p $installdir
result=$?
while [ $result -ne 0 ]
do
echo "无法创建目录,请重新输入或退出安装。输入y重新输入,输入n退出安装。"
read redo
if [ $redo != y ]
then
echo "用户退出安装。"
exit 0
fi
echo "请输入备份程序的安装目录:"
read installdir
mkdir $installdir
result=$?
done
echo "安装目录创建完成。"
echo "请输入执行备份用户(一般为oracle用户):"
read execuser
id $execuser
result=$?
while [ $result -ne 0 ]
do
echo "不存在该用户,是否更换其它用户或者退出安装新建用户,输入y更换用户,输入n退出安装"
read redo
if [ $redo != y ]
then
echo "用户退出安装"
exit 0
fi
echo "请输入执行备份的用户(一般为tnmsdb2用户)"
read execuser
id $execuser
result=$?
done
echo "你希望建立备份的数据库数量(一般为1)"
read backnum
if [ $backnum -eq 0 ]
then
echo "无备份数据库,退出安装"
exit 0
fi
scount=0
while [ $scount -lt $backnum ]
do
echo "请输入第"$(($scount+1))"个备份登录登录oracle数据库的用户名和密码,以及本地服务名"
echo "用户名"
read username[$scount]
echo "密码"
read password[$scount]
echo "服务名"
read sname[$scount]
su -l -c"sqlplus /nolog" $execuser< whenever sqlerror exit sql.sqlcode;
connect ${username[$scount]}/${password[$scount]}@${sname[$scount]}
exit
insert
result=$?
if [ $result -ne 0 ]
then
echo "输入数据库信息无法被连接,是否重新输入?输入y重新输入,输入n退出安装。"
read redo
if [ $redo != y ]
then
echo "用户退出安装"
exit 0
fi
else
scount=$(($scount+1))
fi
done
echo "输入值守时间,值守时间的格式为 mm hh dd MM E 。"
echo "m代表分钟,h代表小时,d代表日期,M代表月份,E代表星期"
echo "不输入则为任意时间"
scount=0
iscontinue=y
while [ $iscontinue == y ]
do
echo "输入第$(($scount+1))个值守时间"
echo "分钟"
read min
echo "小时"
read hour
echo "日期"
read day
if [ ! $day ]
then
day="*"
fi
echo "月份"
read mouth
if [ ! $mouth ]
then
mouth="*"
fi
week="*"
backtime[$scount]="$min $hour $day $mouth $week"
echo -e "${backtime[$scount]}"
echo "是否输入更多值守时间?输入y继续,输入n进入下一步。"
read iscontinue
scount=$(($scount+1))
done
echo "是否要进行远程备份?输入y为进行远程备份,输入n进入下一步"
scount=0
read iscontinue
while [ $iscontinue == y ]
do
echo "请选择远程备份类型,输入s为sftp备份类型,否则为ftp备份类型"
read iss
if [ $iss == s ]
then
rtype[$scount]="sftp"
else
rtype[$scount]="ftp"
fi
echo "请输入远程备份地址,可以为域名,计算机名或者ip地址"
read rurl[$scount]
echo "请输入远程备份登录名"
read rname[$scount]
echo "请输入远程备份登录密码"
read rpass[$scount]
echo "是否输入更多远程备份地址?输入y重新输入,n进入下一步"
read iscontinue
scount=$(($scount+1))
done
# installdir
# execuser
# username password sname
# backtime
# rtype rurl rname rpass
echo "您所作的备份配置如下:"
sresult=$(echo -n "$installdir" | grep '^/')
if [ ! $sresult ]
then
installdir="$PWD/$installdir"
else
installdir=$installdir
fi
echo "本地备份目录为$installdir"
echo "执行备份系统用户为$execuser"
echo "系统备份数据库:"
allcount=${#username[@]}
scount=0
while [ $scount -lt $allcount ]
do
echo "${username[$scount]}/${password[$scount]}@${sname[$scount]}"
scount=$(($scount+1))
done
echo "执行备份的值守时间表,*代表任意"
scount=0
backnum=${#backtime[@]}
while [ $scount -lt $backnum ]
do
echo "${backtime[$scount]}"
scount=$(($scount+1))
done
rnum=${#rtype[@]}
if [ $rnum -ne 0 ]
then
echo "远程备份的服务地址为:"
scount=0
while [ $scount -lt $rnum ]
do
echo "连接方式:${rtype[$scount]},连接地址:${rurl[$scount]},用户名:${rname[$scount]},密码:${rpass[$scount]}"
scount=$(($scount+1))
done
fi
echo "是否确认安装?输入y继续,输入n退出安装"
read isgoon
if [ $isgoon != y ]
then
exit 0;
fi
echo "正在生产目录结构................................";
mkdir -p $installdir/logs
mkdir -p $installdir/temp
mkdir -p $installdir/zip
chown -Rvf $execuser $installdir
echo "目录结构生成完成................................"
echo "生成备份执行文件................................"
echo "#!/bin/bash">$installdir/runback.sh
echo "source ~/.bash_profile">>$installdir/runback.sh
echo "nowdate=\$(date +%Y-%m-%d_%k.%M.%S)">>$installdir/runback.sh
echo "nowmouth=\$(date +%Y-%m)">>$installdir/runback.sh
echo "echo \"\$nowdate开始备份.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
scount=0
snum=${#username[@]}
while [ $scount -lt $snum ]
do
echo "exp ${username[$scount]}/${password[$scount]}@${sname[$scount]} file=$installdir/temp/${username[$scount]}_${sname[$scount]}\$nowdate.dmp compress=N>>$installdir/logs/\$nowmouth.log 2>&1">>$installdir/runback.sh
scount=$(($scount+1))
done
echo "echo \"\$(date +%Y-%m-%d_%k.%M.%S)完成备份.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
echo "echo \"\$(date +%Y-%m-%d_%k.%M.%S)开始打包.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
echo "gzip $installdir/zip/\$nowdate.zip $installdir/temp/>>$installdir/logs/\$nowmouth.log 2>&1">>$installdir/runback.sh
echo "rm -Rvf $installdir/temp/*>>$installdir/logs/\$nowmouth.log 2>&1">>$installdir/runback.sh
echo "echo \"\$(date +%Y-%m-%d_%k.%M.%S)打包完成.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
scount=0
if [ ${#rtype[@]} -ne 0 ]
then
echo "echo \"\$(date +%Y-%m-%d_%k.%M.%S)进行远程备份.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
snum=${#rtype[@]}
while [ $scount -lt $snum ]
do
echo "lftp -u ${rname[$scount]},${rpass[$scount]} ${rtype[$scount]}://${rurl[$scount]}<>$installdir/runback.sh
echo "mkdir remotedbback">>$installdir/runback.sh
echo "cd remotedbback">>$installdir/runback.sh
echo "mput $installdir/zip/\$nowdate.zip">>$installdir/runback.sh
echo "exit">>$installdir/runback.sh
echo "remote">>$installdir/runback.sh
scount=$(($scount+1))
done
echo "echo \"\$(date +%Y-%m-%d_%k.%M.%S)完成远程备份.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
fi
echo "exit 0">>$installdir/runback.sh
chmod 775 $installdir/runback.sh
chown $execuser $installdir/runback.sh
echo "生成备份执行文件完成............................"
echo "开始定制值守时间................................"
scount=0
snum=${#backtime[@]}
while [ $scount -lt $snum ]
do
echo "${backtime[$scount]} $installdir/runback.sh">>$installdir/planlist
scount=$(($scount+1))
done
su -l -c"crontab $installdir/planlist" oracle
echo "完成值守时间定制................................"
exit 0


接下来给大家介绍linux oracle自动备份脚本


1、备份脚本:


#!/bin/sh 
export ORACLE_BASE=/home/oracle 
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 
export ORACLE_SID=orcl 
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin 
export DATA_DIR=/home/bakup/data 
export LOGS_DIR=/home/bakup/logs 
export DELTIME=`date -d "7 days ago" +%Y%m%d` 
export BAKUPTIME=`date +%Y%m%d%H%M%S` 
mkdir -p $DATA_DIR 
mkdir -p $LOGS_DIR 
echo "Starting bakup..." 
echo "Bakup file path $DATA_DIR/$BAKUPTIME.dmp" 
exp shop/lyisABC0987@orcl file=$DATA_DIR/$BAKUPTIME.dmp log=$LOGS_DIR/$BAKUPTIME.log 
echo "Delete the file bakup before 7 days..." 
rm -rf $DATA_DIR/$DELTIME*.dmp 
rm -rf $LOGS_DIR/$DELTIME*.log 
echo "Delete the file bakup successfully. " 
echo "Bakup completed." 


2、添加到任务调度


crontab -u oracle -e
 * 3 * * * /home/bakup/bakup.sh
即每天凌晨3点进行备份
 如需每天备份多次,可设置不同时间段备份:
 例如:* 3,13,18 * * * /home/bakup/bakup.sh,即每天3点、13点、18点进行备份。
 说明:文件备份目录,用户oracle必须有更改权限,否则无法备份。
========

Oracle自动备份及自动备份步骤



数据是应用的核心部分,程序坏了换台机器重新发布就可以,但数据一旦丢失,造成的损失将不可挽回,程序发布到生产后,数据的备份便显得尤为重要,由于不一定所有的服务均有资金完成高级的备份如RAC和DG,在我们只有一台数据库服务器的,暂时采取最简单的备份策略,export出dmp进行保存。


一、备份脚本


1、初始化变量,记录开始日志


#变量
sysname=填写自己的系统名称
syspath=/home/oracle/databak/$sysname
v_date=$(date '+%Y%m%d%H%M%S')
#日志目录
logfile=${syspath}/backup.${v_date}.log
#打印开始时间
echo backup_time>>${logfile}
date '+%Y-%m-%d %H:%M:%S' >> ${logfile}
echo "backup jcd">>${logfile}
echo "start_time">>${logfile}
date '+%Y-%m-%d %H:%M:%S' >> ${logfile}


2、进入oracle目录,设置oracle的参数


#进入oracle目录,设置oracle变量
cd /home/11g/app/oracle/product/11.2.0
export ORACLE_HOME=/home/11g/app/oracle/product/11.2.0/db_1
export PATH=$PATH:/home/11g/app/oracle/product/11.2.0/db_1/bin
export ORACLE_SID=SID名称 


3、导出数据


echo $syspath
v_date=$(date '+%Y%m%d%H%M%S')
filename=$syspath/jcd${v_date}.dmp
#导出命令
exp username/password file=${filename} compress=n >> ${logfile}
echo "end_time">>${logfile}
date '+%Y-%m-%d %H:%M:%S'>>${logfile} 


4、压缩dump包


gzip ${filename} 


5、使用scp,将压缩后的包传递到备份服务器,注意备份服务器上目录需要预先创建


scp ${filename}.gz remot_name@remot_ip:/home/weblogic/databak/备份目录 


二、设定脚本执行时间


我们设定规则为每天凌晨2点执行一次,采用crontab来进行处理


执行crontab -e,设定如下规则


0 2 * * * sh /home/oracle/db.sh


三、关于scp命令密码处理


执行scp命令时候,会提示输入远程主机的密码
scp ${filename}.gz remot_name@remot_ip:/home/weblogic/databak/备份目录 
 此时有两种处理办法进行解决:


1、使用加密文件进行认证


1)进入本地主机的~/.ssh目录下


2)运行ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub,此处我们使用rsa方式进行


3)将生成的id_rsa和id_rsa.pub权限修改为700


4)将.pub文件复制到远程主机的~/.ssh目录,执行cat id_rsa.pub >> ~/.ssh/authorized_keys,将内容拷入authorized_keys文件


5)修改authorized权限为700


  完成以上修改之后,从本地主机scp到远程主机便无须密码,简单理解应该是通讯时候,本地主机发送scp指令时,采用本地私钥进行签名,远程主机使用公钥验签后,判断问主机可以信赖,开放通讯服务。


2、使用expect命令完成密码交互


  expect命令主要用于脚本中出现必须人工干预的情况下,预先输入指令,模拟的场景为使用expect命令捕捉到提示输入指令的文字,一旦文字出现,自动使用send命令输入需要交互的命令。




  此处使用为:




  expect "*password:"#此处填写系统提示文字
   send "your password\r"#此处填写我们输入的交互命令
   expect eof


下面给大家介绍Oracle 自动备份详细步骤


背景:Oracle 10g 服务器,Oracle 10g 客户端,windowsXP 操作平台
 要求:Oracle 数据库服务器对数据库 ytcn 每天自动备份一次。
 解决方案:利用任务计划、批处理文件和 Oracle 的 exp 导出功能,根据日期自动生成 Oracle 备份文件。详细步骤:




1 创建批处理文件 ytcn.bat


ytcn.bat中详细内容如下:


@echo off
 echo 正在备份银通网 Oracle 数据库,请稍等......
exp userid='ytcn/ytcn@ytcn as sysdba' file=e:/bak/ytcn/oracle/ytcn/ytcn%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=e:/bak/ytcn/oracle/ytcn/ytcn%date:~0,4%%date:~5,2%%date:~8,2%.log full=y


echo 任务完成!
 其中红色部分是根据需要进行变动的地方,例如作者的项目名“银通网”,数据库 ytcn 用户名 ytcn,密码 ytcn,要在目录 "e:/bak/ytcn/oracle/ytcn" 下生成形如 "ytcn20090711.dmp" 和 "ytcn20090711.log" 的备份和日志文件,全表导出。
 另外:%date%的值在不同的系统、语言版本下可能是不一样的,控制面板里面区域选项的设定也会改变%date%的值。请先在命令行中测试 echo %date% 的返回值。%date:~4,10% 是返回日期函数,~后的第一个参数是要截取的起始位置(从0开始),第二个参数是要截取的长度,如没有则是截取到最后,参数可酌情修改。 如需要准确的时间做为文件名,请用%time%函数,参数同上。


2 添加一个任务计划 ytcn


开始 > 所有程序 > 附件 > 系统工具 > 任务计划 > 添加任务计划 > 下一步 > 在 浏览 中查找刚刚写好的 ytcn.bat 文件 > 任务名输入ytcn,执行这个任务选择每天,下一步 > 起始时间下午12:00,起始日期2009-7-11,下一步 > 输入用户名及密码,用户名要求是管理员权限用户名,下一步 > 完成
 点击"完成"之后,会在任务计划栏目下新增一个名为"ytcn"的任务计划,表明已经配置完毕。


备注:有时点击"完成" 之后,系统警告


"已创建新任务,但可能不能运行,因为无法设置账户信息。


指定的错误是:


Ox80041315:任务计划程序服务没有运行"


这是因为电脑的任务计划程序服务没有启动起来。开始 > 所有程序 > 管理工具 > 服务,找到"Task Scheduler"服务,发现启动类型为"已禁用",右键单击更改为"自动",并把它启动起来,然后重新添加一次任务计划 ytcn 就可以了。
========

windows下oracle每天定时备份



最近一个同事修改 表结构的时候不小心删了几张表,虽然恢复部分数据,但是有个表的数据已经找不回了,


因为之前数据库没有做备份,所以今天花了半天时间做了个逻辑备份,整体的思路如下:首先写好exp语句做成bat文件,然后用windows计划任务去执行


第一步:建立备份脚本oraclebackup.bat




首先建立一个备份bat文件,在D盘下新建备份目录oraclebackup,将Oracle安装目录下的EXP.EXE复制到此目录下,再新建一个文本文件oraclebackup.txt,内容如下:


@echo off 
echo 删除10天前的备分文件和日志


forfiles /p "D:\oraclebackup" /m *.dmp /d -10 /c "cmd /c del @path" 
forfiles /p "D:\oraclebackup" /m *.log /d -10 /c "cmd /c del @path"


echo 正在备份 Oracle 数据库,请稍等…… 
expsystem/oracle@orclfile=D:/oraclebackup/mdb%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=D:/oraclebackup/mdb%date:~0,4%%date:~5,2%%date:~8,2%.log full=y buffer=65535 
echo 任务完成!


完成后,将该记事本的后缀txt改成bat即可。


双击oraclebackup.bat可以测试是否可以正常备份。


第二步:新建windows计划任务
进入windows的控制面板,打开计划与任务,新建任务,点击浏览,选择刚才新建的d盘oraclebackup目录下的oraclebackup.bat文件。接着选择每天晚上22:00点执行,再输入本机的administrator密码即可。


备注:这里我记录下,我遇到的问题,主要是因为我一个用户里面有很多表,但是现在我不需要全部备份,只需要备份XXX打头的表,
OK,修改exp语句exp system/oracle@orcl tables=(system.XXX%%)file=D:/oraclebackup/mdb%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=D:/oraclebackup/mdb%date:~0,4%%date:~5,2%%date:~8,2%.log full=y buffer=65535 ,


注意,当时 我是这样加的tables=(system.XXX%),结果bat文件不能执行,原来bat'文件里面的%必须要是%%,这个问题我搞了很久才搞清楚~~~~~
http://blog.csdn.net/jimmy609/article/details/40624141
========

Windows环境下Oracle数据库的自动备份脚本



@echo off
echo ================================================ 
echo  Windows环境下Oracle数据库的自动备份脚本
echo  1. 使用当前日期命名备份文件。
echo  2. 自动删除30天前的备份。
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
set CURTIME=%time:~0,2%
REM 小时数如果小于10,则在前面补0
if "%CURTIME%"==" 0" set CURTIME=00
if "%CURTIME%"==" 1" set CURTIME=01
if "%CURTIME%"==" 2" set CURTIME=02
if "%CURTIME%"==" 3" set CURTIME=03
if "%CURTIME%"==" 4" set CURTIME=04
if "%CURTIME%"==" 5" set CURTIME=05
if "%CURTIME%"==" 6" set CURTIME=06
if "%CURTIME%"==" 7" set CURTIME=07
if "%CURTIME%"==" 8" set CURTIME=08
if "%CURTIME%"==" 9" set CURTIME=09
set CURTIME=%CURTIME%%time:~3,2%%time:~6,2%
 
::设置用户名、密码和要备份的数据库。
set USER=carbon_zhenjiang_bak
set PASSWORD=carbon_zhenjiang_bak
set DATABASE=orcl
::创建备份目录。
if not exist "D:\backup\data\%BACKUPDATE% "     mkdir D:\backup\data\%BACKUPDATE%
if not exist "D:\backup\log\%BACKUPDATE% "      mkdir D:\backup\log\%BACKUPDATE%
set DATADIR=D:\backup\data\%BACKUPDATE%
set LOGDIR=D:\backup\log\%BACKUPDATE%
exp %USER%/%PASSWORD%@%DATABASE%  file=%DATADIR%\%USER%_%BACKUPDATE%%CURTIME%.dmp log=%LOGDIR%\log_%BACKUPDATE%%CURTIME%.log
::删除30天前的备份。
forfiles /p "%DATADIR%" /s /m *.* /d -30 /c "cmd /c del @path"
forfiles /p "%LOGDIR%" /s /m *.* /d -30 /c "cmd /c del @path"
exit
========

oracle操作的批处理脚本



1、create_user.bat(创建用户并赋权限)


@echo off
echo ######################################
echo本脚本用于临时创建一个用户,赋予只读yc表的权限
echo ######################################
echo on
echo 创建用户datacenter
  sqlplus  ecs_sx/pwecs@ecs @user1.sql
echo 工作完毕,谢谢。
  pause


----------------------------------------------------------------------------------
user1.sql


  revoke select on ecs_zdh_test.yc from datacenter;
  grant select on ecs_zdh_sx.yc to datacenter;
commit;
pause




2、收集db信息
db_sx.bat


@echo off
echo #################################
echo本脚本用于收集XX数据库健康情况
echo #################################
echo on
echo 开始信息收集。
  sqlplus  ecs_sx/pwecs@ecs @db_sx1.sql
echo 工作完毕,谢谢,请敲入ENTER键。


  pause


---------------------------------------------------------
db_sx1.sql


spool c:\brein_database.txt
set lines 2000
set pages 100
show parameter pool 
show parameter open_cursor
SELECT * FROM v$sysstat WHERE name LIKE 'opened cursors current';
SELECT COUNT(*) ,sid FROM v$open_cursor
GROUP BY rollup(sid)
ORDER BY 1 DESC;
select sql_text from v$sqlarea a where a.HASH_VALUE in (select   b.prev_hash_value from v$session b where b. MACHINE ='rx2600');
spool off
commit;
pause


http://blog.sina.com.cn/s/blog_61c006ea0100oqg8.html
========

Oracle bat批处理文件执行SQL文件

现实的项目中经常可能会出现需要用批处理文件来执行sql文件。下面就介绍下用bat批处理文件调用独立的sql文件和数据库中的存储过程。


一、bat文件调用sql文件


     首先,做一个简单的sql文件(log.sql)。


create table log 

  PROBLEMID    VARCHAR2(40), 
  PROBLEMNAME  VARCHAR2(260), 
  PROBLEMLEVEL VARCHAR2(40), 
  PROBLEMORDER VARCHAR2(260), 
  PARENTID     VARCHAR2(40), 
  ROOTTYPEDESC VARCHAR2(260), 
  IFLEAF       VARCHAR2(40), 
  MEMO         VARCHAR2(1000), 
  IFVALID      VARCHAR2(40), 
  ROOTTYPE     VARCHAR2(20) 
); 
exit;
在这个SQL文件中我们创建了一个表。


接下来,我们来建一个bat批处理文件(log.bat)。


@echo off  
sqlplus cssp/cssp@gxcssp @H:\bat_sql\log.sql > log.txt 
exit
 在这个bat文件里面我们调用绝对路径的sql文件,并将执行过程及结果输出到log.txt文件中。


 最后,我们运行bat文件,来看下一log.txt文件记录内容。


SQL*Plus: Release 10.1.0.2.0 - Production on 星期四 4月 7 18:26:03 2011 
  
Copyright (c) 1982, 2004, Oracle.  All rights reserved. 
  
  
连接到:  
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 
With the Partitioning, OLAP and Data Mining options 
  
  
表已创建。 
  
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 
With the Partitioning, OLAP and Data Mining options 断开
 
    通过这个日志我们可以看到,创建log表是成功的了。再去数据库中确认,也可以看到log表确实是建立起来了。


二、bat文件调用数据库中的存储过程


        这个调用过程和上面的调用过程原理是一样的,在此就做个简单的说明。


        假设数据库中一个存储过程,名称为Produce_log


        我们只需要修改独立的sql文件如下即可:


       execute Produce_log;
       exit;


    具体的执行结果请朋友们自己尝试。


http://www.cnblogs.com/Clivia/archive/2011/04/07/Oracle05.html
========

oracle 批处理脚本



1. 批量建表


declare   
tablecount number;  
  
begin  
tablecount:=3000;  
  
while tablecount>0 loop  
execute immediate 'create table table_'||tablecount||' (ID NUMBER(10), NAME VARCHAR(20))';  
tablecount:=tablecount-1;   
end loop;  
  
end;  


http://blog.csdn.net/duanbeibei/article/details/43950797
========

批处理 启动和关闭 Oracle 11g 服务



自己写两个批处理文件来手动启动和停止Oracle服务一直开着服务会比较耗损系统资源影响系统运行速度


全文转自:http://hi.baidu.com/magicalboy/blog/item/d40a93ef9df1d3e7ce1b3e3f.html


以下批处理文件内容根据自己的SID,Oracle_home不同做相应修改即可。


自己写两个批处理文件来手动启动和停止Oracle服务(一直开着服务会比较耗损系统资源,影响系统运行速度)
启动和关闭数据库所使用的服务器名称和说明:




服务名称                                                    说明
OracleOracle_homeTNSListener           对应于数据库的监听程序
OracleServiceSID                                       对应于数据库的例程
OracleDBConsoleSID                                 对应于Oracle Enterprise Manager(OEM)


其中,Oracle_home表示Oracle主目录,如Oracle11g_home1;SID表示Oracle系统标识符,如OracleServiceMAG01的MAG01。


注意:尽管这3个服务都是可以单独地启动和关闭的,但它们之间不像Oracle 10g 中那样没有依存关系。比较好的启动顺序是:OracleOracle_homeTNSListener,OracleServiceSID,OracleDBConsoleSID。关闭时次序相反。


下面给出了自己写的已经排好顺序的启动和停止服务的两个批处理文件:


Start Oracle 11g Service.bat


@echo off


echo 确定要启动Oracle 11g服务吗?


pause


net start OracleOraDb11g_home1TNSListener


net start OracleServiceMAG01


net start OracleDBConsolemag01


echo 启动Oracle 11g服务完成,请确认有没有错误发生。


Pause




Stop Oracle 11g Service.bat


@echo off


echo 确定要停止Oracle 11g服务吗?


pause


net stop OracleDBConsolemag01


net stop OracleServiceMAG01


net stop OracleOraDb11g_home1TNSListener


echo 停止Oracle 11g服务完成,请确认有没有错误发生。


Pause
========

你可能感兴趣的:(转载,数据库)