目标库和复制库环境:
OS: Linux Red Hat AS 4
DB Version: 10.2.0.1
1.目标库和复制库信息
Rman 中的目标库(target database)指的是被复制的库,复制库(duplicate database)是指复制后生成的新库.这里为了测试方便,复制库和目标库的SID设置相同,目录结构也设置相同.
目标库:
IP:192.168.30.37
SID:oracl
复制库:
IP:192.168.30.43
SID:oracl
2.在复制库上的的操作步骤
执行以下操作的前提是需要安装oracle软件(不创建数据库),需要创建oracle用户.
2.1: 创建密码文件(注意linux下密码文件的命名格式是orapw+sid)
[oracle@hxl01 dbs]$cd $ORACLE_HOME/dbs
[oracle@hxl01 dbs]$orapwd file=orapworacl password=oracle entries=10 force=y
2.2:创建如下目录
mkdir -p /u01/app/oracle/admin/oracl/adump
mkdir -p /u01/app/oracle/admin/oracl/bdump
mkdir -p /u01/app/oracle/admin/oracl/cdump
mkdir -p /u01/app/oracle/admin/oracl/dpdump
mkdir -p /u01/app/oracle/admin/oracl/pfile
mkdir -p /u01/app/oracle/admin/oracl/udump
mkdir -p /u01/app/oracle/oradata/oracl
mkdir -p /u01/app/oracle/flash_recovery_area
2.3:创建spfile文件
将在target上创建的pfile(initoracl.ora,具体创建步骤参考3.1)拷贝到Duplicate,然后创建spfile.
Sql>connect /as sysdba;
Sql>create spfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initoracl.ora';
2.4:启动数据库到nomount状态
Sql>startup nomount;
2.5:创建监听
[oracle@hxl01 dbs]$netca
2.6:配置tnsname
[oracle@hxl01 dbs]$netmgr
注意要配置到复制duplicate库的连接和到目标target库的连接.
3.在目标库上的的操作步骤
3.1:创建pfile文件
SQL>create pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initoracl.ora' from spfile;
3.2:将数据库置于归档模式
Sql>shutdown immediate;
Sql>startup mount;
Sql>alter database archivelog;
sql>alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/duplicate' scope=both;
sql>alter database open;
3.3:备份数据库(我的库有坏块,指定了maxcorrupt)
Sql>alter system archive log current;
$rman target /
Rman>run{
set maxcorrupt for datafile 5 to 20;
allocate channel c1 type disk;
backup full as compressed backupset format '/u01/app/oracle/duplicate/37full_%t_%s_%p' diskratio=0 database;
release channel c1;
}
3.4:手动归档当前日志文件
Sql>alter system archive log current;
3.5:传送文件
将备份好的文件传送到复制库的/app/oracle/duplicate/下,将备份前到当前时间新产生的归档日志文件传送到复制库的/app/oracle/duplicate/下.
4.复制数据库
以下操作在复制库duplicate主机上执行.
[oracle@hxl01 duplicate]$ rman target sys/sys@tar_oracl --(这里的tar_oracl是在连接到目标库的tnsname)
RMAN>connect auxiliary sys/oracle@dup_oracl --(这里的dup_oracl是在连接到复制库的tnsname)
RMAN>run{
duplicate target database to oracl nofilenamecheck
logfile group 1 ('/u01/app/oracle/oradata/oracl/redo1_1.log','/u01/app/oracle/oradata/oracl/redo1_2.log') size 512M,
group 2 ('/u01/app/oracle/oradata/oracl/redo2_1.log','/u01/app/oracle/oradata/oracl/redo2_2.log') size 512M,
group 3 ('/u01/app/oracle/oradata/oracl/redo3_1.log','/u01/app/oracle/oradata/oracl/redo3_2.log') size 512M;
}
-- 这里使用了nofilenamecheck,是因为复制库和目标库的各文件目录一致.
小插曲:
数据库打开后使用sysdba登陆提示ORA-01031: insufficient privileges,找了半天原因是密码文件命名问题, 之前创建密码文件名为orapwdoracl,将其修改为orapworacl,问题解决,注意在linux下密码文件的命名格式为orapw+sid.
SQL> connect sys/oracle@dup_oracl as sysdba
ERROR:
ORA-01031: insufficient privileges
--The End--
文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/7_databases/oracle/oraclejs/20120215/565188.html
OS: Linux Red Hat AS 4
DB Version: 10.2.0.1
1.目标库和复制库信息
Rman 中的目标库(target database)指的是被复制的库,复制库(duplicate database)是指复制后生成的新库.这里为了测试方便,复制库和目标库的SID设置相同,目录结构也设置相同.
目标库:
IP:192.168.30.37
SID:oracl
复制库:
IP:192.168.30.43
SID:oracl
2.在复制库上的的操作步骤
执行以下操作的前提是需要安装oracle软件(不创建数据库),需要创建oracle用户.
2.1: 创建密码文件(注意linux下密码文件的命名格式是orapw+sid)
[oracle@hxl01 dbs]$cd $ORACLE_HOME/dbs
[oracle@hxl01 dbs]$orapwd file=orapworacl password=oracle entries=10 force=y
2.2:创建如下目录
mkdir -p /u01/app/oracle/admin/oracl/adump
mkdir -p /u01/app/oracle/admin/oracl/bdump
mkdir -p /u01/app/oracle/admin/oracl/cdump
mkdir -p /u01/app/oracle/admin/oracl/dpdump
mkdir -p /u01/app/oracle/admin/oracl/pfile
mkdir -p /u01/app/oracle/admin/oracl/udump
mkdir -p /u01/app/oracle/oradata/oracl
mkdir -p /u01/app/oracle/flash_recovery_area
2.3:创建spfile文件
将在target上创建的pfile(initoracl.ora,具体创建步骤参考3.1)拷贝到Duplicate,然后创建spfile.
Sql>connect /as sysdba;
Sql>create spfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initoracl.ora';
2.4:启动数据库到nomount状态
Sql>startup nomount;
2.5:创建监听
[oracle@hxl01 dbs]$netca
2.6:配置tnsname
[oracle@hxl01 dbs]$netmgr
注意要配置到复制duplicate库的连接和到目标target库的连接.
3.在目标库上的的操作步骤
3.1:创建pfile文件
SQL>create pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initoracl.ora' from spfile;
3.2:将数据库置于归档模式
Sql>shutdown immediate;
Sql>startup mount;
Sql>alter database archivelog;
sql>alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/duplicate' scope=both;
sql>alter database open;
3.3:备份数据库(我的库有坏块,指定了maxcorrupt)
Sql>alter system archive log current;
$rman target /
Rman>run{
set maxcorrupt for datafile 5 to 20;
allocate channel c1 type disk;
backup full as compressed backupset format '/u01/app/oracle/duplicate/37full_%t_%s_%p' diskratio=0 database;
release channel c1;
}
3.4:手动归档当前日志文件
Sql>alter system archive log current;
3.5:传送文件
将备份好的文件传送到复制库的/app/oracle/duplicate/下,将备份前到当前时间新产生的归档日志文件传送到复制库的/app/oracle/duplicate/下.
4.复制数据库
以下操作在复制库duplicate主机上执行.
[oracle@hxl01 duplicate]$ rman target sys/sys@tar_oracl --(这里的tar_oracl是在连接到目标库的tnsname)
RMAN>connect auxiliary sys/oracle@dup_oracl --(这里的dup_oracl是在连接到复制库的tnsname)
RMAN>run{
duplicate target database to oracl nofilenamecheck
logfile group 1 ('/u01/app/oracle/oradata/oracl/redo1_1.log','/u01/app/oracle/oradata/oracl/redo1_2.log') size 512M,
group 2 ('/u01/app/oracle/oradata/oracl/redo2_1.log','/u01/app/oracle/oradata/oracl/redo2_2.log') size 512M,
group 3 ('/u01/app/oracle/oradata/oracl/redo3_1.log','/u01/app/oracle/oradata/oracl/redo3_2.log') size 512M;
}
-- 这里使用了nofilenamecheck,是因为复制库和目标库的各文件目录一致.
小插曲:
数据库打开后使用sysdba登陆提示ORA-01031: insufficient privileges,找了半天原因是密码文件命名问题, 之前创建密码文件名为orapwdoracl,将其修改为orapworacl,问题解决,注意在linux下密码文件的命名格式为orapw+sid.
SQL> connect sys/oracle@dup_oracl as sysdba
ERROR:
ORA-01031: insufficient privileges
--The End--
文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/7_databases/oracle/oraclejs/20120215/565188.html