linuxoracle腳本編寫
『壹』 linux下編寫以個shell腳本,實現對oracle資料庫抽取指定條件的數據並且保存在一個文本文件中。
empno=100不存在的,改成有的數據了。
#!/bin/bash
result=$(sqlplus -s 'scott/tiger@dbname'<<EOF
spool test.txt
set pages 0
set feed off
set heading off;
set feedback off;
set verify off;
set linesize 1000;
SELECT * FROM scott.emp where empno=7369;
spool off
EOF
)
echo $result
~
~
~
~
~
~
~
~
~
"test.sh" 14L, 256C written
oracle@****:~> ./test.sh
7369 SMITH CLERK 7902 17-DEC-80 2240.06 20
oracle@****:~> more test.txt
7369 SMITH CLERK 7902 17-DEC-80 2240.06
20
『貳』 linux下編寫以個shell腳本,實現對oracle資料庫的查詢結果保存在一個變數中
empno=100不存在的,改成有的數據了。
#!/bin/bash
result=$(sqlplus -s 'scott/tiger@dbname'<<EOF
spool test.txt
set pages 0
set feed off
set heading off;
set feedback off;
set verify off;
set linesize 1000;
SELECT * FROM scott.emp where empno=7369;
spool off
EOF
)
echo $result
~
~
~
~
~
~
~
~
~
"test.sh" 14L, 256C written
oracle@****:~> ./test.sh
7369 SMITH CLERK 7902 17-DEC-80 2240.06 20
oracle@****:~> more test.txt
7369 SMITH CLERK 7902 17-DEC-80 2240.06
20
『叄』 求大神給一個linux下oracle資料庫導出txt文件的shell腳本
linux下oracle資料庫導出txt文件的shell腳本可以在oracle裡面直接導出sql的腳本的,直接運行就可以的,滿意請採納
『肆』 定時任務 oraclejob linux 腳本怎麼寫
linux下使用crontab命令被用來提交和管理用戶的需要周期性執行的任務,示例如下:
crontab
-e
編輯
周期任務
30
21
*
*
*
/etc/init.d/smb
restart
每晚的21:30重啟smb
crontab命令說明:
crontab命令被用來提交和管理用戶的需要周期性執行的任務...
『伍』 求大神給一個linux下oracle資料庫導出的shell腳本
把下面的代碼保存為伺服器端的腳本,執行即可。
PS:需要自己替換一下雙引號中的內容
#!/bin/sh
. $HOME/.bash_profile
export ORACLE_SID="你的資料庫的SID"
CutDATE=`date '+%Y-%m%d-%H%M'`
DATE=`date -d '-2 day' '+%Y-%m%d'`
export NLS_LANG="你的字元集設定"
exp "具有許可權的賬號"/"密碼" file=/home/oracle/2014/"你的資料庫的SID"_$CutDATE.dmp log=/home/oracle/2014/"你的資料庫的SID"_$CutDATE.log owner=user1,user2
『陸』 如何在LINUX下啟動ORACLE
手動啟動:
用 oracle用戶登錄(或su - oracle)
lsnrctl start
sqlplus / as sysdba
startup
exit
自動啟動,要編寫一個啟動腳本,用root用戶拷到/etc/init.d下,取名叫oracle
然後, chkconfig oracle on,即可加入服務列表
/etc/init.d/oracle start #啟動
/etc/init.d/oracle stop #停止
腳本的示例(裡面的變數要按實際情況修改):
#!/bin/bash
#
# chkconfig: 345 99 01
# description: This is a program that is responsible for taking care of
# configuring the Oracle Database 11g Stardard/Enterprise Edition and its associated
# services.
#
# Source fuction library
if [ -f /lib/lsb/init-functions ]
then
. /lib/lsb/init-functions
elif [ -f /etc/init.d/functions ]
then
. /etc/init.d/functions
fi
# Set path if path not set (if called from /etc/rc)
case $PATH in
"") PATH=/bin:/usr/bin:/sbin:/etc
export PATH ;;
esac
# Save LD_LIBRARY_PATH
SAVE_LLP=$LD_LIBRARY_PATH
RETVAL=0
ORACLE_OWNER=oracle
ORACLE_OWNER_HOME=/opt/oracle
ORACLE_BASE=$ORACLE_OWNER_HOME/app/oracle
ORACLE_HOME=$ORACLE_BASE/proct/11.2.0/dbhome_1
ORACLE_SID=orcl
ORACLE_UNQNAME=$ORACLE_SID
LSNR=$ORACLE_HOME/bin/lsnrctl
SQLPLUS=$ORACLE_HOME/bin/sqlplus
STARTDB_SQL=$(mktemp /tmp/start.XXXXXX)
echo -e "startup;\nquit;\n" > $STRTDB_SQL
STOPDB_SQL=$(mktemp /tmp/stop.XXXXXX)
echo -e "shutdown immediate;\nquit;\n" > $STOPDB_SQL
SU=/bin/su
export ORACLE_HOME
export ORACLE_SID
export PATH=$ORACLE_HOME/bin:$PATH
LOG="$ORACLE_HOME_LISTNER/listener.log"
export LC_ALL=C
if [ $(id -u) != "0" ]
then
echo "You must be root to run the configure script. Login as root and then run the
configure script."
exit 1
fi
if [ -f /etc/redhat-release ]
then
. /etc/init.d/functions
init_status()
{
return 0
}
exit_status()
{
exit $?
}
success_status()
{
success
echo
}
failure_status()
{
failure $?
echo
}
elif [ -f /etc/SuSE-release ]
then
. /etc/rc.status
init_status()
{
rc_reset
}
success_status()
{
echo "OK"
return 0
}
failure_status()
{
echo "Failed"
return 1
}
exit_status()
{
exit $?
}
else
if [ -d /etc/default ]
then
CONFIGURATION="/etc/default/$CONFIG_NAME"
fi
init_status()
{
return 0
}
success_status()
{
echo "OK"
return 0
}
failure_status()
{
echo "Failed"
return 0
}
exit_status()
{
exit $?
}
fi
init_status
start() {
status=`ps -ef | grep tns | grep oracle`
if [ "$status" == "" ]
then
if [ -f $ORACLE_HOME/bin/tnslsnr ]
then
echo "Starting Oracle Net Listener."
$SU -s /bin/bash $ORACLE_OWNER -c "$LSNR start" # > /dev/null 2>&1
fi
fi
echo "Starting Oracle Database 11g Instance."
$SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog @${STARTDB_SQL}" # > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
echo
else
echo Failed to start Oracle Net Listener using $ORACLE_HOME/bin/tnslsnr\
and Oracle Database using $ORACLE_HOME/bin/sqlplus.
RETVAL=1
return $RETVAL
fi
}
startconsole() {
$SU -s /bin/bash $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl start dbconsole &" # > /dev/null 2>&1
RETVAL=$?
return $RETVAL
}
stop() {
# Stop Oracle 11g Database and Listener
$SU -s /bin/bash $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole &" # > /dev/null 2>&1
echo Shutting down Oracle Database 11g Instance.
$SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog @${STOPDB_SQL}" # > /dev/null 2>&1
echo Stopping Oracle Net Listener.
$SU -s /bin/bash $ORACLE_OWNER -c "$LSNR stop" # > /dev/null 2>&1
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$LSNR
then
return $RETVAL
fi
}
stopconsole() {
# Stop Oracle 11g Database and Listener
$SU -s /bin/bash $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole &" # > /dev/null 2>&1
RETVAL=$?
return $RETVAL
}
# See how we were called
case "$1" in
start)
start
;;
startconsole)
startconsole
;;
stop)
stop
;;
stopconsole)
stopconsole
;;
restart|reload|force-reload)
stop
start
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|force-reload}"
exit 1
esac
『柒』 誰來寫一個linux下開機啟動oracle的腳本
以root身份建立開機啟動oracle服務的腳本:vi /etc/init.d/oracle,添加如下腳本:
#!/bin/sh
#chkconfig: 2345 20 80
#description: Oracle dbstart / dbshut
#以上兩行為chkconfig所需
ORA_HOME=/opt/oracle/11g
ORA_OWNER=oracle
LOGFILE=/var/log/oracle.log
echo "#################################" >> ${LOGFILE}
date +"### %T %a %D: Run Oracle" >> ${LOGFILE}
if [ ! -f ${ORA_HOME}/bin/dbstart ] || [ ! -f ${ORA_HOME}/bin/dbshut ]; then
echo "Error: Missing the script file ${ORA_HOME}/bin/dbstart or ${ORA_HOME}/bin/dbshut!" >> ${LOGFILE}
echo "#################################" >> ${LOGFILE}
exit
fi
start(){
echo "###Startup Database..."
su - ${ORA_OWNER} -c "${ORA_HOME}/bin/dbstart ${ORA_HOME}"
echo "###Done."
echo "###Run database control..."
su - ${ORA_OWNER} -c "${ORA_HOME}/bin/emctl start dbconsole"
echo "###Done."
}
stop(){
echo "###Stop database control..."
su - ${ORA_OWNER} -c "${ORA_HOME}/bin/emctl stop dbconsole"
echo "###Done."
echo "###Shutdown Database..."
su - ${ORA_OWNER} -c "${ORA_HOME}/bin/dbshut ${ORA_HOME}"
echo "###Done."
}
case "$1" in
'start')
start >> ${LOGFILE}
'stop')
stop >> ${LOGFILE}
'restart')
stop >> ${LOGFILE}
start >> ${LOGFILE}
esac
date +"### %T %a %D: Finished." >> ${LOGFILE}
echo "#################################" >> ${LOGFILE}
echo ""
使用如下命令將 /etc/init.d/oracle 置為可執行文件:
chmod a+x /etc/init.d/oracle
至此,可使用如下命令對oracle進行啟動和關閉
/etc/init.d/oracle start #啟動oracle(包括資料庫實例、監聽器、EM)
/etc/init.d/oracle stop #關閉oracle
/etc/init.d/oracle restart #重啟oracle
將 oracle 添加到 chkconfig中:
chkconfig --add oracle
可使用如下命令查看和設置oracle服務的開機啟動級別:
chkconfig | grep oracle #查看oracle服務的開機啟動級別
chkconfig --level 24 oracle off #修改oracle服務的開機啟動級別
chkconfig --level 35 oracle on
至此可使用如下命令對oracle的啟動或關閉進行管理
service oracle start #啟動
service oracle stop #關閉
service oracle restart #重啟
建立連接:
ln -s /etc/init.d/oracle /etc/rc0.d/K01oracle #關機執行
ln -s /etc/init.d/oracle /etc/rc6.d/K01oracle #重啟執行
『捌』 在Linux下手工創建oracle資料庫的詳細步驟,謝謝,我的環境不能生效。
在LINUX平台上手動創建資料庫(oracle 10g)
1.首先設置要創建的ORACLE的SID,如果在.bash_profile文件里設置里該變數,就不用設置了。
$echo $ORACEL_SID
mdy
如果沒有設置,就手動設置,如果一個伺服器上要運行多個ORACLE實例,也需要手動設置。
export ORACLE_SID=mydb
2. 創建需要的診斷目錄,這些目錄都是ORACLE進程遇到錯誤或用戶手動TRACE時需要的。
mkdir -p $ORACLE_BASE/admin/mydb/amp
mkdir -p $ORACLE_BASE/admin/mydb/bmp
mkdir -p $ORACLE_BASE/admin/mydb/cmp
mkdir -p $ORACLE_BASE/admin/mydb/ump
mkdir -p $ORACLE_BASE/admin/mydb/pfile
創建oracle的數據文件目錄
mkdir -p $ORACLE_BASE/oradata/mydb
3. 創建ORACLE的參數文件$ORACLE_HOME/dbs/initmydb.ora 內容如下:
aq_tm_processes=0
audit_file_dest=/oracle/admin/mydb/amp
background_mp_dest=/oracle/admin/mydb/bmp
compatible=10.2.0.1.0
control_files=/oracle/oradata/mydb/control01.ctl, /oracle/oradata/mydb/control02.ctl, /oracle/oradata/mydb/control03.ctl
core_mp_dest=/oracle/admin/mydb/cmp
db_block_size=8192
db_domain=""
db_file_multiblock_read_count=16
db_name=mydb
instance_name=mydb
dispatchers="(PROTOCOL=TCP) (SERVICE=mydbXDB)"
job_queue_processes=10
nls_length_semantics=BYTE
open_cursors=300
pga_aggregate_target=94371840
processes=150
remote_login_passwordfile=EXCLUSIVE
resource_manager_plan=""
sessions=170
sga_target=285212672
undo_management=AUTO
undo_retention=900
undo_tablespace=UNDOTBS1
user_mp_dest=/oracle/admin/mydb/ump
4.創建密碼文件
orapwd file=$ORACLE_HOME/dbs/orapwmydb password=admin entries=5 force=y
5.創建oracle的建庫腳本 createdb.sql,內容如下:
create database mydb
MAXINSTANCES 1
MAXLOGHISTORY 1
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
DATAFILE
'/oracle/oradata/mydb/system01.dbf' size 100m reuse autoextend on next 1m maxsize unlimited extent management local
sysaux datafile
'/oracle/oradata/mydb/sysaux01.dbf' size 100m reuse autoextend on next 1m maxsize unlimited
default temporary tablespace TEMP tempfile
'/oracle/oradata/mydb/temp01.dbf' size 20m reuse autoextend on next 640k maxsize unlimited
undo tablespace UNDOTBS1 datafile
'/oracle/oradata/mydb/undo01.dbf' size 20m reuse autoextend on next 5M maxsize unlimited
logfile
GROUP 1 ('/oracle/oradata/mydb/redo1.dbf') size 10m,
GROUP 2 ('/oracle/oradata/mydb/redo2.dbf') size 10m,
GROUP 3 ('/oracle/oradata/mydb/redo3.dbf') size 10m
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
;
6.資料庫創建完成後,再創建ORACLE的數據字典。
SQL>@?/rdbms/admin/catalog.sql
SQL>@?/rdbms/admin/catproc.sql
SQL>@?/rdbms/admin/catexp.sql
到此ORACLE手動創建過程就完成了
『玖』 怎麼執行oracle資料庫自動備份 linux 腳本
Oracle自動備份資料庫不外乎以下三種方式WINDOWS下的任務計劃(At命令)
UNIX下的Crontab
第三方工具如Viritas
在以上三種方式中Viritas屬於第三方工具,很多人可能都沒有接觸,主要說一下windows的任務計劃與unix的cron
1、生成腳本文件,如backup.rcv 假定文件內容如下:
$>cat backup.rcv connect target sys/password rcvcat rman/rman@localname; run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup fileaperset 3 format 『/u01/oradata/backup/arch%u_%s_%p』 archivelog all delete input; release channel c1; release channel c2; release channel c3; }
2、生成執行文件在windows上生成backup_archive.bat,內容包括rman cmdfile = backup.rcv 在unix下生成 backup_archive.sh,內容包括oracle/ramn/rman cmdfile = backup.rcv
3、加入調度在windows中用任務計劃向導即可,或使用at命令。在unix中,在目標機器上編寫一個文件,用以啟動Oracle自動備份進程。假定文件名為ORACLE,文件將放在/var/spool/cron/crontabs目錄下
$>cat oracle
0 23 * * 0 backup_archive.sh
#表示星期天23點對資料庫備份
0 12,18 * * * backup_archive.sh
#表示每天12點,18點備份
Crontab文件的每一行由六個域(minutes,hours,day of month,month,day of week,command)組成,域之間用空格或Tab分隔開來
『拾』 linux下怎樣運行oracle資料庫建庫腳本
你說的是數據建庫腳本? 如果是這樣的話,直接在sqlplus中執行就可以了。
我感覺你想要表達的是如何建立資料庫吧? 如果是這樣的話,在oracle的安裝的目錄下的bin文件下,有DBCA的shell,運行這個就可以了。 然後就在圖形界面上操作了。