前几天看到CSDN的一篇文章,Oracle12c可以下载试用了,赶紧跑到oracle官网下载去尝尝鲜?
对一个ArcGISer来说关心的无怪乎两个问题
1:ArcSDE10.2(最新版本)是否支持Oracle12c
2:Oracle12c是否有一些新功能可以解决以前使用很难解决的问题。
带着这两个问题,就开启了Oracle12c的安装之旅。
oracle12c的下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
首次开放下载的只有支持Linux和Solaris的版本
安装环境:RedHat 6.1
安装参考文档:http://docs.oracle.com/cd/E16655_01/install.121/e17718/toc.htm#BHCCADGD
其实对Oracle在Linux环境下的安装与以前版本的安装都差不多,自从Oracle11g的推出之后,Oracle在Linux环境下的安装就非常容易了,都是界面化的点击输入即可。
1:Oracle对Linux环境下的安装需要相关的依赖包,以下是Linux环境下需要安装的RPM
binutils-2.20.51.0.2-5.11.el6 (x86_64)
compat-libcap1-1.10-1 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (i686)
gcc-4.4.4-13.el6 (x86_64)
gcc-c++-4.4.4-13.el6 (x86_64)
glibc-2.12-1.7.el6 (i686)
glibc-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6 (i686)
ksh
libgcc-4.4.4-13.el6 (i686)
libgcc-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6 (i686)
libstdc++-devel-4.4.4-13.el6 (x86_64)
libstdc++-devel-4.4.4-13.el6 (i686)
libaio-0.3.107-10.el6 (x86_64)
libaio-0.3.107-10.el6 (i686)
libaio-devel-0.3.107-10.el6 (x86_64)
libaio-devel-0.3.107-10.el6 (i686)
libXext-1.1 (x86_64)
libXext-1.1 (i686)
libXtst-1.0.99.2 (x86_64)
libXtst-1.0.99.2 (i686)
libX11-1.3 (x86_64)
libX11-1.3 (i686)
libXau-1.0.5 (x86_64)
libXau-1.0.5 (i686)
libxcb-1.5 (x86_64)
libxcb-1.5 (i686)
libXi-1.3 (x86_64)
libXi-1.3 (i686)
make-3.81-19.el6
sysstat-9.0.4-11.el6 (x86_64)
不知道这些RPM怎么安装,或者不会配置YUM的可以参考:
Linux操作系统典型问题 http://t.cn/zODiP4t
2:创建操作系统级别的oracle用户所属oinstall组
3:修改内核参考
[root@oracle12c ~]# vi /etc/sysctl.conf
添加如下内容
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
参数生效命令
[root@oracle12c ~]# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
4:修改用户限制
[root@oracle12c ~]# vi /etc/security/limits.conf
添加如下信息
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240
扩展:安装ArcGIS Server10.1第一步就是修改这个配置文件
5:使用Oracle用户上传软件
6:安装即可
在安装过程中会出现一个错误:[INS-30131]lnitial setup required for the execution of installer validation failed
这个错误如果根据里面的提示很难解决,最终解决方法很简单,将Oracle的整个安装目录设置为775权限即可。
重新安装,就会出现一个很亮眼的Oracle12c的启动界面
基本的操作和Oracle11g大同小异。
唯一一个界面的区别就是oracle12c的一个新特性:Create as Container Database
关于container database
在Oracle Database 12c中,可组装式数据库 - Pluggable Database为云计算而生。在12c以前,Oracle数据库是通过Schema来进行用户模式隔离的,现在,可组装式数据库可以让此前意义上的多个数据库一起共存。
Pluggable Database 其体系结构的核心是:
由一个容器数据库(CDB)和多个可组装式数据库(PDB)构成,PDB包含独立的系统表空间和SYSAUX表空间等,但是所有PDB共享CDB的控制文件、日志文件和UNDO表空间。各个PDB之间互访需要通过DB Link进行,就仿佛是多个数据库一样。
在2012 OOW上,Larry重点介绍了Oracle Database 12c 的这个新特性,并将其归结为:多租户数据库。也就是说,在云平台上,不同租户可以在一个大的CDB数据库中运行,而彼此数据(PDB)与应用又完全隔离。显然这个特性对Oracle推出的数据库云平台必不可少。
当然,这个特性面临的最大问题仍然是安全问题,如果某个PDB的用户获得了意外的权限提升,则所有用户的数据都可能被暴露。
下图是Pluggable Database的体系结构示意图:
然后安装即可,最后还会让你执行两个.sh文件,等待完成即可。
最后配置环境变量,并使之生效
PATH=$PATH:$HOME/bin
export PATH
export ORACLE_HOME=/home/oracle/app/oracle/product/12.1.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
安装完毕之后,我们查看一下
SQL> select * from v$version;
BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0
PL/SQL Release 12.1.0.1.0 - Production 0
CORE 12.1.0.1.0 Production 0
TNS for Linux: Version 12.1.0.1.0 - Production 0
NLSRTL Version 12.1.0.1.0 - Production 0
SQL> select name from v$datafile;
NAME
------------------------------------------------------------------------------------------------------------------------------------------------
/home/oracle/app/oracle/oradata/orcl/system01.dbf
/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf
/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf
/home/oracle/app/oracle/oradata/orcl/pdbseed/system01.dbf
/home/oracle/app/oracle/oradata/orcl/users01.dbf
/home/oracle/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
/home/oracle/app/oracle/oradata/orcl/pdborcl/system01.dbf
/home/oracle/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf
/home/oracle/app/oracle/oradata/orcl/pdborcl/SAMPLE_SCHEMA_users01.dbf
/home/oracle/app/oracle/oradata/orcl/pdborcl/example01.dbf
10 rows selected.
我们发现查看数据文件的时候,与以前的版本有所不同,这就是上面介绍的一个新特性。我们创建了一个pluggable database 名字叫pdborcl,他会有自己的system.dbf,sysaux.dbf等。
相关的监听状态
[oracle@oracle12c ~]$ lsnrctl status
LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 01-JUL-2013 12:55:53
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.1.0.1.0 - Production
Start Date 01-JUL-2013 12:35:25
Uptime 0 days 0 hr. 20 min. 28 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/oracle/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
Listener Log File /home/oracle/app/oracle/diag/tnslsnr/oracle12c/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oracle12c)(PORT=5500))(Security=(my_wallet_directory=/home/oracle/app/oracle/admin/orcl/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "pdborcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
根据上面的信息显示,我们看到与Oracle11g比较,oracle12c多了一个tcps协议,而且我也看不到监听exproc,以前我们在ArcSDE使用ST_Geometry需要配置一下,关键是需要监听exporc.exe进程,但是现在我在监听状态也看不到这些信息,这个不知道后面Esri会是一个什么样的解决方法。(以上都是在直观的查看监听状态的猜测,仅供参考)
那么,我们来回答一开始提问的两个问题:
1:ArcSDE10.2(最新版本)是否支持Oracle12c
回答:针对这个问题,我专门写邮件咨询了美国的support,他给予我的回答是
I just confirmed that Oracle 12c is not being supported/considered for ArcSDE 10.2 However Oracle 12c is being reviewed for Post ArcSDE 10.2.
翻译一下:ArcSDE10.2不支持Oracle12c,但是Esri会考虑ArcSDE10.2在Oracle12c的Post,也就是说,因为Oracle12c刚刚正式发布,那么我们即将要发布的ArcSDE10.2还不支持这个版本的Oracle,但是Esri也会考虑在未来的版本或许发布一个SP补丁来支持Oracle12c.
我的猜测:肯定会支持oracle12c的,只是一个时间问题。
2:Oracle12c是否有一些新功能可以解决以前使用很难解决的问题。
仅仅从Oracle12c 的安装我们就发现了一个Oracle12c的新特性,Container Database,从上面的简单描述可以看出,新版本的Oracle可以进行多个数据库并存,而且相互数据库可以通过DBLink进行关联,那么以前好多用户会问到一个问题:
我有一个机器安装了ArcSDE数据库,另外一个机器有一个属性数据库,那么我是否可以将两个库里面的数据进行关联,传统意义的纯属性数据关联是可以的,但是空间数据与属性数据跨库关联,我以前测试过会有问题,莫名其妙的崩溃。所以不知道Oracle12c的这个新功能会不会在GIS数据跨库关联方面好一点。
Oracle Database 12c 新特性总结
【IT168 评论】甲骨文公司近日正式发布了新版旗舰级数据库Oracle Database 12c,而随着产品正式GA,相关技术文档也披露了更多关于12c数据库的细节。本系列文章是Oracle ACE总监Syed Jaffer Hussain对Oracle数据库12c的一些新特性总结,包括数据库管理、RMAN、高可用性以及性能调优等内容。
1. 在线重命名和重新定位活跃数据文件
不同于以往的版本,在Oracle数据库12c R1版本中对数据文件的迁移或重命名不再需要太多繁琐的步骤,即把表空间置为只读模式,接下来是对数据文件进行离线操作。在12c R1中,可以使用ALTER DATABASE MOVE DATAFILE这样的SQL语句对数据文件进行在线重命名和移动。而当此数据文件正在传输时,终端用户可以执行查询,DML以及DDL方面的任务。另外,数据文件可以在存储设备间迁移,如从非ASM迁移至ASM,反之亦然。
重命名数据文件:
从非ASM迁移数据文件至ASM:
将数据文件从一个ASM磁盘群组迁移至另一个ASM磁盘群组:
在数据文件已存在于新路径的情况下,以相同的命名将其覆盖:
复制文件到一个新路径,同时在原路径下保留其拷贝:
当通过查询v$session_longops动态视图来移动文件时,你可以监控这一过程。另外,你也可以引用alert.log,Oracle会在其中记录具体的行为。
2. 表分区或子分区的在线迁移
在Oracle 12c R1中迁移表分区或子分区到不同的表空间不再需要复杂的过程。与之前版本中未分区表进行在线迁移类似,表分区或子分区可以在线或是离线迁移至一个不同的表空间。当指定了ONLINE语句,所有的DML操作可以在没有任何中断的情况下,在参与这一过程的分区或子分区上执行。与此相反,分区或子分区迁移如果是在离线情况下进行的,DML操作是不被允许的。
示例:
SQL > ALTER TABLE table_name MOVE PARTITION | SUBPARTITION partition_name TO tablespace tablespace_name UPDATE INDEXES ONLINE;
第一个示例是用来在离线状况下将一个表分区或子分区迁移至一个新的表空间。第二个示例是在线迁移表分区或子分区并维护表上任何本地或全局的索引。此外,当使用ONLINE语句时,DML操作是不会中断的。
重要提示:
•UPDATE INDEXES语句可以避免出现表中任何本地或全局索引无法使用的情况。
•表的在线迁移限制也适用于此。
•引入加锁机制来完成这一过程,当然它也会导致性能下降并会产生大量的redo,这取决于分区和子分区的大小。
3. 不可见字段
在Oracle 11g R1中,Oracle以不可见索引和虚拟字段的形式引入了一些不错的增强特性。继承前者并发扬光大,Oracle 12c R1中引入了不可见字段思想。在之前的版本中,为了隐藏重要的数据字段以避免在通用查询中显示,我们往往会创建一个视图来隐藏所需信息或应用某些安全条件。
在12c R1中,你可以在表中创建不可见字段。当一个字段定义为不可见时,这一字段就不会出现在通用查询中,除非在SQL语句或条件中有显式的提及这一字段,或是在表定义中有DESCRIBED。要添加或是修改一个不可见字段是非常容易的,反之亦然。
SQL > ALTER TABLE emp MODIFY (sal visible);
你必须在INSERT语句中显式提及不可见字段名以将不可见字段插入到数据库中。虚拟字段和分区字段同样也可以定义为不可见类型。但临时表,外部表和集群表并不支持不可见字段。
4. 相同字段上的多重索引
在Oracle 12c R1之前,一个字段是无法以任何形式拥有多个索引的。或许有人会想知道为什么通常一个字段需要有多重索引,事实上需要多重索引的字段或字段集合是很多的。在12c R1中,只要索引类型的形式不同,一个字段就可以包含在一个B-tree索引中,同样也可以包含在Bitmap索引中。注意,只有一种类型的索引是在给定时间可用的。
5. DDL日志
在之前的版本中没有可选方法来对DDL操作进行日志记录。而在12c R1中,你现在可以将DDL操作写入xml和日志文件中。这对于了解谁在什么时间执行了create或drop命令是十分有用的。要开启这一功能必须对ENABLE_DDL_LOGGING 初始参数加以配置。这一参数可以在数据库或会话级加以设置。当此参数为启用状态,所有的DDL命令会记录在$ORACLE_BASE/diag/rdbms/DBNAME/log|ddl 路径下的xml和日志文件中。一个xml中包含DDL命令,IP地址,时间戳等信息。这可以帮助确定在什么时候对用户或表进行了删除亦或是一条DDL语句在何时触发。
开启DDL日志功能
以下的DDL语句可能会记录在xml或日志文件中:
• DROP USER
• CREATE | ALTER | DROP PACKAGE | FUNCTION | VIEW | SYNONYM | SEQUENCE
6. 临时undo
每个Oracle数据库包含一组与系统相关的表空间,例如SYSTEM,SYSAUX,UNDO & TEMP,并且它们在Oracle数据库中每个都用于不同的目的。在Oracle 12c R1之前,undo记录是由临时表产生并存储在undo表空间中的,这更类似于一个通用或持久的表撤销记录。然而,由于在12c R1中引入了临时undo功能,那些临时undo记录现在就可以存储在临时表中,而不是存储在undo表空间中。临时undo的主要好处在于:由于信息不会写入undo日志,undo表空间的开销得以减少并且产生的undo数据会更少。而对于在会话级还是数据库级开启临时undo功能你是可以灵活选择的。
启用临时undo功能
要使用这一新功能,需要做以下设置:
•兼容性参数必须设置为12.0.0或更高
•启用 TEMP_UNDO_ENABLED 初始化参数
•由于临时undo记录现在是存储在一个临时表空间中的,你需要有足够的空间来创建这一临时表空间
•对于会话级,你可以使用:ALTER SYSTEM SET TEMP_UNDO_ENABLE=TRUE;
查询临时undo信息
以下所列的字典视图是用来查看或查询临时undo数据相关统计信息的:
•DBA_HIST_UNDOSTAT
•V$UNDOSTAT
要禁用此功能,你只需做以下设置:
7. 备份特定用户特权
在11g R2中,引入了SYSASM特权来执行ASM的特定操作。同样地,在12c中引入了SYSBACKUP特权用来在 RMAN中执行备份和恢复命令。因此,你可以在数据库中创建一个本地用户并在不授予其SYSDBA权限的情况下,通过授予SYSBACKUP权限让其能够在RMAN中执行备份和恢复相关的任务。
8. 如何在RMAN中执行SQL语句
在12c中,你可以在不需要SQL前缀的情况下在RMAN中执行任何SQL和PL/SQL命令,即你可以从RMAN直接执行任何SQL和PL/SQL命令。如下便是在RMAN中执行SQL语句的示例:
RMAN > ALTER TABLESPACE users ADD DATAFILE SIZE 121m;
9. RMAN中的表恢复和分区恢复
Oracle数据库备份主要分为两类:逻辑和物理备份。每种备份类型都有其自身的优缺点。在之前的版本中,利用现有物理备份来恢复表或分区是不可行的。为了恢复特定对象,逻辑备份是必需的。对于12c R1,你可以在发生drop或truncate的情况下从RMAN备份将一个特定的表或分区恢复到某个时间点或SCN。
当通过RMAN发起一个表或分区恢复时,大概流程是这样的:
•确定要恢复表或分区所需的备份集
•在恢复表或分区的过程中,一个辅助数据库会临时设置为某个时间点
•利用数据泵将所需表或分区导出到一个dumpfile
•你可以从源数据库导入表或分区(可选)
•在恢复过程中进行重命名操作
以下是一个通过RMAN对表进行时间点恢复的示例(确保你已经对稍早的数据库进行了完整备份):
RMAN > RECOVER TABLE username.tablename UNTIL TIME ' TIMESTAMP… '
AUXILIARY DESTINATION ' /u01/tablerecovery '
DATAPUMP DESTINATION ' /u01/dpump '
DUMP FILE ' tablename.dmp '
NOTABLEIMPORT -- this option avoids importing the table automatically.(此选项避免自动导入表)
REMAP TABLE ' username.tablename ' : ' username.new_table_name ' ; -- can rename table with this option.(此选项可以对表重命名)
重要提示:
•确保对于辅助数据库在/u01文件系统下有足够的可用空间,同时对数据泵文件也有同样保证
•必须要存在一份完整的数据库备份,或者至少是要有SYSTEM相关的表空间备份
以下是在RMAN中应用表或分区恢复的限制和约束:
•SYS用户表或分区无法恢复
•存储于SYSAUX和SYSTEM表空间下的表和分区无法恢复
•当REMAP选项用来恢复的表包含NOT NULL约束时,恢复此表是不可行的
10. 限制PGA的大小
在Oracle 12c R1之前,没有选项可以用来限制和控制PGA的大小。虽然你设置某个大小为PGA_AGGREGATE_TARGET 的初始参数,Oracle会根据工作负载和需求来动态地增大或减小PGA的大小。而在12c中,你可以通过开启自动PGA管理来对PGA设定硬性限制,这需要对PGA_AGGREGATE_LIMIT 参数进行设置。因此,你现在可以通过设置新的参数来对PGA设定硬性限制以避免过度使用PGA。
SQL > ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 0 ; -- disables the hard limit
重要提示:
当超过了当前PGA的限制,Oracle会自动终止/中止会话或进程以保持最合适的PGA内存。
原文链接:http://www.searchdatabase.com.cn/showcontent_74721.htm
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
------------------------------------------------------------------------------------------------------