1. 用户管理模式下的冷备份
1.1. 通过数据库相关视图查询
查实例
select instance_name,version,status,archiver,database_status from v$instance;
查数据库
select dbid,name,log_mode from v$database;
查数据文件状态
select file_name,tablespace_name,status,online_status from dba_data_files;
查看数据文件
select name from v$datafile;
查看临时文件
select name from v$tempfile;
查看日志文件
select member from v$logfile;
查看控制文件
select name from v$controlfile;
1.2. 关闭数据库,启动数据库到mount状态,关闭归档模式
SYS@hfzcdb> alter system checkpoint;
SYS@hfzcdb> shutdown immediate
SYS@hfzcdb> startup mount;
SYS@hfzcdb> alter database noarchivelog;
SYS@hfzcdb> alter database open;
-- 创建备份目录
SYS@hfzcdb> host mkdir /backup/hfzcdb20230327
生成复制文件命令
SQL> select 'host cp ' || name || ' hfzcdbbak2022108' from v$controlfile;
也可以写个 union all 语句
select 'host cp ' || name || ' &dir' from v$controlfile
union all
select 'host cp ' || name || ' &dir' from v$datafile
union all
select 'host cp ' || member || ' &dir' from v$logfile
union all
select 'host cp ' || name || ' &dir' from v$tempfile
/
密码文件:
host cp /oracle/app/oracle/product/19c/db_1/dbs/orapwfgzcdb &dir
参数文件:
create pfile = '&dir/initfgzcdb.ora' from spfile;
1.3. 关库
shutdown immediate
1.4. 拷文件
host cp /oradata/fgzcdb/control01.ctl /backup/fgzcdb2022108
host cp /oradata/fgzcdb/control02.ctl /backup/fgzcdb2022108
host cp /oradata/fgzcdb/system01.dbf /backup/fgzcdb2022108
host cp /oradata/fgzcdb/sysaux01.dbf /backup/fgzcdb2022108
host cp /oradata/fgzcdb/undotbs01.dbf /backup/fgzcdb2022108
host cp /oradata/fgzcdb/users01.dbf /backup/fgzcdb2022108
host cp /oradata/fgzcdb/fgedu01.dbf /backup/fgzcdb2022108
host cp /oradata/fgzcdb/redo01.log /backup/fgzcdb2022108
host cp /oradata/fgzcdb/redo02.log /backup/fgzcdb2022108
host cp /oradata/fgzcdb/redo03.log /backup/fgzcdb2022108
host cp /oradata/fgzcdb/temp01.dbf /backup/fgzcdb2022108
host cp /oracle/app/oracle/product/19c/db_1/dbs/orapwfgzcdb &dir
create pfile = '&dir/initfgzcdb.ora' from spfile;
1.5. 启动数据库
归档模式,数据库打开:
SYS@hfzcdb> alter system checkpoint;
SYS@hfzcdb> shutdown immediate
SYS@hfzcdb> startup mount;
SYS@hfzcdb> alter database archivelog;
SYS@hfzcdb> alter database open;
2. 用户管理模式下的热备份
确保数据库处于归档模式:这是热备份的前提条件。可以通过以下命令查看和设置归档模式:
archive log list
2.1. 整个数据库级别的热备份:
alter database begin backup;
-- 拷贝所有的 datafile 到备份目录
alter database end backup; -- 可以写成脚本自动备份:
alter database begin backup;
start &script
alter database end backup;
2.2. 基于表空间的热备
-- 开始备份
alter tablespace tablespace_name begin backup;
##拷贝 tablespace_name 表空间的数据文件到备份目录
-- 结束备份
alter tablespace tablespace_name end backup;
可以写脚本
select 'alter tablespace '|| tablespace_name ||' begin backup ;' ||
chr(10)||'host cp ' || file_name || ' &dir ' ||
chr(10)||'alter tablespace '|| tablespace_name || ' end backup;'
from dba_data_files order by tablespace_name;
alter tablespace tablespace_name begin backup 时完成的任务有哪些?
a、检查点事件发生,检查点通知 dbwn 将该表空间上所有的脏数据被写入到磁盘
b、在数据文件头部冻结当前检查点事件发生时的 scn 号
c、所有发生变化数据块的完整镜像(修改前后)被写入到 redo log 中
d、允许该表空间内数据的正常读写
2.3. 控制文件的热备
mkdir -p hfzcdbbak
alter database backup controlfile to '/backup/hfzcdb/control.bak.2022108';
alter database backup controlfile to trace as '/backup/hfzcdb/control.trc.2022108';
什么情况下控制文件发生变化情况
alter database [add |drop] logfile
alter database [add |drop] logfile member
alter database [add |drop] logfile group
alter database [archivelog |noarchivelog]
alter database rename file
create tablespace
alter tablespace [add | rename] datafile
alter tablespace [read write | read only]
drop tablespace
2.4. 备份参数文件和口令文件
备份参数文件和口令文件对它们的备份不是必须的,但是为了方便的还原它们,最好还是备份了;
参数文件的热备
create pfile from spfile ;
create pfile = '<dir>' from spfile; create pfile from spfile;
create pfile = '/backup/fgzcdb/initfgzcdb.ora' from spfile;
口令文件,为了备份口令文件,保存用来创建它的命令的一个副本。
如:
orapwd file=$ORACLE_HOME/dbs/orapwd<SID> password=oracle
其中<SID>是实例名称。如果口令文件某个时刻被损坏,那么简单运行该脚本来重新创建它。
- windows 系统下
-
- oracle 口令文件在:$ORACLE_HOME/database 目录下;
- 命名规则为:PWD$SID.ora
- linux 系统下
-
- oracle 口令文件在:$ORACLE_HOME/dbs 目录下;
- 命名规则为:orapw$SID
注意:在 linux 下这里的 SID 要注意大小写,要和数据库的一致;不然用口令方式无法连接;
orapwd file=/oracle/app/oracle/product/19c/db_1/dbs/orapwhfzcdb1 password=HFEDU-123
Oracle12C 开始增强了密码验证函数:ora12c_verify_function
Password must contain at least 8 characters.
关于口令文件:
口令文件中存放 sysdba/sysoper 用户的用户名及口令,允许用户通过口令文件验证,在数据库未启动之前登陆,从而启动数据库。
如果没有口令文件,在数据库未启动之前就只能通过操作系统认证。
使用 Rman,很多时候需要在 nomount,mount 等状态对数据库进行处理,所以通常要求 sysdba 权限.
如果属于本地 DBA 组,可以通过操作系统 认证登陆。
如果是远程 sysdba 登陆,需要通过 passwordfile 认证。
ORACLE 有两种方式可以认证 sysdba/sysoper 用户:
1) 操作系统级认证-dba 权限组(linux /unix)和 ORA_DBA 组(win)
2) 口令文件认证。
两种方式有各自的开关:
1) sqlnet.ora 中 AUTHENTICATION_SERVICES 参数
2) spfile/pfile 中 remote_login_passwordfile 参数。
并且这两个开关互不矛盾,可以同时打开同时关闭或者只开一个。