数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Linux下Oracle10


发布日期:2018年10月19日
 
Linux下Oracle10

DataGuard 双节点 node node

在node上配置网络 包括 网卡mac地址ipdns名 并测试网络

在node上 运行终端terminal命令——env |grep PATH

在node上创建数据库 选择 特殊数据库 类型

在node上 运行终端terminal命令——env |grep ORA全局数据库名要和配置文件里的oracle_sid设置的同名

在node上不设置默认归档日志 alter system set db_recovery_file_dest= scope=spfile同时需要启用arch日志进程 并手工创建归档日志目录及路径(mkdir p /u/app/arch 在DBCA上添加相关归档路径/u/app/arch)

注意事项 在更换默认归档路径后不会立即生效应重新生成spfile文件

create spfile= from pfile

创建数据库开始——结束完成后

在node上 运行终端命令——ps ef 查看进程出现oracle相关服务进程注意/etc/hosts 查看idIP 在/etc/hosts下node和node都需配置为主机设置快捷方式

ca(dbca) ——netmgr & 也可以主数据库

创建listener

查看listener——在/oracle下执行cd network/admin/

里面有个 listenerora文件编辑文件

命令 vi listenerora

ca配置tnsnameora node和node都需配置(连接后台服务的)

注意在从库上面也要在建立一个一模一样的库 采取方法 从主库复制一份过去详见 最下面 使用RMAN duplicate命令复制数据库

注意在从库上面也要在建立一个一模一样的库 采取方法 从主库复制一份过去

详见 最下面 使用RMAN duplicate命令复制数据库

ps ef | more查看配置是否成功也可以在netca界面上看结果

ps ef |grep oracle 查看进程

在node上配置listenertnsname

配置完后 测试两个node的网络互通——sqlplus scott/tiger@test

sqlplus scott/tiger@test

开始配置DataGuard

配置主库(Primary Database)相关工作

enable forced logging——alter database force logging

create a password file ——配置dbca时 oracle 自动创建

——database不处于open状态时使用处于open状态是 使用 user$表

setting 主库 初始化 参数 ——主要工作

++++++++++++++++

db_unique_name=uqn_node 自定义命名

log_archive_config=dg_config=(uqn_node uqn_node)

log_archive_dest_=SERVICE=lsnode tnsname

valid_for=(ONLINE_LOGFILESPRIMARY_ROLE)

db_unique_name=uqn_node

LOG_ARCHIVE_DEST_STATE_=ENABLE

LOG_ARCHIVE_DEST_STATE_=ENABLE

fal_server=lsnode

fal_client=lsnode

STANDBY_FILE_MANAGEMENT=AUTO

*db_file_name_convert=/u/oradata/test/oradata/test *log_file_name_convert=/u/oradata/test/oradata/test

enable archiving

shutdown immediate;

startup mount;

alter database archivelog;

alter database open;

创建主库备库(PrimaryStandby)

备份主库数据文件——rman备份 backup database

创建控制文件 for the Standby Database

startup mount;

alter database create standby controlfile as /u/oradata/test/standbyctl;

alter database open;

配置初始化参数 for the Standby Database

从主库拷贝文件到备库

包括datafilesstandby control fileinitial file Pscreate pfile from spfile前面在创建oracle初始化参数文件时是使用initdgdemoora文件而之前的spfiledgdemoora文件应该删除掉

删除命令rm f spfiledgdemoora

cp initdgdemoora /u/oradata

cp orapwdgdemo /u/oradata

检查一下/u/oradata目录下的文件

包括archdgdemoinitdgdemooraorapwdgdemobostonctl

有两种方式: 打包用ftp工具传过去

在/u目录下 scp r admin oradata root@IP:/u

为备库配置环境

修改配置文件之前先执行一下操作

先把/oradata/下的控制文件用bostonctl替换掉

在dgdemo下

rm f control*

mv /bostonctl /controlctl

cp controlctl controlctl

cp controlctl controlctl

将初始化参数文件拷到/oracle/dbs 下

mv $ORACLE_HOME/dbs/inittestora

mv $ORACLE_HOME/dbs/orapwtest

setting 备库 初始化 参数

*db_unique_name=uqn_node 自定义命名

*log_archive_config=dg_config=(uqn_node uqn_node)

*log_archive_dest_=location=/u/app/arch

*log_archive_dest_=SERVICE=lsnode tnsname

valid_for=(ONLINE_LOGFILESPRIMARY_ROLE)

db_unique_name=uqn_node

*LOG_ARCHIVE_DEST_STATE_=ENABLE

*LOG_ARCHIVE_DEST_STATE_=ENABLE

*fal_server=lsnode

*fal_client=lsnode

*STANDBY_FILE_MANAGEMENT=AUTO

*db_file_name_convert=/u/app/oradata/u/app/oradata

*log_file_name_convert=/u/app/oradata/u/app/oradata

实例

test__db_cache_size=

test__java_pool_size=

test__large_pool_size=

test__shared_pool_size=

test__streams_pool_size=

*audit_file_dest=/u/app/admin/test/adump

*background_dump_dest=/u/app/admin/test/bdump

patible=

ntrol_files=/u/app/oradata/controlctl/u/app/oradata/controlctl/u/app/oradata/controlctl

re_dump_dest=/u/app/admin/test/cdump

*db_block_size=

*db_domain=

*db_file_multiblock_read_count=

*db_name=test

*db_recovery_file_dest_size=

*db_recovery_file_dest=

*dispatchers=(PROTOCOL=TCP) (SERVICE=testXDB)

*job_queue_processes=

*log_archive_start=TRUE

*open_cursors=

*pga_aggregate_target=

*processes=

*remote_login_passwordfile=EXCLUSIVE

a_target=

*undo_management=AUTO

*undo_tablespace=UNDOTBS

*user_dump_dest=/u/app/admin/test/udump

*db_unique_name=test

*log_archive_config=dg_config=(test dubdg)

*log_archive_dest_=location=/u/app/oradata

*log_archive_dest_=service=dubdg valid_for=(online_logfilesprimary_role) db_unique_name=dubdg

*log_archive_dest_state_=enable

*log_archive_dest_state_=enable

*fal_server=dubdg

*fal_client=dubdg

*standby_file_management=auto

*db_file_name_convert=/u/app/oradata/u/app/oradata

*log_file_name_convert=/u/app/oradata/u/app/oradata

详见 最下面 使用RMAN duplicate命令复制数据库

启动物理备库(补充startup open read only 默认备库就是只读启动)

ps ef 进程查看

lsnrctl start主备库注意监听

startup主库

测试lsnode 访问 sqlplus system/oracle@lsnode

startup备库

startup mount;

Start Redo Apply:

alter database recover managed standby database disconnect from session;

到这一步DataGuard 已经配置好了

测试:在主库上执行

创建一个表scott_dept_test

alter system switch logfile;

或者alter system archive log current;

看备库那边有没有接收主库的redo log信息;

验证物理备库是否运行正常

接收主库多少redo log 信息

select sequence#first_timenext_time from v$archived_log order by sequence#;

select sequence#applied from v$archived_log order by sequence#;

管理备库

当备库处在 readonly状态时

备库仍然可以接收主库的archivelog信息也可以redo apply

但是在备库查询时 不能redo apply

取消redo apply or realtime apply;

alter database recover managed standby database cancel;

(open readonly access; alter database open; 可以查询主库的表了)

又要切换回到执行状态呵 apply:

alter database recover managed standby database disconnect from session;

alter database recover managed standby database using current logfile;

启动realtime apply

主备库切换:防止主库损坏时备库可以及时运行

select namedatabase_role from v$database;

主库切换:

alter database commit to switchover to physical

standby with session shutdown;

startup nomount;

alter database mount standby database;

recover managed standby database disconnect;

备库执行:

alter database commit to switchover to primary;

切换问题:

select sequence#applied from v$archived_log order by sequence#;

查了 redo apply 是 no

坏坏公主 ::

SELECT SWITCHOVER_STATUS FROM

V$DATABASE

为何显示的是RECVOERY NEEDED

坏坏公主 ::

是怎么回事呢

相关回答原来遇到过好像是切换前要确认你的的从库是否正常应用了所有的日志如果从库和主库不同步是切不过去的有空帮你再测试模拟一下

从库在redo apply yes 时 主库才能被切换

快速创建DataGuard

需要注意 前面的配置步骤还是要的 总之 一个原则 保证主从库的一致性

使用RMAN duplicate命令复制数据库 at : 上午 · Filed under 安装配置

去年刚开始学习RMAN的时候就知道有这个功能但是由于考试不考这个书上也没有关于这条命令的详细解释

为新数据库创建服务初始化参数文件密码文件监听在源数据库配置本地服务名指向新数据库

注意初始化参数文件中记得指定db_file_name_convert和log_file_name_convert参数以便后面rman复制数据库的时候知道该把数据文件和日志文件放到哪里去db_file_name_convert和

log_file_name_convert参数的格式如下(源数据库数据文件目录新数据库数据文件目录)

在sqlplus中用startup nomount将新数据库启动然后退出sqlplus这里一定要退出

(rman也一样quit)

否则会导致后面复制数据库时挂在那里因为复制数据库过程中有一个步骤是shutdown而shutdown会等待用户会话结束所以这里不退出后面会一直等待我在这里浪费了不少时间后来才恍然大悟明白原因

在源数据库启动rman连接到target和auxiliary这里假设新数据库的sid是aux

创建的本地服务名为dg用如下命令启动rman

rman target / auxiliary sys/sys@aux

为从库创建控制文件备份在做这一步之前 最好去删除之前的backupcopy crosscheck backup; delete noprompt backup;crosscheck copy; delete copy

backup format /u/app/backup/%Ubkp database plus archivelog; 数据文件 日志文件

backup format /u/app/backup/%Ubkp current controlfile for standby; 控制文件

scp *bkp root@dg:/u/app/backup

下面是默认的

rman>backup current controlfile for standby;

对源数据库和归档日志做全备份

rman>backup database plus archivelog;在默认路径 有可能不匹配

scp *bkp root@dg:/u/app/backup

将备份从源数据库复制到新数据库同样的目录位置

rman>duplicate target database for standby nofilenamecheck;

注意to auxdb这里要指定新数据库的sidduplicate命令完成后新数据库就可以使用了

select spid from v$process where addr=(select paddr from v$session where sid=(select sid from v$mystat where rownum<=));

set pagesize

set linesize

SQL> show parameter log_archive

上一篇:使用 SQL*Loader 向 Oracle 导入数据

下一篇:完整的oracle rman备份恢复的例子