背景: 一次甲方组织的部署方案讨论会上,各开发商都提出了自己的服务器要求,甲方只给一台数据库先临时过渡使用,要求整合几家应用oracle数据库; 我公司做为技术整合方虽然提出各种建议,最终无果,于是提出两种方案: 第一种:一个oracle数据库实例中多方案
背景: 一次甲方组织的部署方案讨论会上,各开发商都提出了自己的服务器要求,甲方只给一台数据库先临时过渡使用,要求整合几家应用oracle数据库; 我公司做为技术整合方虽然提出各种建议,最终无果,于是提出两种方案:
第一种:一个oracle数据库实例中多方案(用户)方式部署,一个应用分配一个数据库帐号(用户)。
第二种:一个是采用多实例方式部署,一个应用一个单独实例。
两种方案各有利弊;因各开发商都说自己数据敏感,于是提出选择了多实例部署的方案,多实例的方式就是在一个oracle数据库服务器创建多个数据库实例,同时运行,应用数据库层面互不干扰。 多实例创建方式很多种,这里以两个实例为例:
(1) 一个数据库实例创建好后,再直接采用DBCA创建另一个实例,适合全新安装,比较方便快速。
(2) 通过现有一个实例数据库克隆一个数据库实例。
(3) 通过rman备份恢复在本机恢复一个数据库实例。
安装多实例需要注意的问题,内存占用量大,两个数据库实例都要各自分配SGA,PGA等内存,对两个实例内存的分配注意控制,以免过多分配内存对主机系统造成影响。
本文第二种方式部署多实例,仅只做安装测试,对于sga内存分配等内容本例忽略掉了, 通过本文对数据库的物理结构进行了一次复习,该方式对11g for linux版本一样适用。
1. 数据库环境
(1) 现在一个数据库情况
操作系统版本 : OEL5.8 x64
数据库版本 : Oracle 10.2.0.5 x64
数据库名 : orcl
数据库SID : orcl
实例名 : orcl
数据库文件路径: /u01/app/oracle/oradata/orcl/
(2) 待克隆的数据库
数据库名 : abc
数据库SID : abc
实例名 : abc
数据库文件路径: /u01/app/oracle/oradata/abc/
说明:两个数据库实例采用不同目录结构与数据库名称。
2. 准备abc实例的目录结构
# su - oracle
$ mkdir -p /u01/app/oracle/admin/abc/{adump,bdump,cdump,dpdump,udump,pfile}
$ mkdir -p /u01/app/oracle/oradata/abc/
3. 准备abc实例的参数文件
通过现有orcl实例的参数文件进行修改。
$ sqlplus /nolog
SQL> conn / as sysdba;
SQL> create pfile from spfile;
SQL> host cp $ORACLE_HOME/dbs/initorcl.ora $ORACLE_HOME/dbs/initabc.ora
SQL> host vi $ORACLE_HOME/dbs/initabc.ora
#将orcl改为abc实例,注意路径是否正确。 abc.__db_cache_size=293601280 abc.__java_pool_size=4194304 abc.__large_pool_size=4194304 abc.__shared_pool_size=117440512 abc.__streams_pool_size=0 *.audit_file_dest='/u01/app/oracle/admin/abc/adump' *.background_dump_dest='/u01/app/oracle/admin/abc/bdump' *.compatible='10.2.0.5.0' *.control_files='/u01/app/oracle/oradata/abc/control01.ctl','/u01/app/oracle/oradata/abc/control02.ctl','/u01/app/oracle/oradata/abc /control03.ctl' *.core_dump_dest='/u01/app/oracle/admin/abc/cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='abc' *.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area' *.db_recovery_file_dest_size=2147483648 *.dispatchers='(PROTOCOL=TCP) (SERVICE=abcXDB)' *.job_queue_processes=10 *.open_cursors=300 *.pga_aggregate_target=141557760 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=425721856 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='/u01/app/oracle/admin/abc/udump'
4. 创建控制文件SQL语句
由于控制文件中包括数据库文件位置,实例名等数据,需要重新根据新的实例名与数据文件及文件路径创建控制文件。
根据control文件跟踪文件创建控制文件。
SQL> alter database backup controlfile to trace;
# 查看刚才创建的跟综文件的文件名:
SQL> oradebug setmypid
SQL> oradebug tracefile_name
/u01/app/oracle/admin/orcl/udump/orcl_ora_4044.trc
SQL> ! cat /u01/app/oracle/admin/orcl/udump/orcl_ora_4044.trc
# 按如下格式,如果有其它数据文件,可以按此格式加入。
CREATE CONTROLFILE set DATABASE "ABC" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/abc/redo01.log' SIZE 50M,
GROUP 2 '/u01/app/oracle/oradata/abc/redo02.log' SIZE 50M,
GROUP 3 '/u01/app/oracle/oradata/abc/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/abc/system01.dbf',
'/u01/app/oracle/oradata/abc/undotbs01.dbf',
'/u01/app/oracle/oradata/abc/sysaux01.dbf',
'/u01/app/oracle/oradata/abc/users01.dbf'
CHARACTER SET ZHS16GBK
;
5. 创建密码文件
$ orapwd file=$ORACLE_HOME/dbs/orapwabc password=oracle entries=10
6. 多实例监听与服务名配置
(1) 添加静态监听配置,实现单IP,多实例
$ vi $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = orcl)
)
(SID_DESC =
(SID_NAME = abc)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = abc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
(2) 命令服务配置
$ vi $ORACLE_HOME/network/admin/tnsnames.ora
ABC =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
)
(CONNECT_DATA =
(SID = abc)
(SERVICE = DEDICATED)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcl)
(SERVICE = DEDICATED)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
$ lsnrctl stop
$ lsnrctl start
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 14-11014 22:07:31
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.5.0 - Production
System parameter file is /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Start Date 14-11014 22:07:31
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "abc" has 1 instance(s).
Instance "abc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
7. 拷贝orcl实例的数据文件
(1) 数据库必须在一致性状态下进行拷贝,需要关闭orcl数据库实例。
$ sqlplus / as sysdba;
SQL> shutdown immediate;
SQL> quit
(2) 拷贝orcl实例的所有数据文件
$ cp /u01/app/oracle/oradata/orcl/*.dbf /u01/app/oracle/oradata/abc/
$ ll /u01/app/oracle/oradata/abc/
total 738672
-rw-r----- 1 oracle oinstall 262152192 Nov 14 22:12 sysaux01.dbf
-rw-r----- 1 oracle oinstall 461381632 Nov 14 22:12 system01.dbf
-rw-r----- 1 oracle oinstall 20979712 Nov 14 22:12 temp01.dbf
-rw-r----- 1 oracle oinstall 26222592 Nov 14 22:12 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 Nov 14 22:12 users01.dbf
$
8. 正启开始创建abc实例
(1) 通过abc SID启动数据库
[oracle@node1 ~]$ export ORACLE_SID=abc
[oracle@node1 ~]$ sqlplus / as sysdba;
SQL*Plus: Release 10.2.0.5.0 - Production on 14 22:18:52 2014
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to an idle instance.
SQL>
(2) 启动abc实例到nomount状态
因为有abc实例的pfile参数文件,可以将数据库启动到nomount状态.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 427819008 bytes
Fixed Size 2096792 bytes
Variable Size 125829480 bytes
Database Buffers 293601280 bytes
Redo Buffers 6291456 bytes
SQL>
(3) 在nomount状态下创建生成控制文件,手动复制粘贴上面创建的生成控制文件语句。
SQL> CREATE CONTROLFILE set DATABASE "ABC" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/abc/redo01.log' SIZE 50M,
GROUP 2 '/u01/app/oracle/oradata/abc/redo02.log' SIZE 50M,
GROUP 3 '/u01/app/oracle/oradata/abc/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/abc/system01.dbf',
'/u01/app/oracle/oradata/abc/undotbs01.dbf',
'/u01/app/oracle/oradata/abc/sysaux01.dbf',
'/u01/app/oracle/oradata/abc/users01.dbf'
CHARACTER SET ZHS16GBK
18 ;
Control file created.
SQL>
SQL>
(4) resetlogs启动数据库
resetlogs启动数据库同时重新生成创建redo日志文件。
SQL> alter database open resetlogs;
Database altered.
(5) 通过abc实例的pfile文件创建spfile文件
SQL> create spfile from pfile;
(6) 添加一个临时数据文件
SQL> alter tablespace temp add tempfile '/u01/app/oracle/oradata/abc/temp01.dbf'
9. 更改Oracle数据库DBID
(1)在nid之前必须要shutdown immediate一次再mount状态;
SQL> shutdown immediate;
SQL> startup mount;
SQL> quit
(2) nid修改数据库名
[oracle@node1 ~]$ nid target=sys
DBNEWID: Release 10.2.0.5.0 - Production on 14 22:46:50 2014
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Password:
Connected to database ABC (DBID=1390560469)
Connected to server version 10.2.0
Control Files in database:
/u01/app/oracle/oradata/abc/control01.ctl
/u01/app/oracle/oradata/abc/control02.ctl
/u01/app/oracle/oradata/abc/control03.ctl
Change database ID of database ABC? (Y/[N]) => y
Proceeding with operation
Changing database ID from 1390560469 to 1819805470
Control File /u01/app/oracle/oradata/abc/control01.ctl - modified
Control File /u01/app/oracle/oradata/abc/control02.ctl - modified
Control File /u01/app/oracle/oradata/abc/control03.ctl - modified
Datafile /u01/app/oracle/oradata/abc/system01.dbf - dbid changed
Datafile /u01/app/oracle/oradata/abc/undotbs01.dbf - dbid changed
Datafile /u01/app/oracle/oradata/abc/sysaux01.dbf - dbid changed
Datafile /u01/app/oracle/oradata/abc/users01.dbf - dbid changed
Datafile /u01/app/oracle/oradata/abc/temp01.dbf - dbid changed
Control File /u01/app/oracle/oradata/abc/control01.ctl - dbid changed
Control File /u01/app/oracle/oradata/abc/control02.ctl - dbid changed
Control File /u01/app/oracle/oradata/abc/control03.ctl - dbid changed
Instance shut down
(3) 验证数据库名修改,最终修改成功。
$ sqlplus /nolog
SQL> conn / as sysdba;
SQL> startup mount;
SQL> alter database open resetlogs;
SQL> select dbid,name from v$database;
DBID NAME
---------- ---------
1819805470 ABC
SQL>
10. 配置实例开机自启动
(1) 配置oracle开机启动,加入abc实例自启动开关项
# vi /etc/oratab
orcl:/u01/app/oracle/product/10.2.0/db_1:Y
abc:/u01/app/oracle/product/10.2.0/db_1:Y
(2) 设置开机启动
# vi /etc/rc.local
#!/bin/sh
su - oracle -c "lsnrctl start"
su - oracle -c "dbstart"
(3) 登录到数据库服务器上手动的启动与关闭数据库实例方法
进入orcl实例的方法;
$ export ORACLE_SID=orcl
$ sqlplus /nolog
SQL> conn /as sysdba
SQL> startup;
进入abc实例的方法;
$ export ORACLE_SID=abc
$ sqlplus /nolog
SQL> conn /as sysdba
SQL> startup

Python中的支持向量机(SupportVectorMachine,SVM)是一个强大的有监督学习算法,可以用来解决分类和回归问题。SVM在处理高维度数据和非线性问题的时候表现出色,被广泛地应用于数据挖掘、图像分类、文本分类、生物信息学等领域。在本文中,我们将介绍在Python中使用SVM进行分类的实例。我们将使用scikit-learn库中的SVM模

Golang是一门功能强大且高效的编程语言,可以用于开发各种应用程序和服务。在Golang中,指针是一种非常重要的概念,它可以帮助我们更灵活和高效地操作数据。指针转换是指在不同类型之间进行指针操作的过程,本文将通过具体的实例来学习Golang中指针转换的最佳实践。1.基本概念在Golang中,每个变量都有一个地址,地址就是变量在内存中的位置。

随着互联网的普及,验证码已经成为了登录、注册、找回密码等操作的必要流程。在Gin框架中,实现验证码功能也变得异常简单。本文将介绍如何在Gin框架中使用第三方库实现验证码功能,并提供示例代码供读者参考。一、安装依赖库在使用验证码之前,我们需要安装一个第三方库goCaptcha。安装goCaptcha可以使用goget命令:$goget-ugithub

随着新一代前端框架的不断涌现,VUE3作为一个快速、灵活、易上手的前端框架备受热爱。接下来,我们就来一起学习VUE3的基础知识,制作一个简单的视频播放器。一、安装VUE3首先,我们需要在本地安装VUE3。打开命令行工具,执行以下命令:npminstallvue@next接着,新建一个HTML文件,引入VUE3:<!doctypehtml>

生成对抗网络(GAN,GenerativeAdversarialNetworks)是一种深度学习算法,它通过两个神经网络互相竞争的方式来生成新的数据。GAN被广泛用于图像、音频、文字等领域的生成任务。在本文中,我们将使用Python编写一个GAN算法实例,用于生成手写数字图像。数据集准备我们将使用MNIST数据集作为我们的训练数据集。MNIST数据集包含

VAE是一种生成模型,全称是VariationalAutoencoder,中文译作变分自编码器。它是一种无监督的学习算法,可以用来生成新的数据,比如图像、音频、文本等。与普通的自编码器相比,VAE更加灵活和强大,能够生成更加复杂和真实的数据。Python是目前使用最广泛的编程语言之一,也是深度学习的主要工具之一。在Python中,有许多优秀的机器学习和深度

随着互联网的迅速发展,数据已成为了当今信息时代最为重要的资源之一。而网络爬虫作为一种自动化获取和处理网络数据的技术,正越来越受到人们的关注和应用。本文将介绍如何使用PHP开发一个简单的网络爬虫,并实现自动化获取网络数据的功能。一、网络爬虫概述网络爬虫是一种自动化获取和处理网络资源的技术,其主要工作过程是模拟浏览器行为,自动访问指定的URL地址并提取所

快速上手Django框架:详细教程和实例引言:Django是一款高效灵活的PythonWeb开发框架,由MTV(Model-Template-View)架构驱动。它拥有简单明了的语法和强大的功能,能够帮助开发者快速构建可靠且易于维护的Web应用程序。本文将详细介绍Django的使用方法,并提供具体实例和代码示例,帮助读者快速上手Django框架。一、安装D


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver Mac版
视觉化网页开发工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。