1. 程式人生 > >windows oracle 忘記密碼 解決辦法

windows oracle 忘記密碼 解決辦法

好久沒用oracle資料庫了,今天開啟連繫統管理員密碼也忘了,好多許可權的操作命令也忘了,於是自己網上找了下解決方法如下:首先啟動oracle資料庫

1.正常普通連線進入:sqlplus scott/tiger

或者以管理員身份登入:sqlplus sys/password as sysdba

2.如果忘記了系統管理員密碼:

2.1 可以先匿名登入: sqlplus /nolog
在用本地sid協議的登入: conn / sysdba如果登不上,報錯
      2.2 用orclre例項sid登入
設定環境變數ORACLE_SID的值為你想登入的oracle例項的SID:set ORACLE_SID=orcl
 2.3 該本地oracle的檔案:pwdctcsys
再登不上還可以去改本地檔案pwdctcsys 目錄一般為:ORACLE_HOME\
dbhome_1\database\pwdctcsys.ora
我的ORACLE_HOME目錄在: C:\app\jiangfeng\product\11.2.0\dbhome_1\則:以admin身份執行開啟視窗,執行命令:orapwd file=C:\app\jiangfeng\product\11.2.0\dbhome_1\database\PWDorcl.ora password=password entries=10 force=y;這個命令重新生成了資料庫的密碼檔案。密碼檔案的位置在ORACLE_HOME目錄下的\database目錄下。force=y表示強制跟新覆蓋,這個密碼是修改sys使用者的密碼。除sys其他使用者的密碼不會改變。
以上參考:http://blog.itpub.net/26015009/viewspace-717505/

3. 關於改使用者的密碼:

系統管理員帳戶先解鎖:alter user CHEPC account unlock; (oracle預設使用者才解鎖,自己建的略過次步驟) 在改密碼:alter user CHEPC identified by password;另外: select distinct owner from all_objects; 檢視當前使用者授權:grant create session to 使用者名稱;grant create table to 使用者名稱;grant create tablespace to 使用者名稱;
grant create view to 使用者名稱;

4.資料庫的啟動指令碼(mysql和oracle)

附上:啟動oracle資料庫的bat指令碼檔案:(前一半命令是獲取系統admin許可權)

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::      軟媒魔方自動新增批處理檔案管理員許可權      ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
CLS
ECHO.

:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO ********************************
ECHO 請求 UAC 許可權批准……
ECHO ********************************
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B
:gotPrivileges
setlocal & pushd .
cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::     以下為需要執行的批處理檔案程式碼     ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
rem 本行以下可修改為你需要的bat命令(從上面三行冒號開始到下面都可刪改)

@echo off
:dosmenu
REM 選擇選單
echo #**********************************************************************#
echo       Windows 服務啟動指令碼     
echo #**********************************************************************#
echo       命令相關引數說明如下 快速切換
echo #**********************************************************************#
echo.
echo [1]啟動 mysql  [2]關閉mysql [3]啟動oracletest  [4]關閉oracletest  [5]關閉  
echo.
echo #**********************************************************************#
set /P CHS= 請選擇: [1],[2],[3],[4],[5]
if /I "%CHS%"=="1" (
goto aaaa
) 
if /I "%CHS%"=="2" (
goto bbbb
)
if /I "%CHS%"=="3" (
goto cccc
)
if /I "%CHS%"=="4" (
goto dddd
)
if /I "%CHS%"=="5" (
goto zzzz
)
:aaaa
rem 開啟mysql
net start "mysql"
pause
cls
goto dosmenu

goto dosmenu
:bbbb
rem 關閉mysql
net stop "mysql"
pause
cls
goto dosmenu
:cccc
REM 啟動oracletest 
net start "OracleServiceORCL"
net start "OracleOraDb11g_home1TNSListener"
pause
cls

:dddd
rem 關閉oracletest
net stop "OracleOraDb11g_home1TNSListener"
net stop "OracleServiceORCL"
pause
cls
goto dosmenu
:zzzz
REM 退出
exit