寫個指令碼來啟動資料庫

2021-12-29 23:27:39 字數 3840 閱讀 3773

寫個指令碼來啟動資料庫

每次開啟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 主...