您的当前位置: 首页>帮助中心>纸浆周

博云建站

新闻公告
关于我们

centos oracle 主备配置


阅读:43


配置主机信息:

/etc/hostname

/etc/hosts

记得重启

192.168.1.99 primary

192.168.1.100 standby

然后进入安装

环境描述:
主库:
 IP: 192.168.1.99
 主机名:primary
ORACLE_SID=afc
ORACLE_BASE=/data/oracle
ORACLE_HOME=/data/oracle/product/11.2.0/db_1

备库:
 IP: 192.168.1.100

 主机名:standby
ORACLE_SID=afc
ORACLE_BASE=/data/oracle
ORACLE_HOME=/data/oracle/product/11.2.0/db_1 
准备工作:分别在主库和备库都安装上oracle软件,不装数据库。
安装配置步骤:
 1、运行dbca创建数据库
 2、登陆到数据库上
  [oracle@primary ~]$ sqlplus /nolog
  SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 3月 11 20:31:09 2010
  Copyright (c) 1982, 2005, Oracle.  All rights reserved.
  SQL> conn / as sysdba;
  Connected.
  SQL>
 3、将主库设置为 FORCE LOGGING 模式
  SQL> ALTER DATABASE FORCE LOGGING;
  Database altered.


 4、创建一个密码文件,如果数据库是用dbca创建的则会在$ORACLE_HOME/dbs/下自动创建一个叫orapwdSID的一个密码文件。否则可以用  orapwd命令创建一个。


 5、检查数据库是否处于归档状态
  SQL> archive log list;
  Database log mode              Archive Mode
  Automatic archival             Enabled
  Archive destination            /data/oracle/flash_recovery_area

  Oldest online log sequence     1

  Next log sequence to archive   2
  Current log sequence           2
  如果不是处于归档状态则运行下面命令
  SQL> SHUTDOWN IMMEDIATE;
  SQL> STARTUP MOUNT;
  SQL> ALTER DATABASE ARCHIVELOG;
  SQL> ALTER DATABASE OPEN;


 6、创建备库的控制文件(创建后数据库不能做结构性的改变)
  SQL> alter database create standby controlfile as '/data/oracle/bak2.ctl';


 7、创建pfile以便于修改配置参数
  SQL> CREATE PFILE FROM SPFILE;


 8、关掉数据库开始编辑参数
  SQL> shutdown immediate;


 9、$ vi /data/oracle/product/11.2.0/db_1/dbs/initorcl.ora (重点处
  添加下面内容

cdlp.__db_cache_size=1560281088

orcl.__db_cache_size=1560281088

cdlp.__java_pool_size=33554432

orcl.__java_pool_size=33554432

cdlp.__large_pool_size=50331648

orcl.__large_pool_size=50331648

cdlp.__oracle_base='/data/oracle'#ORACLE_BASE set from environment

orcl.__oracle_base='/data/oracle'#ORACLE_BASE set from environment

cdlp.__pga_aggregate_target=72477573120

orcl.__pga_aggregate_target=72477573120

cdlp.__sga_target=2147483648

orcl.__sga_target=2147483648

cdlp.__shared_io_pool_size=0

orcl.__shared_io_pool_size=0

cdlp.__shared_pool_size=436207616

orcl.__shared_pool_size=419430400

cdlp.__streams_pool_size=16777216

orcl.__streams_pool_size=33554432

*.aq_tm_processes=2

*.audit_file_dest='/data/oracle/admin/cdlp/adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='/data/oracle/oradata/cdlp/control01.ctl','/data/oracle/fast_recovery_area/cdlp/control02.ctl'

*.db_block_size=8192

*.db_create_file_dest='/data/oracle/app/oracle/oradata/orcl/archivelog'

*.db_domain=''

*.DB_FILE_NAME_CONVERT='standby','primary'

*.db_name='cdlp'

*.db_recovery_file_dest='/data/oracle/fast_recovery_area'

*.db_recovery_file_dest_size=4385144832

*.DB_UNIQUE_NAME='primary'

*.diagnostic_dest='/data/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=cdlpXDB)'

*.FAL_CLIENT='primary'

*.FAL_SERVER='standby'

*.global_names=TRUE

*.job_queue_processes=10

*.log_archive_format='arch%t_%s_%r.arc'

*.LOG_ARCHIVE_MAX_PROCESSES=30

*.log_file_name_convert='/data/oracle/app/oracle/oradata/orcls','/data/oracle/app/oracle/oradata/orcl'

*.nls_date_format='YYYY-MM-DD HH24:MI:SS'

*.open_cursors=3000

*.open_links=4

*.parallel_max_servers=20

*.pga_aggregate_target=72477573120

*.processes=500

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=2147483648

*.STANDBY_FILE_MANAGEMENT='AUTO'

*.streams_pool_size=26214400

*.undo_retention=3600

*.undo_tablespace='UNDOTBS1'

*.utl_file_dir='*'

*.DB_UNIQUE_NAME=primary

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'

*.LOG_ARCHIVE_DEST_1='location=/data/oracle/flash_recovery_area

  valid_for=(ALL_LOGFILES,ALL_ROLES)

  DB_UNIQUE_NAME=primary'

*.LOG_ARCHIVE_DEST_2=

   'SERVICE=standby LGWR ASYNC

    VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

    DB_UNIQUE_NAME=standby'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.LOG_ARCHIVE_MAX_PROCESSES=30

*.FAL_SERVER=standby

*.FAL_CLIENT=primary

*.DB_FILE_NAME_CONVERT='standby','primary'

*.STANDBY_FILE_MANAGEMENT=AUTO


 10、进入sqlplus创建spfile(NOMOUNT状态)
  SQL> CREATE SPFILE from PFILE;


 11、创建tnsnames.ora和listener.ora,可以手动创建也可以用netca创建,无论哪种方法都必须保证能互相畅通。
  

  $ cd /data/oracle/product/11.2.0/db_1/network/admin/

  $ vi tnsnames.ora
  输入下面内容
 

primary =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.90)(PORT = 1521))

        )

    (CONNECT_DATA =

          (SERVER=DEDICATED)

          (SERVICE_NAME = primary)

      )

  )


standby =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.98)(PORT = 1521))

        )

    (CONNECT_DATA =

          (SERVER=DEDICATED)

          (SERVICE_NAME = standby)

      )

  )

 

 $ vi listener.ora

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /data/oracle/product/11.2.0/db_1)

      (PROGRAM = extproc)

    )

  )


LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.90)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )

ADR_BASE_LISTENER = /data/oracle

 
  12、复制备份文件到备库


  $ cd /data/oracle/
  $ scp -r flash_recovery_area/ admin/ oradata/ 192.168.1.100:/u01/oracle/
  $ cd /u01/oracle/10g/network/admin/
  $ scp listener.ora  tnsnames.ora 
192.168.1.100:/u01/oracle/10g/network/admin/

  $ cd /data/oracle/product/11.2.0/db_1/dbs/

  $ scp orapwdafc 192.168.1.100:/data/oracle/product/11.2.0/db_1/dbs/


  13、打开备库做以下操作


  $ cd /data/oracle/oradata/afc
  $ rm -rf control0*
  $ cp stdby.ctl control01.ctl
  $ cp stdby.ctl control02.ctl
  $ cp stdby.ctl control03.ctl

  $ vi initorcl.ora 修改备的参数文件如下(重点处


cdlp.__db_cache_size=1560281088

orcl.__db_cache_size=1593835520

cdlp.__java_pool_size=33554432

orcl.__java_pool_size=33554432

cdlp.__large_pool_size=50331648

orcl.__large_pool_size=50331648

cdlp.__oracle_base='/data/oracle'#ORACLE_BASE set from environment

orcl.__oracle_base='/data/oracle'#ORACLE_BASE set from environment

cdlp.__pga_aggregate_target=72477573120

orcl.__pga_aggregate_target=72477573120

cdlp.__sga_target=2147483648

orcl.__sga_target=2147483648

cdlp.__shared_io_pool_size=0

orcl.__shared_io_pool_size=0

cdlp.__shared_pool_size=436207616

orcl.__shared_pool_size=419430400

cdlp.__streams_pool_size=16777216

orcl.__streams_pool_size=0

*.audit_file_dest='/data/oracle/admin/cdlp/adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='/data/oracle/oradata/cdlp/control01.ctl','/data/oracle/fast_recovery_area/cdlp/control02.ctl'

*.db_block_size=8192

*.db_create_file_dest='/data/oracle/app/oracle/oradata/orcl/archivelog'

*.db_domain=''

*.db_file_name_convert='/data/oracle/app/oracle/oradata/orcls','/data/oracle/app/oracle/oradata/orcl'

*.db_name='CDLP'

*.db_recovery_file_dest='/data/oracle/fast_recovery_area'

*.db_recovery_file_dest_size=4385144832

*.diagnostic_dest='/data/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=cdlpXDB)'

*.fal_client='lei'

*.fal_server='ORCLS'

*.log_archive_config='dg_config=(cdlp)'

*.log_archive_dest_1='LOCATION=/data/oracle/app/oracle/oradata/orcl/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=cdlp'

*.log_archive_dest_2='service=lei_standby valid_for=(online_logfiles,primary_role) db_unique_name=lei_s'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.log_archive_max_processes=30

*.log_file_name_convert='/data/oracle/app/oracle/oradata/orcls','/data/oracle/app/oracle/oradata/orcl'

*.open_cursors=3000

*.pga_aggregate_target=72477573120

*.processes=500

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=2147483648

*.standby_file_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.DB_UNIQUE_NAME=standby

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'

*.LOG_ARCHIVE_DEST_1='location=/data/oracle/flash_recovery_area

valid_for=(ALL_LOGFILES,ALL_ROLES)

DB_UNIQUE_NAME=standby'

*LOG_ARCHIVE_DEST_2=

SERVICE=primary LGWR ASYN 

CVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=primary'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.LOG_ARCHIVE_MAX_PROCESSES=30

*.FAL_SERVER=primary

*.FAL_CLIENT=standby

*.DB_FILE_NAME_CONVERT='standby','primary'

*.STANDBY_FILE_MANAGEMENT=AUTO


  $ vi listener.ora
  将primary修改为standby


 13、在备库中进入sqlplus


  $ sqlplus /nolog
  SQL> conn / as sysdba;
  SQL> CREATE SPFILE from PFILE='/data/oracle/oradata/dgdemo/pfile';

 14、测试oracle net是否畅通


  首先启动监听服务(分别在主机和备机上进行)
  $ lsnrctl stop
  $ lsnrctl start
  分别在主机和备机上运行下面命令来测试
  $ tnsping primary
  $ tnsping standby


 15、启动主库(正常启动)


  $ sqlplus /nolog
  SQL> conn / as sysdba;
  SQL> startup


 16、启动备库到mount状态,并打开redo Apply


  $ sqlplus /nolog
  SQL> conn / as sysdba;
  SQL> startup mount
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;


 17、在主库上做一次日志切换


  SQL> ALTER SYSTEM SWITCH LOGFILE;

  以下语句可以查看日志应用情况
  SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG  ORDER BY SEQUENCE#;
   SEQUENCE# APP
  ---------- ---
     2 YES
     3 YES

 如果出现上面情况则说明配置成功。


 18、在主库建表然后在备库查询进行验证
  SQL> create table haha(id integer,name char(10))
  SQL> insert into haha values(1,'xiao');
  SQL> commit;
  SQL> select * from haha;
    ID NAME
  ---------- ----------
     1 xiao


 19、在主库上做个日志归档
  SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;


 20、在备库上取消掉redo apply
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
  SQL> ALTER DATABASE OPEN;
  SQL> select * from haha;
    ID NAME
  ---------- ----------
     1 xiao
 测试成功


 24、再次切换为备库的redo apply状态
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
 主库备库互相切换


 25、在主库上做如下sql语句
  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
  SQL> shutdown immediate;
  SQL> startup nomount;
  SQL> ALTER DATABASE MOUNT STANDBY DATABASE;
  SQL> RECOVER MANAGED STANDBY DATABASE DISCONNECT


 26、在备库上做switchover
  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
  SQL> shutdown immediate;
  SQL> startup


 27、分别在新的主库和备库上查看状态,验证主库备库是否切换正常。
  SQL> select name,database_role from v$database;
 
 再次创建表在切换后的主库备库上验证


 28、在新的主库上创建列 
 
  SQL> insert into haha values(2,'yang');
  SQL> commit;
  SQL> select * from haha;

        ID NAME
---------- ----------
         1 xiao
         2 yang
  SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;


 29、在新的备库上做下面操作以取消redo apply
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
  SQL> ALTER DATABASE OPEN;
  SQL> select * from haha;

        ID NAME
---------- ----------
         1 xiao
         2 yang


 30、恢复新备库为redo apply状态

     最后将数据库切换出去主备状态,如果相关同步都正常说明配置没问题可以用于生产了;
 
 31、主备切换时候遇到如下错误提示(主数据切换为备数据库后再切换回主系统时出现错误),解决
 如下:
 SQL> alter database commit to switchover to primary;
 alter database commit to switchover to primary
 *
 ERROR at line 1:
 ORA-16139: media recovery required

 mount模式下执行alter database recover managed standby database finish
 SQL> alter database commit to switchover to primary;
 Database altered.


备用信息:

数据库帐号密码

oracle

oracle123


/etc/hostname

/etc/hosts


chown -R oracle:oinstall /apps/oracle


日志目录

./oracle/diag/rdbms/standby/orcl/trace/alert_orcl.log

./oracle/diag/rdbms/cdlp/cdlp/trace/alert_cdlp.log 

CREATE SPFILE from PFILE='/data/oracle/admin/cdlp/pfile';


开启备份

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

关闭

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

实例名

orcl

数据库ming 

 

启动oracle监听

lsnrctl start  

lsnrctl stop

lsnrctl status;

lsnrctl relaod;


chown -R oracle:oinstall /apps/oracle

chmod 775 /apps/oracle

开启数据库

ALTER DATABASE OPEN;

进入sql

sqlplus / as sysdba


注册数据库

alter system register;


创建用户

CREATE USER cdlp IDENTIFIED BY cdlp123;

GRANT CONNECT, RESOURCE TO cdlp;

GRANT CREATE SESSION TO cdlp;


 

查询数据库

SELECT name FROM v$database;

查看 oracle 实例名 

SELECT INSTANCE_NAME FROM V$INSTANCE;

连接数据库

connect cdlp/cdlp123


关闭数据库

SHUTDOWN IMMEDIATE; 

//不经常使用 尽量少用

shutdown abort;

STARTUP MOUNT;

 


sqlplus cdlp/cdlp123@//192.168.1.2:1521/orcl as sysdba 

 

//回复数据

recover datafile '/data/oracle/oradata/cdlp/system01.dbf' ;

 

show parameter spfile;


错误:ORA-32001:write to spfile requested but no spfile is in use请

那么就创建spfile

create spfile from pfile;

alter system set control_files='/data/oracle/oradata/cdlp/control01.ctl','/data/oracle/oradata/cdlp/control01.ct2' scope=spfile;

alter system set control_files='/data/oracle/oradata/cdlp/control01.ctl' scope=spfile;

alter system set control_files='/data/oracle/bak2.ctl' scope=spfile;


alter database backup controlfile to trace as '/data/oracle/oradata/control01_bak.ctl';

alter database backup controlfile to '/data/oracle/control.bak';


系统用户

sys/system/sysman/dbsnmp 

 

启动数据库


STARTUP   pfile='/data/oracle/product/11.2.0/db_1/dbs/initorcl.ora'; 

STARTUP MOUNT pfile='/data/oracle/product/11.2.0/db_1/dbs/initorcl.ora'; 

startup nomount pfile='/data/oracle/product/11.2.0/db_1/dbs/spfilecdlp.ora';

STARTUP NOMOUNT pfile='/data/oracle/product/11.2.0/db_1/dbs/spfilecdlp.ora';


startup pfile='/data/oracle/pfile.ora';

startup MOUNT pfile='/data/oracle/pfile.ora';

STARTUP NOMOUNT pfile='/data/oracle/product/11.2.0/db_1/dbs/initorcl.ora';


//创建启动文件 并复制到次服务器

alter database create standby controlfile as '/data/oracle/oradata/cdlp/control03.ctl'

alter database create standby controlfile as '/data/oracle/bak2.ctl';

次服务器指定启动文件

alter system set control_files='/data/oracle/bak.ctl'  scope=spfile;

启用同步服务 

alter database recover managed standby database using current logfile disconnect from session;

ALTER DATABASE MOUNT pfile='/data/oracle/product/11.2.0/db_1/dbs/spfilecdlp.ora';

 

设置游标数量

alter system set open_cursors=3000 scope=both;


设置连接数

alter system set processes =500 scope =spfile;


启动出错

cp /data/oracle/product/11.2.0/db_1/dbs/spfilecdlp.ora /data/oracle/product/11.2.0/db_1/dbs/initorcl.ora


恢复数据

ALTER DATABASE OPEN RESETLOGS;


查看字符集

SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

 

日志目录

/data/oracle/diag/rdbms/cdlp/orcl/trace


查看ORACLE最大游标数:


SQL> show parameter open_cursors;


查看当前打开的游标数目:


SQL> select count(*) from v$open_cursor;


设置数据库最大游标数量:


SQL>alter system set open_cursors=3000 scope=both;


groupadd oinstall # 创建oinstall组


groupadd dba # 创建dba组


useradd -g oinstall -G dba oracle # 创建oracle用户并将其加入到两个组中


passwd oracle # 设置oracle用户的密码

安装数据库

./runInstaller 

 

文件配置 db_install.rsp 


创建密码文件

./orapwd file=/u01/app/oracle/wallets/ewallet.p12 password=welcome123 entries=10 force=y


日志目录


tail -f /data/oracle/diag/rdbms/standby/orcl/trace/alert_orcl.log


tail -f /data/oracle/diag/rdbms/cdlp/cdlp/trace/alert_cdlp.log


alter system set log_archive_dest_2 = 'SERVICE=standby ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby';

删除没用 GROUP

ALTER DATABASE DROP LOGFILE GROUP 13;




上一篇:centos7 安装oracle database 下一篇:oracle 基础命令

?
?
18531466707