寫個指令碼來啟動資料庫
每次開啟linux總要做寫重複的動作,那就是啟動監聽,啟動資料庫,檢視資料庫狀態。麻煩
還是寫個shell指令碼來控制方便些:
在$oracle_home/bin下有個dbstart指令碼可以啟動資料庫,但是執行之後提示:
failed to auto-start oracle net listene using /ade/vikrkuma_new/oracle/bin/tnslsnr
我們來檢視下dbstart是怎麼寫的,直接查詢查詢檔案中的報錯來自**:
/failed to auto-start oracle net
[oracle@localhost bin]$ grep "failed to auto-start oracle net" dbstart
echo "failed to auto-start oracle net listene using $oracle_home_listner/bin/tnslsnr"
在這之前有一句:
oracle_home_listner=/ade/vikrkuma_new/oracle
開來是路徑設錯了,修改為:
oracle_home_listner=$oracle_home
報錯重新執行下,沒報錯,但是資料庫卻沒有起來,修改檔案:
vi /etc/oratab
修改為:
orclsid:/home/oracle/oracle/product/10.2.0/db_1:y
記住,後面為y
再起,報錯:
檢視啟動日誌:
$oracle_home/startup.log
[oracle@localhost bin]$ cat $oracle_home/startup.log
/home/oracle/oracle/product/10.2.0/db_1/bin/dbstart: starting up database "orclsid"
sat apr 6 21:58:21 cst 2013
sql*plus: release 10.2.0.1.0 - production on sat apr 6 21:58:21 2013
copyright (c) 1982, 2005, oracle. all rights reserved.
sql> error:
ora-01031: insufficient privileges
sql> ora-01031: insufficient privileges
sql>
/home/oracle/oracle/product/10.2.0/db_1/bin/dbstart: database instance "orclsid" warm started.
看來是許可權問題,突然想到我之前修改了oracle的預設認證方式,禁用了作業系統登入,估計在指令碼裡面使用的是作業系統登入:
一查,果然是這個問題:
修改為:conn sys/lubinsu as sysdba
重啟下:
[oracle@localhost bin]$ dbstart
processing database instance "orclsid": log file /home/oracle/oracle/product/10.2.0/db_1/startup.log
/home/oracle/oracle/product/10.2.0/db_1/bin/dbstart: starting up database "orclsid"
sat apr 6 22:25:27 cst 2013
sql*plus: release 10.2.0.1.0 - production on sat apr 6 22:25:27 2013
copyright (c) 1982, 2005, oracle. all rights reserved.
sql> connected to an idle instance.
sql> oracle instance started.
total system global area 285212672 bytes
fixed size 1218968 bytes
variable size 100664936 bytes
database buffers 176160768 bytes
redo buffers 7168000 bytes
database mounted.
database opened.
sql> disconnected from oracle database 10g enterprise edition release 10.2.0.1.0 - production
with the partitioning, olap and data mining options
/home/oracle/oracle/product/10.2.0/db_1/bin/dbstart: database instance "orclsid" warm started.
看來已經起起來了,檢視程序是否存在
[oracle@localhost bin]$ ps -ef | grep ora_pmon
oracle 14658 1 0 22:25 ? 00:00:00 ora_pmon_orclsid
oracle 14806 9470 0 22:26 pts/1 00:00:00 grep ora_pmon
nice
我們繼續來寫指令碼:
#!/bin/bash
# # chkconfig: 2345 89 20
# description: starts the oracle listener and instance
status() '`
if [ "x$pid" = "x" ]
then
echo "oracle10g is not running."
exit 1
else
echo "oracle10g is running."
exit 0
fi}
case "$1" in
start)
#startup the listener and instance
echo -n "oracle begin to startup: "
su - oracle -c "lsnrctl start"
su - oracle -c dbstart
echo "oracle10g started"
;; stop)
# stop listener, apache and database
echo -n "oracle begin to shutdown:"
su - oracle -c "lsnrctl stop"
su - oracle -c dbshut
echo "oracle10g shutdowned"
;; reload|restart)
$0 stop
$0 start
;; 'status')
status
;;*)
echo "usage: ora10g [start|stop|reload|restart]"
exit 1
esac
exit 0
賦給執行許可權chmod a+x oracle10g
我們可以通過這個指令碼來檢視oracle的狀態,啟動,關閉或者重啟資料庫,方便許多。
docker 寫個容器啟動的bash指令碼
回到目錄 bash指令碼在linux裡就相當於win裡的bat和cmd及ps指令碼,可以把一般指令組織在一起,統一去執行,比如我有一些docker容器需要統一去啟動,這時,你可以把它們寫成乙個bash指令碼,但有一點要注意,你的文件格式需要是unix,大家可以使用notepad 表寫指令碼,然後上傳...
sql指令碼來獲取資料庫中的所有表結構了
sql指令碼來獲取資料庫中的所有表結構了,如下 use adventureworks2008 goselect case when a.colorder 1 then d.name else end 表名,a.colorder 字段序號,a.name 欄位名,case when columnprop...
資料庫指令碼
資料庫的建立 create database student 資料庫名 containment none onprimary name n student 主資料檔案的邏輯名稱 filename n c datalibrary student.mdf 主資料檔案的物理名稱 size 5120kb 主...