当前位置:文档之家› 通过Oracle数据库备份将本地数据库环境整体复制到云端

通过Oracle数据库备份将本地数据库环境整体复制到云端

通过Oracle数据库备份将本地数据库环境整体复制到云端
通过Oracle数据库备份将本地数据库环境整体复制到云端

通过数据库备份将本地数据库环境整体复制到云端.

将本地数据库迁移到云端有多种方法,如在Oracle Database 12中可以将某一个容器数据库方便、轻松的搬到云端(通过SQL Develop图形化、向导式迁移,实现一键式迁移);将本地数据库的备份在云端进行恢复,等等。有时我们需要将本地数据库的环境完整迁移到云端,如应用整体环境的云端化,在云端建立一个Standby数据库等。今天要介绍的主题就是将本地数据库的环境完整迁移到云端。

RMAN是Oracle数据库提供的功能强大的备份、恢复及管理的功能组件。我们将借助RMAN的Database Duplication功能来实现。

RMAN提供2种类型的数据库复制:

●Backup-based duplication

基于RMAN备份或拷贝进行数据库复制。

●Active database duplication

通过网络从活动的源数据库COPY到复制数据库,可以同时结合使用备份集(backup sets)或文件拷贝(image copy)。

Backup-based duplication又分为3种情形,

●连接到源数据库,但不连接到恢复目录(Backup-Based Duplication with a Target

Connection)

●不连接到源数据库,但连接到恢复目录(Backup-Based Duplication Without a Target

Connection)

●不连接到源数据库和恢复目录(Backup-Based Duplication Without a Target

Database and Recovery Catalog Connection)

我们要介绍和演示的就是Backup-based duplication的第3种情形:不连接到源数据库和恢复目录(Backup-Based Duplication Without a Target Database and Recovery Catalog Connection)。

为了节省些时间,下面的Backup-based duplication操作都是基于本地网络环境。

数据库环境说明:

●操作系统:Oracle Linux 7.1

●数据库:Oracle Database 12.1.2.0

源数据库(target db):SID_NAME =ORCL

要复制到的数据库(auxiliary db):SID_NAME =ORCL_DUP

操作步骤包括如下5步:

●源数据库的必要配置

●源数据库上通过RMAN进行备份

●准备要复制到的数据库(auxiliary db)

●启动rman复制数据库

●验证数据库复制结果

1.源数据库的配置

需要配置源数据库自动备份控制文件和spfile,在复制时要用到备份的spfile读取数据库的配置参数。

rman target sys/Wj#112233@//192.168.56.101/ORCL catalog C##rman/Wj#112233@//192.168.56.101/ORCL

configure controlfile autobackup on;

2.源数据库上通过RMAN进行备份

rman target sys/Wj#112233@//192.168.56.101/ORCL catalog C##rman/Wj#112233@//192.168.56.101/ORCL

backup database force plus archivelog;

(加上force参数,可以备份只读表空间等,备份的信息更全面。

加上plus archivelog参数,可以备份archivelog,复制时选择将archivelog中的数据也应用到要复制到的数据库中。

)

3.准备要复制到的数据库(auxiliary db)

源数据库(target db):SID_NAME =ORCL

要复制到的数据库(auxiliary db):SID_NAME =ORCL_DUP

3.1修改监听文件

本次操作是在同一操作系统环境中进行的,target db与auxiliary db用同一监听。修改监听文件,静态注册监听

vi /u01/app/oracle/product/12.1.0/dbhome_2/network/admin/listener.ora 原来内容为:

在前面增加内容:

重新启动监听,

lsnrctl start

3.2修改tnsnames.ora文件

vi /u01/app/oracle/product/12.1.0/dbhome_2/network/admin/tnsnames.ora

增加后的内容为:

3.3为auxiliary数据库创建参数文件

参数文件名称:initORCL_DUP.ora

Linux上建立目录:

mkdir -p /u04/app/oracle/product/12.1.0/dbhome_2/dbs

mkdir -p /u04/app/oracle/oradata/ORCL_DUP/pdborcl

mkdir -p /u04/app/oracle/oradata/ORCL_DUP/pdb8

mkdir -p /u04/app/oracle/oradata/ORCL_DUP/pdb3

mkdir -p /u04/app/oracle/oradata/ORCL_DUP/pdb2

mkdir -p /u04/app/oracle/oradata/ORCL_DUP/pdb1

mkdir -p /u04/app/oracle/oradata/ORCL_DUP/root

mkdir -p /u04/app/oracle/oradata/ORCL_DUP/root

mkdir -p /u04/app/oracle/oradata/ORCL_DUP/pdbseed

mkdir -p /u04/app/oracle/oradata/ORCL_DUP/catadb

vi /u04/app/oracle/product/12.1.0/dbhome_2/dbs/initORCL_DUP.ora 内容如下:

3.4创建口令文件

直接copy原口令文件

cp /u01/app/oracle/product/12.1.0/dbhome_2/dbs/orapwORCL

/u01/app/oracle/product/12.1.0/dbhome_2/dbs/orapwORCL_DUP

3.5启动auxiliary 数据库

export ORACLE_SID=ORCL_DUP

sqlplus / as sysdba

4.启动rman复制数据库

export ORACLE_SID=ORCL_DUP

运行rman,

rman

RMAN>connect auxiliary sys/Wj#112233

RMAN> duplicate database to ORCL_DUP backup location '/u02/oracle/arch' SPFILE

set control_files='/u04/app/oracle/oradata/ORCL_DUP/control01.ctl'

set db_file_name_convert='/u01/app/oracle/oradata/orcl','/u04/app/oracle/oradata/ORCL_DUP' ,'/u02/app/oracle/oradata/orcl/pdbseed','/u04/app/oracle/oradata/ORCL_DUP/pdbseed'

,'/u02/app/oracle/oradata/orcl/pdborcl','/u04/app/oracle/oradata/ORCL_DUP/pdborcl'

,'/u02/app/oracle/oradata/orcl/catadb','/u04/app/oracle/oradata/ORCL_DUP/catadb'

,'/u02/app/oracle/oradata/orcl/pdb1','/u04/app/oracle/oradata/ORCL_DUP/pdb1'

,'/u02/app/oracle/oradata/orcl/cdb_tbs_01.dbf','/u04/app/oracle/oradata/ORCL_DUP/cdb_tbs_0

1.dbf'

,'/u02/app/oracle/oradata/orcl/pdb1/cdb_user01.dbf','/u04/app/oracle/oradata/orcl/pdb1/cdb_ user01.dbf'

,'/u02/app/oracle/oradata/orcl/catadb/tbs_rman01.dbf','/u04/app/oracle/oradata/ORCL_DUP/ca tadb/tbs_rman01.dbf'

,'/u02/app/oracle/oradata/orcl/cdb_tbs_01.dbf','/u04/app/oracle/oradata/orcl/cdb_tbs_01.dbf' ,'/u02/app/oracle/oradata/orcl/pdb1/cdb_user01.dbf','/u04/app/oracle/oradata/orcl/pdb1/cdb_ user01.dbf'

,'/u01/app/oracle/oradata/orcl/tb_01.dbf','/u04/app/oracle/oradata/orcl/tb_01.dbf'

,'/u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf','/u04/app/oracle/oradata/orcl/pdbseed/s ysaux01.dbf'

,'/u01/app/oracle/oradata/orcl/users01.dbf','/u04/app/oracle/oradata/orcl/users01.dbf'

,'/u01/app/oracle/oradata/orcl/pdbseed/system01.dbf','/u04/app/oracle/oradata/orcl/pdbseed/ system01.dbf'

,'/u01/app/oracle/oradata/orcl/undotbs01.dbf','/u04/app/oracle/oradata/orcl/undotbs01.dbf' ,'/u01/app/oracle/oradata/orcl/sysaux01.dbf','/u04/app/oracle/oradata/orcl/sysaux01.dbf '

,'/u01/app/oracle/oradata/orcl/system01.dbf','/u04/app/oracle/oradata/orcl/system01.dbf'

set

log_file_name_convert='/u01/app/oracle/oradata/orcl','/u04/app/oracle/oradata/ORCL_DUP';

复制完成后,新复制的数据库已经自动打开,并可以连接。

为验证复制结果,我们重新启动操作系统,并手工启动数据库来验证。

5.验证数据库复制结果

重新启动Linux操作系统后,手工启动auxiliary数据库,export ORACLE_SID=ORCL_DUP

sqlplus / as sysdba

Client 连接:

查询一些数据库关键信息,

col con_id format 999

col dbid format 9999999999

col name format a15

col open_mode format a15

查看表空间+数据文件:

set linesize 200

col contents format a15

col ts_name format a13

col file_name format a92

col size(m) format 9999

select https://www.doczj.com/doc/873811176.html, as ts_name,https://www.doczj.com/doc/873811176.html, as file_name,d.bytes/1024/1024 as "size(m)",t.con_id from

v$tablespace t,v$datafile d

where t.ts#=d.ts# and t.con_id = d.con_id and https://www.doczj.com/doc/873811176.html, != 'TEMP'

union

select https://www.doczj.com/doc/873811176.html, as ts_name,https://www.doczj.com/doc/873811176.html, as file_name,d.bytes/1024/1024 as "size(m)" ,t.con_id from v$tablespace t,v$tempfile d

where t.ts#=d.ts# and t.con_id = d.con_id and https://www.doczj.com/doc/873811176.html, = 'TEMP'

order by con_id;

至此,我们的操作全部完成。

若您想进一步了解Oracle数据库复制相关信息,可以参考Oracle帮助文档,https://www.doczj.com/doc/873811176.html,/database/122/BRADV/rman-duplicating-

databases.htm#BRADV010

eclipse如何连接oracle数据库、访问数据表并显示结果小结

总结eclipse中连接oracle数据库并访问其中的表: (这里我们用的是oracle10g) 为了防止把主要精力放在编程实现上而忽略小细节,我们可以先启动oracle 监听和oracleservice服务。 1 我们首先导入oracle 数据库驱动包:这里有两种方式:(1)把ojdbc14.jar包复制到当前项目的jar文件夹下,或新建一文件夹把ojdbc14.jar放到其下(在eclipse本项目上刷新一下,否则按下面添加时可能找不到),再project--------→properties---------→java build path--------→libraries-------→add jars找到ojdbc14.jar 点击ok. (2)project--------→properties---------→java build path--------→libraries-------→add externals jars找到ojdbc14.jar包,(本人的ojdbc14.jar是在目录E:\oracle\product\10.2.0\db_1\jdbc\lib 下)点击ok。 2 编写程序:可以归纳为6个小部分(1)装载并注册oracle数据库的jdbc驱动程序(2)建立与数据库的连接(3)创建statement对象(4)调用sql语句并执行,结果返回resultset对象(5)查看resultset对象中的记录(6)数据库操作完毕后,需要依次关闭ResultSet、Statement、Connection 对象。如下: Import java.sql.*; public class OracleTest { public static void main(String[] args) throws Exception{ //装载并注册oracle数据库的jdbc驱动程序 try { Class.forName("oracle.jdbc.driver.OracleDriver");//获取并装载jdbc驱动程序 java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); //注册数据库驱动程序} catch(java.sql.SQLException e) { throw new RuntimeException("error"); } //建立与数据库的连接 String url="jdbc:oracle:thin:@localhost:1521:dbname"; //端口号1521可以通过查看oracle安装目录下E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN的listener.ora文件得知String user="system"; String passworddb="****** "; Connection conn=null; try { conn=DriverManager.getConnection(url, user, passworddb); } catch(Exception ex) { ex.printStackTrace(); } //创建statement对象

oracle表的导入导出-命令

数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中 exp system/manager@TEST file=d:daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:daochu.dmp owner=(system,sys) 3 将数据库中的表inner_notify、notify_staff_relat导出 exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'" 上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。 也可以在上面命令后面加上 compress=y 来实现。 数据的导入 1 将D:daochu.dmp 中的数据导入 TEST数据库中。 imp system/manager@TEST file=d:daochu.dmp imp aichannel/aichannel@HUST full=y file=file= d:datanewsmgnt.dmp ignore=y 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 在后面加上 ignore=y 就可以了。 2 将d:daochu.dmp中的表table1 导入 imp system/manager@TEST file=d:daochu.dmp tables=(table1) 基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。 注意: 操作者要有足够的权限,权限不够它会提示。 数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。 附录一: 给用户增加导入数据权限的操作 第一,启动sql*puls 第二,以system/manager登陆 第三,create user 用户名 IDENTIFIED BY 密码(如果已经创建过用户,这步可以省略)第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW , DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE, DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字 第五, 运行-cmd-进入dmp文件所在的目录, imp userid=system/manager full=y file=*.dmp

SQL Server数据导入到Oracle中的方法

SQL Server数据导入到Oracle中的方法 如果我们需要将SQL Server数据库中的数据导入到Oracle数据库中,应该如何操 作呢?下文对该方法的步骤进行了详细的介绍,供您借鉴参考之用。 在我们使用SQL Server数据库的过程中,有时需要将SQL Server数据导出,导 入到其他的数据库中,比如导入到Oracle中。 假设要将SQL Server中的Northwind数据库中的Products表导出到Oracle 的Scott用户 首先需要有安装SQL Server企业版 1.打开工具: 开始->程序->Microsoft SQLServer->导入和SQL Server数据导出数据 2.下一步,选择数据源 [数据源]选择“用于SQL Server的Microsoft OLE DB提供程序”,这应该是缺省值。 [服务器]选择要导出数据的服务器,如果是本机,选择(local) [数据库]选择要导出的数据所在的库,这里选择Northwind 3.下一步,选择目的 [目的]选择Microsoft ODBC for Oracle [DSN]选择用户/系统DSN一项,然后在下拉列表框中找一个已经连接到了Scott用户的DSN名称。 如果下拉列表中没有,点下拉列表框右侧的[新建],出现创建新数据源界面。 接下来选择系统数据源,下一步,在驱动程序列表中选择Microsoft ODBC for Oracle 下一步,完成,出现Microsoft ODBC for Oracle安装界面 [数据源名称]随便输入,比如sss [说明]可以不填 [用户名称]填入要SQL Server数据导出到的Oracle用户名称,这里是scott

oracle表的导入导出-命令

oracle表的导入导出-命令.txt12思念是一首诗,让你在普通的日子里读出韵律来;思念是一阵雨,让你在枯燥的日子里湿润起来;思念是一片阳光,让你的阴郁的日子里明朗起来。数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中 exp system/manager@TEST file=d:daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:daochu.dmp owner=(system,sys) 3 将数据库中的表inner_notify、notify_staff_relat导出 exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'" 上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。 也可以在上面命令后面加上compress=y 来实现。 数据的导入 1 将D:daochu.dmp 中的数据导入TEST数据库中。 imp system/manager@TEST file=d:daochu.dmp

oracle数据迁移方法

Oracle数据迁移方案 数据迁移通俗的说就是将数据从一个地方转移到另一个地方。主要使用场景有:根据正式系统搭建测试环境、从内网复制到外网、数据库服务器硬件升级等。根据需要迁移的数据量大小、系统架构,可采取不同的迁移方法。 注:以下所说方法,不考虑数据的增量更新、不考虑数据的实时同步、不考虑数据的逻辑转换。如果有这些需求,建议使用第三方ETL工具或使用Oracle的其他数据同步技术。 一、常用示例 1.1 如何在客户现场搭建测试环境? 常规方案,使用imp/exp工具,先在源库执行直接路径导出操作,然后在目标库执行导入操作。IMP/EXP的执行速度主要受限于磁盘及网络。 数据量:1.5G 导出用时:5分钟 导入用时:23分钟 导出文件大小:641M 导出导入环境:单CPU,700M内存。为力求最大速度,使用直接路径导出、设置最大I/O 缓冲、导入导出文件都放在服务器上执行。 1.2 还有没有更快的办法? 有,仍然使用impdp/expdp。只是不再将数据导出后导入,而是直接将数据从源库导入到目的库。 CMD> Impdp testi@目标库 directory=DMPDIR schemas=TESTI network_link=源库dblink remap_schema=TESTI:TESTA 上面语句的操作是将源库的TESTI用户的数据,导入到目标库的TESTA用户下。 这个操作是局域网内迁移数据最方便的工具,不过也可能是速度最慢的工具。 1.3 有没有还快一点的方法? 有,换用impdp/expdp。同样在源库执行导出,在目标库执行导入。操作速度能得到极大提升。IMPDP/EXPDP速度主要受限于磁盘,与网络无关。

Oracle查看表结构的几种方法

Oracle查看表结构的几种方法 Oracle查看表结构的几种方法 1,DESCRIBE 命令 使用方法如下: SQL> describe nchar_tst(nchar_tst为表名) 显示的结果如下: 名称是否为空? 类型 ----------------------------------------- -------- ---------------------------- NAME NCHAR(6) ADDR NVARCHAR2(16) SAL NUMBER(9,2) 2,DBMS_METADATA.GET_DDL包 使用方法如下: [sql] SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','NCHAR_TST') FROM DUAL; 如果显示的结果并未完整,如下: CREATE TABLE "SCOTT"."NCHAR_TST" ( "NAME" NCHAR(6), "ADDR" NVARCHAR2(16 那么修改如下: [sql] SQL> SET LONG 9999 SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','NCHAR_TST') FROM DUAL; 则显示如下的结果: DBMS_METADATA.GET_DDL('TABLE','NCHAR_TST')

------------------------------------------------------------------------ ------ CREATE TABLE "SCOTT"."NCHAR_TST" ( "NAME" NCHAR(6), "ADDR" NVARCHAR2(16), "SAL" NUMBER(9,2) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING STORAGE(INITIAL 12288 NEXT 12288 MINEXTENTS 1 MAXEXTENTS 249 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" [Oracle] dbms_metadata.get_ddl 的使用方法总结 以下是对Oracle中dbms_metadata.get_ddl的用法进行了详细的分析介绍,需要的朋友参考下 dbms_metadata.get_ddl()用于获取对象的DDL,其具体用法如下。 注意:在sqlplus里,为了更好的展示DDL,需要设置如下参数: 复制代码代码如下: set line 200 set pagesize 0 set long 99999 set feedback off set echo off 1)获得表、索引、视图、存储过程、函数的DDL 复制代码代码如下:

excel中的数据导入oracle方法详解

SQL_loader批量上传数据 1.注释 在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE 表中。如果是小数据量,如几十条至几百条,那么用plsql dev工具,在查询命令后加上for update 然后解锁,把数据复制粘贴进去就可以了。 但如果遇到大数据量几万至几十万时,上述方法就不可行了。 如下介绍如何使用oracle自带的sqlloader上传数据。 2.SQL_LOADER上传数据 2.1sql_loader说明 sql*loader是oracle自带程序。需要上传数据的本机只要安装了oracle数据库或客户端就会自动集成该工具。但是不同的版本对控制文件的写法要求有所不同。具体可参见2.3节或者附件控制文件的内容。 2.2编辑数据文件 要使用sql*loader,其数据文件必须是两种,一种是*.txt 的文本文件,另一种是*.csv的文件。例如,需要上传的数据是使用excel编辑的,那么只需要将excel另存为[制表符分割的txt 文件]或者另存为[逗号分割的csv 文件]即可。 上图是将excel文件另存为“文本文件(制表符分割)(*.txt)”文件格式后的效果要将excel文件转换成csv格式同上面一样,另存为“CSV(逗号分割)(*.csv)”格式即可。如下图:

注意:CSV格式的文件打开后跟excel的样式差不多,但实际存储方式不一样。在磁盘上CSV格式的文件中每个格子中的数据使用逗号分割开存储的。 这样的存储方式很有用,方面后面写控制文件。控制文件在控制读取数据的时候直接以逗号为标记读取数据。其实,plsql dev在导出文件的时候就可选择存储为csv格式。 按照以上方法,数据文件就准备好了。 2.3编写控制文件 控制文件其实就是SQL_LOADER上传数据时需要运行的脚本,其后缀名为ctl。控制文件写明了数据文件的位置、加载数据的方式、加载到哪个表、如何读取数据等信息。 下面是一段简单、完整的控制文件的截图及解释: 图注:编写控制文件时用文本文件编写好,修改后缀名为ctl即可。 上面的代码比较简单。需要复杂的控制,请查阅相关资料。 2.4SQL_LOADER导入数据 制作好了数据文件和控制文件,接下来就是把数据导入oracle表中。下面还是用test 表来举例。 第一步:进入dos命令环境,检查sql_loader是否装好。 在命令窗口输入sqlldr,回车,如果系统正确装好了sql_loader就会提示如下:

Oracle数据库表连接方式及常见用法

Oracle数据库表连接方式及常见用法 racle数据库表连接方式根据应用场景的不同会有不同的方法,本文向您介绍相等连接、外连接、不等连接、自连接和哈希连接等。一个SQL语句的关联表超过两个,那么连接的顺序如何呢?ORACLE首先连接其中的两个表,产生一个结果集;然后将产生的结果集与下一个表再进行关联;继续这个过程,直到所有的表都连接完成;最后产生所需的数据,,本文将主要从以下几个典型的例子来分析Orac Oracle数据库表连接方式根据应用场景的不同会有不同的方法,本文向您介绍相等连接、外连接、不等连接、自连接和哈希连接等。 一个SQL语句的关联表超过两个,那么连接的顺序如何呢?ORACLE首先连接其中的两个表,产生一个结果集;然后将产生的结果集与下一个表再进行关联;继续这个过程,直到所有的表都连接完成;最后产生所需的数据,,本文将主要从以下几个典型的例子来分析Oracle表的几种不同连接方式: 1. 相等连接 通过两个表具有相同意义的列,可以建立相等连接条件。 只有连接列上在两个表中都出现且值相等的行才会出现在查询结果中。 例查询员工信息以及对应的员工所在的部门信息; SELECT * FROM EMP,DEPT; SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.D EPTNO; REM 显示工资超过2000的员工信息以及对应的员工的部门名称。 2. 外连接 对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。除了显示匹配相等连接条件的信息之外,还显示无法匹配相等连接条件的某个表的信息。 外连接采用(+)来识别。 ◆左条件(+) = 右条件; 代表除了显示匹配相等连接条件的信息之外,还显示右条件所在的表中无法匹配相等连接条件的信息。 此时也称为"右外连接".另一种表示方法是:

Oracle中比对2张表之间数据是否一致的几种方法

Oracle中比对2张表之间数据是否一致的几种方法 by Maclean.liu liu.maclean@https://www.doczj.com/doc/873811176.html, https://www.doczj.com/doc/873811176.html,

About Me l Email & Gtalk:liu.maclean@https://www.doczj.com/doc/873811176.html, l Blog:https://www.doczj.com/doc/873811176.html, l QQ:47079569 QQ Group:23549328 l Oracle Certified Database Administrator Master 10g and 11g l Over 6 years experience with Oracle DBA technology l Over 7 years experience with Linux technology l Member Independent Oracle Users Group l Member All China Oracle Users Group l Presents for advanced Oracle topics: RAC, DataGuard, Performance Tuning and Oracle Internal.

How To Find Maclean Liu?

大约是2个星期前做一个夜班的时候,开发人员需要比对shareplex 数据同步复制软件在 源端和目标端的2张表上的数据是否一致,实际上后来想了下shareplex 本身应当具有这种数据校验功能, 但是还是希望从数据库的角度得出几种可用的同表结构下的数据比对方法。 注意以下几种数据比对方式适用的前提条件: 1. 所要比对的表的结构是一致的 2. 比对过程中源端和 目标端 表上的数据都是静态的,没有任何DML修改 方式1: 假设你所要进行数据比对的数据库其中有一个 版本为11g且该表上有相应的主键索引(primary key index)或者唯一非空索引(unique key ¬ null)的话,那么恭喜你! 你可以借助11g 新引入的专门做数据对比的PL/SQL Package dbms_comparison来实现数据校验的目的,如以下演示: Source 源端版本为11gR2 : conn maclean/maclean SQL> select * from v$version; BANNER --------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production PL/SQL Release 11.2.0.3.0 - Production CORE 11.2.0.3.0 Production TNS for Linux: Version 11.2.0.3.0 - Production NLSRTL Version 11.2.0.3.0 - Production SQL> select * from global_name; GLOBAL_NAME https://www.doczj.com/doc/873811176.html, & https://www.doczj.com/doc/873811176.html,

oracle数据库备份与恢复的三种方法(1)

Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。 一、导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。 1、简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的输出: (1)、表方式(T方式),将指定表的数据导出。 (2)、用户方式(U方式),将指定用户的所有对象及数据导出。 (3)、全库方式(Full方式),瘵数据库中的所有对象导出。 数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。 2、增量导出/导入 增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。 增量导出包括三种类型: (1)、“完全”增量导出(Complete) 即备份三个数据库,比如: (2)、“增量型”增量导出 备份上一次备份后改变的数据,比如: (3)、“累积型”增量导出 累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如: 数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。 比如数据库的被封任务可以做如下安排: 星期一:完全备份(A)

星期二:增量导出(B) 星期三:增量导出(C) 星期四:增量导出(D) 星期五:累计导出(E) 星期六:增量导出(F) 星期日:增量导出(G) 如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库: 第一步:用命令CREATE DATABASE重新生成数据库结构; 第二步:创建一个足够大的附加回滚。 第三步:完全增量导入A: 第四步:累计增量导入E: 第五步:最近增量导入F: 二、冷备份 冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。冷备份的优点是: 1、是非常快速的备份方法(只需拷文件) 2、容易归档(简单拷贝即可) 3、容易恢复到某个时间点上(只需将文件再拷贝回去) 4、能与归档方法相结合,做数据库“最佳状态”的恢复。 5、低度维护,高度安全。 但冷备份也有如下不足: 1、单独使用时,只能提供到“某一时间点上”的恢复。 2、再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

复制已有表结构及数据

一、同时复制表结构及数据 在数据库的实际应用中,有时会存在单个表数据备份的情况,或创建一个与已有表结构相同的表,在sqlserver和oracle中,这种情况可以用一个语句即可完成。 1、sqlserver中,用select * into table1 from table2 where 条件 1)select * into table1 from table2,创建与table2相同结构的table1,并向table1导入table2的所有数据 2)select * into table1 from table2 where 1=2,创建与table2相同结构的table1,表数据为空3)select * into table1 from table2 where ....,创建与table2相同结构的table1,插入符合条件的表数据 2、oracle 中用create table1 as (select * from table2 where ......) 1)create table1 as (select * from table2),创建与table2相同结构的table1,并向table1导入table2的所有数据 2)create table1 as (select * from table2 where 1=2),创建与table2相同结构的table1,表数据为空 3)create table1 as (select * from table2 where ....),创建与table2相同结构的table1,插入符合条件的表数据 二、只复制数据 在表已经存在,只需要把表2的数据导入到表1中时,可以用以下方式(oracle和sqlserver 相同): 1、表结构完全相同时用insert into table1 (select * from table2 where ......) 2、表结构不同时用指定字段方式insert into table1(field11,field12,......) (select field21,field22,... from table2 where ......),此时会table2的查询结果按字段顺序插入到table1中,所以要求table1和table2的指定字段要一一对应。 复制数据时要注意,因为table1已经存在,在向table1中插入中数据时,由于主键和自动编号等字段不可重复的特点,要考虑插入的数据是否合法,否则不能成功。如在sqlserver 中,如存在自动编号的字段,如果此字段插入的数据已经存在,则不能再次插入。

Oracle 表空间数据文件迁移

一、系统表空间数据文件迁移: SQL> conn /@study as sysdba 已连接。 SQL>descdba_data_files; 名称是否为空? 类型 ----------------------------------------- -------- ---------------------------- FILE_NAME VARCHAR2(513) FILE_ID NUMBER TABLESPACE_NAME VARCHAR2(30) BYTES NUMBER BLOCKS NUMBER STATUS VARCHAR2(9) RELATIVE_FNO NUMBER AUTOEXTENSIBLE VARCHAR2(3) MAXBYTES NUMBER MAXBLOCKS NUMBER INCREMENT_BY NUMBER USER_BYTES NUMBER USER_BLOCKS NUMBER ONLINE_STATUS VARCHAR2(7) SQL> select file_name,tablespace_name from dba_data_files where tablespace_name= 'SYSTEM'; FILE_NAME -------------------------------------------------------------------------------- TABLESPACE_NAME ------------------------------ D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSTEM01.DBF SYSTEM SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE例程已经关闭。 SQL> host copy D:\oracle\product\10.2.0\oradata\study\system.dbf d:\oracle\study 系统找不到指定的文件。 SQL> host copy D:\oracle\product\10.2.0\oradata\study\system.dbf d:\oracle\study

oracle数据库replication功用的实现

高级复制 什么是复制?简单地说复制就是在由两个或者多个数据库系统构成的一个分布式数据库环境中拷贝数据的过程。 高级复制,是在组成分布式数据库系统的多个数据库中复制和维护数据库对象的过程。Oracle 高级复制允许应用程序更新数据库的任何副本,并将这些更改自动传递到其他数据库,同时确保全局事务处理的一致性和数据完整性。 同步复制,复制数据在任何时间在任何复制节点均保持一致。如果复制环境中的任何一个节点的复制数据发生了更新操作,这种变化会立刻反映到其他所有的复制节点。这种技术适用于那些对于实时性要求较高的商业应用中。 异步复制,所有复制节点的数据在一定时间内是不同步的。如果复制环境中的其中的一个节点的复制数据发生了更新操作,这种改变将在不同的事务中被传播和应用到其他所有复制节点。这些不同的事务间可以间隔几秒,几分种,几小时,也可以是几天之后。复制节点之间的数据临时是不同步的,但传播最终将保证所有复制节点间的数据一致。 一、实现数据库复制的前提条件 1、数据库支持高级复制功能 您可以用system身份登录数据库,查看v$option视图,如果其中Advanced replication为TRUE,则支持高级复制功能;否则不支持。 2、数据库初始化参数要求 ①、db_domain = https://www.doczj.com/doc/873811176.html, 指明数据库的域名(默认的是WORLD),这里可以用您公司的域名。 ②、global_names = true 它要求数据库链接(database link)和被连接的数据库名称一致。 现在全局数据库名:db_name+”.”+db_domain ③、有跟数据库job执行有关的参数 job_queue_processes = 1 job_queue_interval = 60 distributed_transactions = 10 open_links = 4 第一行定义SNP进程的启动个数为n。系统缺省值为0,正常定义范围为0~36,根据任 务的多少,可以配置不同的数值。 第二行定义系统每隔N秒唤醒该进程一次。系统缺省值为60秒,正常范围为1~3600秒。事实上,该进程执行完当前任务后,就进入睡眠状态,睡眠一段时间后,由系统的总控负责将其唤醒。 如果修改了以上这几个参数,需要重新启动数据库以使参数生效。 二、实现数据库同步复制的步骤 假设在Internet上我们有两个数据库:一个叫深圳(shenzhen),一个叫北京(beijing)。 具体配置见下表: 数据库名shenzhen beijing 数据库域名https://www.doczj.com/doc/873811176.html, https://www.doczj.com/doc/873811176.html, 数据库sid号shenzhen beijing Listener端口号1521 1521 服务器ip地址10.1.1.100 10.1.1.200 1、确认两台数据库之间可以互相访问,在tnsnames.ora里设置数据库连接字符串。

ORACLE缓存表

ORACLE缓存表 数据库监听器停止与启动 切换至安装oracle数据库的那个用户,一般为oracle(在root下是安装或是启动不了oracle的); #su oracle 然后启动监听器 #lsnrctl start 会看到启动成功的界面; 停止监听器命令. lsnrctl stop 可以修改oracle的ora文件,对数据库进行配置,在opt/oracle/product/9.2.0/network/admin目录中,修改相应的ora文件即可. 就目前网络上出现的有关“Oracle缓存表”的疑问,小编在网上查找整理了一些,希望能帮助到大家。

Oracle缓存表(db_buffer_pool)由三部分组成: buffer_pool_defualt buffer_pool_keep buffer_pool_recycle 如果要把表钉死在内存中,也就是把表钉在keep区。相关的命令为: alter table表名storage(buffer_pool keep);这句命令把表示表如果缓存的话是缓存在keep区。 可以通过语句: select table_name from dba_tables where buffer_pool='KEEP';查询到该表是放在keep区中的。但是不意味着表已经被缓存了。 下面的语句把表缓存: alter table表名cache;可以通过

select table_name from dba_tables where rtrim(cache)='Y'查询到该表已经被缓存了。 加入到keep区的表不是说不能被移出内存,不过是比较不容易移出内存。 也可以手工来移出内存,命令如下: alter table...nocache; Cache Connect to Oracle是Oracle内存数据库TimesTen的一个选件,可以为Oracle数据库提供实时的可更新缓存。缓存表驻

(Oracle管理)Oracle数据库备份详解

Oracle数据库备份详解 ORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。 一、数据库逻辑备份方法 1 导出工具:exp Exp它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/bin exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移ORACLE数据库的逻辑备份分为三种模式: a. 表模式:导出用户所有表或者指定的表; b. 用户模式:导出用户所有对象以及对象中的数据; c. 整个数据库:导出数据库中所有对象。 1.1 表模式 备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。 若备份到本地文件,使用如下命令: exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=exp_icdmain_csd_yyyymmdd.dmp log=exp_icdmain_csd_yyyymmdd.log tables=https://www.doczj.com/doc/873811176.html,moninformation,icdmain.serviceinfo,icdmain.dealinfo 若直接备份到磁带设备,使用如下命令: exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=/dev/rmt0 log=exp_icdmain_csd_yyyymmdd.log tables=https://www.doczj.com/doc/873811176.html,moninformation,icdmain.serviceinfo,icdmain.dealinfo 注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。 1.2 用户模式 备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。

使用PLSQL_Developer导出Oracle表及数据

说明:需要把建表脚本及表数据分开导出,操作很简单。 一、导出表及存储过程等对象: 1、登录PL-SQL Developer 2、选择只显示本用户的对象,如下图: 3、选择菜单“Tools——〉Export User Objects”,如下图:

4、会弹出如下窗口: 5、选择我们要导出的表、视图、存储过程等;只选中“Single file”单选按钮;在“Output file”处选择要导出文件的路径及文件名称(默认是.sql 文件),我这里是“b.sql”;点击“Export”按钮,如下图:

6、最下面显示的绿色条到最后,表示导出成功。 二、导出表的数据: 1、进入到PL-SQL Developer,选择只显示本用户的对象; 2、打开菜单“Tools——〉Export Tables”,如下图: 3、弹出如下窗口:

4、选择我们要导出数据的表;选中下面三个选项卡的中间那个“SQL Inserts” 选中;“Drop tables”,其它复选框类似下图选择;在“Output file”处选择要导出文件的路径及文件 名称(默认是.sql 文件),我这里是“c.sql”;点击“Export”按钮,如下图

5、下面出现“Exporting tables... Done”字样,表示导出成功。如下图: 三、导入: 1、先导入建表脚本(包括视图、存储过程等对象): 1)进入到PL-SQL Developer; 2)打开菜单“File——〉New——〉Commnad Window”,如下图:

3)会打开如下窗口: 4)找到我们刚刚导出的b.sql 文件,打开文件,选中文件中的所有内容(ctrl+a),复制(ctrl+c)再回到PL-SQL Developer 中的那个;“Command Window”窗口中,粘贴(ctrl+v),将所有内容刷到数据库中;如下图: 5)中间可以提示某些红字异常,可能是我们要导入的表在数据库中已经存在,暂时不管;当出现“spool off”字样时,表示导入表成功,如下图: 2、再导入表的数据: 1)进入到PL-SQL Developer;打开菜单“File——〉New——〉Commnad Window”; 2)找到我们刚刚导出的 c.sql 文件,打开文件,选中文件中的所有内容(ctrl+a),

oracle复制表数据

oracle复制表数据,复制表结构 2010年09月02日15:49 1.不同用户之间的表数据复制 对于在一个数据库上的两个用户A和B,假如需要把A下表old的数据复制到B下的new,请使用权限足够的用户登入sqlplus: insert into B.new(select * from A.old); 如果需要加条件限制,比如复制当天的A.old数据 insert into B.new(select * from A.old where date=GMT); 蓝色斜线处为选择条件 2.同用户表之间的数据复制 用户B下有两个表:B.x和B.y,如果需要从表x转移数据到表y,使用用户B登陆sqlpus 即可: insert into 目标表y select * from x where log_id>'3049' -- 复制数据 注意:要示目标表y必须事先创建好 如insert into bs_log2 select * from bs_log where log_id>'3049' 3.B.x中个别字段转移到B.y的相同字段 --如果两个表结构一样 insert into table_name_new select * from table_name_old 如果两个表结构不一样: insert into y(字段1,字段2) select 字段1,字段2 from x 4.只复制表结构加入了一个永远不可能成立的条件1=2,则此时表示的是只复制表结构,但是不复制表内容 create table 用户名.表名as select * from 用户名.表名where 1=2 如create table zdsy.bs_log2 as select * from zdsy.bs_log where 1=2 5完全复制表(包括创建表和复制表中的记录) create table test as select * from bs_log --bs_log是被复制表 6 将多个表数据插入一个表中 insert into 目标表test(字段1。。。字段n) (select 字段1.。。。。字段n) from 表union all select 字段1.....字段n from 表 ===================================================== oracle和mssql中复制表的比较 库内数据复制 MS SQL Server: Insert into 复制表名称select 语句(复制表已经存在) select 字段列表into 复制表名称from 表(复制表不存在) Oracle : Insert into 复制表名称select 语句(复制表已经存在) create table 复制表名称as select 语句(复制表不存在) 多表更新、删除 一条更新语句是不能更新多张表的,除非使用触发器隐含更新,我这里说的意思是:根据其他表数据更新你要更新的表一般形式:

相关主题
文本预览
相关文档 最新文档