Linux 9i下Dataguard配置

发表于:2008-10-21来源:作者:点击数: 标签:linuxLinuxLINUXDataguardsnooker
环境: os: linux 9 oracle:oracle9i primary:1.1.1.1 standby:1.1.1.2(主副主机都是两台普通的pc主机) 第一部分oracle9i在linux9上的安装 本来我不想写这方面的东东,但是对比oracl9i在solaris下和在linux下安装,oracle9i在linux9上的安装真的是要麻烦很

环境: 

os:  linux 9 
oracle:  oracle9i
primary: 1.1.1.1
standby: 1.1.1.2 (主副主机都是两台普通的pc主机)

第一部分  oracle9i 在linux9上的安装

 本来我不想写这方面的东东,但是对比oracl9i在solaris 下和在linux下安装,oracle9i 在linux9上的安装真的是要麻烦很多,下面我把我遇到的问题(好像也是大部分oracle初学者安装时遇到的问题)简要的说一下,oracle9i 在linux9上的安装也折腾了我好几个月。

1)运行runinstaller的时候报错。 
-bash-2.05b$ ./runInstaller
-bash-2.05b$ Initializing Java Virtual Machine from /tmp/OraInstall2005-01-20_06-39-06PM/jre/bin/java. Please wait...
/tmp/OraInstall2005-01-20_06-39-06PM/jre/bin/i386/native_threads/java: error while loading shared libraries: libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file or directory
Oracle Net configuration Assistant 
Oracle Database configuration Assistant 
Agent configuration Assistant 
三个工具的details错误信息都是: 
/home/oracle/jre/1.1.8/bin../lib/i686/native_threads/libzip.so :symbol errno,version GLIBC_2.0 not definded in file libc.so.6 with link time reference(libzip.so) 
unable to initialize threads: cannot find class java/lang/Thread 
Could not create java VM 
  解决方法:
在运行runInstaller之前做下面的步骤。
export LD_ASSUME_KERNEL=2.4.19 
ignore your kernal version 
下载文件libcwait.c ftp://people.redhat.com/drepper/libcwait.c  (通过IE无法下载的话,就用命令行)用gclearcase/" target="_blank" >cc -shared -o libcwait.so -fpic -O2 libcwait.c进行编译然后export LD_PRELOAD=/$path/libcwait.so
上面的方法能使Oracle Net configuration Assistant  ,Oracle Database configuration Assistant 安装成功。



修复Agent configuration Assistant不能配置成功的方法:请参考chinaunix上的
在RHAS3上成功安装Oracle9204作者:renxiao2003
----------------------------------------------------------------------------------------------
运行runInstaller之后,出现安装组件的选择结果,这时点“Install”,开始安装,复制文件,进度条在一点一点的增加,当安装并link完后,出现配置工具界面,agent服务不能配置成功,忽略不用管,在下面修复。DBCA,NETCA,HTTP都正确配置完毕哦。呵呵。下面开始修复错误。其实要是把各个界面抓取下来就更好了。 
6、安装p3238244_9204_LINUX.zip补丁 
此补丁也是从http://metalink.oracle.com下下载,同时要下载一个opatch软件包:p2617419_220_GENERIC.zip,它主要是用来悠agent服务不能启动的错误。 
过程如下:[quote:864939f94a]su - oracle 
$ cp p2617419_210_GENERIC.zip /tmp 
$ cd /tmp 
$ unzip p2617419_210_GENERIC.zip 
$ export PATH=$PATH:/tmp/OPatch 
$ export PATH=$PATH:/sbin        # the patch needs "fuser" which is located in /sbin 
$ unzip p3238244_9204_LINUX.zip 
$ cd 3238244 
$ opatch apply 

:864939f94a]补丁修复完成,需要relinked一个.mk文件。 
$ cd $ORACLE_HOME/network/lib 
$ make -f ins_oemagent.mk install 
现在在运行agentctl start,看是不是可以成功运行agent服务了啊,可以用stop、status来停止此服务或者检查服务的状态。 
在这个成功之后,居然不能启动Oracle,说是不能找到初始化文件,没办法,我用dbca先删除了原来安装时建立的库,再重新建立了数据库。 
7、运行dbca来创建数据库。呵呵,一路畅通,完成数据库的安装。 
希望你也能成功安装。


运行runInstaller后,安装界面出来出现乱码
export LANG=en_us 再运行runInstaller (这是最简单实用的办法)

 
报/etc/oratab 错误
如果在机器上以前安装过,再一次安装的时候如果报/etc/oratab 错误。请将/etc/oratab 清空(删除也可)
cp /dev/null  /etc/oratab 
(4)然后开始建库,当建库到46%时会出现共享内存问题,
        ORA-27123: unable to attach to shared memory segment
      这时需要给内核指定内存,可以:
        echo 4294967295 >/proc/sys/kernel/shmmax
      或者
        编辑/etc/sysctl.conf
        kernel.shmmax=4294967295
      这样就可以数据库的安装。
运行: 要启动oracle要先运行数据库监听程序:lsnrctl  start   关闭:lsnrctl stop
   运行oemapp console可以打开oracle企业管理器工具

还有一些错误,可能需要修改/etc/hosts,/etc/sysctl.conf,请大家在google上搜一下按照网友提示的方法进行修改。
另外主副主机的目录设置成一样。都将oracle用户主目录设为/home/oracle.主副主机的数据库名字都设为oracle,实例名也都设为一样,都设为oracle(申明一点,是否必须将主副主机的数据库名字实例名都设为相同,我曾在cu上发过贴子问过,好像大家都说不需要,但我们这的dba说是必须,反正我在这里设的是相同。 

第二步:Dataguard配置
首先将主副两主机都设为归档模式。
1. 主节点备份并生成备用数据库控制文件
登陆主节点,进行数据库备份,并生成备用数据库控制文件
[oracle@primary]$ sqlplus "/ as sysdba"
SQL> startup
SQL> shutdown immediate
SQL> exit

[oracle@primary]pwd
/home/oracle
[oracle@primary]$ ls
admin  dictionary.ora  jre  oradata  oraInventory  oui  product  soft
[oracle@primary]tar -cvf oradata.tar oradata
[oracle@primary]$ ls -l *.tar
-rw-r--r--    1 oracle   dba      576512000 Aug 16 10:22 oradata.tar
[oracle@primary]$ sqlplus "/ as sysdba"
SQL> startup
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled  
Archive destination            /home/oracle/oradata/primary/archive
Oldest online log sequence     88
Next log sequence to archive   90
Current log sequence           90
SQL> alter database create standby controlfile as '/home/oracle/standby.ctl';
Database altered.
SQL> exit
[oracle@primary] 

 3. 登陆备用节点(standby),ftp获得primary主机的数据库文件(即oradata.tar文件)、备用控制文件(/home/oracle/standby.ctl) ,口令文件( $ORACLE_HOME/dbs/下的orapworacle)传到standby里的相应位置。
具体步骤:
3.1  在standby的/home/oracle/oradata下,原来有一个oracle的文件夹(里面是该主机下的dbf,redolog文件),再新建一个primary文件夹。将primary主机的oradata.tar解开的文件全部直接(即primary不要再有文件夹)放到primary下,将刚生成的备用控制文件(/home/oracle/standby.ctl)也放到primary下。

3.2 在standby的ORACLE_HOME/dbs/下,先将以前的orapworacle备份一下(改个名字即可),再将primary的$ORACLE_HOME/dbs/下的orapworacle 文件ftp放到standby的ORACLE_HOME/dbs/下.
说明一下,我在查阅eygle的大作及很多人的相关文章,都没有提到这一点,但如果没做这一步的话,再后面的启动备用数据库的时候,即在
[oracle@eygle primary]$ sqlplus "/ as sysdba"
SQL> startup nomount;
SQL> alter database mount standby database;
SQL> alter database recover managed standby database disconnect from session;
这一步时就会报ORA-01991 错误,说是Invalid passwd file.询问我们的dba,说是必须要用primary的orapworacle来替换standby的. 我试过,这样做了后就OK了。
所以我这在这里就把primary的orapworacle来替换standby的orapworacl也当作一步必须步骤,但我真的不能肯定这一步是否是必须的,如果不是必须的,为何我做这一步,总会报错。如果是必须的,为何eygle和其他大牛的大作里都没有提到这一步,难道是因为这个太简单吗?? 我真的是有些疑惑。如果哪位大牛看到这,请给我一个肯定的回答,我不胜感激。

原文转自:http://www.ltesting.net