参数文件
查看参数文件:
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string D:\PC_SOFTWARE\PROGRAM_SOFTWAR
E\DATABASE_SOFTWARE\DATABASE_S
ERVER\ORACLE\APP\ADMINISTRATOR
\PRODUCT\11.2.0\DBHOME_1\DATAB
ASE\SPFILEORCL.ORA
参数文件的作用:控制数据库实例的行为。
- 设定数据库的限制
- 设定用户或者进程的限制
- 设定数据库资源的限制
- 调整系统的性能
常用的参数文件:
- SGA_TARGET> 需要分配的SGA区大小。oracle最重要的内存区域。
- PGA_AGGREGATE_TARGET> PGA的总和。一个PGA是一个会话分配的内存。PGA_AGGREGATE是分配的所有PGA的总和
- DB_CACHE_SIZE> SGA中给数据块分配的内存
- DB_FILES> 数据库实例允许打开的数据文件数量
- LOG_ARCHIVE_DEST_n> 归档路径
- USER_DUMP_DEST> 用户trace文件
参数文件丢失或者损坏解决方案:(对数据库的数据不会有影响)
从其他地方重新复制过来一个参数文件,修改其中的参数为自己的参数即可。
控制文件
查看控制文件所在位置:
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string D:\PC_SOFTWARE\PROGRAM_SOFTWAR
E\DATABASE_SOFTWARE\DATABASE_S
ERVER\ORACLE\APP\ADMINISTRATOR
\ORADATA\ORCL\CONTROL01.CTL, D
:\PC_SOFTWARE\PROGRAM_SOFTWARE
\DATABASE_SOFTWARE\DATABASE_SE
RVER\ORACLE\APP\ADMINISTRATOR\
FLASH_RECOVERY_AREA\ORCL\CONTR
OL02.CTL
control_management_pack_access string DIAGNOSTIC+TUNING
控制文件至少包含以下信息:
- 数据库名字(DBID)
- 数据库建立时间
- 数据文件,在线日志文件,归档文件信息
- 表空间信息
- Rman的备份信息
作用:
- 包含了数据文件、在线日志文件件、归档文件的信息,这些信息用于数据库OPEN时的文件验证> 当数据库的架构改变时(比如增减、删除文件),会更新控制文件
- 包含了数据库恢复时需要的一些信息,用于数据库的恢复
结构:
- 空间允许重用区> 这个区域的信息是可以被重用(覆盖)的,当空间不足或者规则满足时,允许覆盖以前的信息,比如归档日志和Rman备份集的信息
- 空间不允许重用区> 这个区域的信息是不允许重用(覆盖)的,因为他们是数据库必须的信息,比如表空间、数据文件、在线日志文件等。
控制文件丢失或者损坏:(对数据库数据不会有影响)
- 备份控制文件。
使用命令备份出创建控制文件的语句:> 使用to trace
后,会将创建控制文件的语句备份到alert日志中。不加to trace
备份的是控制文件本身。
SQL> alter database backup controlfile to trace;
最终备份到alert日志中:D:\PC_Software\Program_Software\DataBase_Software\Database_Server\oracle\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log
alert日志可能会将该信息存储到单独文件中,会在alert_orcl.log中有提示:
alter database backup controlfile to trace Backup controlfile written to trace file d:\pc_software\program_software\database_software\database_server\oracle\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_21492.trc Completed: alter database backup controlfile to trace
备份出来的创建控制文件语句示例:
-- The following are current System-scope REDO Log Archival related
-- parameters and can be included in the database initialization file.
--
-- LOG_ARCHIVE_DEST=''
-- LOG_ARCHIVE_DUPLEX_DEST=''
--
-- LOG_ARCHIVE_FORMAT=ARC%S_%R.%T
--
-- DB_UNIQUE_NAME="orcl"
--
-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'
-- LOG_ARCHIVE_MAX_PROCESSES=4
-- STANDBY_FILE_MANAGEMENT=MANUAL
-- STANDBY_ARCHIVE_DEST=%ORACLE_HOME%\RDBMS
-- FAL_CLIENT=''
-- FAL_SERVER=''
--
-- LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST'
-- LOG_ARCHIVE_DEST_1='MANDATORY NOREOPEN NODELAY'
-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM EXPEDITE NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_1='NOREGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_1='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_1=ENABLE
--
-- Below are two sets of SQL statements, each of which creates a new
-- control file and uses it to open the database. The first set opens
-- the database with the NORESETLOGS option and should be used only if
-- the current versions of all online logs are available. The second
-- set opens the database with the RESETLOGS option and should be used
-- if online logs are unavailable.
-- The appropriate set of statements can be copied from the trace into
-- a script file, edited as necessary, and executed when there is a
-- need to re-create the control file.
--
-- Set #1. NORESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- Additional logs may be required for media recovery of offline
-- Use this only if the current versions of all online logs are
-- available.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 2 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 3 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF',
'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF',
'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF',
'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF',
'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF',
'D:\PC_DOCUMENT\ORACLE_WORKSPACE\TABLESPACE\MYDATA\MYDATA_TABLESPACE.DBF'
CHARACTER SET ZHS16GBK
;
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2021_02_25\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2021_02_25\O1_MF_1_1_%U_.ARC';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE
-- Database can now be opened normally.
ALTER DATABASE OPEN;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF'
SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
-- End of tempfile additions.
--
-- Set #2. RESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 2 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 3 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF',
'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF',
'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF',
'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF',
'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF',
'D:\PC_DOCUMENT\ORACLE_WORKSPACE\TABLESPACE\MYDATA\MYDATA_TABLESPACE.DBF'
CHARACTER SET ZHS16GBK
;
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2021_02_25\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2021_02_25\O1_MF_1_1_%U_.ARC';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE USING BACKUP CONTROLFILE
-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\PC_SOFTWARE\PROGRAM_SOFTWARE\DATABASE_SOFTWARE\DATABASE_SERVER\ORACLE\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF'
SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
-- End of tempfile additions.
--
- 重建控制文件
从其他地方找一个控制文件的创建语句,根据自己的数据库信息编辑数据库实例名、datafile、redo文件等信息。> 在控制文件创建语句的redo文件位置,会显示数据库是standby数据库(redo文件最后显示 standby logfile)或者resetlogs数据库(redo文件最后显示resetlogs)。如果数据库是一个归档的数据库,resetlogs之后 redo的序号要重新清空,重置之后可能归档就不再连续了,要重新做一次备份。 如果是standby数据库,因为归档序列号变化了,需要重做一下standby。
重做日志文件
重做日志文件即 redo log,保证数据的安全。
oracle默认有3组redo日志文件,可以通过sql查询 v$log
视图查看redo日志文件。
select * from v$log;
oracle有一个后台进程 LGWR(Log Writer),定时或被触发时会将内存中log buffer的数据写入日志文件中:先写入到第1个redo日志文件,第1个文件写满后再写第入2个文件,第2个写满后再写入第3个日志文件,第3个写满后再覆盖第1个日志文件写第1个日志文件。
可以使用命令手工切换到下一个日志文件:
SQL> alter system switch logfile;
redo日志有3个状态(通过v$log
视图查看):
- current> 当前正在写入的日志文件。
- active> 虽然该文件不是当前正在写入的文件,但是如果数据库实例宕机,要进行日志恢复时还是需要用到该日志文件进行恢复。
- inactive> 该日志文件记录的数据块已经写入到磁盘上,数据库实例恢复时不再需要恢复该日志文件中的内容。
日志文件作用:
- 核心作用:保护数据安全、恢复数据
- 附加作用:数据同步和分析> 利用redo日志的相关产品:
Data guard streams golden gate log miner
重做日志损坏:
- 活动日志损坏:数据丢失,数据库损坏
- 非活动日志损坏:数据不会丢失,可以重建日志文件
数据文件
数据文件用于存放实际的数据。
数据文件隶属于某个表空间:
- 数据表空间
- UNDO 表空间
- 临时表空间
查看表空间及对应的数据文件信息:
select * from dba_data_flies;
select * from dba_temp_files;
数据文件的损坏:
- 通过备份恢复
- 还原备份文件
- 用归档+在线redo恢复
- 使用redo信息恢复
- 创建新数据文件
- 用归档+在线redo恢复