当我们建立了Oracle数据库后,必须合理地配置监听程序和网络服务名后,客户应用才能访问我们的数据库。所以服务器端必须配置监听程序,而网络服务名在客户端跟服务器端都可以配置。看如下说明:
1。服务器端的监听程序用于接收客户端的连接请求。
在建立了Oracle数据库之后,为了使得客户应用可以访问特定数据库,必须要在监听程序中追加该数据库。一个监听程序可以监听多个Oracle数据库,多个监听程序也可以监听同一个数据库。但是监听程序只能用于同一台服务器上的Oracle数据库。安装了Oracle时,会自动建立默认的监听程序LISTENER.一般只需要将需要使用的数据库追加到这个监听程序上就可以了。
监听程序使用的默认端口为1521
保存了监听程序配置之后,必须要重新启动监听程序才能生效。windows中可以在“服务”中重新启动。
例如:假如我在10.150.27.45上装了ORACLE服务器,端口是1521,为了让其他客户端应用(不管是本地的还是其他的)可以访问我的名为TESTDB的数据库,首先得在服务器上配置监听器:进入NET MANAGER 新建一个端口,如命名为LISTENER,配置主机名:如10.150.27.45和端口1521,配置全局数据库名:如TESTDB,然后保存就好了
2。客户端需要配置网络服务名,应用程序使用网络服务名才能访问Oracle数据库, 一般使用数据库名作为服务名。注意: 网络协议要与监听程序的一致(如TCP/IP)
例如:假如我在10.150.27.46上装了ORACLE客户端,进入NET MANAGER,新建一服务命名,如:TEST,然后配置你要连接的DB服务器名字和端口好,如:10.150.27.45, 1521,配置服务名,必须跟监听端口的全局数据库名一样:如TESTDB,然后你可以通过输入用户名和密码测试连接成不成功了
3。利用客户端工具测试
在10.150.27.46上通过sqlPLUS连接10.150.27.45上的DB:TESTDB, 输入用户名密码,HOST STRING输入TEST,看连接是不是成功
经过以上分析,你是不是明白ORACLE 的 NET MANAGER是怎么一回事了呢?
㈡ 如何安装和使用oracle数据库
一、Oracle 下载
注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可。 路径名称中,最好不要出现中文,也不要出现空格等不规则字符。
二、Oracle安装
1、解压缩文件,将两个压缩包一起选择, 鼠标右击 -> 解压文件
2.两者解压到相同的路径中,
3. 到相应的解压路径上面,找到可执行安装文件【 setup.exe 】双击安装。
4. 安装第一步:配置安全更新,这步可将自己的电子邮件地址填写进去(也可以不填写,只是收到一些没什么用的邮件而已)。取消下面的“我希望通过My Oracle Support接受安全更新(W)”。
5. 安全选项,直接选择默认创建和配置一个数据库(安装完数据库管理软件后,系统会自动创建一个数据库实例)。
6. 系统类,直接选择默认的桌面类就可以了。(若安装到的电脑是,个人笔记本或个人使用的电脑使用此选项)
7. 典型安装。 重要步骤。建议只需要将Oracle基目录更新下,目录路径不要含有中文或其它的特殊字符。全局数据库名可以默认,且口令密码,必须要牢记。密码输入时,有提示警告,不符合Oracel建议时不用管。 (因Oracel建议的密码规则比较麻烦, 必须是大写字母加小写字母加数字,而且必须是8位以上。麻烦,可以输入平常自己习惯的短小密码即可)
8. 若输入的口令短小简单,安装时会提示如下。直接确认Y继续安装就是了。
9. 先决条件检查。 安装程序会检查软硬件系统是否满足,安装此Oracle版本的最低要求。 直接下一步就OK 了。
10. 概要 安装前的一些相关选择配置信息。 可以保存成文件 或 不保存文件直接点完成即可。
11. 安装产品 自动进行,不用管。
12. 数据库管理软件文件及dbms文件安装完后,会自动创建安装一个实例数据库默认前面的orcl名称的数据库。
13. 实例数据库创建完成了,系统 默认是把所有账户都锁定不可用了(除sys和system账户可用外),建议点右边的口令管理,将常用的scott账户解锁并输入密码。
14. 解锁scott账户, 去掉前面的绿色小勾,输入密码。同样可以输入平常用的短小的密码,不必非得按oracle建议的8位以上大小写加数字。
15. 同样,密码不符合规则会提示。不用管它,继续Y即可。
16. 安装成功,完成即可。
三、安装后,进入小测试下
可以通过开始,应用程序中的 "Oracle 11g" -> "应用程序开发" -> "Sql Developer 或Sql Plus" 连接。
注意第一次,使用SQL Developer时,会提示指定 java.exe的路径,这里千万别指定自己的java_home了(我就是开始不知道,指定一个JDK6,结束说不兼容。)可以使用Oracel安装路径下面的jdk路径,如图:
当然若不小心,选择错了。选择了java_home中的高级版本,打开SQL Developer报错后不兼容,也有办法解决。可以在
【F:\app\chen\proct\11.2.0\dbhome_1\sqldeveloper\sqldeveloper\bin】路径下找到【sqldeveloper.conf】文件后打开
找到SetJavaHome 所匹配的值,删除后面的配置内容。保证时会提示,只读文件不可覆盖保存。此时可以另存为到桌面上,然后再回到bin目录中删除掉此文件,再把桌面上的文件复制过去,再打开时,重新选择java.exe。此时选择对就好了。
㈢ 笔记本需要流畅的运行oracle数据库 需要怎样的配置
eclipse是一个运行平台,还是比较好的,我也用过。oracle数据库的启动是比较占用内存和cup使用率的,建议是配置越高越好,最好是1g以上的内存,最少不要低于1g,我以前用我朋友的才512m的机子装过,装上了,但是运行超慢,非常不好用。
㈣ Oracle数据库安全性设计大家给点建议
Oracle数据库本身的安全性建设
从总体上而言,Oracle数据库是业界安全性方面最完备的数据库产品。在数据库安全性的国际标准中,Oracle通过了14项标准的测试,是所有数据库产品中通过安全性标准最多、最全面的产品。Oracle在C2级的操作系统上(如商用UNIX,VMS操作系统),不仅满足NCSC C2级安全标准,而且已经正式通过了NCSC C2标准的测试。在B1级的操作系统上不仅满足NCSC B1级安全标准,而且已经通过了NCSC B1级标准的测试。
Oracle提供的主要安全性措施如下:
�8�9 身份认证功能(Authentication):识别访问个体的身份
�8�9 数据访问的机密性(Confidentialty):保证敏感数据访问的机密性。
�8�9 数据完整性(Integrity):保证数据不被篡改。
�8�9 授权能力(Authorization):保证被授权用户对数据的查询和修改能力。
�8�9 访问控制(Access Control):确定对指定数据的访问能力。
�8�9 审计能力(Auditing):提供监测用户行为的能力。
�8�9 私有性(Privacy):提供对敏感数据访问的私密性。
�8�9 高可用性(Availability):保证数据和系统提供不间断服务的能力。
�8�9 代理管理能力(Delegated Administration):提供对用户帐号的集中管理功能。
下面将就应用系统本身对于Oracle提供的安全性措施作更深入的探讨。
$PageTitle= Oracle的安全性领域}
三、 Oracle的安全性领域
�8�5 Profile控制
Oracle利用profile机制来管理会话资源占用,同时也管理用户密码的安全策略。
通过profile我们可以实现:
某个特定用户最多只能占用系统百分之几的CPU时间?
某个特定用户连接到数据库之后能存活多长时间?
某个特定用户连接到数据库之后多长时间处于非活跃状态就将被系统中断连接?
用户登录密码输入错误多少次之后就将自动锁定用户?
用户密码的长度和包含的字符必须符合什么样的规则?
用户密码在多少天后将自动失效并要求设定新密码?
�8�5 用户权限控制 (Privilage)
Oracle通过角色(Role),权限(Privilage)等的一系列授予(Grant)和回收(Revoke)操作可以有效的进行用户的权限控制。
通过权限控制我们可以实现:
某个特定用户只能读取而不能修改另一个用户的表数据。
某个特定用户只能运行Oracle数据库系统的几个存储过程或者函数。
某个特定用户自己能够拥有修改某些数据的权力,但是却无法给其它不拥有这个权限的用户授予修改该数据的权力。
某个特定用户可以读取数据但是无法创建新的表空间。
�8�5 虚拟专用数据库(VPD)
虚拟专用数据库 (VPD) 也称为细粒度访问控制,它提供强大的行级安全功能。它是在 Oracle8i 中推出的,已经受到广泛的欢迎。
VPD 的工作方法是,通过透明地更改对数据的请求,基于一系列定义的标准向用户提供表的局部视图。在运行时,所有查询都附加了谓词,以便筛选出准许用户看到的行。
也就是通过VPD的设置,我们可以做到行级安全性控制,特定的用户即使对一张表有读取权限,那么也只能看到符合自身权限的记录。
注意,在Oracle10g版本中,VPD得到增强,已经可以实现字段级的安全性控制了。
实例及搭建步骤参看:利用VPD细粒度访问策略实现行级安全性 Step By Step
�8�5 Orace Label Security
基于对由客户提交的行级安全性的严格要求,Oracle Label Security(Oracle 数据库企业版的选件之一)利用多级安全性概念解决了世界上政府和商业用户在实际中遇到的数据安全和隐私问题。
OLS 通过利用数据敏感度标签(例如“敏感”和“公司机密”)与用户标签授权,提供了完善的行级安全性控制。
OLS 使用政策概念来存储标签定义和授权。该政策可直接在数据库中进行管理,或在 Oracle 身份管理中进行集中管理。
�8�5 Oracle Database Valut
通常数据库管理员如果具有了DBA权限,那么就很难防止这样的管理员查看应用程序数据。而Oracle Database Valut则解决了必须保护涉及合作伙伴、员工和顾客的敏感业务信息或隐私数据的客户最为担心的问题。
Oracle Database Vault 可防止高权限的应用程序 DBA 访问其他的应用程序、执行其权限之外的任务。Oracle Database Vault 可在不影响应用程序功能的前提下快速而高效地保护现有程序。
Oracle Database Vault 可通过下列方法解决一些最为常见的安全问题和内部威胁:
1. 限制 DBA 和其他授权用户访问应用程序数据。
2. 防止DBA 操纵数据库和访问其他应用程序。Oracle Database Vault 提供了强大的职责划分控制功能,可防止擅自更改数据库。比如说如果一个用户具有 CREATE USER 权限,但不具备正确的用户管理权限,则 Oracle Database Vault 将阻止该 DBA 创建新用户。
3. 更好的控制何人、何时、何地可以访问应用程序。如日期时间、数据库客户端在网络上的位置之类的因素。
Oracle Database Valut是新的Oracle Database 10g企业版的选件。目前已经有Linux X86以及Solaris SPARC 64bit的版本可以下载使用了。
�8�5 用户访问审计
审计是Oracle安全性的另一个重要领域,我们还必须小心地计划审计方案。有几种方式可在Oracle中进行审计:
1. SQL审计命令(标准审计)
通过AUDIT语句我们可以对成功或者不成功的特定对象的读取,更新操作进行审计。
标准审计只会记录较少的跟踪信息,比如发出该语句的用户、时间、终端标识号等等。
该审计对于系统性能的影响更多地取决于对象的繁忙程度。
2. 用对象触发器进行审计(也就是DML审计)
此类审计通常由客户自行开发放置于特定数据库对象上的触发器,由于是自行开发,所以相对于标准审计则能够更自由地记录更多感兴趣的跟踪信息。比如更新操作将某个字段从什么原始值更新到了什么新值。
该审计对于系统性能的影响更多地取决于对象的繁忙程度和触发器的编写水平。
3. 用系统级触发器进行审计(记录用户登录和退出)
当用户登录数据库或者离开数据库时,都可以通过自定义的触发器来记录用户名称,操作时间,终端标识号等信息。
由于触发器触发几率小,所以该审计对于系统性能影响并不大。
4. 用LogMiner进行审计(也就是DML和DDL)
Oracle数据库将所有的更新操作都记录在重作日志中,而Oracle提供了LogMiner工具用于挖掘重作日志中的所有操作,相比起上述的各种审计方法来说,该种审计可能是信息最为完善,对于应用系统性能影响最小的方法。
此处稍微延展开来说一下,LogMiner是双刃剑,既然可以用来审计,也就能够被恶意使用作为数据窃取的工具。所以在数据本身的加密方面,Oracle同样提供了多种解决方案,比如DBMS_OBFUSCATION_TOOLKIT,DBMS_CRYPTO和最新的透明数据加密,甚至在数据备份方面 Oracle也推出了Secure Backup来应对磁带数据的加密,但是要注意到数据加密不应用作访问控制的替代项,存储加密的数据并不会在存储介质本身提供额外的保护层,只是有助于在发生介质遭窃时保护诸如信用卡号之类的敏感数据。本文不再作更多的介绍。
5. 细精度审计(FGA)
细粒度审计 (FGA),是在 Oracle 9i 中引入的,能够记录 SCN 号和行级的更改以重建旧的数据,但是它们只能用于 select 语句,而不能用于 DML,如 update、insert 和 delete 语句。因此,对于 Oracle 数据库 10g 之前的版本,使用触发器虽然对于以行级跟踪用户初始的更改是没有吸引力的选择,但它也是唯一可靠的方法。
而Oracle10g种FGA功能的增强使其不但能够支持select操作,同时也支持DML操作。在 Oracle 10g 中,审计已经从一个单纯的“操作记录者”成长为一个“事实记录机制”,它能以一个非常详细的级别来捕获用户的行为,这可以消除您对手动的、基于触发器的审计的需要。它还结合了标准审计和 FGA 的跟踪,这使其更易于跟踪数据库访问,而不用考虑它是如何生成的。
通过细粒度审计我们可以记录:
在早上九点到下午六点之间或在星期六和星期日对某个表进行了访问。
使用了公司网络外部的某个 IP 地址。
选定或更新了特定列。
使用了该列的特定值。
㈤ 数据库 oracle 11g r2安全更新设置问题,求助!
如果没有购买license,不会给你更新的
㈥ oracle 对系统配置要求
安装的软件环境需求:
下列从两个主要的方面阐述Oracle9i对软件环境的要求。
对操作系统的要求建议在全新安装的Windows 2000 Server上安装数据库服务器,在Windows 2000 Server或Windows 98上安装管理客户机。
对虚拟内存的要求建议可以将虚拟内存适当进行调整以加快安装速度。安装的网络环境需求安装Oracle9i数据库服务器,至少需要有两台计算机,通过交换机或集线器构成局域网。
(6)oracle数据库安全配置扩展阅读:
Oracle零售云服务充分集合了甲骨文公司在云、安全、零售行业以及网络等领域的专业性,完美地对甲骨文云进行了补充。甲骨文云是目前业界最广泛的公有云服务产品组合,涵盖SaaS、PaaS、DaaS及IaaS。
甲骨文云现在每天支持6200万用户和230亿项交易,在全球3万台设备上运行,在19个数据中心有400PB级存储。
Oracle 零售云服务为零售高管提供了最前沿的工具,让零售商能够在不断变化市场中时刻保持领先位置。Jill Puleri表示:“IT部门对于企业的价值是以月为衡量时间的,Oracle零售云服务能够显着地加快部署时间,帮助零售业的IT部门将注意力从系统维护转向业务的创新层面。”
㈦ 安装Oracle数据库的时候IP地址怎么配置了
1、直接修改\oracle\proct\10.2.0\client_2\NETWORK\ADMIN\tnsnames的文件,直接添加
TOPPROD = (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.15)(PORT = 1521)) )
(CONNECT_DATA =
(SERVICE_NAME = topprod) ) )
2、一种图形界面,在安装的时候,将oracle所在服务器或电脑的IP加入
㈧ oracle 11g 安装和使用
oracle 11g可以使用内置sysdba用户来登录,然后为sys和system用户设置密码,步骤如下:
1、打开运行窗口。
㈨ 安装oracle的配置要求是什么
如何连接oracle数据库及故障解决办法
如何配置才能使客户端连到数据库:
要使一个客户端机器能连接oracle数据库,需要在客户端机器上安装oracle的客户端软件,唯一的例外就是java连接数据库的时候,可以用jdbc thin模式,不用装oracle的客户端软件。加入你在机器上装了oracle数据库,就不需要在单独在该机器上安装oracle客户端了,因为装oracle数据库的时候会自动安装oracle客户端。
用过sql server数据库然后又用oracle的新手可能会有这样的疑问:问什么我用sql server的时候不用装sql server的客户端呢?原因很简单,sql server也是microsoft的,它在操作系统中集成了sql server客户端,如果microsoft与oracle有协议,将oracle客户端也集成到操作系统中,那我们也就不用在客户端机器装oracle客户端软机就可访问数据库了,不过,这好像是不可能实现的事情。
也有的人会问:为什么在sql server中没有侦听端口一说,而在oracle中要配置侦听端口?其实sql server中也有侦听端口,只不过microsoft将侦听端口固定为1433,不允许你随便改动,这样给你一个错觉感觉sql server中没有侦听端口,咳,microsoft把太多的东西都封装到黑盒子里,方便使用的同时也带来的需要副作用。而oracle中的侦听端口直接在配置文件中,允许随便改动,只不过无论怎样改动,要与oracle服务器端设置的侦听端口一致。
好,言归正传,我们如何做才能使客户端机器连接到oracle数据库呢?
A. 安装相关软件
B. 进行适当的配置
A.在适当的位置安装适当的软件:
在客户端机器:
1.在客户端机器上安装ORACLE的Oracle Net通讯软件,它包含在oracle的客户端软件中。
2.正确配置了sqlnet.ora文件:
NAMES.DIRECTORY_PATH = (TNSNAMES, ….)
NAMES.DEFAULT_DOMAIN=DB_DOMAIN
一般情况下我们不用NAMES.DEFAULT_DOMAIN参数。如果想不用该参数用#注释掉或将该参数删除即可,对于NAMES.DIRECTORY_PATH参数采用缺省值即可,对于NAMES.DEFAULT_DOMAIN参数有时需要注释掉,在下面有详细解释。
3.正确配置了tnsname.ora文件
在服务器端机器:
1.保证listener已经启动
2.保证数据库已经启动。
如果数据库没有启动,用:
Oracle 9i:
dos>sqlplus “/ as sysdba”
sqlplus> startup
Oracle 8i:
dos>svrmgrl
svrmgrl>connect internal
svrmgrl>startup
命令启动数据库
如果listener没有启动,用:
lsnrctl start [listener name]
lsnrctl status [listener name]
命令启动listener
B.进行适当的配置
如何正确配置tnsname.ora文件:
可以在客户端机器上使用oracle Net Configuration Assistant或oracle Net Manager图形配置工具对客户端进行配置,该配置工具实际上修改tnsnames.ora文件。所以我们可以直接修改tnsnames.ora文件,下面以直接修改tnsnames.ora文件为例:
该文件的位置为: …\network\admin\tnsnames.ora (for windows)
…/network/admin/tnsnames.ora (for unix)
此处,假设服务器名为testserver,服务名为orcl.testserver.com,使用的侦听端口为1521,则tnsnams.ora文件中的一个test网络服务名(数据库别名)为:
test =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))
)
(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)
)
)
此处的笑脸为)。
红色的内容为需要根据实际情况修改的内容,现解释如下:
PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。
HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(for WINDOWS) or ifconfig(for UNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在hosts文件中加入数据库侦听所在的机器的机器名的解析。
PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。
SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus> show parameter service_name命令察看。
如何利用配置的网络服务名连接到数据库:
用sqlplus程序通过test网络服务名进行测试,如sqlplus system/manager@test。如果不能连接到数据库,则在tnsname.ora文件中的test网络服务名(net service)后面加上sqlnet.ora文件中NAMES.DEFAULT_DOMAIN参数的值,此处我的参数值为testserver.com,将其加到网络服务名后面,修改后的tnsname.ora中关于该网络服务名的内容为:
什么情况下会引起oracle自动设置NAMES.DEFAULT_DOMAIN参数?
出现这种情况的典型环境为windows的客户端的‘我得电脑à属性à计算机名à更改à其它…à此计算机的主DNS后缀’中设置了‘primary dns suffix’,因为在这种情况下安装客户端时,会在sqlnet.ora文件中自动设置NAMES.DEFAULT_DOMAIN参数,或许当把计算机加入域中安装oracle客户端时也会出现这种情况,有条件的话大家可以试一下。
我在设置oracle的客户端时一般手工修改tnsnames.ora文件,但是还有许多人喜欢用图形工具配置,该图形工具最终还是修改tnsnames.ora文件,但是它有时会引起其它的问题:
在用oracle的图形配置软件'net assistant'或‘Net Configuration Assistant’配置网络服务名时,假如已经设置了‘primary dns suffix’,但是在图形配置软件中写的网络服务名的名字中没有‘primary dns suffix’,如只是写了test,则图形配置软件会自动在后面加上‘primary dns suffix’,使之变为test.testserver.com,并存在tnsnames.ora中,而不管你的sqlnet.ora文件中是否有NAMES.DEFAULT_DOMAIN参数。此时,用图形工具进行测试连接是通过的,但是假如此时sqlnet.ora文件中没有NAMES.DEFAULT_DOMAIN参数,则你在使用网络服务名时应该使用在tnsnames.ora中的test.testserver.com,而不是你在图形配置软件中键入的test。解决的办法为:
<1>可以在sqlnet.ora文件中设置NAMES.DEFAULT_DOMAIN= testserver.com,这时你可以用test或test.testserver.com连接数据库
<2>在sqlnet.ora文件中不设置NAMES.DEFAULT_DOMAIN参数,在tnsnames.ora文件中将test.testserver.com中的.testserver.com去掉,这时你可以用test连接数据库。
关于为什们在网络服务名后面加db_domain参数,需要了解sql*plus连接数据库的原理,我在后面解决12154常见故障中给出了详细的说明。
如果上面的招数还不奏效的话,只好用一下干坤大挪移了。
将客户端的网络服务名部分
test.testserver.com =
(DESCRIPTION=
(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))
)
(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)
)
)
此处的笑脸为)。
拷贝到服务器的tnsnames.ora文件中。然后再服务器端用sqlplus system/[email protected]连接到数据库。
如果能连接成功,说明你的客户端与服务器端的网络有问题。
如果连接不成功,用前面的部分检查网络服务名部分部分是否正确,如果确信网络服务名部分正确而且所有的客户端都连不上数据库则可能为系统TCP/IP或Oracle系统有问题,建议重新安装数据库。
常见故障解决办法:
TNS-12154 (ORA-12154):TNS:could not resolve service name
该错误表示用于连接的网络服务名在tnsnames.ora文件中不存在,如上面的tnsnames.ora中的网络服务名只有test,假如用户在连接时用sqlplus system/manager@test1则就会给出TNS-12154错误。
要注意的是,有时即使在tnsnames.ora文件中有相应的网络服务名,可是用该网络服务名连接时还会出错,出现这种情况的典型配置如下(在客户端的机器上):
sqlnet.ora文件:
NAMES.DIRECTORY_PATH = (TNSNAMES, ….)
NAMES.DEFAULT_DOMAIN = server.com
tnsnames.ora文件:
test =
(DESCRIPTION=
(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))
)
(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)
)
)
此处的笑脸为)。
sql*plus运行基本机理:
在用户输入sqlplus system/manager@test后,sqlplus程序会自动到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN参数,假如该参数存在,则将该参数中的值取出,加到网络服务名的后面,即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/[email protected] ,然后再到tnsnames.ora文件中找test.server.com网络服务名,这当然找不到了,因为该文件中只有test网络服务名,所以报错。解决的办法就是将sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN参数注释掉即可,如#NAMES.DEFAULT_DOMAIN = server.com。假如NAMES.DEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnames.ora文件中找test网络服务名,然后取出其中的host,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。
另外原则上tnsnames.ora中的配置不区分大小写,但是我的确遇到区分大小写的情况,所以最好将使用的网络服务与tnsnames.ora中配置的完全一样。
ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect Descriptor.
该错误表示能在tnsnames.ora中找到网络服务名,但是在tnsnames.ora中指定的SERVICE_NAME与服务器端的SERVICE_NAME不一致。解决的办法是修改tnsnames.ora中的SERVICE_NAME。
易混淆术语介绍:
Db_name:对一个数据库(Oracle database)的唯一标识,该数据库为第一章讲到的Oracle database。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将Db_name和Db_domain两个参数用’.’连接起来,表示一个数据库,并将该数据库的名称称为Global_name,即它扩展了Db_name。Db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。
Db_domain:定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。
Global_name:对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. Db_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值,如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name.db_domain>命令进行修改,然后修改相应参数。
Service_name:该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。
Net service name:网络服务名,又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。
㈩ 如何保证oracle数据库的安全性
数据库安全性问题一直是围绕着数据库管理员的恶梦,数据库数据的丢失
以及数据库被非法用户的侵入使得数据库管理员身心疲惫不堪。本文围绕数据
库的安全性问题提出了一些安全性策略,希望对数据库管理员有所帮助,不再
夜夜恶梦。数据库安全性问题应包括两个部分:
一、数据库数据的安全
它应能确保当数据库系统DownTime时,当数据库数据存储媒体被破
坏时以及当数据库用户误操作时,数据库数据信息不至于丢失。
二、数据库系统不被非法用户侵入
它应尽可能地堵住潜在的各种漏洞,防止非法用户利用它们侵入数据
库系统。
对于数据库数据的安全问题,数据库管理员可以参考有关系统双机
热备份功能以及数据库的备份和恢复的资料。
以下就数据库系统不被非法用户侵入这个问题作进一步的阐述。
组和安全性:
在操作系统下建立用户组也是保证数据库安全性的一种有效方法。
Oracle程序为了安全性目的一般分为两类:一类所有的用户都可执行,
另一类只DBA可执行。在Unix环境下组设置的配置文件是/etc/group,
关于这个文件如何配置,请参阅Unix的有关手册,以下是保证安全性的
几种方法:
(1) 在安装Oracle Server前,创建数据库管理员组(DBA)而且
分配root和Oracle软件拥有者的用户ID给这个组。DBA能执
行的程序只有710权限。在安装过程中SQL*DBA系统权限命令
被自动分配给DBA组。
(2) 允许一部分Unix用户有限制地访问Oracle服务器系统,增加
一个由授权用户组的Oracle组,确保给Oracle服务器实用例
程Oracle组ID,公用的可执行程序,比如SQL*Plus,SQL*Fo
rms等,应该可被这组执行,然后该这个实用例程的权限为
710,它将允许同组的用户执行,而其他用户不能。
(3) 改那些不会影响数据库安全性的程序的权限为711。
注:在我们的系统中为了安装和调试的方便,Oracle数据库中
的两个具有DBA权限的用户Sys和System的缺省密码是manager。
为了您数据库系统的安全,我们强烈建议您该掉这两个用户的
密码,具体操作如下:
在SQL*DBA下键入:
alter user sys indentified by password;
alter user system indentified by password;
其中password为您为用户设置的密码。
Oracle服务器实用例程的安全性:
以下是保护Oracle服务器不被非法用户使用的几条建议:
(1) 确保$ORACLE_HOME/bin目录下的所有程序的拥有权归Oracle
软件拥有者所有;
(2) 给所有用户实用便程(sqiplus,sqiforms,exp,imp等)711权
限,使服务器上所有的用户都可访问Oracle服务器;
(3) 给所有的DBA实用例程(比如SQL*DBA)700权限。Oracle服务器
和Unix组当访问本地的服务器时,您可以通过在操作系统下把
Oracle服务器的角色映射到Unix的组的方式来使用Unix管理服
务器的安全性,这种方法适应于本地访问。
在Unix中指定Oracle服务器角色的格式如下:
ora_sid_role[_dla]
其中
sid 是您Oracle数据库的oracle_sid;
role 是Oracle服务器中角色的名字;
d (可选)表示这个角色是缺省值;
a (可选)表示这个角色带有WITH ADMIN选项,
您只可以把这个角色授予其他角色,不能是其他用户。
以下是在/etc/group文件中设置的例子:
ora_test_osoper_d:NONE:1:jim,narry,scott
ora_test_osdba_a:NONE:3:pat
ora_test_role1:NONE:4:bob,jane,tom,mary,jim
bin: NONE:5:root,oracle,dba
root:NONE:7:root
词组“ora_test_osoper_d”表示组的名字;词组“NONE”表示这
个组的密码;数字1表示这个组的ID;接下来的是这个组的成员。前两
行是Oracle服务器角色的例子,使用test作为sid,osoper和osdba作
为Oracle服务器角色的名字。osoper是分配给用户的缺省角色,osdba
带有WITH ADMIN选项。为了使这些数据库角色起作用,您必须shutdown
您的数据库系统,设置Oracle数据库参数文件initORACLE_SID.ora中
os_roles参数为True,然后重新启动您的数据库。如果您想让这些角色
有connect internal权限,运行orapwd为这些角色设置密码。当您尝
试connect internal时,您键入的密码表示了角色所对应的权限。
SQL*DBA命令的安全性:
如果您没有SQL*PLUS应用程序,您也可以使用SQL*DBA作SQL查权
限相关的命令只能分配给Oracle软件拥有者和DBA组的用户,因为这些
命令被授予了特殊的系统权限。
(1) startup
(2) shutdown
(3) connect internal
数据库文件的安全性:
Oracle软件的拥有者应该这些数据库文件
($ORACLE_HOME/dbs/*.dbf)设置这些文件的使用权限为0600:文件的
拥有者可读可写,同组的和其他组的用户没有写的权限。
Oracle软件的拥有者应该拥有包含数据库文件的目录,为了增加
安全性,建议收回同组和其他组用户对这些文件的可读权限。
网络安全性:
当处理网络安全性时,以下是额外要考虑的几个问题。
(1) 在网络上使用密码
在网上的远端用户可以通过加密或不加密方式键入密码,
当您用不加密方式键入密码时,您的密码很有可能被非法用
户截获,导致破坏了系统的安全性。
(2) 网络上的DBA权限控制
您可以通过下列两种方式对网络上的DBA权限进行控制:
A 设置成拒绝远程DBA访问;
B 通过orapwd给DBA设置特殊的密码。
建立安全性策略:
系统安全性策略
(1) 管理数据库用户
数据库用户是访问Oracle数据库信息的途径,因此,
应该很好地维护管理数据库用户的安全性。按照数据库系统
的大小和管理数据库用户所需的工作量,数据库安全性管理
者可能只是拥有create,alter,或drop数据库用户的一个
特殊用户,或者是拥有这些权限的一组用户,应注意的是,只
有那些值得信任的个人才应该有管理数据库用户的权限。
(2) 用户身份确认
数据库用户可以通过操作系统,网络服务,或数据库进行
身份确认,通过主机操作系统进行用户身份认证的优点有:
A 用户能更快,更方便地联入数据库;
B 通过操作系统对用户身份确认进行集中控制:如果操作
系统与数据库用户信息一致,那么Oracle无须存储和管
理用户名以及密码;
C 用户进入数据库和操作系统审计信息一致。
(3) 操作系统安全性
A 数据库管理员必须有create和delete文件的操作系统权限;
B 一般数据库用户不应该有create或delete与数据库相关文
件的操作系统权限;
C 如果操作系统能为数据库用户分配角色,那么安全性管理者
必须有修改操作系统帐户安全性区域的操作系统权限。
数据的安全性策略:
数据的生考虑应基于数据的重要性。如果数据不是很重要,那么数
据的安全性策略可以稍稍放松一些。然而,如果数据很重要,那么应该
有一谨慎的安全性策略,用它来维护对数据对象访问的有效控制。
用户安全性策略:
(1) 一般用户的安全性
A 密码的安全性
如果用户是通过数据库进行用户身份的确认,那么建议
使用密码加密的方式与数据库进行连接。这种方式的设置方
法如下:
在客户端的oracle.ini文件中设置
ora_encrypt_login数为true;
在服务器端的initORACLE_SID.ora文件中设置
dbling_encypt_login参数为true。
B 权限管理
对于那些用户很多,应用程序和数据对象很丰富的数据
库,应充分利用“角色”这个机制所带的方便性对权限进行
有效管理。对于复杂的系统环境,“角色”能大大地简化权
限的管理。
(2) 终端用户的安全性
您必须针对终端用户制定安全性策略。例如,对于一个有
很多用户的大规模数据库,安全性管理者可以决定用户组分类,
为这些用户组创建用户角色,把所需的权限和应用程序角色授
予每一个用户角色,以及为用户分配相应的用户角色。当处理
特殊的应用要求时,安全性管理者也必须明确地把一些特定的
权限要求授予给用户。您可以使用“角色”对终端用户进行权
限管理。
数据库管理者安全性策略:
(1) 保护作为sys和system用户的连接
当数据库创建好以后,立即更改有管理权限的sys和system用
户的密码,防止非法用户访问数据库。当作为sys和system用户
连入数据库后,用户有强大的权限用各种方式对数据库进行改动。
(2) 保护管理者与数据库的连接
应该只有数据库管理者能用管理权限连入数据库,当以sysdba
或startup,shutdown,和recover或数据库对象(例如create,
drop,和delete等)进行没有任何限制的操作。
(3) 使用角色对管理者权限进行管理
应用程序开发者的安全性策略:
(1) 应用程序开发者和他们的权限
数据库应用程序开发者是唯一一类需要特殊权限组完成自己
工作的数据库用户。开发者需要诸如create table,create
procere等系统权限,然而,为了限制开发者对数据库的操作,
只应该把一些特定的系统权限授予开发者。
(2) 应用程序开发者的环境
A 程序开发者不应与终端用户竞争数据库资源;
B 用程序开发者不能损害数据库其他应用产品。
(3) free和controlled应用程序开发
应用程序开发者有一下两种权限:
A free development
应用程序开发者允许创建新的模式对象,包括table,index,
procere,package等,它允许应用程序开发者开发独立于其
他对象的应用程序。
B controlled development
应用程序开发者不允许创建新的模式对象。所有需要table,
indes procere等都由数据库管理者创建,它保证了数据
库管理者能完全控制数据空间的使用以及访问数据库信息的
途径。但有时应用程序开发者也需这两种权限的混和。
(4) 应用程序开发者的角色和权限
数据库安全性管理者能创建角色来管理典型的应用程序开
发者的权限要求。
A create系统权限常常授予给应用程序开发者,以到于
他们能创建他的数据对象。
B 数据对象角色几乎不会授予给应用程序开发者使用的
角色。
(5) 加强应用程序开发者的空间限制
作为数据库安全性管理者,您应该特别地为每个应用程
序开发者设置以下的一些限制:
A 开发者可以创建table或index的表空间;
B 在每一个表空间中,开发者所拥有的空间份额。应用程
序管理者的安全在有许多数据库应用程序的数据库系统
中,您可能需要一应用程序管理者,应用程序管理者应
负责以下的任务:
C 为每一个应用程序创建角色以及管理每一个应用程序
的角色;
D 创建和管理数据库应用程序使用的数据对象;
E 需要的话,维护和更新应用程序代码和Oracle的存储
过程和程序包。