程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Linux平台誤刪homeoracle根目錄的解決方法

Linux平台誤刪homeoracle根目錄的解決方法

編輯:Oracle教程

Linux平台誤刪homeoracle根目錄的解決方法


 

1 背景說明

正常情況下,我們在安裝Oracle數據庫的時候,都會創建一個oracle的用戶。 其根目錄就是/home/oracle.

並且根據Oracle 的OFA的架構,也是建議使用/u01 這樣的目錄來單獨安裝oracle的軟件,包括存放數據文件。

但實際上,總會存在那麼一些不按照官網的建議來創建和管理的數據庫,這些年見過太多。Dave 是一直建議嚴格按照Oracle 的標准來,因為這個是通用的標准,如果每家公司都有自己的標准,那每次換人管理,都會是很麻煩的,也是容易出問題的。

俗話說:鐵打的營盤,流水的兵,DBA的崗位總會有波動,規則不一樣,就會埋下坑,至於最後是誰踩上,就是人品了。

昨晚一朋友就出現這個問題,單實例的數據庫,非歸檔,無備份。刪除了整個/home/oracle 目錄,如果是按照OFA來的,這個倒也不是很嚴重的事情,關鍵是/home/oracle 下還有幾個數據文件,折騰了很久,把數據還原出來了。

馬上就過年了,防火,防盜,防宕庫,居然還犯下這麼低級的錯誤,這是不想要年終獎的節奏啊,這個就不多說,DBA 就是一個心細的活,需要慢慢歷練。

2 linux用戶創建說明

 

在安裝oracle 數據庫的時候,我們都會創建用戶和組。

 

Oracle 安裝參考:

64位 linux 平台下Oracle 安裝文檔

groupadd oinstall

groupadd dba

groupadd oper

useradd -g oinstall -G dba oracle

這裡是用linux的命令來創建的。 和數據庫創建一樣,我們一般都是通過OUI來創建實例,其實也是可以通過靜默的方式來創建。

 

所以我們在講這個故障的處理之前,需要了解linux 手工創建用戶和組的方法。

 

 

每個用戶的創建,都會涉及到如下幾個文件:

/etc/passwd (用戶)

/etc/group (用戶組)

/etc/shadow (密鑰文件)

/home/username (家目錄)

/etc/skel/.* (骨架文件)


在創建用戶的時候,會在/etc/passwd,/etc/group,/etc/shadow三個文件中添加用戶的信息,創建一個/home 下的用戶根目錄,然後把所有的骨架文件復制到用戶的根目錄下。

[oracle@dg1 ~]$ cat /etc/passwd|grep oracle

oracle:x:502:507::/home/oracle:/bin/bash

[oracle@dg1 ~]$



[oracle@dg1 ~]$ cat /etc/group |grepoinstall

oinstall:x:507:

[oracle@dg1 ~]$ cat /etc/group |grep dba

dba:x:502:oracle

asmdba:x:506:oracle

[oracle@dg1 ~]$



[root@dg1 ~]# cat /etc/shadow |grep oracle

oracle:$6$7xDE3ZWD$jOnuSzTwfdWoR9JMVr33IIJhDJ/vGnCL5XGpCEMBx3XPiov0NnxRBvDIhflBTWPzXSNZ.HbqEoIt7PAxuF9R70:15595:0:99999:7:::

[root@dg1 ~]#

當我們刪除/home/oracle這個用戶的根目錄之後,用戶的配置信息還存在系統的配置文件中,所以只需要還原骨架文件,在修改一下環境變量的信息,就可以了。

 

 

3 示例


--數據庫正常運行:

[oracle@dg1 ~]$ ps -ef|grep ora

root 1388 1347 0 Aug26 ? 00:00:37 hald-addon-storage: polling/dev/sr0 (every 2 sec)

oracle 9946 1 0 00:49 ? 00:00:05 ora_pmon_dave

oracle 9948 1 0 00:49 ? 00:00:11 ora_psp0_dave

oracle 9950 1 2 00:49 ? 00:16:17 ora_vktm_dave

oracle 9954 1 0 00:49 ? 00:00:01 ora_gen0_dave

oracle 9956 1 0 00:49 ? 00:00:01 ora_diag_dave

oracle 9958 1 0 00:49 ? 00:00:01 ora_dbrm_dave

oracle 9960 1 0 00:49 ? 00:00:14 ora_dia0_dave

oracle 9962 1 0 00:49 ? 00:00:01 ora_mman_dave

oracle 9964 1 0 00:49 ? 00:00:02 ora_dbw0_dave




直接把/home/oracle 目錄刪掉,我這裡直接move。

[root@dg1 ~]# cd /home

[root@dg1 home]# ls

oracle

[root@dg1 home]# mv oracle oracle.bak

[root@dg1 home]# ls

oracle.bak

[root@dg1 home]#



[root@dg1 home]# su - oracle

su: warning: cannot change directory to/home/oracle: No such file or directory

-bash-4.1$



-bash-4.1$ sqlplus / as sysdba

-bash: sqlplus: command not found

-bash-4.1$



-bash-4.1$ whoami

oracle

-bash-4.1$ pwd

/home

-bash-4.1$




 

開始恢復:

--創建目錄:

[root@dg1 home]# pwd

/home

[root@dg1 home]# mkdir oracle

[root@dg1 home]# chown oracle:oinstalloracle

[root@dg1 home]# ll

total 8

drwxr-xr-x 2 oracle oinstall 4096 Aug 27 14:17 oracle

drwx------. 25 oracle oinstall 4096 Aug 2623:08 oracle.bak

[root@dg1 home]#



--復制骨架文件:

[root@dg1 ~]# cp /etc/skel/.* /home/oracle/

cp: omitting directory `/etc/skel/.'

cp: omitting directory `/etc/skel/..'

cp: omitting directory `/etc/skel/.gnome2'

cp: omitting directory `/etc/skel/.mozilla'

[root@dg1 ~]#



[root@dg1 home]# ls -la /home/oracle

total 24

drwxr-xr-x 2 root root 4096 Aug 27 14:47 .

drwxr-xr-x. 4 root root 4096 Aug 27 14:47..

-rw-r--r-- 1 root root 18 Aug 27 14:47.bash_logout

-rw-r--r-- 1 root root 176 Aug 27 14:47.bash_profile

-rw-r--r-- 1 root root 124 Aug 27 14:47.bashrc

-rw-r--r-- 1 root root 121 Aug 27 14:47.kshrc

[root@dg1 home]#



[root@dg1 home]# chown -R oracle:oinstall/home/oracle

[root@dg1 home]# cd /home/oracle

[root@dg1 oracle]# ls -la

total 24

drwxr-xr-x 2 oracle oinstall 4096 Aug 27 14:47 .

drwxr-xr-x. 4 root root 4096 Aug 27 14:47 ..

-rw-r--r-- 1 oracle oinstall 18 Aug 2714:47 .bash_logout

-rw-r--r-- 1 oracle oinstall 176 Aug 2714:47 .bash_profile

-rw-r--r-- 1 oracle oinstall 124 Aug 2714:47 .bashrc

-rw-r--r-- 1 oracle oinstall 121 Aug 2714:47 .kshrc

[root@dg1 oracle]#





//修改oracle 用戶的環境變量:

[oracle@dg1 ~]$ cat .bash_profile

# .bash_profile



# Get the aliases and functions

if [ -f ~/.bashrc ]; then

.~/.bashrc

fi



# User specific environment and startupprograms



PATH=$PATH:$HOME/bin



export PATH





# Oracle Settings

TMP=/tmp; export TMP

TMPDIR=$TMP; export TMPDIR



ORACLE_HOSTNAME=dave; exportORACLE_HOSTNAME

ORACLE_UNQNAME=dave; export ORACLE_UNQNAME

ORACLE_BASE=/u01/app/oracle; exportORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1;exportORACLE_HOME

ORACLE_SID=dave; export ORACLE_SID



PATH=/u01:/usr/sbin:$PATH; export PATH

PATH=$ORACLE_HOME/bin:$PATH; export PATH



LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;exportLD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;exportCLASSPATH

[oracle@dg1 ~]$


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved