一.主库:
-------------------------------------------
C:\>set oracle_sid=orcl
请输入用户名:  sys/oracle as sysdba
SQL> select name from v$database;
SQL> shutdown immediate;
SQL> startup mount;
SQL> select name,force_logging from v$database;
SQL> alter database force logging;
SQL> select name,force_logging from v$database;
SQL> archive log list;
SQL> alter database archivelog;
SQL> archive log list;
SQL> alter database open;
SQL> select name from v$datafile;
SQL> select name from v$controlfile;
SQL> select member from v$logfile;
SQL> show parameter db_unique_name
SQL> show parameter service_name
SQL> show parameter db_name
SQL> show parameter standby_file_management
SQL> create spfile from pfile;
SQL> create pfile from spfile;
然后将spfile文件删除
SQL> select * from v$pwfile_users (产寻用户密码文件是否存在)
E:>orapwd file=pwdorcl.ora password=orcle entries=10 (创建用户密码文件,entries-->最大用户数)
打开pfile文件--添加:
*.db_name=orcl
*.db_unique_name=orcl
*.service_names=orcl
*.log_archive_config='dg_config=(orcl,orclbg)'
*.log_archive_dest_1='valid_for=(online_logfiles,primary_role) db_unique_name=orclbg'
*.log_archive_dest_state——2=enable
*.log_archive_dest_1='location=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL valid_for=(all_logfiles,all_roles)db_unique_name=orcl'
*.log_archive_dest_2='service=orclbg valid_for=(online_logfiles,primary_role) db_unique_name=orclbg'
*.db_file_name_convert=('E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL','E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLBG')
*.log_file_name_convert=('E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL','E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLBG')
*.log_archive_format=orcl_%d_%t_%s_%r.arc
*.standby_file_management=auto
*.archive_lag_target=1800
SQL> shutdown immediate;
SQL> startup (能够打开数据库)
重新开启一个cmd
C:\>rman target sys/oracle nocatalog
RMAN> backup database;
C:\>set oracle_sid=orcl
请输入用户名:  sys/oracle as sysdba
SQL> alter database create standby controlfile as 'E:\oracle\product\10.2.0\flash_rec1_13\control_orclone.ctl';
打开下面文件夹:(rman备份的就在这里)
E:\oracle\product\10.2.0\flash_recovery_area\ORCLONE\BACKUPSET\2010_01_13
将这个目录下的备份文件拷贝到备份数据库里
------------------------------------------
二.备库:
-------------------------------------------------------
打开备库的pfile文件(可复制主库pfile进行修改):
*.db_name=orcl
*.db_unique_name=orclbg
*.service_names=orclbg
*.log_archive_config='dg_config=(orcl,orclbg)'
*.log_archive_dest_1='valid_for=(online_logfiles,primary_role) db_unique_name=orclbg'
*.log_archive_dest_state_2=enable
*.log_archive_dest_1='location=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLBG valid_for=(all_logfiles,all_roles) db_unique_name=orcl'
*.log_archive_dest_2='service=orclbg valid_for=(online_logfiles,primary_role) db_unique_name=orclbg'
*.db_file_name_convert=('E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL','E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLBG')
*.log_file_name_convert=('E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL','E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLBG')
*.log_archive_format=orclbg_%d_%t_%s_%r.arc
*.standby_file_management=auto
*.archive_lag_target=1800
*.remote_login_passwordfile=exclusive
*.instance_name=orclbg
*.fal_server=orcl
*.fal_client=orclbg
*.standby_archive_dest='E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLBG'
*.standby_archive_dest='location=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLBG'
(还要把这些参数上面的所有 orcl目录改成 orclbg 目录)
(同时把E:\oracle\product\10.2.0\flash_recovery_area\ORCL\BACKUPSET\2010_01_13目录下备份的CONTROL01.CTL文件复制到E:\oracle\product\10.2.0\oradata\orclbg目录下,复制相应个控制文件.并改名)

SQL> select * from v$pwfile_users (产寻用户密码文件是否存在)
E:\oracle\product\10.2.0\db_1\database>orapwd file=pwdorcl.ora password=orcle entries=10
实例已创建。
E:\>E:\oracle\product\10.2.0\db_1\bin\oradim.exe -new -sid orclbg -startmode manual -spfile
创建监听:
打开E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora目录下的监听文件添加监听:
  ORCLBG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = PC2009092712lvf)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orclbg)
    )
  )
E:\>rman target sys/oracle nocatalog
RMAN> list backup;
RMAN> run{
  allocate channel d1 type disk;
  restore database;
  }
E:\>sqlplus
请输入用户名:  sys/oracle as sysdba
SQL> alter database open;
SQL> select name from v$datafile;
SQL> select name from v$controlfile;
SQL> select member from v$logfile;
SQL> show parameter db_unique_name
SQL> show parameter service_name
SQL> show parameter db_name
SQL> show parameter standby_file_management
SQL> select * from scott.emp;

c:>tnsping orcl  监听
c:>tnsping orclbg
sql>alter database recover managed standby database disconnect from session;   处于管理恢复模式
desc v$archived_log;
select name,seqence# from v$archived_log; (主备库都看下是否一样)
alter system switch logfiel;
select names,eqence# from v$archived_log;
sql>alter database recover managed standby database cancel;  取消管理恢复模式
sql>alter database open read only;  只读方式打开DB
sql>alter database open;
>recover managed standby database disconnect from session;
>alter system switch logfile;
 
SQL> show parameter db_name;
SQL>  show parameter db_u
SQL> select INSTANCE_NAME,STATUS from v$instance;
D:\>DGMGRL
DGMGRL>connect sys/oracle
DGMGRL>show configuration verbose

----------------------------------
 
=============================
启动主库和备库:
set oracle_sid=oracleone
select name,sequence# from v$archived_log;
set oracle_sid=oracleonedg2
select name,sequence# from v$archived_log;
lsnrctl
start
>alter system register; (主备库)
set oracle_sid=oracleonedg2
select name,sequence# from v$archived_log;

set oracle_sid=oracleone
select name,sequence# from v$archived_log;
select name,sequence#,appilied from v$archived_log;
recover managed standby database from session; (转换为恢复模式,使传过来的数据应用到备库日志里
)
---------------
*.log_archive_dest_2='service=orcltwodg2 LGWR SYNC AFFIRM valid_for=(online_logfiles,primary_role)'
alter system set log_archive_dest_2='service=orcltwodg2 lgwr sync affirm valid_for=
(online_logfiles,primary_role)
后备数据库要创建后备日志:
select member from v$logfile;
select * from v$log;
alter database add standby logfile ('E:\test\redo04.log') size 10M; (不能再恢复模式做)
  (sql>alter database recover managed standby databse cancel; )
alter database add standby logfile ('E:\test\redo05.log') size 10M;
alter database add standby logfile ('E:\test\redo06.log') size 10M;
select * from v$standby_log;
shutdown immediate;
startup mount;
alter database set standby to maximize protection;  (将最大保护模式改变成最大可用模式)
alter database open;
select name,protection_mode from v$database; (查看数据库为什么模式) 
show parameter log_archive_dest_2

alter database set standby to maximize availability;  (改成最大可用模式)
select name,protection_mode from v$database; (查看数据库为什么模式) 
alter database set standby to maximize performance; (改成最大性能模式)
===========================

 
角色的转换和 Failover
一.主库:
1.查看主库状态,是否能转换成备库.
SQL> select name,SWITCHOVER_STATUS from v$database;
NAME      SWITCHOVER_STATUS
--------- --------------------
ORCLONE   SESSIONS ACTIVE
2.将主库转换成备库.
SQL> alter database commit to switchover to physical standby with session shutdown wait;
3.shutdown 主库.
SQL>
4.启动db到mount.
SQL>
二.备库.
1.查看备库状态,是否能转换成备库.
SQL> select name,SWITCHOVER_STATUS from v$database;
NAME      SWITCHOVER_STATUS
--------- --------------------
ORCLONE   SESSIONS ACTIVE  (应该是 ORCLONE   TO STANDBY)
这时可
2.将主库转换成备库.
SQL> alter database commit to switchover to physical standby with session shutdown wait;
3.shutdown 主库.
SQL>
4.启动db到mount.
SQL>
------------------
 
SQL> select name,sequence# from v$archived_log; (主备库)
SQL> recover managed standby database disconnect from session; (备库)
SQL> select name,switchover_status from v$database; (主库)
SQL> alter database commit to switchover to physical standby; (主库)
SQL> shutdown immediate; (主库)
SQL> startup mont; (主库)
SQL> select name,switchover_status from v$database; (备库)
SQL> alter database commit to switchover to primary; (备库)
SQL> shutdown immediate; (备库)
SQL> startup mont; (备库)
SQL> select name,sequence# from v$archived_log; (主备库查看是否一致)
SQL> alter system
SQL> select name,sequence#,appliend from v$archived_log;
 
-----------------------
 
启动远程归档
SQL> alter system archive log current;

A- SQL>select * from dba_logstdby_nspported;
A- SQL>select * from v$tablespace;
A- SQL>alter tablespace temp add tempfile 'E:\test\temp01.dbf' size 20M;  (创建临时性)