--alter system set fal_client='xcldb';
b.运行参数更改sql
@/home/oracle/dgsetprimary.sql
c.重新启动数据库,使参数生效。以防止一些不能动态更改的参数不起作用。
shutdown immediate;
startup
7.主备库配置Oracle Net
listener.ora 设置要特别注意,一定要设置静态监听。
且Global_dbname和sid_name在主备库各自指向各自的的数据库。
主库listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = xcldb)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = xcldb)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.2.32)(PORT = 1521))
)
ADR_BASE_LISTENER = /u01/app/oracle
tnsnames.ora两边一样就行了
[oracle@xcldg1] :cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
XCLDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.2.32)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = xcldb)
)
)
XCLDBDG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.2.34)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = xcldbdg)
)
)
详细说明:
静态监听,就是要设global_dbname和sid_name。
原因:
如果配置的动态监听,只要有实例没有启动到open状态,就无法通过
网络将服务注册到数据库,而只有静态监听可以.
可以通过lsnrctl start时可以看到.在静态监听开启的情况下,实例状态
显示为"UNKNOWN",而动态监听为"READY"
如数据库启动到mount状态下,不能通过网络方式注册到数据库sqlplus sys@xcldb as sysdba
出现 ORA-01031:insufficient privileges
是密码文件的问题,可用select * from v$pwfile_users;查看
用orapwd 建一个就可以了.密码文件名要注意命名规则orapw
8. 在主备库重启监听
lsnrctl start
9. 如果是Windows的,创建好数据库服务,如不是则略过这步。
oradim -NEW -SID xcldb -STARTMODE manual
10。在主库服务器创建standby备库的密码文件,注意,sys密码要一样.并复制到备库服务器。
orapwd file=$ORACLE_HOME/dbs/orapwxcldbdg password=111111 force=y;
scp /home/oracle/initxcldb_bak.ora 172.18.2.34:/home/oracle/
11.在备库服务器创建standby的初始化参数文件
cd $ORACLE_HOME/dbs
echo DB_NAME=xcldbdg>initxcldbdg.ora
cat initxcldbdg.ora
--DB_NAME=xcldbdg --就只有这一条记录
--之所以要建这个文件是因为startup nomout要,用duplicate后会
--创建spfile,这个就没用了.
12.启动standby数据库,记得要带设好的standby的init
export ORACLE_SID=xcldbdg
echo $ORACLE_SID
sqlplus / as sysdba
startup nomount pfile=$ORACLE_HOME/dbs/initxcldbdg.ora
13.创建standby库
a.创建duplicate备库的脚本文件 。
vi /home/oracle/dgdup2standby.rman
run{
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database nofilenamecheck spfile parameter_value_convert 'xcldb','xcldbdg'
set db_unique_name='xcldbdg'
set log_archive_config='dg_config=(xcldb,xcldbdg)'
set log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog/xcldbdg VALID_FOR=(all_logfiles,all_roles) db_unique_name=xcldbdg'
set log_archive_dest_2='service=xcldbdg LGWR ASYNC NOAFFIRM valid_for=(ONLINE_LOGFILES,PRIMAR