為什么Oracle中只能用sys和system登錄
Oracle Sys用戶用默認密碼change_on_install 無法登錄的問題(錯誤代碼:ORA-28009)
在使用默認Oracle自帶的SQL Plus登錄數據庫時,使用system用戶默認密碼manager登錄沒有問題。
但是同樣的輸入用戶sys和默認密碼change_on_install確無法登錄.
報錯如下:
ERROR:
ORA-28009: connection to sys should be as sysdba or sysoper
問題分析:
用法: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
其中 : : = [/][@] | /如果以sys用戶登錄的話要以完整格式登錄!!
解決辦法:
1.用system用戶登錄,然后按完整格式卻換到sys用戶:
SQL> conn sys/change_on_install@zgctwo as sysdba
已連接。2.在上圖的登錄界面的主機字符串后面接上字符串 as sysdba:
(2)熟手解決方法:
環境win2000 server oracle8.1.7
SQL> create tablespace price datafile 'price.ora' size 10M; 表空間已創建。
SQL> drop tablespace price; 表空間已丟棄。
SQL> create tablespace plate datafile 'plate.ora' size 10M; 表空間已創建。
SQL> create user plate identified by plate default tablespace plate; 用戶已創建
SQL> grant connect,resource to plate; 授權成功。
SQL> connect plate/plate 已連接。
SQL>
// 關閉數據庫
Microsoft Windows ;2000 [Version 5.00.2195]
(C) 版權所有 1985-2000 Microsoft Corp.
C:Documents and SettingsAdministrator>svrmgrl
........
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SVRMGR> connect internal/oracle
連接成功。
SVRMGR> shutdown immediate
已關閉數據庫。
已卸下數據庫。
已關閉 ORACLE 實例。
// 將數據文件plate.ora刪除,模擬數據文件丟失
SVRMGR> startup
已啟動 ORACLE 實例。
系統全局區域合計有 29431836個字節
Fixed Size 75804個字節
Variable Size 28459008個字節
Database Buffers 819200個字節
Redo Buffers 77824個字節
已裝入數據庫。
ORA-01157: ????/?????? 8 - ??? DBWR ????
ORA-01110: ???? 8: 'D:ORACLEORA81DATABASEPLATE.ORA'
// 數據庫打開失敗,將錯誤的數據文件offline drop
SVRMGR> alter database datafile 'd:oracleora81databaseplate.ora' offline drop;
語句已處理。
// 數據庫打開成功
SVRMGR> alter database open;
語句已處理。
SVRMGR>
// sql*plus中,處理善后工作,刪除相關聯的表空間
SQL> connect internal/oracle
已連接。
SQL> col name format a50
SQL> select name,status from v_$datafile;
NAME STATUS
------------------------------ -------
D:ORACLEORADATAORALSYSTEM01.DBF SYSTEM
D:ORACLEORADATAORALRBS01.DBF ONLINE
D:ORACLEORADATAORALUSERS01.DBF ONLINE
D:ORACLEORADATAORALTEMP01.DBF ONLINE
D:ORACLEORADATAORALTOOLS01.DBF ONLINE
D:ORACLEORADATAORALINDX01.DBF ONLINE
D:ORACLEORADATAORALDR01.DBF ONLINE
D:ORACLEORA81DATABASEPLATE.ORA OFFLIN
已選擇8行。
SQL> drop tablespace plate; 表空間已丟棄。
SQL> col name format a33
SQL> col name format a35
SQL> col name format a50
SQL> select name,status from v_$datafile;
NAME STATUS
-------------------------------------------------- -------
D:ORACLEORADATAORALSYSTEM01.DBF SYSTEM
D:ORACLEORADATAORALRBS01.DBF ONLINE
D:ORACLEORADATAORALUSERS01.DBF ONLINE
D:ORACLEORADATAORALTEMP01.DBF ONLINE
D:ORACLEORADATAORALTOOLS01.DBF ONLINE
D:ORACLEORADATAORALINDX01.DBF ONLINE
D:ORACLEORADATAORALDR01.DBF ONLINE
已選擇7行。
SQL>
安裝有ORACLE的計算機請一定注意不要隨便執行P(如下代碼)刪除
因為ORACLE的日志文件記錄著用戶的信息,如果刪除那么就只能使用sys 和system來登錄了
要想恢復很復雜。 作為DBA,一定要注意server版的os很嚴格,切勿刪除不明白來源的文件,
無論刪除任何系統文件都要進行備份
我曾使用以下代碼在server2003上執行.reg文件,導致oracle非系統默認用戶不能登錄
結果只有從新安裝 oracle
@echo off
echo wait......
del /f /s /q %systemdrive%*.tmp
del /f /s /q %systemdrive%*._mp
del /f /s /q %systemdrive%*.log
del /f /s /q %systemdrive%*.gid
del /f /s /q %systemdrive%*.chk
del /f /s /q %systemdrive%*.old
del /f /s /q %systemdrive%recycled*.*
