重建控制文件會導致密碼文件發生變化
2024-07-21 02:32:56
供稿:網友
今天在測試的時候發現,Oracle控制文件重建的話,密碼文件也會相應的發生變化。 重建控制文件后,雖然密碼文件內容沒有發生變化。但是密碼文件本身的狀態已經發生了改變,最明顯的一點,就是利用以前的備份進行恢復時,會報密碼文件的錯誤。 首先創建一個備份: SQL> SELECT 'ALTER TABLESPACE ' TABLESPACE_NAME ' BEGIN BACKUP;' FROM DBA_TABLESPACES
2 WHERE CONTENTS != 'TEMPORARY'; 'ALTERTABLESPACE'TABLESPACE_NAME'BEGINBACKUP;'
-------------------------------------------------------------
ALTER TABLESPACE SYSTEM BEGIN BACKUP;
ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP;
ALTER TABLESPACE INDX BEGIN BACKUP;
ALTER TABLESPACE TOOLS BEGIN BACKUP;
ALTER TABLESPACE USERS BEGIN BACKUP;
ALTER TABLESPACE YANGTK BEGIN BACKUP; 已選擇6行。 SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP; 表空間已更改。 SQL> ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP; 表空間已更改。 SQL> ALTER TABLESPACE INDX BEGIN BACKUP; 表空間已更改。 SQL> ALTER TABLESPACE TOOLS BEGIN BACKUP; 表空間已更改。 SQL> ALTER TABLESPACE USERS BEGIN BACKUP; 表空間已更改。 SQL> ALTER TABLESPACE YANGTK BEGIN BACKUP; 表空間已更改。 SQL> HOST COPY F:ORACLEORADATATEST*.* F:ORACLEBACKUPTEST20061106 SQL> SELECT 'ALTER TABLESPACE ' TABLESPACE_NAME ' END BACKUP;' FROM DBA_TABLESPACES
2 WHERE CONTENTS != 'TEMPORARY'; 'ALTERTABLESPACE'TABLESPACE_NAME'ENDBACKUP;'
-----------------------------------------------------------
ALTER TABLESPACE SYSTEM END BACKUP;
ALTER TABLESPACE UNDOTBS1 END BACKUP;
ALTER TABLESPACE INDX END BACKUP;
ALTER TABLESPACE TOOLS END BACKUP;
ALTER TABLESPACE USERS END BACKUP;
ALTER TABLESPACE YANGTK END BACKUP; 已選擇6行。 SQL> ALTER TABLESPACE SYSTEM END BACKUP; 表空間已更改。 SQL> ALTER TABLESPACE UNDOTBS1 END BACKUP; 表空間已更改。 SQL> ALTER TABLESPACE INDX END BACKUP; 表空間已更改。 SQL> ALTER TABLESPACE TOOLS END BACKUP;
表空間已更改。 SQL> ALTER TABLESPACE USERS END BACKUP; 表空間已更改。 SQL> ALTER TABLESPACE YANGTK END BACKUP; 表空間已更改。 下面看看重建控制文件后的情況: SQL> CONN YANGTK/YANGTK@TEST AS SYSDBA
已連接。
SQL> SHUTDOWN IMMEDIATE
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> STARTUP NOMOUNT
ORACLE 例程已經啟動。 Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 50
4 MAXLOGMEMBERS 5
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 680
8 LOGFILE
9 GROUP 1 'F:ORACLEORADATATESTREDO01.LOG' SIZE 100M,
10 GROUP 2 'F:ORACLEORADATATESTREDO02.LOG' SIZE 100M,
11 GROUP 3 'F:ORACLEORADATATESTREDO03.LOG' SIZE 100M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'F:ORACLEORADATATESTSYSTEM01.DBF',
15 'F:ORACLEORADATATESTUNDOTBS01.DBF',
16 'F:ORACLEORADATATESTINDX01.DBF',
17 'F:ORACLEORADATATESTTOOLS01.DBF',
18 'F:ORACLEORADATATESTUSERS01.DBF',
19 'F:ORACLEORADATATESTYANGTK01.DBF'
20 CHARACTER SET ZHS16GBK
21 ; 控制文件已創建 SQL> ALTER DATABASE OPEN; 數據庫已更改。 這個時候,密碼文件已經被修改。從操作系統中文件的信息也可以看到,文件最后修改時間就是控制文件的重建時間。 這個時候,假如需要利用以前的備份恢復數據庫,那么就需要重建密碼文件: SQL> SHUTDOWN IMMEDIATE
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> HOST COPY F:ORACLEBACKUPTEST20061106*.CTL F:ORACLEORADATATEST SQL> HOST COPY F:ORACLEBACKUPTEST20061106*.LOG F:ORACLEORADATATEST SQL> HOST COPY F:ORACLEBACKUPTEST20061106*.DBF F:ORACLEORADATATEST
SQL> STARTUP MOUNT
ORACLE 例程已經啟動。 Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-01991: ???????'F:oracleoracle920DATABASEPWDtest.ORA' SQL> SHUTDOWN
ORA-01109: ?????? 已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> HOST DEL F:ORACLEORACLE920DATABASEPWDTEST.ORA SQL> HOST ORAPWD FILE=F:ORACLEORACLE920DATABASEPWDTEST.ORA PASSWord=TEST SQL> STARTUP MOUNT
ORACLE 例程已經啟動。 Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
SQL> RECOVER DATABASE;
完成介質恢復。
SQL> ALTER DATABASE OPEN; 數據庫已更改。 密碼文件由于可以方便的重建,因此,很少包括在備份集中,不過由于存在上述問題,進行全備份的時候,不妨同時備份當時的密碼文件,可以避免產生錯誤。