TypeCodes

初始化Oracle数据库的bat批处理脚本和shell脚本

在使用Oracle数据库的时候,经常会用到表结构、存储过程、视图以及表数据等等元素的导入和导出。如果在Windows的cmd窗口中使用sqlplus的命令登录Oracle后,直接使用@ sql导入文件路径或者start sql导入文件路径,就有一个缺陷:不会产生跟踪日志文件,这样就没法了解哪些sql语句执行成功了,哪些sql语句执行失败从而导致整个数据库初始化失败了等情况。另外,无论是在Windows系统还是Linux系统,手输命令很麻烦也很容易出错,所以自己整理了一份适用于Windows的bat批处理脚本和一份适用于Linux系统的shell脚本。

这两份脚本代码比较简单,主要是利用了sqlplus命令将包含多条sql语句用于初始化Oracle数据库的sql文件执行。其中,suntsm/[email protected]/orcl数据库用户名/用户密码@数据库IP:1521/实例名的组合,当然Oracle默认的端口1521可以省略。另外,tsmstuct.sqltsmdata.sql文件分别用于初始化表结构等数据和表数据。大家可以根据实际情况修改。

1 初始化Oracle数据库的bat批处理脚本

直接贴上初始化Oracle数据库的bat批处理脚本的代码,比较简单。使用时,将这个IniOracle.bat文件、tsmstuct.sql和tsmdata.sql文件放在一起后,然后直接点击这个.bat文件即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
:: 初始化Oracle数据库的bat批处理脚本(适用于Windows系统)
:: @FileName:  IniOracle.bat
:: @Author  :  vfhky  2014.12.20  https://typecodes.com
:: @param   :  tsmstuct.sql     包含表结构等数据的文件
:: @param   :  tsmdata.sql    包含表数据的文件

@echo off
cls
title Init Oracle database
echo ---------------------------------Start Excute--------------------------------
echo ^|                                                                           ^|
echo ^|    ----1 Start Excute----                                                 ^|
echo ^|      suntsm/[email protected]/orcl @tsmstuct.sql ^>d:\tsmstuct.log          ^|
sqlplus suntsm/[email protected]/orcl @tsmstuct.sql >d:\tsmstuct.log
echo ^|    ----End----                                                            ^|
echo ^|                                                                           ^|
echo ^|    ----2 Start Excute----                                                 ^|
echo ^|      sqlplus suntsm/[email protected]/orcl @tsmdata.sql ^>d:\tsmdata.log    ^|
sqlplus suntsm/[email protected]/orcl @tsmdata.sql >d:\tsmdata.log
echo ^|    ----End----                                                            ^|
echo ^|                                                                           ^|
echo ---------------------------------End Excute----------------------------------
pause
1.1 初始化Oracle数据库的bat批处理脚本的执行过程演示

1、点击IniOracle.bat文件后,先执行sqlplus suntsm/[email protected]/orcl @tsmstuct.sql >d:\tsmstuct.log命令,生成的追踪日志文件是D盘下的tsmstuct.log。

Windows中开始初始化Oracle表结构等

2、执行成功后继续执行第二条命令:sqlplus suntsm/[email protected]/orcl @tsmdata.sql >d:\tsmdata.log命令,生成的追踪日志文件是D盘下的tsmdata.log。

Windows中开始初始化Oracle表数据

3、初始化Oracl数据库完成,可以通过tsmstuct.log和tsmdata.log文件查看执行情况。

Windows中整个初始化过程完成

2 初始化Oracle数据库的Shell批处理脚本

和bat批处理脚本一样,这里的shell脚本也是利用了sqlplus命令。唯一不同的是,由于Linux权限的问题,这个IniOracle.sh脚本代码会先判断是否已经存在了tsmstuct.logtsmdata.log文件,并为它们赋予666可读、写的权限。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/sh

# -----------------------------------------
# 初始化Oracle数据库的shell批处理脚本(适用于类Unix系统)
# @FileName:  IniOracle.sh
# @Author  :  vfhky  2014.12.20  https://typecodes.com
# @param   :  tsmstuct.sql     包含表结构等数据的文件
# @param   :  tsmdata.sql    包含表数据的文件
# 执行方法:./IniOracle.sh
# -----------------------------------------

# 为避免中文乱码,需要设置客户端字符集,使之与服务端字符集保持一致
export NLS_LANG='AMERICAN_AMERICA.ZHS32GB18030'
# 加载Oracle用户变量
source ~/.bashrc


# 判断日志文件是否存在,如不存在则新建一个空的日志文件
if [ ! -f "tsmstuct.log" ]; then
touch tsmstuct.log
fi

# 判断日志文件是否存在,如不存在则新建一个空的日志文件
if [ ! -f "tsmdata.log" ]; then
touch tsmdata.log
fi

# 日志文件赋权限
chmod 666 tsmstuct.log

# 日志文件赋权限
chmod 666 tsmdata.log


echo "数据初始化开始..."
echo "---------------------------------Start Excute--------------------------------"
echo "|                                                                           |"
echo "|    ----1 Start Excute----                                                 |"
echo "|      sqlplus suntsm/suntsm@suncard @tsmstuct.sql >tsmstuct.log            |"
sqlplus suntsm/suntsm@orcl @tsmstuct.sql >tsmstuct.log
echo "|    ----End----                                                            |"
echo "|                                                                           |"
echo "|    ----2 Start Excute----                                                 |"
echo "|      sqlplus suntsm/suntsm@suncard @tsmdata.sql >tsmdata.log              |"
sqlplus suntsm/suntsm@orcl @tsmdata.sql >tsmdata.log
echo "|    ----End----                                                            |"
echo "|                                                                           |"
echo "--------------------------------End Excute-----------------------------------"
echo "数据初始话结束!详情请查看日志文件:tsmstuct.log和tsmdata.log"
2.1 初始化Oracle数据库的bat批处理脚本的执行过程演示

1、用Oracle身份登录Linux,然后通过命令./IniOracle开始执行脚本中的代码。

Linux中开始初始化Oracle表结构等

2、执行成功后继续执行第二条命令,生成的追踪日志文件是当前目录下的tsmdata.log。

Linux中开始初始化Oracle表数据

3、初始化Oracl数据库完成,可以通过tsmstuct.log和tsmdata.log文件查看执行情况。

Linux中整个初始化过程完成

4、查看生成的tsmstuct.logtsmdata.log日志文件。

初始化完成后查看生成的log日志

打赏支持

Comments »