首页 > 其他分享 >主库上克隆一个可读写的pdb,从库恢复过程

主库上克隆一个可读写的pdb,从库恢复过程

时间:2023-02-07 17:48:19浏览次数:50  
标签:主库 database app alter SQL oracle 从库 pdb u01

环境:
Os:Centos 7
db:19.3.0.0
主从:dataguard 1主1从

1.主库上克隆一个可读写的pdb

SQL>create pluggable database pdb01 from pdb
file_name_convert = ('/u01/app/oracle/oradata/SLNNGK/pdb/', '/u01/app/oracle/oradata/SLNNGK/pdb01/')
path_prefix= '/u01/app/oracle/oradata/SLNNGK/pdb';

 

打开新添加的pdb
SQL>alter pluggable database pdb01 open;

 

查看数据文件

SQL>alter session set container=pdb;
SQL>Set linesize 1000;
SQL>Column file_name format a64;
SQL>Column file_id format 99;
SQL>Column tablespace_name format a10;
SQL>Select file_name,file_id,tablespace_name From dba_data_files;
SQL> Select file_name,file_id,tablespace_name From dba_data_files;

FILE_NAME                                                        FILE_ID TABLESPACE
---------------------------------------------------------------- ------- ----------
/u01/app/oracle/oradata/SLNNGK/pdb01/system01.dbf                     14 SYSTEM
/u01/app/oracle/oradata/SLNNGK/pdb01/sysaux01.dbf                     15 SYSAUX
/u01/app/oracle/oradata/SLNNGK/pdb01/undotbs01.dbf                    16 UNDOTBS1
/u01/app/oracle/oradata/SLNNGK/pdb01/users01.dbf                      17 USERS
/u01/app/oracle/oradata/SLNNGK/pdb01/tps_pdb01.dbf                    18 TPS_PDB

 

2.从库打开新增的pdb
SQL> alter session set container=pdb01;
SQL> alter pluggable database pdb01 open;
从日志文件看报如下的错误:

ORA-01111: name for data file 14 is unknown - rename to correct file

查看数据字典发现没有按照设想的转换过来

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

     FILE# NAME
------------------------------------------------------------------
        14 /u01/app/oracle/product/19.3.0.0/db_1/dbs/UNNAMED00014
        15 /u01/app/oracle/product/19.3.0.0/db_1/dbs/UNNAMED00015
        16 /u01/app/oracle/product/19.3.0.0/db_1/dbs/UNNAMED00016
        17 /u01/app/oracle/product/19.3.0.0/db_1/dbs/UNNAMED00017
        18 /u01/app/oracle/product/19.3.0.0/db_1/dbs/UNNAMED00018

 

3.从库创建新的pdb目录
su - oracle
mkdir -p /u01/app/oracle/oradata/slavea/pdb01

 

4.从库手工修改数据文件

[oracle@slavea dbs]$ sqlplus /nolog
SQL> connect / as sysdba
Connected.
SQL> show con_name;

CON_NAME
------------------------------
CDB$ROOT

SQL> alter database recover managed standby database cancel;

Database altered.

SQL> alter session set container=pdb01;

Session altered.



SQL>alter system set standby_file_management=manual; 
SQL>alter database create datafile '/u01/app/oracle/product/19.3.0.0/db_1/dbs/UNNAMED00014' as '/u01/app/oracle/oradata/slavea/pdb01/system01.dbf';
SQL>alter database create datafile '/u01/app/oracle/product/19.3.0.0/db_1/dbs/UNNAMED00015' as '/u01/app/oracle/oradata/slavea/pdb01/sysaux01.dbf';
SQL>alter database create datafile '/u01/app/oracle/product/19.3.0.0/db_1/dbs/UNNAMED00016' as '/u01/app/oracle/oradata/slavea/pdb01/undotbs01.dbf';
SQL>alter database create datafile '/u01/app/oracle/product/19.3.0.0/db_1/dbs/UNNAMED00017' as '/u01/app/oracle/oradata/slavea/pdb01/users01.dbf';
SQL>alter database create datafile '/u01/app/oracle/product/19.3.0.0/db_1/dbs/UNNAMED00018' as '/u01/app/oracle/oradata/slavea/pdb01/tps_pdb01.dbf'; 

SQL>alter session set container=cdb$root;

SQL>alter system set standby_file_management=auto;

 

5.重启动从库
接着上面的步骤尝试应用日志
SQL> alter database recover managed standby database using current logfile disconnect from session;
alter database recover managed standby database using current logfile disconnect from session
*
ERROR at line 1:
ORA-01153: an incompatible media recovery is active

提示报错误,下面重启动数据库

SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area 3992977296 bytes
Fixed Size                  9142160 bytes
Variable Size             771751936 bytes
Database Buffers         3204448256 bytes
Redo Buffers                7634944 bytes
Database mounted.
Database opened.
SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB                            MOUNTED
         4 PDB01                          MOUNTED

尝试打开新添加的pdb
SQL> alter pluggable database all open;
alter pluggable database all open
*
ERROR at line 1:
ORA-01147: SYSTEM tablespace file 14 is offline
发现报错误

 

6.从库恢复处理

SQL>alter session set container=cdb$root;
SQL>alter system set standby_file_management=auto;
SQL>alter database recover managed standby database cancel;
SQL>alter session set container=pdb01;
SQL>alter pluggable database disable recovery; ##禁用自恢复

12C之后的新特新通过网络服务进行恢复,tnsslnngk是tns服务名


RMAN> run{
set newname for datafile 14 to '/u01/app/oracle/oradata/slavea/pdb01/system01.dbf';
set newname for datafile 15 to '/u01/app/oracle/oradata/slavea/pdb01/sysaux01.dbf';
set newname for datafile 16 to '/u01/app/oracle/oradata/slavea/pdb01/undotbs01.dbf';
set newname for datafile 17 to '/u01/app/oracle/oradata/slavea/pdb01/users01.dbf';
set newname for datafile 18 to '/u01/app/oracle/oradata/slavea/pdb01/tps_pdb01.dbf ';
restore pluggable database pdb01 from service tnsslnngk ;
switch datafile all;
}

 

重启数据库
SQL> alter session set container=cdb$root;
SQL>shutdown immediate;
SQL> startup mount;

启用pdb自恢复
SQL> alter session set container=pdb01;
SQL> alter pluggable database enable recovery;

重新应用日志
SQL> alter session set container=cdb$root;
SQL> alter database recover managed standby database using current logfile disconnect from session;

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
MOUNTED


打开数据库


SQL> alter database recover managed standby database cancel;
SQL> alter database open;
SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB MOUNTED
4 PDB01 MOUNTED
SQL> alter pluggable database all open;
SQL> alter database recover managed standby database using current logfile disconnect from session;

经过分析发现,dataguard 环境下,只有source pdb 是 READ ONLY,那么在primary 上执行创建pdb时,在 standby 上就能顺利创建.

 

标签:主库,database,app,alter,SQL,oracle,从库,pdb,u01
From: https://www.cnblogs.com/hxlasky/p/17099267.html

相关文章

  • 备库数据文件存在坏块,运用主库rman备份进行恢复
    文档课题:备库数据文件存在坏块,运用主库rman备份进行恢复.数据库:oracle11.2.0.4主机名:主库leo-oel150备库:leo-oel1511、模拟坏块1.1、备库备份[oracle@leo-oel151~]$rma......
  • mysql从库无法正常回放主库的sql语句原因总结
    1.从库回放时报1062错误ERROR1062(23000):Duplicateentry'100-100'forkey'c1'违反唯一约束主库能通过,从库不能通过,要注意主从上表结构与索引结构信息是否完全......
  • [Oracle19C 数据库管理] 创建PDB
    使用PDB$SEED模板创建PDB通过PDB$SEED创建PDB数据库,将会触发以下动作:将文件从PDB$SEED文件夹复制到新创建的PDB数据库文件夹中。创建表空间SYSTEMSYSAUXUNDO创......
  • python pdb调试使用方法 一
     终端中使用python-mpdb文件.py就可以启用pdb调试,常见操作命令为:l ---->查看代码n---->执行下一行(一行一行的执行)c---->继续执行(执行全部代码,相当于没......
  • python调试模块pdb:pdb基本用法(转)
    转载自:https://www.jianshu.com/p/fb5f791fcb18python调试:pdb基本用法(转)Edward_f0cusIP属地:台湾12016.01.0615:39:49字数767阅读73,778转自IBM开发......
  • 运用物理备库恢复主库truncate表的数据
    文档课题:运用物理备库恢复主库truncate表的数据.1、备库准备--备库开启flashbackdatabase.SQL>alterdatabaserecovermanagedstandbydatabasecancel;Databasealtere......
  • pdb异机恢复 RMAN-06813: could not translate pluggable database pdb01
    生产环境:centos7.6Oracle19c架构:rac+adgracpdb恢复测试。昨天从数据库删除了一个pdb,连文件一块删除。今天尝试恢复已删除的pdb数据。昨天晚上也已经进行过备份。进......
  • warning LNK4099: PDB 'vc100.pdb' was not found... 解决方案
    使用VS2010在编译得代码工程的时候,原本在debug下是没有问题,但是在release下编译始终会报:“warningLNK4099:PDB'vc100.pdb'wasnotfoundwith.....”在网上也查了,遇......
  • 19.13备库duplicate恢复新主库(二)
    问题描述:主备两个库不在同一个机房,此时想从这一套库中在复制一套可读可写的新库出来。网络带宽要求比较高,需要从备库中使用备份在起一个新库,也要测试下使用duplicate从备库......
  • 19.13备库备份恢复新主库(一)
    问题描述:主备两个库不在同一个机房,此时想从这一套库中在复制一套可读可写的新库出来。网络带宽要求比较高,需要从备库中使用备份在起一个新库,也要测试下使用duplicate从备库......