Oracle 文件管理-参数文件、控制文件、归档

news2024/9/9 0:11:00

STARTUP 起库:

  1. 加载参数文件 --》startup nomount
  2. 加载控制文件 --》startup mount
  3. 加载数据文件等所有文件--》startup (打开到open)

1.1 参数文件

spfile(服务器参数文件) 是一个二进制文件,存储在服务端的 $ORACLE_HOME/dbs 目录下。不能直接用文本编辑器修改参数,而是通过 sqlplus 中的命令动态修改。由于其二进制特性,修改后可以立即生效,无需重启数据库。

pfile(参数文件) 是一个文本文件,可以存储在客户端或服务端,用文本编辑器进行查看和修改。修改 pfile 后,需要重启数据库才能使更改生效。pfile 在启动数据库时提供参数配置,可以作为 spfile 的备份或在特定情况下使用。

1.1.1 优先级别:

oracle 启动读取参数文件的顺序,如果个文件都不存在,则Oracle会报错

spfile.ora --> spfile.ora -->init.ora -->init.ora

1.1.2 默认目录:
$ORACLE_HOME/dbs
1.1.3 参数文件之间的转换
-- spfile-->pfile转换
SQL> create pfile from spfile;
SQL> !ls $ORACLE_HOME/dbs/initorcl.ora
/u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora

-- 生成在指定路径
SQL> create pfile='/tmp/initorcl.ora' from spfile;

-- pfile-->spfile 转换
SQL> create spfile='/tmp/spfileorcl.ora' from pfile;

--可以用strings命令查看创建的spfile文件,查出来的结过和pfile是一样的。

其他:

--优先级:
SINSTANCE_MODIFIABLE > ISSYS_MODIFIABLE > ISSES_MODIFIABLE 

--修改参数
alter	system|session set	parameter_name=values scope=memory|spfile|both sid='<sid>'|'*';

--重置默认参数
aler system reset parameter_name scope=spfile sid='<sid>'|'*';

--显示系统中隐藏参数:
select ksppinm,ksppstvl from x$ksppi a, x$ksppcv b where a.indx=b.indx
1.1.4 判断数据库从SPFILE还是PFILE启动
-- 方式1:
-- 如果是spfile,则value是有值的
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ---------- ----------------------------
spfile string /u01/app/oracle/product/11.2.0
/db_1/dbs/spfileorcl.ora

-- 方式2:
SQL> set linesize 120
SQL> col name format a10
SQL> col value format a60
SQL> select name,value from v$parameter where name='spfile';
NAME 		VALUE
------	 	--------------------------------------------------------
spfile 		/u01/app/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora

1.1.5 修改参数文件的三种模式:
scope=both 立即并永久生效,(默认模式)
scope=spfile 下次启动才能生效。
scope=memory 立即生效但下次启动时失效

##查询方法:v$parameter
isses_modifiable:
ISSES_MODIFIABLE=true
表明这个参数可以在session级别可以修改,并且立即生效。false就是不能修改
issys_modifiable:
issys_modifiable=immediate
表示这个参数可以在system立即修改,并且立即生效。
若如果issys_modifiable=deferred
会话级别参数,直接通过alter session set 参数名=值;
issys_modifiable=false
表示这个参数不能在直接修改在内存中,需要加scope=spfile,重启后才能生效。

比如:
SQL> select name, isses_modifiable,issys_modifiable from v$parameter where
name='sga_max_size';
NAME ISSES ISSYS_MOD
------------------------------ ----- ---------
sga_max_size FALSE FALSE ##两个都为false
SQL> alter system set sga_max_size=900M;
alter system set sga_max_size=900M
*
第 1 行出现错误:
ORA-02095: 无法修改指定的初始化参数
SQL> alter system set sga_max_size=800M scope=spfile;
系统已更改。
恢复参数到默认值
SQL> alter system reset sga_max_size scope=spfile;
总结:
一般scope常用的参数是both和spfile。
扩展1:spfile 默认参数文件含义介绍

在Oracle数据库中,spfile(服务器参数文件)和pfile(文本参数文件)用于存储初始化参数。spfile参数带有前缀*,而pfile参数则不带。以下是一些常见的spfile参数及其含义:

  • db_name:这是数据库的名称,是在创建数据库时指定的。
  • compatible:用于指定数据库的兼容版本,允许数据库在旧版本的兼容模式下运行。
  • allow_resetlogs_corruption:危险参数,仅在紧急恢复情况下使用,可能会导致数据库损坏。
  • remote_login_passwordfile:定义密码文件的使用方式,有三种选项:none(不使用),shared(多个实例共享),exclusive(仅本实例使用)。
  • audit_file_dest:审计文件的存放位置。
  • background_dump_dest:后台进程日志的存放位置。
  • control_files:指定控制文件的位置。
  • core_dump_dest:核心转储文件的存放位置。
  • db_block_size:数据库的块大小,通常为8KB。
  • db_domain:数据库的域名,通常为空。
  • db_file_multiblock_read_count:指定单次I/O操作可以读取的块数。
  • db_recovery_file_dest:闪回恢复区的存放路径。
  • db_recovery_file_dest_size:闪回恢复区的大小。
  • dispatchers:配置共享服务器进程。
  • job_queue_processes:允许并发运行的作业进程数。
  • local_listener:本地监听服务的名称。
  • open_cursors:允许同时打开的游标数。
  • pga_aggregate_target:PGA的内存大小。
  • processes:允许并发运行的进程数。
  • sga_target:SGA的内存大小。
  • undo_management:Undo表空间的管理方式,通常为AUTO。
  • undo_tablespace:Undo表空间的名称。
  • user_dump_dest:用户进程转储文件的存放位置。

1.2 控制文件

1.2.1 控制文件存储的主要信息
DBID
数据库名称和SID标识
数据文件和日志文件列表
数据库创建的时间戳
表空间信息
当前重做日志文件序列号(scn)
归档日志信息
检查点信息
回滚段的起始与结束
备份数据文件信息
1.2.2 控制文件位置
select name from v$controlfile;

show parameter control_files;
1.2.3 控制文件管理
为了提高数据库的安全性,至少要为数据库建立两个控制文件,而且这两个文件最好分别放在不同的磁盘
中,这样可以避免产生由于某个磁盘故障而无法启动数据库的危险,该管理策略称为多路复用控制文件。
当多路复用控制文件某个磁盘发生故障导致其包含的控制文件损坏,数据库将被关闭或者发生异常,
此时可以用另一磁盘中保存的控制文件来恢复被损坏的控制位文件,然后再重启数据库,
达到保护控制文件的目的。

数据库建立时,一般会默认创建两个控制文件,我们可以手动的再创建多个控制文件且不要与默认的放在
同一个磁盘中,首先我们可以修改control_files参数来增加控制文件。
扩展2:可以dump一个trc分析一下控制文件内容

大致有六部分:通用文件头、 数据库信息、检查点进度记录CHECKPOINT PROGRESS RECORDS、扩展的数据库信息、重做线程、日志文件,有兴趣可以自己了解一下,这里就不整理了。

实战一:重建控制文件

1.备份 backup controlfile

# 数据库打开时是不能直接操作系统界别cp控制文件的,可以使用backup语句
alter database backup controlfile to '/u01/app/oracle/oradata/PROD/control.ctl.bk';

2.backup to trace

1)#在 mount 或 open 模式生成一个 trace 文件,包含重建控制文件的语句  
alter database backup controlfile to trace;
#默认文件内容保存在 Default Trace File 中 
select * from v$diag_info;

2)#查看控制文件位置:show parameter control files;
select name from v$controlfile;
#存到自己起的文件名里control.trc
alter database backup controlfile to trace as '/u01/app/oracle/oradata/PROD/control.trc';
  1. 恢复控制文件方法

单个文件损毁,通过简单的在操作系统上复制解决

2.所有的控制文件丢失:

①如果有 binary 控制文件备份,利用备份恢复控制文件

②如果没有备份,利用 trace 脚本文件重新创建控制文件(代价:丢失归档记录信息和 RMAN 备份信息)

#Mount 或 open 下生成 trace 脚本  可以cat more查看一下,后面恢复会执行这个control.trc
alter database backup controlfile to trace as '/u01/app/oracle/oradata/PROD/control.trc';

#正常关库,模拟全部控制文件丢失 启动数据库实例报错 
    #shutdown immediate; 
    #rm control0[1-3].ctl
    #startup
    
#nomount 状态 执行重建控制文件语句
#OS:more control.trc
#SQL:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS NOARCHIVELOG
 MAXLOGFILES 16
 MAXLOGMEMBERS 3
 MAXDATAFILES 100
 MAXINSTANCES 8
 MAXLOGHISTORY 292
LOGFILE
 GROUP 1 '/u01/app/oracle/oradata/PROD/redo01.log' SIZE 50M BLOCKSIZE 512,
 GROUP 2 '/u01/app/oracle/oradata/PROD/redo02.log' SIZE 50M BLOCKSIZE 512,
 GROUP 3 '/u01/app/oracle/oradata/PROD/redo01.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
 '/u01/app/oracle/oradata/PROD/system01.dbf',
 '/u01/app/oracle/oradata/PROD/sysaux01.dbf',
 '/u01/app/oracle/oradata/PROD/undotbs01.dbf',
 '/u01/app/oracle/oradata/PROD/users01.dbf',
 '/u01/app/oracle/oradata/PROD/example01.dbf',
 '/u01/app/oracle/oradata/PROD/tbs16k.dbf'
CHARACTER SET AL32UTF8
;
#这时数据库已在 mount 下 

#open 打开数据库 
ALTER DATABASE OPEN; 
#查看有无临时文件
SQL> select * from dba_temp files

#添加临时数据文件信息 
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/PROD/temp01.dbf' 
 SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;

---如果使用的是 noresetlogs,直接 open 数据库就可以了:

SQL>alter database open;

---如果使用的是 resetlogs 创建的控制文件,那么我们就需要使用:

SQL>alter database open resetlogs;

来打开 DB.

(3)添加 TEMP 表空间

SQL>ALTER TABLESPACE TEMP ADD TEMPFILE '/oracle/app/oracle/oradata/PRODdb/temp01.dbf' size 100M;

v$datafile视图显示的是数据文件(data files),而临时文件(temp files)通常是在v$tempfile视图中查看的。

显示TEMP表空间中所有的临时文件

SELECT file_name, tablespace_name, bytes
FROM dba_temp_files;

说明:这个重建控制文件的过程主要有两大部分内容:

第一部分是脚本中的可见信息:

1)定义 db_name,

2)指定几个参数限定控制文件的最大值,

3)在线日志的物理信息,

4)数据文件的物理信息,

5)使用的字符集。

第二部分是隐含的不可见信息,比如 SCN信息,重建复制了当前所有数据文件头部的最新 SCN

信息复制到了控制文件中。以便接下来打开数据库。

SQL> select file#,checkpoint_change# from v$datafile;

SQL> select file#,checkpoint_change# from v$datafile_header;

什么时候用 RESETLOGS 和 NORESETLOGS 几种情况的说明
  • RESETLOGS:用于不完全恢复、丢失REDOLOG文件或使用备份控制文件的情况。
  • NORESETLOGS:用于完全恢复且控制文件和所有日志文件完好无损的情况。

1.3 归档文件

1.3.1 开归档
mkdir -p /archivelog
 ls -ld /archivelog
 alter system set log_archive_dest_1='location=/archivelog';
 show parameter log_archive_dest_1
 #静态参数,scope=spfile,重启后生效
 alter system set log_archive_format='arch_PROD_%t_%s_%r.dbf' scope=spfile;
 shutdown immediate;
 startup mount;
 archive log list
 alter database archivelog;
 alter database open;
 archive log list;

实战二:创建Catalog恢复目录

Catalog用于存储RMAN备份信息,并提供更高级的备份和恢复管理功能。确保定期备份恢复目录数据库以避免数据丢失。

方法1:在本地数据库上创建Recovery Catalog
1.1 启动监听器

首先确保监听器已经启动并且运行正常:

有效的配置
lsnrctl start
lsnrctl status
1.2 配置tnsnames.ora

确保能够连接到目标数据库和恢复目录数据库。在$ORACLE_HOME/network/admin目录下配置tnsnames.ora文件:

cd $ORACLE_HOME/network/admin
vi tnsnames.ora

添加如下内容:

EMREP =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = emrep)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
1.3 创建表空间和用户

连接到恢复目录数据库并创建表空间和用户:

sqlplus sys/oracle@emrep as sysdba

执行以下SQL命令:

CREATE TABLESPACE rmantbs 
DATAFILE '/oradata/orcl/rmantbs.dbf' 
SIZE 50M 
AUTOEXTEND ON;

CREATE USER rman IDENTIFIED BY rman 
DEFAULT TABLESPACE rmantbs;

GRANT CONNECT, RESOURCE, RECOVERY_CATALOG_OWNER TO rman;
1.4 创建Catalog

使用RMAN连接到恢复目录数据库并创建Catalog:

rman catalog rman/rman@emrep

RMAN> CREATE CATALOG;

验证Catalog创建成功:

sqlplus rman/rman@emrep

SELECT table_name, tablespace_name FROM user_tables;
1.5 注册目标数据库

使用RMAN连接到目标数据库并注册到恢复目录:

rman target / catalog rman/rman@emrep

RMAN> REGISTER DATABASE;

验证目标数据库是否已注册:

sqlplus rman/rman@emrep

SELECT * FROM rc_database;
方法2:在远程数据库上创建Recovery Catalog

单独的恢复目录,能有效提高安全性。

2.1 创建一个单独的数据库(prod)

假设您已经在prod库中创建了恢复目录数据库。我们要对orcl库进行备份,即orcl是目标数据库,prod是恢复目录数据库。

2.2 在prod库中创建表空间

连接到prod数据库:

sqlplus sys/oracle@prod as sysdba

创建表空间:

CREATE TABLESPACE rc_data 
DATAFILE '/u01/app/oracle/oradata/prod/rc_data01.dbf' 
SIZE 100M 
AUTOEXTEND ON 
NEXT 10M 
MAXSIZE UNLIMITED;
2.3 创建用户并授予权限
CREATE USER rc_admin IDENTIFIED BY rc_admin 
DEFAULT TABLESPACE rc_data;

GRANT CONNECT, RESOURCE, RECOVERY_CATALOG_OWNER TO rc_admin;
2.4 在RMAN中创建Catalog
rman catalog rc_admin/rc_admin@prod

RMAN> CREATE CATALOG TABLESPACE rc_data;
2.5 注册目标数据库

连接并注册目标数据库:

rman target sys/oracle@orcl catalog rc_admin/rc_admin@prod

RMAN> REGISTER DATABASE;
-- 手动同步Catalog
RMAN> RESYNC CATALOG;
2.6 取消Catalog

如果需要取消注册,可以执行以下命令:

rman target sys/oracle@orcl catalog rc_admin/rc_admin@prod

RMAN> UNREGISTER DATABASE;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1958180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端面试宝典【vue篇】【3】

欢迎来到《前端面试宝典》,这里是你通往互联网大厂的专属通道,专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习,无论是一线大厂还是初创企业的面试,都能自信满满地展现你的实力。 核心特色: 独家实战案例:每一期专栏都将深入剖析真实的前端面试案例,从基础知…

phpenv安装redis扩展

1、下载dll文件 https://pecl.php.net/package/redis 我的是php8.1, 安装最新版的 DLL文件 &#xff12;、将dll文件放到php安装目录的ext目录下 3、在php.ini中增加配置后重启服务 [Redis] extension php_redis.dll

自研Vue3开源Tree组件:节点拖拽bug修复

当dropType为after&#xff0c;且dropNode为父节点时&#xff0c;bug出现了&#xff1a; bug原因&#xff1a;插入扁平化列表的位置insertIndex计算的不对&#xff1a; 正确的逻辑&#xff0c;同inner要算上子孙节点所占的位置&#xff1a; bug修复&#xff01;

vue里给img的src绑定数据失效

起因 在v-for遍历数据时想要通过给img的src单向绑定 图片路径时出现问题 解决过程 上网查说是webpack构建时识别不到&#xff0c;直接不单绑数据&#xff0c;写死试试看 解决方案 直接require导入图像文件模块

【C语言】VS的实用调试技巧

0. 前言 VS(Visual Studio)是集成开发环境&#xff0c;其内置了多种调试工具和技巧帮助开发人员在开发过程中解决问题。包含断点、监视窗口、自动窗口、调用堆栈等&#xff0c;通过这些技巧&#xff0c;开发人员可以有效地调试和解决程序中的问题。我们在VS编译器上写代码&…

yolov10在地平线旭日X3派上的部署和测试(Python版本和C++版本)

0、搭建开发环境 当前的测试根据一下的步骤并修改源码是可以实现yolov8的板端运行&#xff0c;如果不想再搭建环境和测试代码bug上浪费更多的时间可以直接获取本人的测试虚拟机&#xff0c;所有的测试代码、虚拟环境和板端测试工程以全部打包到了虚拟机&#xff0c;需要的可以…

微前端概念

微前端作用 大型应用程序的拆分独立的前端子应用降低程序复杂性&#xff0c;提高开发效率 微前端能力 js隔离css隔离元素隔离生命周期预加载数据通信应用跳转多层嵌套… 微前端实现方案 IframeSingle-spaQiankunMicro-app Iframe <iframe src"https://www.examp…

【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫

1 绪论 1.1 设计背景及目的 猫眼电影作为国内知名的电影信息网站&#xff0c;拥有海量的电影信息、票房数据和用户评价数据。这些数据对于电影市场的研究和分析具有重要意义。然而&#xff0c;由于数据的复杂性和数据来源的多样性&#xff0c;如何有效地采集、存储和展示这些数…

巴黎OSGB倾斜摄影数据详细介绍

北京时间7月27日&#xff0c;第33届夏季奥林匹克运动会开幕式在法国巴黎举行&#xff0c;巴黎成为继伦敦后&#xff0c;第二个三度举办夏季奥运会的城市&#xff0c;此次为法国相隔100年后再次举办夏季奥运会&#xff0c;前两次分别在1900年及1924年。开幕式上&#xff0c;巴黎…

Shader入门精要总结(二)矩阵

1. 矩阵乘法 一个rn的矩阵A和一个nc的矩阵B相乘&#xff0c;它们的结果AB将会是一个rc大小的矩阵&#xff0c;不满足此规则不能相乘 矩阵乘法满足一些性质 矩阵乘法不满足交换律 即AB≠BA矩阵乘法满足结合律 (AB)CA(BC) 2. 特殊矩阵 方块矩阵 指行和列数目相等的矩阵&#…

【WEB安全】 PHP基础文件知识完整教学中(超详细)

文章目录​​​​​​​ 1.PHP 文件处理 PHP 操作文件 PHP 文件打开/读取/关闭 ​​​​​​​文件的 复制 删除 重名 ​​​​​​​文件的判断 2.PHP获取文件属性 3.PHP目录操作 4.命名空间 PHP 命名空间可以解决以下两类问题&#xff1a; 5.正则表达式 正则表达…

网站后端管理和构建java项目的工具-Maven

maven是用于管理和构建java项目的工具。 管理Jar包 无论是使用eclipse、IDEA创建的maven项目&#xff0c;格式都是统一的。 不同开发工具创建的maven项目兼容。 test是对main测试的代码。main中的resources中放置配置文件。 对于Maven&#xff0c;一个Maven项目就是一个对象…

《基于深度学习的目标检测算法综述论文的解读》

论文阅读&#xff1a;《基于深度学习的目标检测算法综述论文的综述》的总结 作者 &#xff1a; 包晓敏&#xff0c;王思琪 ( 浙江理工大学 信息学院&#xff0c;浙江 杭州 310018) 本文章介绍了两阶段深度学习算法和单阶段深度学习算法。 一、目标检测的定义&#xff1a; 目…

Qt Designer,仿作一个ui界面的练习(二):部件内容的填充

有了完成了布局的基本框架设计之后&#xff0c;对各个部件逐步完成内容的填充。 一、还是从顶边栏开始&#xff1a; 1、在顶边栏的topLogo里面拖入一个QLabel&#xff08;标签&#xff09;&#xff0c;命名为logoImage&#xff0c;删除标签的文字。 2、右键点击topLogo&#x…

[Linux安全运维] LAMP 环境搭建保姆级教学(Apache + MySQL + PHP) ~~

LAMP LAMP 是一种网站技术&#xff0c;可以实现动态的网站页面部署。 1. LAMP概述 1 .1构成 Linux: 简介: Linux 是一种开源的操作系统&#xff0c;以其稳定性和安全性而著称。在 LAMP 堆栈中&#xff0c;它作为服务器操作系统运行。作用: 为应用程序提供一个稳定、安全的运…

为了方便写CURD代码,我在UTools写了个插件SqlConvert来生成代码!

-1. 前言 为了方便摸鱼&#xff0c;我之前写过一个通过sql生成代码的工具&#xff0c;但是服务器到期了&#xff0c;也就懒得重新部署了。 技术框架是 SpringBoot MybatisPlus Velocity Vue ElementUI Sql-ParseeSql-Parser-ui 0. Utools应用安装 官网地址: https://u.too…

达梦数据库归档介绍

一、什么是归档 数据库归档是一种数据管理策略&#xff0c;它涉及将旧的、不经常访问的数据移动到一个单独的存储设备&#xff0c;以便在需要时可以检索&#xff0c;同时保持数据库的性能和效率。 归档的主要目标是为了释放数据库中的空间&#xff0c;以便更有效地利用高性能…

如何用PostMan按照规律进行循环访问接口

①设置动态变量 步骤一: 设置环境变量 1. 创建环境变量集合 在 Postman 左上角选择 "环境"&#xff0c;然后点击 "添加" 来创建一个新的环境变量集合。给它起一个名称&#xff0c;比如 "uploadDemo". 2. 添加初始变量 在新创建的环境变量集…

校车购票小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;我的乘车信息管理&#xff0c;车辆信息管理&#xff0c;座位管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;车辆信息&#xff0c;我的 开发系统…

electron 主进程和渲染进程

最近在整理electron 相关的项目问题&#xff0c;对自己来说也是温故知新&#xff0c;也希望能对小伙伴们有所帮助&#xff0c;大家共同努力共同进步。加油&#xff01;&#xff01;&#xff01;&#xff01; 虽然最近一年前端大环境不好&#xff0c;但是大家还是要加油鸭&#…