oracle 强制 断开,ORA-01092: ORACLE 例程终止 强行断开连接
今天測試部門的人叫我過去,說是數據庫當了,起不來了。
我過去看了看情況,做了如下操作
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
Oracle 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01092: ORACLE 例程終止。強行斷開連接
表面上看不出問題,我查看alert_oracas.log文件
SYS auditing is disabled
Starting up ORACLE RDBMS Version: 9.2.0.1.0.
System parameters with non-default values:
processes = 150
timed_statistics = TRUE
shared_pool_size = 50331648
large_pool_size = 8388608
Java_pool_size = 33554432
control_files = f:oracleoradataoracasCONTROL01.CTL, f:oracleoradataoracasCONTROL02.CTL, f:oracleoradataoracasCONTROL03.CTL
db_block_size = 8192
db_cache_size = 25165824
compatible = 9.2.0.0.0
db_file_multiblock_read_count= 16
fast_start_mttr_target = 300
undo_management = AUTO
undo_tablespace = UNDOSTB1
undo_retention = 10800
remote_login_passwordfile= EXCLUSIVE
db_domain =
instance_name = oracas
dispatchers = (PROTOCOL=TCP) (SERVICE=oracasXDB)
job_queue_processes = 10
hash_join_enabled = TRUE
background_dump_dest = f:oracleadminoracasbdump
user_dump_dest = f:oracleadminoracasudump
core_dump_dest = f:oracleadminoracascdump
sort_area_size = 524288
db_name = oracas
open_cursors = 300
star_transformation_enabled= FALSE
query_rewrite_enabled = FALSE
pga_aggregate_target = 19922944
aq_tm_processes = 1
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7
CJQ0 started with pid=8
QMN0 started with pid=9
Mon Apr 18 17:30:25 2005
starting up 1 shared server(s) ...
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
Mon Apr 18 17:30:26 2005
ALTER DATABASE MOUNT
Mon Apr 18 17:30:30 2005
Successful mount of redo thread 1, with mount id 2424210674.
Mon Apr 18 17:30:30 2005
Database mounted in Exclusive Mode.
Completed: ALTER DATABASE MOUNT
Mon Apr 18 17:30:30 2005
ALTER DATABASE OPEN
Mon Apr 18 17:30:32 2005
Thread 1 opened at log sequence 105
Current log# 2 seq# 105 mem# 0: F:ORACLEORADATAORACASREDO02.LOG
Successful open of redo thread 1.
Mon Apr 18 17:30:32 2005
SMON: enabling cache recovery
Mon Apr 18 17:30:34 2005
Errors in file f:oracleadminoracasudumporacas_ora_3404.trc:
ORA-30012: 撤消表空間 'UNDOSTB1' 不存在或類型不正確
Mon Apr 18 17:30:34 2005
Error 30012 happened during db open, shutting down database
USER: terminating instance due to error 30012
Mon Apr 18 17:30:35 2005
Errors in file f:oracleadminoracasbdumporacas_smon_996.trc:
ORA-30012: undo tablespace '' does not exist or of wrong type
Mon Apr 18 17:30:35 2005
Errors in file f:oracleadminoracasbdumporacas_pmon_3500.trc:
ORA-30012: undo tablespace '' does not exist or of wrong type
Instance terminated by USER, pid = 3404
ORA-1092 signalled during: ALTER DATABASE OPEN...
于是我查看了以下信息來確認undo表空間的問題
SQL> conn sys/sys@oracas as sysdba
已連接到空閑例程。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
SQL> select name from v\$datafile;
NAME
------------------------------------------------------------------------
F:ORACLEORADATAORACASSYSTEM01.DBF
F:ORACLEORADATAORACASUNDOTBS01.DBF
F:ORACLEORADATAORACASCWMLITE01.DBF
F:ORACLEORADATAORACASDRSYS01.DBF
F:ORACLEORADATAORACASEXAMPLE01.DBF
F:ORACLEORADATAORACASINDX01.DBF
F:ORACLEORADATAORACASODM01.DBF
F:ORACLEORADATAORACASTOOLS01.DBF
F:ORACLEORADATAORACASUSERS01.DBF
F:ORACLEORADATAORACASXDB01.DBF
D:ORADATAORACASTSCAS11.DBF
E:ORADATAORACASTFCAS12.DBF
D:ORADATAORACASTSCAS21.DBF
E:ORADATAORACASTFCAS22.DBF
D:ORADATAORACASTSCAS31.DBF
E:ORADATAORACASTFCAS32.DBF
D:ORADATAORACASTSCAS41.DBF
E:ORADATAORACASTFCAS42.DBF
D:ORADATAORACASTSCASINDX1.DBF
E:ORADATAORACASTSCASINDX2.DBF
D:ORADATAORACASTFCAS13.DBF
D:ORADATAORACASTFCAS14.DBF
D:ORADATAORACASTFCAS23.DBF
D:ORADATAORACASTFCAS24.DBF
E:ORADATAORACASTSCASINDX12.DBF
E:ORADATAORACASTSCASINDX13.DBF
E:ORADATAORACASTSCASINDX24.DBF
E:ORADATAORACASTSCASINDX25.DBF
C:SNAPSHOT01.DBF
C:TSCAS1.DBF
已選擇30行。
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- -----------------------
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOSTB1
SQL> select name from v\$tablespace;
NAME
------------------------------
CWMLITE
DRSYS
EXAMPLE
INDX
ODM
SYSTEM
TOOLS
UNDOTBS1
USERS
XDB
TEMP
TSCAS1
TSCAS2
TSCAS3
TSCAS4
TSCASINDX1
TSCASINDX2
SNAPSHOT_TS
已選擇18行。
當時沒有自己看問題,就以為是undo文件損壞了,決定重建。
注意:后來才發現這里以后的操作是饒了一個解決問題的彎路。
由于不open沒有辦法重新創建undo 表空間,所以決定先用系統默認的undo表空間來啟動,然后重建undo
表空間,具體操作如下:
SQL> create pfile from spfile;
文件已創建。
修改pfile文件
#*.undo_management='AUTO'
#*.undo_tablespace='UNDOSTB1'
undo_management=manual
undo_tablespace='system'
關閉數據庫,并且從目錄F:oracleora92database下去掉SPFILEORACAS.ORA文件
重新啟動
SQL> shutdown immediate
ORA-01109: 數據庫未打開
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
SQL> alter database open;
數據庫已更改。
查看表空間信息
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string MANUAL
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string system
SQL> select name from v\$tablespace;
NAME
------------------------------
CWMLITE
DRSYS
EXAMPLE
INDX
ODM
SYSTEM
TOOLS
UNDOTBS1
USERS
XDB
TEMP
TSCAS1
TSCAS2
TSCAS3
TSCAS4
TSCASINDX1
TSCASINDX2
SNAPSHOT_TS
并且打開圖形界面查看,這時候才發現undo表空間的名字是UNDOTBS1
其實早就能發現的,大家以后分析問題一定不要太快下結論,要自己分析。。。
于是做以下操作改變undo 表空間的名字
SQL> create spfile from pfile;
文件已創建。
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string MANUAL
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string system
SQL> alter database set undo_management=auto;
alter database set undo_management=auto
*
ERROR 位于第 1 行:
ORA-02231: 缺少或無效的 ALTER DATABASE 選項
SQL> alter database set undo_management=auto scope=spfile;
alter database set undo_management=auto scope=spfile
*
ERROR 位于第 1 行:
ORA-02231: 缺少或無效的 ALTER DATABASE 選項
SQL> alter system set undo_management=auto scope=spfile;
系統已更改。
SQL> alter system set undo_tablespace='undotbs1' scope=spfile;
重啟驗證:
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> create fpile from spfile;
create fpile from spfile
*
ERROR 位于第 1 行:
ORA-00901: 無效 CREATE 命令
SQL> create pfile from spfile;
文件已創建。
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string undotbs1
發現已經好使了
教訓總結:其實只要一開始分析下v\$tablespace就能發現是undo表空間的名字錯了,很快就能解決的。
不過我上面這種方法可以用于undo表空間文件corrupt的情況:)? vnc server配置
1。使用root用戶啟動系統的vncserver服務;
#service vncserver start
2。然后切換到登陸用戶下面,我這里假設要使用oracle系統帳戶進行遠程登陸
#su - oracle
3。使用oracle用戶輸入以下命令:
\$vncserver
如果是第一次運行,則系統會出現提示信息,提示你輸入密碼,這是通過終端進行登陸時需要輸入的;
另外,還有一個數字信息,這個也是需要在終端登陸時輸入的,即冒號后面跟著的一個數字,如:1? ,:2等等,需要記住;
4。在windows客戶端使用vncviewer,輸入如下:xxx.xxx.xxx.xxx:1 或者xxx.xxx.xxx.xxx:2等,后面的數字需要和服務器端的對應才行;xxx是你服務器的ip地址了;
[linux as 5]軟件要求
其他所需程序包的版本(或更高版本):
gcc-2.96-124
make-3.79
binutils-2.11
openmotif-2.1.30-11
glibc-2.2.4-31
要查看系統上安裝了這些程序包的哪些版本,運行以下命令:
rpm -q gcc make binutils openmotif glibc setarchp4198954_21_linux.zip 在運行 runInstaller 之前打.
rpm -ivh compat-oracle-rhel4-1.0-5.i386.rpm???? (p4198954_21_linux.zip)
(不打PATH也可以)
安裝 libaio-0.3.102-1.i386.rpm 和libaio-devel0.3.102-1.i386.rpm
在Red Hat Enterprise Linux 介質的第三張 CD
以 root 用戶身份運行以下命令:
rpm -ivh /mnt/cdrom/RedHat/RPMS/ libaio-0.3.102-1.i386.rpm創建數據庫安裝的準備工作:
1,創建user/group;
groupadd dba
groupadd oinstall
useradd oracle -g oinstall -G dba
passwd oracle
如果nobody用戶不存在(id nobody命令查看),則創建:
useradd nobody2,建立oracle安裝文件夾(sample);
mkdir -p /opt/oracle/10.2.0.1 /opt/oracle/oradata /opt/oracle/archivelog
chown -R oracle.oinstall? /opt/oracle
chmod 755 -R /opt/oracle2, 配置環境變量;
要使用 Oracle 產品,應該或必須設置幾個環境變量。
如果您在同一服務器上安裝了多個 Oracle 產品或數據庫,則 ORACLE_HOME、ORACLE_SID 和 PATH 變量可能會更改。
ORACLE_BASE 變量不應更改,并可以在需要時在您的登錄配置文件中設置它。Oracle 提供了一個稱作 oraenv 的實用程序來設置其他變量。
對于數據庫服務器,建議設置以下環境變量:
使用root用戶:
vi /home/oracle/.bash_profile
以下是配置文件的內容
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/10.2.0.1
ORACLE_SID=ge01
PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
TNS_ADMIN=\$ORACLE_HOME/network/admin
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID? TNS_ADMIN NLS_LANG LANG4, 設置系統參數;
Oracle 數據庫 10g 需要以下所示的內核參數設置。
一般情況下可以設置最大共享內存為物理內存的一半,如果物理內存是 2G,則可以設置最大共享內存為 1073741824,
如上;如物理內存是 1G,則可以設置最大共享內存為 512 * 1024 * 1024 = 536870912;以此類推。在redhat上最大共享內存不建議超過
4*1024*1024*1024-1=4294967295切換到root用戶:
su root
修改vi /etc/sysctl.conf, 添加:
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144修改后運行"/sbin/sysctl -p"命令使得內核改變立即生效;B) 設置oracle對文件的要求:
編輯文件:vi /etc/security/limits.conf 加入以下語句:
oracle?????????? soft??? nproc?????????? 2047
oracle?????????? hard??? nproc?????????? 16384
oracle?????????? soft??? nofile????????? 1024
oracle?????????? hard??? nofile????????? 65536編輯文件:vi /etc/pam.d/login 加入以下語句(可能應該加在最后一條規則之前):session??? required???? /lib/security/pam_limits.so設置oraInst.loc文件:
[root@enterprice64 ~]#vi /etc/oraInst.loc
inventory_loc=/opt/oracle/oraInventory
inst_group=oinstall
[root@enterprice64 ~]#chown oracle.oinstall /etc/oraInst.loc
確保/etc/oraInst.loc中包含上面的信息,且Oracle包含訪問權限。5.解壓縮Oracle10G的安裝文件 :
使用Oracle用戶登陸:
su - oracle
在/home/oracle 上傳和解壓縮10201_database_linux32.zip:
unzip 10201_database_linux326.開始安裝oracleL i n u x 命令行環境下安裝(也可以在圖形界面下安裝)使用Oracle用戶登陸:
su - oracle
根據希望安裝的數據庫版本類型選擇Silent安裝模式的response_file文件的類似,比如:enterprise.rsp、standard.rsp還是custom.rsp。
這里選擇enterpise.rsp類型,安裝盤中的database/response目錄下對應的response文件拷貝出來,根據文件里面的提示對輸入值進行修改。
比如這個例子中對如下的參數進行設置:
UNIX_GROUP_NAME="oinstall"
FROM_LOCATION="/home/oracle/database/stage/products.xml"
ORACLE_BASE="/opt/oracle"
ORACLE_HOME="/opt/oracle/10.2.0.1"
ORACLE_HOME_NAME="OraDbHome1"
SHOW_INSTALL_PROGRESS_PAGE= true
SHOW_END_OF_INSTALL_MSGS= true
COMPONENT_LANGUAGES={"zh_CN"}
s_nameForDBAGrp= "dba"
s_nameForOPERGrp="dba"
INSTALL_TYPE="EE"
n_configurationOption=3
RESTART_SYSTEM=false
RESTART_REMOTE_SYSTEM=false注意,所有的字符串需要放在雙引號中,注意大小寫。數字和布爾變量直接寫就可以。
由于這里沒有選擇建立數據庫而只安裝軟件,因此沒有設置數據庫相關的配置參數。[oracle@enterprice64 data]\$ chmod 700 enterprise.rsp
面可以開始SILENT安裝了:
注意,響應文件需要使用絕對路徑。
cd /home/oracle/database
[oracle@enterprice64 database]\$ ./runInstaller -silent -responseFile /home/oracle/enterprise.rsp用root執行如下腳本:
/opt/oracle/10.2.0.1/oraInventory/orainstRoot.sh
/opt/oracle/10.2.0.1/root.sh
不過這里Oracle存在一個bug,在root.sh腳本中,自動將OUI_SILENT參數設置為TRUE,而后的檢查中,
如果發現這個值為TRUE,那么這個腳本運行會自動退出了。這里需要手工將其修改為false,
最后使用root執行一下\$ORACLE_HOME/root.sh腳本就可以了。根據提示按 Enter 就可以了。
這樣就在字符下成功安裝了。通過SILENT模式安裝數據庫之后,下面繼續使用SILENT模式進行數據庫的建立,
仍然是拷貝安裝目錄下的/home/oracle/database/response/dbca.rsp到安裝目錄,并進行編譯,
根據數據庫建立方式的不同編輯不同的數據庫庫選項。
比如在本次安裝過程中設置了下列參數:
RESPONSEFILE_VERSION = "10.0.0"
OPERATION_TYPE = "createDatabase"
GDBNAME = "ge01"
SID = "ge01"
TEMPLATENAME = "New_Database.dbt"
SYSPASSWORD = "georacle"
SYSTEMPASSWORD = "georacle"
DATAFILEDESTINATION ="/opt/oracle/oradata/"
RECOVERYAREADESTINATION="/opt/oracle/flash_recovery_area"
STORAGETYPE=FS
CHARACTERSET = "ZHS16GBK"
MEMORYPERCENTAGE = "40"
SCRIPTDESTINATION ="/opt/oracle/admin/ora10g/scripts"
EMCONFIGURATION=”LOCAL”
SYSMANPASSWORD = "georacle"
DBSNMPPASSWORD = "georacle"其中最后1項不是必須的,這個的目的是在建立數據庫的同時生成腳本。
下面就可以開始SILENT模式的數據庫創建了:
[oracle@enterprice64 database]\$ dbca -silent -responseFile /home/oracle/dbca.rsp
用root執行如下腳本:
/opt/oracle/10.2.0.1/oraInventory/orainstRoot.sh最后可以利用netca來SILENT方式設置網絡部分,同樣的方法設置netca.rsp:
RESPONSEFILE_VERSION="11.1"
CREATE_TYPE= "CUSTOM"
SHOW_GUI=false
LOG_FILE=""/opt/oracle/10.2.0.1/network/tools/log/netca.log""
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
設置的參數包括上面的部分,然后就可以使用netca啟動silent配置:
[oracle@enterprice64 database]\$ netca /silent /responsefile? /home/oracle/netca.rsp----------------------------------------------------------------靜默卸載Oracle數據庫ge01
dbca -silent -deleteDatabase -sourceDB??? [-sysDBAUserName???? -sysDBAPassword ]
例如:dbca -silent -deleteDatabase -sourceDB ge01 -sysDBAUserName sys -sysDBAPassword georacle靜默卸載Oracle數據庫軟件
執行以下命令靜默卸載Oracle數據庫軟件
\$./runInstaller -silent -deinstall -removeallfiles -removeAllPatches "REMOVE_HOMES={\$ORACLE_HOME}" -responseFile ~/enterprise.rsp---------------------------------------------------------------------------------------(一)圖形界面開始安裝:
1.以oracle用戶登錄X-WINDOWS系統,進行Oracle的安裝(遠程安裝需打開XDM):[ linux 5}
export DISPLAY=
cd /opt/database (或者你解壓縮安裝程序包的目錄)
./runInstaller 或者./runInstaller?? -ignoreSysPrereqs
過一會兒就會出現Oracle的X安裝界面注意:
1、選擇advance install
2、數據庫home設置為/opt/oracle/10.2.0.1
3、數據庫全局名稱設置為ge01
4、數據庫字符集選Simplified Chinese ZHS16GBK2.其他用默認設置!
注意:安裝過程中會提示以root用戶登陸執行一些腳本 ,執行后再按“ok”按鈕繼續安裝。3、登陸并啟動數據庫的操作。
su - oracle
[oracle@oracle oracle]\$ lsnrctl start
[oracle@oracle oracle]\$ sqlplus /nolog
SQL*Plus: Release 9.2.0.0 - Production on Sat Mar 12 22:58:53 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> startup; 啟動數據庫
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.SQL> shutdown immediate ;關閉數據庫 (OR "dbshut" command)
Database closed.
Database dismounted.
ORACLE instance shut down.4, dbstart腳本修改
數據庫創建完成后,修改vi /etc/oratab,把ge01:/opt/oracle/10.2.0.1:N那一行最后的N改成Y,
修改vi /opt/oracle/10.2.0.1/bin/dbstart中ORACLE_HOME_LISTNER=/opt/oracle/10.2.0.1
然后執行dbstart啟動數據庫數據庫可能無法啟動,報告Can’t find init file …的錯誤,需要復制一個初始化文件:
cp /opt/oracle/admin/ge01/pfile/init.ora.* /opt/oracle/10.2.0.1/dbs/initge01.ora
重新執行dbstart就可以了。可以執行dbshut 停止ORACLEvi /etc/rc.local 加入下面一行 起動ORACLE ON system boot
su - oracle -c "lsnrctl start"
su - oracle -c "dbstart"5. 為了root方便管理,可以寫一個啟動腳本
vi /etc/init.d/ora10g
#!/bin/bash
#
# chkconfig: 2345 91 19
# description: starts the oracle listener and instancestatus() {
pid=`ps -ef | grep ora_pmon | grep -v grep | awk '{print \$8}'`
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存為ora10g后,然后
chmod a+x /etc/init.d/ora10g
即可在以后以root身份運行/etc/rc.d/init.d/ora10g start |stop 來管oracle的啟動和停止了。
如果要將這個腳本加入到系統中使其可開機運行,那么要運行以下命令:
chkconfig --level 35 ora10g on
6, 關于數據庫刪除重新安裝的問題:
1 . 去除 /usr/local/bin 目錄 下的 coraenv dbhome oraenv
2 . 去除 /etc/oratab , /etc/oracle
3 . 去掉安裝 目錄 /opt/oracle 目錄下的 product admin oradata oralnventor 目錄 。
# userdel -r oracle
# groupdel dba oinstall
rm -rf /tmp/ora*
rm -rf /opt/oracle/*
rm -rf /opt/ORCLfmap
rm -f /etc/ora*
rm -f /usr/local/bin/oraenv
rm -f /usr/local/bin/coraenv
rm -f /usr/local/bin/dbhome7.修改Oracle10g數據庫字符集
SQL> connect sys/oracle as sysdba
SQL> startup mount
SQL> alter session set sql_trace=true;Session altered.SQL> alter system enable restricted session;System altered.SQL> alter system set job_queue_processes=0;System altered.SQL> alter system set aq_tm_processes=0;System altered.SQL> alter database open;Database altered.SQL> set linesize 120;
SQL> alter database character set zhs16gbk;
alter database character set zhs16gbk
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character setSQL> ALTER DATABASE character set INTERNAL_USE zhs16gbk; # 使用INTERNAL_USE可以跳過超集的檢查,ALTER DATABASE character set INTERNAL_USEDatabase altered.SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
SQL> select name,value\$ from props\$ where name like '%NLS%';NLS_CHARACTERSET
ZHS16GBK8. oracle database異機備份腳本
su - oracle
mkdir /home/oracle/dbbackup(1)vi /home/oracle/dbbackup/bachupdb.sh
#!/bin/bash
#As oracle user, chmod 744 /home/oracle/dbbackup/DBbackuprecover.sh
#crontab -e 35 1 * * * /home/oracle/dbbackup/DBbackuprecover.sh >/dev/null 2>&1
#@tip: modify local database's home directory
#@tip is remote database ip addressexport ORACLE_HOME=/opt/oracle/10.2.0.1
export PATH=\$ORACLE_HOME/bin:\$PATH:
export NLS_LANG=AMERICAN_AMERICA.zhs16gbk
export LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_SID=ge01dmpfile=gedb_`date +%F`.dmp
logfile=gedb_`date +%F`.log
restoredblog=restoredb_`date +%F`.log
WORK_DIR=~/dbbackupcd \$WORK_DIR
exp USERID=gedb/gegedb@/ge01 file=\$dmpfile log=\$logfile? owner=gedb
if [ 0 -eq "\$?" ]
then
sqlplus / as sysdba @user.sql
imp USERID=gedb/gegedb file=\$dmpfile log=./\$restoredblog fromuser=gedb? touser=gedb
find? ./*.dmp -type f -mtime +7 -exec rm {} ;
find? ./*.log -type f -mtime +30 -exec rm {} ;
exit 0
else
echo "backup error,quit!" > \$logfile
exit 1
fi
#@tip ip地址修改為要備份的oracle的主機地址
exp USERID=gedb/gedb@10.248.1.5/ge01 file=\$dmpfile log=\$logfile? owner=gedb direct=y(2)更改腳本權限:
chown oracle.oinstall backupdb.sh
chmod 744 backupdb.sh
(3)以oracle user role
crontab -e
35 2 * * * /home/oracle/dbbackup/backupdb.sh9. restore oracle backup
(1) 先創建gedb用戶和授權:
su - oracle
sqlplus / as sysdba @createUser.sql
(2)imp USERID=gedb/gegedb file=110.dmp fromuser=gedb touser=gedb
如果要第二次IMP操作要先刪除用戶gedb,再新建用戶gedb,這樣imp才不會出錯.
DROP USER gedb CASCADE;
CREATE USER gedb? IDENTIFIED BY gegedb;
GRANT UNLIMITED TABLESPACE TO gedb;
GRANT CONNECT TO gedb;
GRANT RESOURCE TO gedb;
GRANT DBA TO gedb;
10. oracle優化SQL> alter system set "_kgl_large_heap_warning_threshold"=8388608 scope=spfile ; (ONLY FOR 10.2.0.1.0 )
SQL> shutdown immediate
SQL> startup11.BUG FIX(1)10g EM亂碼之快速解決
[oracle@danaly ~]\$ cd \$ORACLE_HOME/jdk/jre/lib
[oracle@danaly lib]\$ ls font*zh_CN*
font.properties.zh_CN.Redhat font.properties.zh_CN.Redhat2.1
font.properties.zh_CN.Sun font.properties.zh_CN_UTF8.Sun[oracle@danaly lib]\$ cd \$ORACLE_HOME/jre/1.4.2/lib/
[oracle@danaly lib]\$ ls font*zh_CN*
font.properties.zh_CN.Redhat font.properties.zh_CN.Redhat2.1
font.properties.zh_CN.Sun font.properties.zh_CN_UTF8.Sun我們只要用合適的中文字符集文件替換缺省文件即可,我選擇使用font.properties.zh_CN.Redhat來替換缺省字體定義文件:[oracle@danaly lib]\$ cp font.properties.zh_CN.Redhat font.properties替換之后需要清理一下Cache,重啟EM即可.Cache路徑通常位于:\$ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs清除所有gif文件即可.然后重新啟動EM(2)10201上一個嚴重的BUG
環境 10201,AIX53
但據ORACLE解釋,在任何操作系統版本都有此問題。現象:監聽器啟動后,隔一段時間(長短不定),就會出現無法
連接: 若是用10201版本的SQLPLUS,則會出現 NO LISTENER。
9207 版本的SQLPLUS,則會出現:沒反應,HANG住。原因:10201 版本上的一個BUG:4518443。其會自動創建一個子
監聽器,當出現此情況時,監聽器將會掛起。
/opt/oracle/product/10g/network/log/listener.log有如下語句:
WARNING: Subscription for node down event still pending檢查是否真因為此BUG造成此現象:
\$ ps -ef | grep tnslsnr
ora10g 8909 1 0 Sep 15 ? 902:44 /u05/10GHOME/DBHOME/bin/tnslsnr sales -inherit
ora10g 22685 8909 0 14:19:23 ? 0:00 /u05/10GHOME/DBHOME/bin/tnslsnr sales –inherit
正常情況只有一個監聽器,而此BUG則會出現兩個監聽器。解決方法:
打補丁4518443
或者在listener.ora 文件里加入:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_=OFF
其中, 是數據庫的監聽器的名稱。如:
默認情況下,監聽器名為:LISTENER 。則語句就是:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
同時:
cd \$ORACLE_HOME/opmn/conf
mv ons.config ons.config.orig
重啟監聽程序:
lsnrctl stop
lncrctl start
總結
以上是生活随笔為你收集整理的oracle 强制 断开,ORA-01092: ORACLE 例程终止 强行断开连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php做一个计算日期之间天数,PHP计算
- 下一篇: oracle 整个表空间迁移,oracl