重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Oracle License的计算有两种方式:按照用户数和CPU个数. 其中按CPU计算方式如下:
专注于为中小企业提供成都做网站、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业陇川免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
License Number = The Number of CPU Cores * Core Factor
其中Core Factor 可以参考官方文档 Oracle Processor Core Factor 。
如果Oracle 安装在VMWARE 上,是否也是按照这个方式计算呢? 也就是说,在虚拟机VMWARE上Oracle的License计算是否也是按照分配CPU核数来计算的呢? 关于虚拟机上ORACLE的License计算,ORACLE 引入了下面 Soft partitioning (软分区)和Hard partitioning (硬分区)概念(如下所示),而且明确规定 VMware是软分区,并且规定Soft partitioning is not permitted as a means to determine or limit the number of software licenses required for any given server。
也就是说在一台物理机上,假如如下所示,虚拟了一台Linux服务器做Oracle Database Server, 虚拟了另外一台Windows服务器做SQL Server服务器,物理机上有2个物理CPU,每个4 Core,平均分配给这两个服务器,此时Oracle的License计算是
License Number = 2* 4*0.5= 4 而不是 License Number = 1*4*0.5= 2.
也就是说,不管是分配两核、四核、多核给Oracle 数据库服务器,Oracle License的计算都不以分配的核数计算,而是以物理机CPU核数来计算。
这样虽然不合理,但是也没有办法。至于为什么Oracle在VMWARE上这样计算License,就不得而知了。有可能是处于商业战略考虑,也有可能是处于打击商业对手。
1.检查硬件要求 系统必须符合以下最低硬件要求: 至少有1024MB的物理内存 下表说明安装时物理内存(RAM)和交换区(swap space)的配置关系。 RAM Swap Space 1024 MB 到 2048 MB 1.5 倍 RAM 2049 MB 到 8192 MB 等于 RAM 大于 8192 MB 0.75 倍 RAM 在 /tmp 目录中至少有400 MB空闲磁盘空间 1.5 GB 到 3.5 GB 的磁盘空间用于安装 Oracle 数据库软件,具体大小由安装类型决定 1.2GB 磁盘空间用于数据库预配置文件系统存储(可选) 说明: 使用 ASM (Automatic Storage Management) 和 RDS (raw device storage) 的磁盘空间要求在后面的章节中描述。 若选择自动备份配置,启用闪回区(flash recovery area)需要额外的磁盘空间,也可以在文件系统或 ASM(Automatic Storage Management) 磁盘组中指定。 确保系统满足这些要求: 确认物理内存尺寸,键入下列命令: # grep MemTotal /proc/meminfo 假如物理内存尺寸小于推荐的内存要求,必须在安装前增加内存。 确认交换区(swap space)尺寸,键入下列命令: # grep SwapTotal /proc/meminfo 示例: as3$grep SwapTotal /proc/meminfo SwapTotal: 2048248 kB 必要时,查阅操作系统文档中如何配置额外交换区(swap space)的相关信息以修改交换区(swap space)配置。 确认可用的 RAM 和交换区(swap space),键入下列命令: # free 示例: as3$free total used free shared buffers cached Mem: 503084 490356 12728 0 2432 345224 -/+ buffers/cache: 142700 360384 Swap: 2048248 72692 1975556 最好在延迟数秒后,作多次重复测试. 说明: 上述命令会产生多个不同的结果。这是因为在冻结期外可用的 RAM 和交换区(swap space)随用户的操作不断变化。 确认 /tmp 目录中可用的磁盘空间,键入下列命令: # df -h /tmp 示例: as3$df -h /tmp 文件系统 容量 已用 可用 已用% 挂载点 /dev/hda3 16G 4.5G 11G 31% / 假如在 /tmp 目录的自由磁盘空间中少于 400MB,请完成下列步骤之一: 删除 /tmp 目录中不必要的文件以满足磁盘空间需求。 在配置Oracle 用户环境时设置 TEMP 和 TMPDIR 环境变量(稍后说明)。 扩充文件系统的 /tmp 目录。必要时,联系您的系统治理员了解关于扩充文件系统的相关信息。 确认操作系统的自由磁盘空间,键入下列命令: # df -h 示例: as3$df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/hda3 16G 4.5G 11G 31% / /dev/hda2 981M 27M 905M 3% /boot /dev/hda5 29G 27G 1.3G 96% /opt none 246M 0 246M 0% /dev/shm /dev/hda6 15G 191M 14G 2% /var 下表显示每种安装类型需要的大约磁盘空间: 安装类型 所需空间 Enterprise Edition 1.85 Standard Edition 1.85 Custom (maximum) 1.99 确认系统硬件架构能运行 Oracle 软件,键入下列命令: # grep "model name" /proc/cpuinfo 示例: as3$grep "model name" /proc/cpuinfo model name : Intel(R) Pentium(R) 4 CPU 2.80GHz 说明: 该命令显示处理器类型。验证处理器架构匹配您将要安装的 Oracle 发行版软件。假如看不到预期结果,则不能在系统中安装这个软件。 2.检查软件要求 安装所需的软件环境,根据下表进行核实。 说明: Oracle 通用安装工具根据系统需求清单对系统进行检查核实。确保在开始安装前通过检查。 需求项 操作系统 包含下列操作系统版本之一: Red Hat Enterprise Linux AS/ES 3.0 (Update 4 or later)
Red Hat Linux 4.0 (Update 1 or later) SUSE Linux Enterpreise Server 8.0 with SP4 or later SUSE Linux Enterprise Server 9.0 with SP2 or later 核心版本 系统必须运行在以下核心版本之上(或以上版本): Red Hat Enterprise Linux 3.0: 2.4.21-20.EL Red Hat Enterprise Linux 4.0: 2.6.9-11.EL SUSE Linux Enterprise Server 8.0: 2.4.21-278 SUSE Linux Enterprise Server 9.0: 2.6.5-139 包 下列包(或以上版本)必须已经安装: Red Hat Enterprise Linux 3.0: make-3.79.1-17 control-center-2.2.0.1-13 gcc-3.2.3-47 gcc-c++-3.2.3-47 gdb-6.1post-1.20040607.52 glibc-2.3.2-95.30 glibc-common-2.3.2-95.30 glibc-devel-2.3.2-95.30 glibc-devel-2.3.2-95.20 (32 bit) compat-db-4.0.14-5.1 compat-gcc-7.3-2.96.128 compat-gcc-c++-7.3-2.96.128 compat-libstdc++-7.3-2.96.128 compat-libstdc++-devel-7.3-2.96.128 gnome-libs-1.4.1.2.90-34.2 (32 bit) libstdc++-3.2.3-47 libstdc++-devel-3.2.3-47 openmotif-2.2.3-3.RHEL3 sysstat-5.0.5-5.rhel3 setarch-1.3-1 libaio-0.3.96-3 libaio-devel-0.3.96-3 Red Hat Enterprise Linux 4.0: binutils-2.15.92.0.2-10.EL4 compat-db-4.1.25-9 control-center-2.8.0-12 gcc-3.4.3-9.EL4 gcc-c++-3.4.3-9.EL4 glibc-2.3.4-2 glibc-common-2.3.4-2 gnome-libs-1.4.1.2.90-44.1 libstdc++-3.4.3-9.EL4 libstdc++-devel-3.4.3-9.EL4 make-3.80-5 pdksh-5.2.14-30 sysstat-5.0.5-1 xscreensaver-4.18-5.rhel4.2 SUSE Linux Enterprise Server 9: gcc-3.3.3 gcc-c++-3.3.3 glibc-2.3.3 libaio-0.3.102-1.2ia64 libaio-devel-0.3.102-1.2ia64 make-3.80 PL/SQL 本地编译, Pro*C/C++, Oracle 调用接口, Oracle C++ 调用接口, Oracle XML 开发工具 (XDK) Intel C++ 编译器 8.1 或 GNU C and C++ 编译器及以上版本,这些产品需要以上清单所列出的包支持。 说明: Intel C++ 编译器 V8.1 以上已经提供支持,不需要安装。在 Red Hat Enterprise Linux 3, OCCI上采用 3.2 版,已经提供 GNU C++ 编译器支持。这是默认的编译器版本。 OCCI 也同样支持采用 gcc 3.2.3 标准模板库的 Intel C++ 编译器 V8.1。 Oracle XML 开发套件 在使用 GCC 的 Red Hat Linux 4.0 上不被支持。只有 Intel C++ 编译器 (ICC) 提供支持。 在 Red Hat Enterprise Linux 4.0 上, Oracle C++ 调用接口 (OCCI) 不支持 GCC 3.4.3。要在 Red Hat Enterprise Linux 4.0 上使用 OCCI,你需要安装 GCC 3.2.3。 Oracle JDBC/OCI 驱动程序 你可以在下列 JDK 版本中使用 Oracle JDBC/OCI 驱动;然而,它们不需要单独安装: Sun JDK 1.4.2 with the JNDI extension 说明:JDK 1.4.2 在该发行版中已经安装 确保系统满足这些要求: 确认 Linux 版本,键入下列命令: # cat /etc/issue 示例: as3$cat /etc/issue Red Hat Enterprise Linux AS release 3 (Taroon) Kernel \r on an \m 说明: 只有存在先前表格中所列版本的 Linux 被支持。不能安装在其他的 Linux 版本上。 确认需要的核心已经安装,键入下列命令:
# uname -r 示例: as3$uname -r 2.4.21-4.ELsmp 下面是该命令在一个 Red Hat Enterprise Linux 3.0 系统中执行的输出情形: 2.4.21-20.EL 在该例中,输出表明系统的核心版本 ()和 勘误表 (20.EL)等级。 新的内核命名 RHAS2.1 for ia32 2.4.9-e.25 — 单处理器内核 2.4.9-e.25-smp — 能够处理最高达 4GB 的物理内存的 SMP 内核 2.4.9-e.25 — 能够处理最高达 16GB 左右的物理内存的企业 SMP 内核 RHEL3 for ia32 2.4.21-4.EL — 单处理器内核 2.4.21-4.ELsmp — 能够处理最高达 16 GB 的物理内存的 SMP 内核 2.4.21-4.ELhugemem — 能够处理超过 16 GB,最高达 64 GB 的 SMP 内核 假如核心版本不符合前述要求,请与操作系统供给商联系,以获取最新的核心版本并更新。 确认必须的包已经全部安装,请键入下列格式类似的命令: # rpm -q package_name 示例: as3$rpm -q gcc-3.3.3 package gcc-3.3.3 is not installed 假如包没有安装,请从您的 Linux 安装包或从 Linux 提供商的网址下载并安装。 假如需要为 WebSphereMQ 的 CSD,请在下列网址中下载并获取安装信息:
select /*+parallel(t,25)+*/
一、Parallel
1. 用途
强行启用并行度来执行当前SQL。这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试。也就是说,加上这个说明,可以强行启用Oracle的多线程处理功能。举例的话,就像电脑装了多核的CPU,但大多情况下都不会完全多核同时启用(2核以上的比较明显),使用parallel说明,就会多核同时工作,来提高效率。
但本身启动这个功能,也是要消耗资源与性能的。所有,一般都会在返回记录数大于100万时使用,效果也会比较明显。
2. 语法
/*+parallel(table_short_name,cash_number)*/
这个可以加到insert、delete、update、select的后面来使用(和rule的用法差不多,有机会再分享rule的用法)
开启parallel功能的语句是:
alter session enable parallel dml;
这个语句是DML语句哦,如果在程序中用,用execute的方法打开。
3. 实例说明
用ERP中的transaction来说明下吧。这个table记录了所有的transaction,而且每天数据量也算相对比较大的(根据企业自身业务量而定)。假设我们现在要查看对比去年一年当中每月的进、销情况,所以,一般都会写成:
select to_char(transaction_date,'yyyymm') txn_month,
sum(
decode(
sign(transaction_quantity),1,transaction_quantity,0
)
) in_qty,
sum(
decode(
sign(transaction_quantity),-1,transaction_quantity,0
)
) out_qty
from mtl_material_transactions mmt
where transaction_date = add_months(
to_date(
to_char(sysdate,'yyyy')||'0101','yyyymmdd'),
-12)
and transaction_date = add_months(
to_date(
to_char(sysdate,'yyyy')||'1231','yyyymmdd'),
-12)
group by to_char(transaction_date,'yyyymm')
这个SQL执行起来,如果transaction_date上面有加index的话,效率还算过的去;但如果没有加index的话,估计就会半个小时内都执行不出来。这是就可以在select 后面加上parallel说明。例如:
select /*+parallel(mmt,10)*/
to_char(transaction_date,'yyyymm') txn_month,
...
这样的话,会大大提高执行效率。如果要将检索出来的结果insert到另一个表tmp_count_tab的话,也可以写成:
insert /*+parallel(t,10)*/
into tmp_count_tab
(
txn_month,
in_qty,
out_qty
)
select /*+parallel(mmt,10)*/
to_char(transaction_date,'yyyymm') txn_month,
...
插入的机制和检索机制差不多,所以,在insert后面加parallel也会加速的。关于insert机制,这里暂不说了。
Parallel后面的数字,越大,执行效率越高。不过,貌似跟server的配置还有oracle的配置有关,增大到一定值,效果就不明显了。所以,一般用8,10,12,16的比较常见。我试过用30,发现和16的效果一样。不过,数值越大,占用的资源也会相对增大的。如果是在一些package、function or procedure中写的话,还是不要写那么大,免得占用太多资源被DBA开K。
4. Parallel也可以用于多表
多表的话,就是在第一后面,加入其他的就可以了。具体写法如下:
/*+parallel(t,10) (b,10)*/
5. 小结
关于执行效率,建议还是多按照index的方法来提高效果。Oracle有自带的explan road的方法,在执行之前,先看下执行计划路线,对写好的SQL tuned之后再执行。实在没办法了,再用parallel方法。Parallel比较邪恶,对开发者而言,不是好东西,会养成不好习惯,导致很多bad SQL不会暴漏,SQL Tuning的能力得不到提升。我有见过某些人create table后,从不create index或primary key,认为写SQL时加parallel就可以了。
没有,这个程序应用,属于数据库系统,是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,可以适用于不同的应用管理控制系统里。
1.现象在11g的环境下执行 sqlplus / as sysdba 报错 SP2-1503: Unable to initialize Oracle call interface SP2-0152: ORACLE may not be functioning properly 2.分析(1)在同一个AIX机器上装完10g后又装了个11g的环境 11g的环境变量配置如下(注意红色部分) export ORACLE_BASE=/opt/oracle export ORACLE_HOME=/oracle/product/11.2.0/ export ORA_DB=/oracle/product/11.2.0/dbs export ORACLE_SID=ora11g export ORACLE_TERM=vt100 export ORA_NLS33=/oracle/product/11.2.0/ocommon/nls/admin/data export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(红色部分)