Use Powershell Install Oracle Database 11g
1 简介
ORACLE(甲骨文)公司。Oracle Database (甲骨文数据库) 是一个具有对象和可扩展标记语言(XML)功能的关系数据库,提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。
在关系数据库中,所有数据都存储在由行和列组成的二维表中。Oracle数据库使您能够以高度的性能,可靠性和可伸缩性存储数据,更新数据并有效地检索数据。
2 描述
ORACLE 数据库,是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
- Oracle 数据库目前分为:
- Oracle Database 11G、Oracle Database 12c、Oracle Database 18c 三个版本;
- 目前最新版本为 Oracle Database 18c。
3 Oracle 组成
Oracle 数据库由以下组建组成:
- Oracle 软件 :安装在 Oracle 主机上的软件
- 数据库 : 包含用户数据,元数据和控制结构
(元数据 和数据集,允许 Oracle 软件管理用户数据。元数据的示例是数据字典。控制结构(例如控制文件和联机重做日志文件)可确保用户数据的完整性,可用性和可恢复性。)
数据库的物理存储结构是由一些多种物理文件组成,主要有数据文件、控制文件、重做日志文件、归档日志文件、参数文件、口令文件、警告文件等 - Oracle instance(Oracle 实例) :由以下部分组成:
- 后台进程
- 存储
- 监视和恢复与数据库相关的用户数据、元数据和控制文件的操作系统进程或线程后台进程使用的共享内存区域
- Server processes(服务进程):这些进程使用的内存和临时存储,服务器进程解析并执行SQL语句,并将检索结果返回给用户或应用程序。
- Oracle Net listener(Oracle 侦听) :Oracle Net 是一个软件层,支持客户端应用程序和 Oracle 数据库通过网络进行通信
它是一个侦听来自网络的连接请求的进程。
4 管理数据库的工具
- 实现数据库管理员目标的一些产品,工具和实用程序:
- Oracle Universal Installer
- Oracle Universal Installer(OUI)是一个安装 Oracle 软件和选件的实用程序。它可以自动启动 Oracle Database Configuration Assistant 来安装数据库。
- Oracle 数据库配置助手
- Oracle 数据库配置助手(DBCA)是一个实用程序,它可以从 Oracle 提供的模板创建数据库,也可以创建自己的模板。使用户可以复制预配置的种子数据库,从而节省生成和自定义新数据库的时间和精力。
- 数据库升级助手
- 数据库升级助手是一个工具,可指导您将现有数据库升级到新的 Oracle 数据库版本。
- Net Configuration Assistant
- Net Configuration Assistant(NETCA)是一个实用程序,使用户可以配置侦听器和命名方法,这些方法是 Oracle 数据库网络的关键组件。
- Oracle Enterprise Manager Database Control 企业管理器数据库控制
- 管理数据库的主要产品是 Oracle 企业管理器数据库控制(数据库控制),这是一个基于Web的界面。安装 Oracle 数据库软件,创建或升级数据库并配置网络后,可以使用 Database Control 来管理数据库。
- Database Control 还为性能顾问和Oracle实用程序(如SQL * Loader和Recovery Manager(RMAN))提供了一个界面。
5 Windows 和 UNIX 系统之间的安装差异
在 Windows 上安装 Oracle 组件不需要像在Linux环境中安装组件一样需要丰富的 Linux 的经验,在 Windows 上不需要那么多的设置工作。UNIX和Windows安装之间的主要区别是:
- Service
在 Windows 中,Oracle Universal Installer 在安装时创建服务,并将其配置为在主机启动时自动启动 Oracle 软件组件。 - Environment variables(环境变量)
在 Windows 中,Oracle Universal Installer 设置环境变量,例如 PATH,并在注册表中创建,如果安装了多个Oracle主目录,则只需在注册表中设置最后一个Oracle主目录的SID。有关管理Oracle主目录的更多信息,请参阅适用于Windows和UNIX的Oracle Universal Installer和OPatch用户指南。 - Operating System Groups
在 Windows 系统中,Oracle Universal Installer(通用安装程序)创建的 ORA_DBA,ORA_OPER,ORA_SID_DBA 和 ORA_SID_OPER 组,用于为Oracle实例操作系统认证。
Windows 不需要使用 Oracle Inventory 组。 - Account for running Oracle Universal Installer
在 Windows 中,可以使用管理员权限登录。不需要像在Linux和UNIX系统上,管理员必须创建并使用软件所有者用户帐户,并且此用户必须属于 Oracle Inventor y组。
6 Oracle 数据库 Requirements
6.1 Oracle 数据库之 Hardware Require
表1硬件要求
Physical MemoryRAM Virtual Memor Disk Space Process Type Video Adapter Screen Resolution 2GB Minimum 如果物理内存介于2 GB和16 GB之间,则将虚拟内存设置为RAM大小的1倍 总计:5.39 GB AMD64 或 Intel扩展内存(EM64T) 256 colors 1024*768 Minimum
6.2 Oracle 数据库之 PageFile Size Require
验证 内存条件 ! 注意在Linux上,使用内存映射文件为大型页表分配不可交换的内存。如果启用了HugePages,那么应该在计算交换空间之前从可用RAM中扣除分配给HugePages的内存。
可用内存 需要交换空间 可用内存 需要交换空间 可用内存 需要交换空间 1/2 GB之间 RAM大小的1.5倍 2/16 GB之间 等于RAM的大小 超过16 GB 16 GB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# 以单位为Gb,保留小数点后两位,获取本机所有插槽的内存,并取值 capacity 容量,相加,取值内存总量 $Memory = "{0:N2}GB" -f (((Get-WmiObject -Class Win32_PhysicalMemory).capacity | Measure-Object -Sum).sum /1gb) # 获取本机所有插槽的内存,并取值 capacity 容量,相加,取值内存数量,从而或者内存数量 $MemoryNumber = ((Get-WmiObject -Class Win32_PhysicalMemory).capacity | Measure-Object -Sum).count # 获取本机内存生产厂商 $MemoryManufacturer = (Get-WmiObject -Class Win32_PhysicalMemory).Manufacturer # 以单位为Gb,保留小数点后两位,获取系统信息,取值 FreePhysicalMemory 可用内存容量,相加,取值内存总量 $FreeMemory = "{0:N2}GB" -f ((Get-WmiObject -Class Win32_OperatingSystem).FreePhysicalMemory /1MB) # 以单位为Gb,保留小数点后两位,获取系统信息,取值 VirtualMemor 页面内存 $VirtualMemor = "{0:N2}GB" -f (((Get-WmiObject -Class Win32_OperatingSystem).TotalVirtualMemorySize | Measure-Object -Sum).Sum /1MB) # 以单位为Gb,保留小数点后两位,获取系统信息,取值 FreeVirtualMemo 剩余的页面内存 $FreeVirtualMemor = "{0:N2}GB" -f (((Get-WmiObject -Class Win32_OperatingSystem).FreeVirtualMemory | Measure-Object -Sum).Sum /1MB) Write-Host "|Number Memory:$MemoryNumber" "|Memory Capacity:$Memory" "|Free Memory:$FreeMemory" "|VirtualMemor:$VirtualMemor" "|FreeVirtualMemor:$FreeVirtualMemor" |
6.3 Oracle 数据库之 Disk space Require
在使用NT文件系统(NTFS)的 Windows 平台系统上安装 Oracle 需使用 Oracle ACFS 或 NTFS 做为 Oracle 数据库主目录。
如果使用 Oracle ACFS,则必须将数据库文件本身放在 Oracle ASM 上。否则应该使用 NTFS 文件系统做为 Oracle 数据库主目录。表 NTFS 文件系统 “最小磁盘空间” 要求:
Installation Type TEMP Space C:\Program Files\Oracle Oracle Home Datafiles Total 经典安装 600 MB 5.0 MB 6 GB 4 GB 12 GB
6.4 Oracle 数据库之 System Environment Require
System Architecture Operating System Compiler(编译器) Network Protocol Software 处理器:AMD64和Intel EM64T Windows Server 2003 x64 —— Windows Server 2019 x64;
Standard, Datacenter, Essentials, and Foundation editions;
Windows多语言用户界面包。Microsoft Visual C ++ .NET 2005 ;
Microsoft Visual C ++ .NET 2008 9.0;
Microsoft Visual C ++ .NET 2005 STL的Intel 10.1 C ++编译器。TCP / IP、使用SSL的TCP / IP、命名管道 Java运行时环境(JRE)
6.5 Oracle 数据库之 Port number and protocol
位于 $ORACLE_HOME\install\portlist.ini 文件中详细的列出了 Oracle Database 默认使用的 “Port Number” 和 “Protocol”。需要注意的是,修改 Oracle Database 的默认端口,文件 portlist.ini 任然不会改变,此文件仅作默认说明
下表列出了 Oracle Database 在安装期间配置的组件使用的端口号和协议。默认情况下 Oracle Database 将从端口范围中的第一个端口(如果可用)将分配给该组件。
组件名称 | 默认端口 | 端口范围 | 协议 | 描述 |
---|---|---|---|---|
Oracle Net Listener | 1521 | 1024-65535 | TCP | 允许Oracle Client使用Oracle Net服务连接到数据库。管理员可以在安装时指定此端口号。请使用 Net Configuration Assistant 配置或修改端口号。 |
Connection Manager | 1630 | 1630 | TCP | Oracle客户端连接的侦听端口。它在安装期间未配置,但可以使用 Net Configuration Assistant 进行配置。 |
Oracle Enterprise Manager Database Control | 1158 | 5500-5519 | HTTP | 企业管理器数据库控制的HTTP端口。它在安装期间配置。https://docs.oracle.com/cd/E11882_01/install.112/e47798/ports.htm#BEHEFACG 说明了如何修改其端口号。 |
5520 | 5520-5539 | TCP | 企业管理器数据库控制的RMI端口,https://docs.oracle.com/cd/E11882_01/install.112/e47798/ports.htm#BEHEFACG 说明了如何修改其端口号。 | |
5540 | 5540-5559 | TCP | 企业管理器数据库控制的JMS端口,https://docs.oracle.com/cd/E11882_01/install.112/e47798/ports.htm#BEHEFACG 说明了如何修改其端口号。 | |
Enterprise Manager Database Control Agent | 3938 | 1830–1849 | HTTP | Oracle Management Agent的HTTP端口,它是Oracle Enterprise Manager的一部分 https://docs.oracle.com/cd/E11882_01/install.112/e47798/ports.htm#BEHIGAHJ 明了如何修改其端口号 |
Oracle XML DB | 0 | 手动配置 | HTTP | 如果基于Web的应用程序需要从HTTP侦听器访问Oracle数据库,则使用Oracle XML DB HTTP端口 !⚠ 无法在安装以后修改 |
0 | 手动配置 | FTP | 当应用程序需要从FTP侦听器访问Oracle数据库时,将使用Oracle XML DB FTP。无法在安装以后修改 | |
Cluster Synchronization Service (CSS) | 42424 | 动态 | TCP | Group Manager的CSS服务用于节点间的连接,端口号采用自动分配。 !⚠ 无法查看,以及无法修改次设置 |
Oracle Cluster Registry | 动态 | 动态 | TCP | 端口号在安装期间自动分配。 !⚠ 无法查看,以及无法修改次设置 |
Oracle Services for Microsoft Transaction Server | 动态 | 49152-65535 | TCP |
!⚠
- 不应该也不推荐将 Oracle 安装在 FAT32 的文件系统上
- 不同 Oracle 版本且存在不同的特性,安装方法也不相同,尤其是基于应答文件安装的 Oracle 更需要注意各版本的应答文件配置格式,此次的安装和配置仅适用于 Oracle Database 11g
- 有关Hyper-V支持的信息,请访问My Oracle Support(以前称为Oracle MetaLink)https://support.oracle.com/epmos/faces/DocumentDisplay?id=1563794.1
6.6 Oracle 数据库之 IPC$ Null link Require
6.6.1
Oracle 数据库安装期间的先决条件检查要求计算机上的系统驱动器上配置了 IPC$ 空链接默认共享。使用该 net use 命令进行验证,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 判断 SMB 共享,如果存有 IPC$ 则打印,否则创建一个 #IF ((Get-SmbShare).Name -eq "C$"){Write-Host "IPC$ 空链接会话已被创建"}ELSE{Write-Host "正在建立 IPC$ 空链接" ;NET USE \\127.0.0.1\c$} IF ((Get-SmbShare).Name -eq "E$"){ net use \\127.0.0.1\C$ Write-Host "IPC$ 空链接会话已被创建" } ELSE { Write-Host "正在建立 IPC$ 空链接" New-SmbShare -Name "E$" -Path "E:\" } |
7 安装 Oracle 数据库值先觉条件设置
7.1 安装 Oracle 数据库之 Hostname Resolution
7.1.1
确保主机名可通过 DNS(域名系统),NIS(网络信息服务)或着 Hosts 静态解析文件 “Windows 路径为” $env:SystemRoot\system32\drivers\etc\hosts,或者 “Linux 路径为” /etc/hosts 文件进行解析
1 2 3 4 5 6 7 |
# 定义:LANIP 地址,获取本机网卡适配名称包含 LAN 的适配器 $LANIP = (Get-NetIPAddress -InterfaceAlias "LAN*").IPAddress # 获取计算名称 和 LANIP 地址的变量值,然后输出到指定文件中,并以 ASCII 字符编码输入,并以附加的方式写入文件 "$env:COMPUTERNAME $LANIP" | Out-File -Encoding ascii -FilePath "$env:SystemRoot\system32\drivers\etc\hosts" -Append |
7.2 安装 Oracle 数据库 之 Environment Variable
7.2.1
对于 Windows 平台来说,安装 Oracle 并没有 Linux 平台那么复杂,不需要修改系统:环境变量、内存参数,不需要创建相关的用户和组。为了使用 -Response file(应答文件)并采用 -silent(静默)安装,需要提前将相关变量设置好,方便修改响应文件时使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# 定义:获取本地驱动器卷标为 Data 的驱动器,然后列出带有 Data 卷标磁盘的 DriveLetter 属性 $DataDriveLetter = (Get-CimInstance Win32_Volume -Filter "Label = 'Data'").DriveLetter # 定义Oracle可使用内存限制:获取本机物理内存空间,在合计相加,在除以 1.2,从而设置理想值。 # 定义内存限制:将获取的内存容量,截取小数点,并保留整数 $MemoryLimit = (((Get-WmiObject -Class Win32_PhysicalMemory).capacity | Measure-Object -Sum).sum /1MB)/1.2 $MemoryLimit=[math]::truncate($MemoryLimit) # 定义WIndows页面文件大小分别以 正常和最大 两个数值:获取物理内存,并合计相加,在乘以 1.5 和 3,从而定义理想值 $PageFileInitialSize = (((Get-WmiObject -Class Win32_PhysicalMemory).capacity | Measure-Object -Sum).sum /1MB)*1.5 $PageFileMaximumSize = (((Get-WmiObject -Class Win32_PhysicalMemory).capacity | Measure-Object -Sum).sum /1MB)*3 # 定义应答文件中所需相关用户的密码 $PasswdAll = "Admin123" $PasswdSYS = "Admin123" $PasswdSYSTEM = "Admin123" $PasswdSYSMAN = "Admin123" $PasswdDBSNMP = "Admin123" # 定义参数变量 $ORACLE_SID = "orcl11g" # Oracle 的 SDI $ORACLE_NETCA = "$ORACLE_SID`_LISTENER" # Oracle 的监听器名称, # 定义安装 Oracle 所需路径变量 $ORACLE_DIRS = "$DataDriveLetter\Oracle" $ORACLE_INST = "$DataDriveLetter\OracleInstall" $ORACLE_BASE = "$ORACLE_DIRS\Database" $ORACLE_HOME = "$ORACLE_BASE\product\11.2.0\dbhome_1" $ORACLE_DATA = "$DataDriveLetter\OraData" $ORALCE_RECOVERY = "$DataDriveLetter\Flash_Recovery_Area" |
7.3 安装 Oracle 数据库之 Mew Directory
7.3.1
使用 Response file 时 Oracle Database 11g 不会自动创建所需目录,需要提前创建好所需目录
1 2 3 4 |
# 新建项目,项目类型为目录,路径为 DriveLetter 属性的路径,并同时新建多个目录 New-item -ItemType Directory -Path "$ORACLE_INST", "$ORACLE_BASE", "$ORACLE_DATA", "$ORACLE_HOME", "$ORALCE_RECOVERY", "$ORACLE_DIRS\Middleware" |
7.4 安装 Oracle 数据库 之 Change Pagefile Size
7.4.1
如果物理内存介于2 GB和16 GB之间,则将虚拟内存设置为RAM大小的1倍。如果物理内存超过16 GB,则将虚拟内存设置为 16 GB
1 2 3 4 5 6 7 8 9 10 11 12 |
# 设置改变 pagefile.sys(页面文件/虚拟内存)大小以 MB 为单位 # 获取 win32 系统信息 AutomaticManagedPagefile(自动管理页面文件),并将其设置为 false 状态。 然后通过查询 "Select * From Win32_PageFileSetting Where Name like '%pagefile.sys'" # 然后再通过做子类(InitialSize、MaximumSize) 来设置指定的数值。改设置并不会自动生效可能需要重启才会生效。 $ComputerSys = Get-WmiObject Win32_ComputerSystem -EnableAllPrivileges $ComputerSys.AutomaticManagedPagefile = $False $ComputerSys.Put() $PageFile = Get-WmiObject -Query "Select * From Win32_PageFileSetting Where Name like '%pagefile.sys'" $PageFile.InitialSize = $PageFileInitialSize $PageFile.MaximumSize = $PageFileMaximumSize $PageFile.Put() |
7.5 安装 Oracle 数据库之 下载数据库
下载数据库文件包
1 2 3 4 5 6 7 |
# https://updates.oracle.com/Orion/Services/download/p13390677_112040_MSWIN-x86-64_1of7.zip?aru=16908159&patch_file=p13390677_112040_MSWIN-x86-64_1of7.zip # https://updates.oracle.com/Orion/Services/download/p13390677_112040_MSWIN-x86-64_2of7.zip?aru=16908159&patch_file=p13390677_112040_MSWIN-x86-64_2of7.zip [System.Net.ServicePointManager]::SecurityProtocol=[System.Net.SecurityProtocolType]::Tls12 Invoke-WebRequest -Uri "https://updates.oracle.com/Orion/Services/download/p13390677_112040_MSWIN-x86-64_1of7.zip?aru=16908159&patch_file=p13390677_112040_MSWIN-x86-64_1of7.zip" -OutFile "$ORACLE_INST\win.x64_11g11204_database_1of2.zip" Invoke-WebRequest -Uri "https://updates.oracle.com/Orion/Services/download/p13390677_112040_MSWIN-x86-64_2of7.zip?aru=16908159&patch_file=p13390677_112040_MSWIN-x86-64_2of7.zip" -OutFile "$ORACLE_INST\win.x64_11g11204_database_2of2.zip" |
7.6 安装 Oracle 数据库之 展开文件包
6.1.5
Unzip the Oracle Database tarball using PowerShell
1 2 3 4 5 6 7 8 9 10 11 |
# 对于 Powershell 4.0 之前的版本还无法支持文件的解压,只能通过 Win32 类来完成,在 Powershell 4.0 之后已经完全支持文件的解压 Add-Type -AssemblyName System.IO.Compression.FileSystem function unzip { param( [string]$ziparchive, [string]$extractpath ) [System.IO.Compression.ZipFile]::ExtractToDirectory( $ziparchive, $extractpath ) } unzip "$ORACLE_INST\win.x64_11g11204_database_1of2.zip" "$ORACLE_INST" unzip "$ORACLE_INST\win.x64_11g11204_database_2of2.zip" "$ORACLE_INST" |
7.7 安装 Oracle 数据库之 设置防火墙
7.7.1
端口开放,更多关于 Oracle 的端口开放请参阅 管理Oracle数据库端口号。
1 2 3 4 5 6 7 8 9 10 11 12 |
New-NetFirewallRule -DisplayName "Oracle Net Listener" -Description "" -Profile Any -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1521 New-NetFirewallRule -DisplayName "Connection Manager" -Description "" -Profile Any -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1630 New-NetFirewallRule -DisplayName "Oracle Enterprise Manager Database Control" -Description "" -Profile Any -Action Allow -Protocol UDP -LocalPort 1158 New-NetFirewallRule -DisplayName "Oracle Enterprise Manager Database Control" -Description "" -Profile Any -Action Allow -Protocol TCP -LocalPort 1158,5520,5540 New-NetFirewallRule -DisplayName "Enterprise Manager Database Control Agent" -Description "" -Profile Any -Action Allow -Protocol TCP -LocalPort 3938 New-NetFirewallRule -DisplayName "Oracle XML DB" -Description "" -Profile Any -Action Allow -Protocol TCP -LocalPort 0 New-NetFirewallRule -DisplayName "Oracle XML DB" -Description "" -Profile Any -Action Allow -Protocol UDP -LocalPort 0 New-NetFirewallRule -DisplayName "Cluster Synchronization Service" -Description "" -Profile Any -Action Allow -Protocol TCP -LocalPort 42424 New-NetFirewallRule -DisplayName "Cluster Synchronization Service" -Description "" -Profile Any -Action Allow -Protocol UDP -LocalPort 42424 New-NetFirewallRule -DisplayName "Allow all requests to pass" -Description "" -Profile Any -Action Allow |
8 Example:Useing “Response File” Install Oracle Database 11g on Windows
8.1 安装 Oracle 数据库之 编辑db_install.rsp应答文件
8.1.1
Install the Oracle database edit db_install.rsp Response file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 复制所有 *.rsp 应答文件 到 $DataDriveLetter\OracleInstall\ 目录下 Copy-Item -Path "$ORACLE_INST\database\response\*.rsp" -Destination "$ORACLE_INST" $NewDBi = "$ORACLE_INST\db_install.rsp" # 编辑 db_install.rsp 数据库安装响应模板文件 # 使用 Powershell Replace 替换掉文本中指定的字符串 # 获取文本中的内容,使用 .Replace 参数替换,“原有字符串”,“新的字符串” (Get-Content -Path "$NewDBi").replace("oracle.install.option=", "oracle.install.option=INSTALL_DB_SWONLY") | Set-Content -Path "$NewDBi" # 指定安装选项 (Get-Content -Path "$NewDBi").replace("ORACLE_HOSTNAME=", "ORACLE_HOSTNAME=$env:COMPUTERNAME") | Set-Content -Path "$NewDBi" #指定 Oracle 主机名 (Get-Content -Path "$NewDBi").replace("SELECTED_LANGUAGES=", "SELECTED_LANGUAGES=zh_CN,") | Set-Content -Path "$NewDBi" # 指定安装语言 (Get-Content -Path "$NewDBi").replace("ORACLE_BASE=", "ORACLE_BASE=$ORACLE_BASE") | Set-Content -Path "$NewDBi" # 指定 Oracle 基础目录 (Get-Content -Path "$NewDBi").replace("ORACLE_HOME=", "ORACLE_HOME=$ORACLE_HOME") | Set-Content -Path "$NewDBi" # 指定 Oracle 主目录 (Get-Content -Path "$NewDBi").replace("oracle.install.db.InstallEdition=", "oracle.install.db.InstallEdition=EE") | Set-Content -Path "$NewDBi" # 指定 Oracle 安装版本 (Get-Content -Path "$NewDBi").replace("oracle.install.db.EEOptionsSelection=false", "oracle.install.db.EEOptionsSelection=false") | Set-Content -Path "$NewDBi" # 指定是否使用自定义安装组件,仅对 EE 版有效 (Get-Content -Path "$NewDBi").replace("oracle.install.db.isRACOneInstall=", "oracle.install.db.isRACOneInstall=false") | Set-Content -Path "$NewDBi" # 指定是否以节点形式安装 Oracle RAC (Get-Content -Path "$NewDBi").replace("oracle.install.db.config.starterdb.type=", "oracle.install.db.config.starterdb.type=GENERAL_PURPOSE") | Set-Content -Path "$NewDBi" # 指定要创建的数据库类型 (Get-Content -Path "$NewDBi").replace("oracle.install.db.config.starterdb.characterSet=AL32UTF8", "oracle.install.db.config.starterdb.characterSet=ZHS16GBK") | Set-Content -Path "$NewDBi" # 指定安装数据库时使用的字符集 (Get-Content -Path "$NewDBi").replace("oracle.install.db.config.starterdb.memoryOption=true", "oracle.install.db.config.starterdb.memoryOption=false") | Set-Content -Path "$NewDBi" # 指定是否使用自动内存管理 (Get-Content -Path "$NewDBi").replace("oracle.install.db.config.starterdb.memoryLimit=", "oracle.install.db.config.starterdb.memoryLimit=$MemoryLimit") | Set-Content -Path "$NewDBi" # 指定使用内存限制 (Get-Content -Path "$NewDBi").replace("SECURITY_UPDATES_VIA_MYORACLESUPPORT=", "SECURITY_UPDATES_VIA_MYORACLESUPPORT=false") | Set-Content -Path "$NewDBi" # 指定是否允许用户设置 Oracle 凭证密码 (Get-Content -Path "$NewDBi").replace("DECLINE_SECURITY_UPDATES=", "DECLINE_SECURITY_UPDATES=true") | Set-Content -Path "$NewDBi" # 指定是否启用安全更新 (Get-Content -Path "$NewDBi").replace("oracle.installer.autoupdates.option=", "oracle.installer.autoupdates.option=SKIP_UPDATES") | Set-Content -Path "$NewDBi" # 指定安装时,是否启用自动更新 |
8.2 安装 Oracle 数据库之 Use Response file and Use Silent Model install
8.2.1
Install Oracle database, use – silent mode – display progress – specify response file path
1 2 3 4 |
# 安装 Oracle 数据库,使用-静默模式 -显示安装进度 -指定响应文件路径 安装 Start-Process -FilePath $ORACLE_INST\database\setup.exe "-silent -showProgress -responseFile $ORACLE_INST\db_install.rsp" |
8.3 安装 Oracle 数据库之 Configuring Listeners
8.3.1
Configure the Oracle listener, using the response file netca.rsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# 定义新的侦听器配置文件路径 $NewNetca = "$ORACLE_INST\netca.rsp" # 编辑 netca.rsp 侦听器配置文件 # 使用 Powershell Replace 替换掉文本中指定的字符串 # 获取文本中的内容,使用 .Replace 参数替换,“原有字符串”,“新的字符串” (Get-Content -Path "$NewNetca").Replace('#LOG_FILE=""/oracle11gHome/network/tools/log/netca.log""',"LOG_FILE=""""$ORACLE_HOME\network\tools\log\netca.log""""") | Set-Content -Path "$NewNetca" # 指定义侦听器日志路径 (Get-Content -Path "$NewNetca").Replace('INSTALLED_COMPONENTS={"server","net8","javavm"}','INSTALLED_COMPONENTS={"server","net8","javavm","client"}') | Set-Content -Path "$NewNetca" # 指定安装功能的组建 (Get-Content -Path "$NewNetca").Replace('INSTALL_TYPE=""typical""','INSTALL_TYPE=""custom""') | Set-Content -Path "$NewNetca" # 指定侦听器安装类型 (Get-Content -Path "$NewNetca").Replace('LISTENER_NAMES={"LISTENER"}',"LISTENER_NAMES={""$env:COMPUTERNAME`_LISTENER""}") | Set-Content -Path "$NewNetca" # 指定:自定义侦听器名称 (Get-Content -Path "$NewNetca").Replace('LISTENER_PROTOCOLS={"TCP;1521"}','LISTENER_PROTOCOLS={"TCP;1521"}') | Set-Content -Path "$NewNetca" # 指定侦听器使用协议、端口 (Get-Content -Path "$NewNetca").Replace('LISTENER_START=""LISTENER""',"LISTENER_START=""""$env:COMPUTERNAME`_LISTENER""""") | Set-Content -Path "$NewNetca" # 指定启动目标侦听器的名称 (Get-Content -Path "$NewNetca").Replace('NSN_NUMBER=1','NSN_NUMBER=1') | Set-Content -Path "$NewNetca" # 指定侦听器顺寻,默认为1 #(Get-Content -Path "$NewNetca").Replace('NSN_NAMES={"EXTPROC_CONNECTION_DATA"}',"NSN_NAMES={""$ORACLE_SID.$env:COMPUTERNAME""}") | Set-Content -Path "$NewNetca" (Get-Content -Path "$NewNetca").Replace('NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}',"NSN_PROTOCOLS={""TCP;$env:COMPUTERNAME;1521""}") | Set-Content -Path "$NewNetca" # 制定侦听器,侦听目标主机的“名称或者IP地址”、“侦听协议”、“侦听端口号” # 配置侦听器,使用-静默模式 -指定响应文件路径 配置 Start-Process -FilePath $ORACLE_HOME\bin\netca.bat "-silent -responseFile $ORACLE_INST\netca.rsp" |
8.4 安装 Oracle 数据库 之 编辑响应文件
8.4.1
Edited Oracle create database response template file dbca.rsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# 定义新的 dbca.rsp 响应文件路径 $NewDbca = "$ORACLE_INST\dbca.rsp" # 编辑 dbca.rsp 数据库模板响应文件 # 使用 Powershell Replace 替换掉文本中指定的字符串 # 获取文本中的内容,使用 .Replace 参数替换,“原有字符串”,“新的字符串” (Get-Content -Path "$NewDbca").Replace('OPERATION_TYPE = "createDatabase"','OPERATION_TYPE = "createDatabase"') | Set-Content -Path "$NewDbca" # 指定操作类型:创建数据库 (Get-Content -Path "$NewDbca").Replace('GDBNAME = "orcl11g.us.oracle.com"',"GDBNAME = ""$ORACLE_SID.$env:COMPUTERNAME""") | Set-Content -Path "$NewDbca" # 指定全局数据库名称 (Get-Content -Path "$NewDbca").Replace('#LISTENERS = "listener1 listener2"',"LISTENERS = ""$env:COMPUTERNAME`_LISTENER""") | Set-Content -Path "$NewDbca" # 指定“已有的 或者新建的”侦听器的名称 (Get-Content -Path "$NewDbca").Replace('#STORAGETYPE=FS',"STORAGETYPE=FS") | Set-Content -Path "$NewDbca" # 指定使用的存储类型:可以时文件系统,或者ASM (Get-Content -Path "$NewDbca").Replace('#SAMPLESCHEMA=TRUE','SAMPLESCHEMA=TRUE') | Set-Content -Path "$NewDbca" # 指定是否将示例模式添加到数据库 (Get-Content -Path "$NewDbca").Replace('SID = "orcl11g"',"SID = ""$ORACLE_SID""") | Set-Content -Path "$NewDbca" # 指定数据库的 SID (Get-Content -Path "$NewDbca").Replace('#CHARACTERSET = "US7ASCII"','CHARACTERSET = "ZHS16GBK"') | Set-Content -Path "$NewDbca" # 指定数据库使用字符集 (Get-Content -Path "$NewDbca").Replace('#OBFUSCATEDPASSWORDS = FALSE',"OBFUSCATEDPASSWORDS = FALSE") | Set-Content -Path "$NewDbca" # 指定数据库是否使用密码加密 (Get-Content -Path "$NewDbca").Replace('#DATAFILEDESTINATION =',"DATAFILEDESTINATION = ""$ORACLE_DATA""") | Set-Content -Path "$NewDbca" # 指定 Oracle 数据库存放路径 (Get-Content -Path "$NewDbca").Replace('#NATIONALCHARACTERSET= "UTF8"','NATIONALCHARACTERSET= "AL16UTF16"') | Set-Content -Path "$NewDbca" # 指定数据库使用编码类型 (Get-Content -Path "$NewDbca").Replace('#EMCONFIGURATION = "NONE"','EMCONFIGURATION = "LOCAL"') | Set-Content -Path "$NewDbca" # 指定以什么方式部署 Oracle 企业管理器 (Get-Content -Path "$NewDbca").Replace('#TOTALMEMORY = "800"',"TOTALMEMORY = ""$MemoryLimit""") | Set-Content -Path "$NewDbca" # 指定限制 Oracle 占用物理内存的绝对值 (Get-Content -Path "$NewDbca").Replace('#POLICYMANAGED = "false"','POLICYMANAGED = "false"') | Set-Content -Path "$NewDbca" # 指定数据库是否采用策略管理 (Get-Content -Path "$NewDbca").Replace('#SYSPASSWORD = "password"',"SYSPASSWORD = ""$PasswdSYS""") | Set-Content -Path "$NewDbca" # 指定数据库相关用户的密码 (Get-Content -Path "$NewDbca").Replace('#SYSTEMPASSWORD = "password"',"SYSTEMPASSWORD = ""$PasswdSYSTEM""") | Set-Content -Path "$NewDbca" (Get-Content -Path "$NewDbca").Replace('#SYSMANPASSWORD = "password"',"SYSMANPASSWORD = ""$PasswdSYSMAN""") | Set-Content -Path "$NewDbca" (Get-Content -Path "$NewDbca").Replace('#DBSNMPPASSWORD = "password"',"DBSNMPPASSWORD = ""$PasswdDBSNMP""") | Set-Content -Path "$NewDbca" (Get-Content -Path "$NewDbca").Replace('TEMPLATENAME = "General_Purpose.dbc"','TEMPLATENAME = "General_Purpose.dbc"') | Set-Content -Path "$NewDbca" # 指定创建数据库时使用的模板 (Get-Content -Path "$NewDbca").Replace('#RECOVERYAREADESTINATION=',"RECOVERYAREADESTINATION= ""$ORALCE_RECOVERY""") | Set-Content -Path "$NewDbca" # 指定 Oracle 数据库恢复路径 (Get-Content -Path "$NewDbca").Replace('#AUTOMATICMEMORYMANAGEMENT = "TRUE"','AUTOMATICMEMORYMANAGEMENT = "FALSE"') | Set-Content -Path "$NewDbca" # 指定是否使用自动内村管理 |
1 2 3 4 |
#(Get-Content -Path "$NewDbca").Replace('#DATABASETYPE = "MULTIPURPOSE"','DATABASETYPE = "MULTIPURPOSE"') | Set-Content -Path "$NewDbca" # 指定是否使用内存 % 百分比来限制内存 #(Get-Content -Path "$NewDbca").Replace('#MEMORYPERCENTAGE = "40", 'MEMORYPERCENTAGE = "70"') | Set-Content -Path "$NewDbca" # 指定占用物理内存的百分比 |
8.5 安装 Oracle 数据库 之 Create Database
8.5.1
Create an Oracle database using the response template file dbca.rsp
1 2 3 4 5 6 7 |
# 使用 dbca.rsp 数据库模板文件,以-静默 -响应 文件创建数据库 Start-Process -FilePath $ORACLE_HOME\bin\dbca.bat "-silent -responseFile $ORACLE_INST\dbca.rsp" # 最后如第五章节所说, 在 *Windows* 中,*Oracle Universal Installer* 在安装时创建服务,并将其配置为在主机启动时自动启动 ***Oracle*** 软件组件。 Get-Service -Name "*ORADB_LISTENER" | Set-Service -StartupType Automatic |
