ORACLE 12C PDB 维护基础知识介绍

ORACLE 12C PDB 维护基础知识介绍

什么是ORACLE 12C PDB

ORACLE 12C PDB 是Oracle数据库12C版本中提供的一种新的数据库容器化技术,其全名为“Pluggable Database”. And PDB是一个可以独立部署、管理和维护的数据库对象,它是若干个Pluggable Database的容器,每个容器内可以有独立的用户和数据,同时也可以与其他容器共享配置和数据。这种架构提供了更好的资源隔离和灵活性,并使得应用程序更容易部署和维护。

PDB维护的基础知识

在ORACLE 12C PDB维护工作中,需要了解以下的基础知识:

1. 连接PDB

通过下述命令可以连接PDB:

sqlplus sys/oracle@HOSTNAME:PDBNAME as sysdba

其中HOSTNAME为主机名,PDBNAME为PDB的名称。

2. 查看PDB状态

通过下述命令可以查看PDB的状态:

select name, open_mode from v$pdbs;

其中,name为PDB的名称,open_mode为PDB的开启模式。

3. 开启或关闭PDB

通过下述命令可以开启或关闭PDB:

alter pluggable database PDBNAME open/close;

其中,PDBNAME为PDB的名称。

4. 备份和恢复PDB

备份PDB的方法和备份传统数据库的方法类似,其中需要注意:

  1. 需要备份PDB及其所在的Container Database(CDB),因为CDB保存了PDB的元数据和配置信息。

  2. 为每个PDB分别备份,可以使用expdp命令。

例如:

expdp username/password@PDBNAME directory=BACKUP_DIR dumpfile=PDBNAME_backup.dmp logfile=PDBNAME_backup.log

恢复PDB的命令如下:

impdp username/password@PDBNAME directory=BACKUP_DIR dumpfile=PDBNAME_backup.dmp logfile=PDBNAME_restore.log

5. 移动PDB

移动PDB的方法和移动传统数据库的方法类似,其中需要注意:

  1. 使用dbms_pdb.desist以及dbms_pdb.deregister命令,使得PDB从源CDB中移除。

  2. 使用dbms_pdb.register以及dbms_pdb.startup命令,将PDB添加到目标CDB中。

例如:

-- 源CDB
sqlplus sys/oracle@SOURCE_CDB as sysdba
SQL> alter pluggable database PDBNAME close immediate;
SQL> execute dbms_pdb.desist('PDBNAME');
SQL> execute dbms_pdb.deregister('PDBNAME');

-- 目标CDB
sqlplus sys/oracle@TARGET_CDB as sysdba
SQL> execute dbms_pdb.register('PDBNAME','/u01/app/oracle/oradata/12c/pdb/PDBNAME.xml');
SQL> alter pluggable database PDBNAME open;

示例1:移动PDB

假设目前有一个PDB名为“mydb”,需要从旧的CDB(OLD_CDB)迁移到新的CDB(NEW_CDB)中,迁移步骤如下:

  1. 在源CDB中关闭PDB,然后移除它。
sqlplus sys/oracle@OLD_CDB as sysdba
SQL> alter session set container=mydb;
SQL> alter pluggable database mydb close immediate;
SQL> execute dbms_pdb.desist('mydb');
SQL> execute dbms_pdb.deregister('mydb');
  1. 将PDB的所有数据文件和xml文件复制到目标CDB服务器上后,在目标CDB上进行注册,并以非容器模式打开PDB。
sqlplus sys/oracle@NEW_CDB as sysdba
SQL> execute dbms_pdb.register('mydb','/u01/app/oracle/oradata/12c/pdb/mydb.xml');
SQL> alter pluggable database mydb open;
SQL> exit

示例2:备份PDB

假设需要对名为PDB1的PDB进行备份操作,备份的细节如下:

  1. 在RMAN中备份PDB及其所在的CDB,并记录备份信息:
rman target sys/oracle@CDB1 auxiliary sys/oracle@CDB2
RMAN> backup pluggable database PDB1 format '/backup/%d_%U' plus archivelog tag='PDB1';
RMAN> exit
  1. 使用expdp命令备份PDB内的数据:
expdp username/password@PDB1 directory=BACKUP_DIR dumpfile=PDB1_backup.dmp logfile=PDB1_backup.log
  1. 恢复PDB1的步骤:

a. 使用impdp命令将数据恢复到目标PDB中。

impdp username/password@PDB1 directory=BACKUP_DIR dumpfile=PDB1_backup.dmp logfile=PDB1_restore.log

b. 更改目标PDB的状态,并打开它。

sqlplus sys/oracle@CDB1 as sysdba
SQL> alter session set container=PDB1;
SQL> alter pluggable database PDB1 open;

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ORACLE 12C PDB 维护基础知识介绍 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • MYSQL SQL查询近7天一个月的数据的操作方法

    要查询MySQL数据库中近7天或一个月的数据,可以使用Date函数和Interval函数来实现。 查询近7天的数据 可以使用以下SQL语句查询近7天的数据: SELECT * FROM tableName WHERE createTime>=DATE_SUB(curdate(),INTERVAL 7 DAY); 其中,tableName是要查询的数据表…

    database 2023年5月22日
    00
  • SQL Server出现System.OutOfMemoryException异常的解决方法

    SQL Server出现System.OutOfMemoryException异常的解决方法 当客户端访问 SQL Server 数据库时,有时会出现 System.OutOfMemoryException 异常,本篇文章将介绍一些解决方法。 解决方法 方法一:增加可用的物理内存和虚拟内存 在 SQL Server 中,可能会出现由于物理内存和虚拟内存不足而…

    database 2023年5月21日
    00
  • 创建动态MSSQL数据库表

    创建动态MSSQL数据库表的完整攻略如下: 1. 创建表 创建表需要用到以下SQL代码: CREATE TABLE {表名} ({列名1} {数据类型1}, {列名2} {数据类型2}, …); 其中,花括号内的内容需要替换成实际的表名、列名和对应数据类型。例如,创建一个名为”students”的表,包含”id”(整数类型)、”name”(字符串类型)和…

    database 2023年5月21日
    00
  • WMware redhat 5 oracle 11g 安装方法

    安装 VMware Workstation 第一步,需要准备好 VMware Workstation 软件包,并在 Windows 中进行安装。 第二步,启动 VMware Workstation,创建一个新的虚拟机。在新建虚拟机的过程中,选择 Red Hat EL 5 作为虚拟机操作系统。 第三步,设置硬件参数。建议在最小硬件要求的基础上增加一些内存和磁盘…

    database 2023年5月22日
    00
  • Mysql中大小写敏感问题导致的MySql Error 1146 Tabel doen’t exist错误

    在MySQL中,数据库名称、表名和列名默认是不区分大小写的,这意味着在创建表之后,您可以使用大写或小写字母任意组合引用相同的表名或列名,MySQL会自动识别并引用相应的对象。但是,在某些情况下,您可能会遇到MySQL错误代码1146,指示指定的表不存在,其中一个常见的原因是大小写问题。 下面是调试此问题的完整攻略: 验证表名是否正确 首先,请确保您正在正确拼…

    database 2023年5月18日
    00
  • 如何使用Python将数据插入到数据库中?

    在Python中,可以使用多种方式将数据插入到数据库中,包括使用标准库中的sqlite3模块、使用第三方库如pymysql、psycopg2等。以下是使用sqlite3模块和pymysql库将插入到数据库中的完整攻略: 使用sqlite3模块将数据插入到数据库中 sqlite3模块是Python标准库中的一个模块,用于与SQLite数据库进行交互。以下是使用…

    python 2023年5月12日
    00
  • MySQL中IO问题的深入分析与优化

    MySQL中IO问题的深入分析与优化 1. 什么是MySQL中的IO问题 在MySQL中,IO问题通常是由存储引擎负责。存储引擎是MySQL的一个核心组成部分,它负责数据的读写,因此在性能优化的过程中,存储引擎的IO处理是一个非常重要的方面。 当MySQL执行一个查询时,存储引擎需要从磁盘中读取数据,并将它们加载到内存中。这个过程中,在硬盘与内存之间传输的数…

    database 2023年5月19日
    00
  • Mysql两表联合查询的四种情况总结

    下面是详细讲解“Mysql两表联合查询的四种情况总结”的完整攻略。 简介 Mysql联合查询是指在多个表中查询出相关联的数据,并将这些数据组合成一个数据集合。 一般常见的联合查询有两个表之间的连接查询和两个表的全集查询,而这两种查询又可以分成内联接、左联接、右联接、全联接等四种情况。下面我们将分别介绍这四种情况的使用方法。 内联接 内联接是指仅显示两个表中相…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部