ORACLE问题

2024-08-07

ORACLE问题(精选12篇)

ORACLE问题 篇1

一、引言

Oracle数据库是目前比较流行的关系型数据库, 以其功能强大, 性能卓越被广泛应用于在各个行业, 并且扮演着极其重要的角色, 随着应用的深入, 数据信息的不断增加, 数据库的安全性受到多方面的威胁, 包括对数据库中信息的窃取、篡改和破坏、数据库系统本身的安全缺陷、黑客的攻击和病毒的侵害等, 在无法预料的灾难发生时, 数据库系统不能正常运转, 造成大量数据信息丢失, 数据库的安全性问题已经日益重要。

二、保证数据库安全

保证Oracle数据库的安全主要有以下几个方面:

1用户管理

数据库用户是连接数据库、存取数据库对象 (表和记录等) 的通道。Oracle数据库系统将用户分为:一般用户、数据库管理员、应用程序开发人员等几类用户。用户要访问Oracle数据库系统, 必须以合法的用户名和口令登陆, 以保证Oracle数据库系统的安全性, 这是保护数据库系统安全的重要手段之一。通过建立不同的用户组和用户口令验证, 可以有效地防止非法的Oracle用户进入数据库系统, 对数据库进行非法操作, 造成不必要的麻烦和损坏。在应用程序开发调试初期为了方便经常把密码设成和用户名一致, 这是个很不安全的因素, 在应用系统上线后需要更改密码, 不要和用户名一样, 另外, 应注重数据库用户口令的复杂程度及使用期限, 及时修改系统默认的密码, 特别强调对SYS和SYSTEM两个特殊账户的保密管理, 要经常更改这两个账户的口令, 防止被盗用。对于数据库用户可以通过使用用户配置文件来管理用户, 用户配置文件是一个参数的集合, 其功能是限制用户可使用的系统和数据库资源并管理口令, 如果数据库没有创建用户配置文件, 将使用默认的用户配置文件, 默认用户配置文件指定对于所有用户资源没有限制, 可以通过用户配置文件建立口令管理策略, 对用户口令进行复杂性验证, 检查用户口令历史, 以及控制帐户锁定等, 增强用户口令安全, 从而进一步保证数据库的安全。

2角色、权限管理

权限是执行某种类型的SQL语句和访问其它用户对象的权力, 权限包括两种:系统权限和对象权限。系统权限使用户具有某种数据库操作的权力。对象权限使用户具有查询、插入、更新或修改某个具体对象的权力。在Oracle数据库中, 可以通过授权来对Oracle用户的操作进行限制, 即允许一些用户可以对O-racle服务器进行访问, 也就是说对整个数据库具有读写的权利, 而大多数用户只能在同组内进行读写或对整个数据库只具有读的权利。创建了用户后, 必须为用户授权才能使用, 这时就需要根据用户不同的情况进行授权。如果数据库用户很多, 权限又相同, 这时就需要创建角色。角色是对权限的集中管理机制, 是一组权限的集合, 当把角色授予不同用户时, 用户就有了相同的权限。角色的权限改变, 用户的权限也跟着改变, 可以建立不同的角色, 然后给每种角色授予相应的权限, 然后根据用户类型的不同授予不同的角色。关于用户权限普遍存在问题是, 对Oracle数据库编程和浏览的一般用户常常具有DBA权限, 能对数据库系统做任何修改或删除, 权限过大, 对数据库的安全造成隐患, 所以要给数据库用户授予适当的权限及角色。

3数据访问控制

随着数据库用户的增多, 数据信息的增加, 以及计算机网络应用的普及和提高, 我们应该加强对敏感数据的访问控制能力, 增强数据库的保密性, 不允许未授权的用户存取信息;保证数据的安全性, 只允许授权用户修改数据;保证数据的可用性, 不应拒绝已授权用户对数据的存取访问。数据访问控制是保证数据库安全的重要手段之一, 为了保证数据的正确访问控制, 需要加强访问控制机制, 所谓访问控制机制是指强制何人、何时以及从何处访问数据库指定数据的基本安全框架, 保证了无论是在主流的基于Web浏览器还是客户机/服务器或其他应用系统的访问安全性, 为了加强数据库在网络中的安全性, 对于远程用户, 必须使用加密方式通过密码来访问数据库, 加强网络上的DBA权限控制, 如拒绝远程的DBA访问等。

4数据保护

数据库的数据保护主要是数据库的备份, 备份是数据文件、表空间或某个时间点的数据库等的快照。如果对数据库进行了周期性备份, 则在数据丢失时用户可以将存储的重做信息应用到他们最新的备份中, 从而恢复数据库的当前状态。另一种数据保护就是日志, Oracle数据库实例都提供日志, 用来记录事务对数据库的更新操作的文件, 每个事务开始的标记、结束的标记和更新操作均作为日志文件中的一个日志记录存储在日志文件中, 以便恢复数据库使用。再一个就是控制文件的备份, 它一般用于存储数据库物理结构, 包含了数据库名、数据库数据文件和日志文件的名字和位置、数据库建立日期。

(1) Oracle数据库的备份方式

Oracle数据库的备份主要有以下几种方式:

1) 逻辑备份

逻辑备份就是将某个数据库的记录读出并将其写入到一个文件中, 这是经常使用的一种备份方式, 特别是在应用软件系统开发和测试阶段, 工程师通常采用逻辑备份方法来备份他们的开发或者测试数据库。

2) 物理备份

物理备份也是数据库管理员经常使用的一种备份方式。它可以对Oracle数据库的所有内容进行拷贝, 方式可以是多种, 有脱机备份和联机备份, 它们各有所长, 在实际中应根据具体情况和所处状态进行选择。

脱机备份

其操作是在Oracle数据库正常关闭后, 对Oracle数据库进行备份, 备份的内容包括:所有用户的数据库文件和表;所有控制文件;所有的日志文件;数据库初始化文件等。可采取不同的备份方式, 如:利用磁带转储命令将所有文件转储到磁带上, 或将所有文件原样复制到另一个备份磁盘中或另一个主机的磁盘中。

联机备份

这种备份方式也是切实有效的, 它可以将联机日志转储归档, 在Oracle数据库内部建立一个所有进程和作业的详细准确的完全记录。

(2) Oracle数据库的备份策略

在进行数据库备份前, 须结合自身数据库的特点指定一个切实可行的备份策略, 主要需要考虑以下要点:

用于备份的磁盘一定要和数据库数据文件、控制文件、联机日志文件所在磁盘相分离, 这样可以保证数据库文件所在的磁盘损坏时不会影响到备份的数据文件和日志文件。选择数据库的备份模式为存档模式, 存档模式下, 全部日志文件进行了完整的保存, 若数据库文件出现损失, 就可以从备份中还原数据文件和控制文件, 对其实施日志文件中记录的任何变化, 这样就把数据库完全恢复到错误发生前的情况。有计划地、经常地进行数据库备份, 根据数据库变化的频率制定备份的频率, 若数据库经常进行改动, 则应频繁地进行备份;反之, 若数据库是只读的或很少改动, 则可降低备份频率, 在数据库进行结构改动, 如创建或删除一个表空间的前后必须进行数据库备份。

三、小结

数据库安全性在构建企业应用时是非常重要的技术问题, 本文只是浅显地分析了Oracle数据库安全管理中需要注意的几方面内容, 还有很多没有涉及到的知识需要我们在实际的工作过程中去领悟。但我们应该认识到, 安全问题牵扯到许多因素, 过分的安全性可能会影响效率, 那么在实际的应用中如何平衡安全与效率的问题也是至关重要的。

摘要:对Oracle数据库安全方面的相关问题进行了研究, 深入分析用户管理、角色管理、数据保护等方面内容。

关键词:Oracle,数据库,安全

参考文献

[1]滕永昌、高杨:《Oracle数据库系统管理》.清华大学出版社。[1]滕永昌、高杨:《Oracle数据库系统管理》.清华大学出版社。

[2]飞思科技产品研发中心:《Ora-cle基础与提高》[M].电子工业出版社。[2]飞思科技产品研发中心:《Ora-cle基础与提高》[M].电子工业出版社。

[3]萨师煊、王珊:《数据库系统概论[M]》.高等教育出版社。[3]萨师煊、王珊:《数据库系统概论[M]》.高等教育出版社。

ORACLE问题 篇2

作为Oracle的数据库管理员都知道,数据库系统典型安装后,一般sys和system以及internal这三个用户具有默认的口令,数据库安装成功后,系统管理员作的第一件工作就是修改这些用户的口令,保证数据库的安全性。然而,众多管理员往往忽视了其中的一个安全问题,下面我们就将详细讨论这个问题。

Oracle数据库系统如果采用典型安装后,除了创建前面介绍的几个用户外,另外还自动创建了一个叫做DBSNMP的用户,该用户负责运行Oracle系统的智能代理(Intelligent Agent),该用户的缺省密码也是“DBSNMP”。如果忘记修改该用户的口令,任何人都可以通过该用户存取数据库系统。现在我们来看一下该用户具有哪些权限和角色,然后来分析一下该用户对数据库系统可能造成的损失。

启动SQL/PLUS程序,使用该用户登录进入:

SQL>select * from session_privs;

CREATE SESSION

ALTER SESSION

UNLIMITED TABLESPACE

CREATE TABLE

CREATE CLUSTER

CREATE SYNONYM

CREATE PUBLIC SYNONYM

CREATE VIEW

CREATE SEQUENCE

CREATE DATABASE LINK

CREATE PROCEDURE

CREATE TRIGGER

ANALYZE ANY

CREATE TYPE

CREATE OPERATOR

CREATE INDEXTYPE

可以看到该用户不是SYS或SYSTEM管理用户,然而,它却具有两个系统级权限:UNLIMITED TABLESPACE和CREATE PUBLIC SYNONYM,

看到这两个权限你应该马上想到,这些都是安全隐患,尤其是UNLIMITED TABLESPACE,它是破坏数据库系统的攻击点之一。如果这时候你还依然认为,即使有人利用这个没有修改的口令登录进数据库也造成不了什么损失的话,我就不得不提醒你:该用户具有UNLIMITED TABLESPACE的系统权限,它可以写一个小的脚本,然后恶意将系统用垃圾数据填满,这样数据库系统也就无法运行,并将直接导致最终的瘫痪。目前很多数据库系统都要求7X24的工作,如果出现了系统用垃圾数据填满的情况,那么,等数据库系统恢复时,恐怕不可挽回的损失已经造成了。

Oracle中国大破大立 篇3

“在亚太企业应用市场,我们已经让SAP感觉如芒刺在背。”

2005年4月26日的新闻发布会上,Oracle亚太区应用及行业副总裁Mark Gibbs的开场白借用了两个重量级拳击手的画面。其中红色腰带的一方代表Oracle,而蓝色腰带的一方,Mark Gibbs则以美国式幽默让大家“随便怎么猜”,但很明显,以蓝色为主色调的SAP就是这一红蓝相争的另一主角。

这是过去1年以来,Oracle在中国公开场合露面的最高级别官员,此次发布会也是Oracle在中国就系列收购行动首次作出说明。事实上,在此之前不到半个月的时间里,Oracle与中国媒体已经有过连续两次不断升级的沟通。4月13日,京城不少媒体都接到Oracle的邀请,由Oracle中国北方区董事总经理李翰璋向媒体通报其2005财年第三季度在亚太地区的业绩;4月22日,Oracle全球客户计划亚太高级总监Tony Banham来到中国,希望打开Oracle网格计算的市场局面。现在看来,这不过是Mark Gibbs在中国向SAP宣战的路演。

在对PeopleSoft的世纪大收购尘埃落定,中国区组织架构调整完毕的时候,Oracle希望人们的目光更多聚焦在它与竞争对手在应用软件和技术产品领域的贴身肉搏战上。

而事实上,Oracle过去一年来让人眼花缭乱的变化并不是简单地为了今天向SAP宣战,Oracle业务板块面临重重挑战的内在事实以及全球软件行业的整体气候变迁才是其背后的变化逻辑。年营业额几乎是SAP两倍的Oracle在应用软件上对SAP的挑战只不过是虚晃一枪,这只是Oracle战略布局的一个小棋子。作为全球第二大的软件厂商,Oracle不会改变它将微软掀翻马下的“野心”,应用软件在Oracle体系中的现时突出将随着对微软斗争路线的变化而改变。

史无前例地重视“应用软件”

“2004年9月份的重组是有史以来Oracle亚太地区软件业务上最重要的事件。”Mark Gibbs告诉记者。2004年9月,Oracle宣布调整其亚太地区销售和咨询业务模式,把业务重点放在3个核心领域—应用产品、技术产品和行业,即所谓“三驾马车”,并配备专业队伍。而Oracle中国公司把原有的技术部门和应用部门分别支持7大行业的业务模式,改为应用产品、行业、技术产品和区域4大块。原有的制造、消费品、电信、金融、政府、高科技和交通等7个行业除了电信、金融、政府3大行业(这3大行业占Oracle利润总额的30%以上)以外,其他几个行业包括汽车制造、能源、交通运输等则归属应用产品部门。

在这之前,Oracle的应用软件业务是在和专售应用产品的软件公司进行竞争,对于以底层数据库技术产品起家的Oracle来说,难以掌握应用软件上的先发优势,在Mark Gibbs看来,重组是业务模式调整的必然选择,这一次重组也“对应用软件赋予了史无前例的重视”。

而在李翰璋对记者的解释中,这一次重组更是Oracle的一个战略选择,一种自我定位的改变。“Oracle的目标是做全球大而全的信息公司”,而不再是技术产品的供应商。

“信息公司”的概念根据Oracle老板拉里·埃里森“大的客户只会找大的IT厂商”的思路提出,一向个性张扬的埃里森希望从底层数据库到应用层面一统天下,铺全企业级应用软件产品。“这种思路的成形源于,一方面客户对这种供货商不必有被收购的担心,另一方面,客户不必因购买多种不同厂商的产品而增加IT成本,”李翰璋告诉记者。

已在Oracle工作14年的Mark Gibbs对Oracle的这一变化轨迹有着清晰认识。“当我和企业的CIO们谈论集成的信息架构时,他们两眼放光,因为他们都承认,如今企业IT环境的复杂性和局限性。有了Oracle,他们就可以只选择一家软件公司既为他们提供数据管理和集成技术,又为他们提供完整的应用套件。”

而在上海国通供应链管理有限公司市场总监战秀强看来,“Oracle现在的业务模式更多是出于市场销售的策略,以技术产品带动应用产品的销售。”数据库是企业应用软件正常运行的基础,在3驾马车不能并驾齐驱的时候,领先的数据库业务就成了其他两者的发动机。事实上,在中国市场上,早在2000年,Oracle就已经采取这种打包销售的方式,只是以后会更加明显。

“对于Oracle和微软这样的软件巨头来说,竞争不在技术和市场层面,业务模式之争才是最为关键的。Oracle希望借助商业模式的调整寻求突围。”独立软件分析师李际告诉记者,“但Oracle要做这种大而全的软件公司,其实存在很大的风险。一个公司的市场生存要求它的内部业务板块要相对均衡发展,Oracle是否能够以它的发展速度来抵消这种不均衡带来的风险性,还有待观察。”

事实上,Oracle在这3个领域都将面对强大对手,IBM、BEA以及SAP和微软等都不是等闲之辈。

没有绝对领导人的Oracle中国

与此同时,Oracle中国公司开始为其全球业务模式的变化让路,中国区由此接二连三地上演了人员入局出局的公司大戏。

2004年6月,张书恒这个人称在Oracle做的职位最高的“大陆仔”从Oracle辞掉中国区副总经理的职务,并以职业经理人罕有的姿态旗帜鲜明地公开批评其上司—Oracle大中华区总裁陆纯初,称其缺乏对中国市场的了解,并在辞职前绕过陆纯初,向Oracle亚太区总裁直陈陆治下的Oracle中国区域市场的诸多问题。

随后,陆纯初开始发动反击,公开宣称张书恒是由于不合格而被Oracle“炒鱿鱼”。正当人们为此嘘唏不已的时候,3个月后的2004年9月,陆纯初也颇为悲壮地离开Oracle,其直接原因是Oracle从此取消大中华区总裁的位置,将原先由其负责的市场范围“肢解”为华北、华南和中国香港、华东和华西几个区域,并受Oracle亚太区的直接管理。

同时,Oracle在中国的运营模式整体变阵,以矩阵式管理进行市场运作,与3驾马车的业务模式进行结合。“现在是以行业为矩阵纵向,而技术产品和应用产品横向插入行业中”,Oracle一位经理告诉记者,“这也是国际上公认的比较好的业务管理模式。”

以前要对销售业绩负责的区域老总们,现在不再背负销售任务,“角色转为对客户、合作伙伴、社区的维护和商业机会的寻觅”,与之前张书恒等人前线将军的身份和权力有着天壤之别。事实上,如今Oracle中国区不像以前,已经没有绝对领导人,每个地区的董事总经理都可以在自己的区域代表Oracle。

而在Mark Gibbs看来,这种运营机制符合Oracle全球范围的统一风格,中国区必须服从Oracle全球范围的商业利益。“重组之后,我们有了一支专注于应用软件产品的专业销售队伍。”矩阵式的管理模式也让Oracle的技术产品和应用产品能够捆绑在一起,打入各个行业领域。事实上,各个区域总经理其实还分别负责不同的行业,比如李翰璋就同时是Oracle中国区通信行业总经理,负责Oracle在中国电信市场打单前后的工作,“这样一来,以行业为先导,技术产品和应用产品跟上来就比较容易了。”Oracle经理告诉记者。

“当然,这并不代表Oracle以前在中国的运营模式就不对,只是现在更适合这种模式。”在这位Oracle经理看来,Oracle全球范围的系列收购以及在中国的变化都是基于“Oracle要做大而全的信息公司”的定位变化这一背景。

Oracle在中国区的变阵更像是一场“削藩”。“张书恒等本地代表是真正的藩主,而陆纯初不过是Oracle做掉这些藩主的工具。”业内某位不愿透露姓名的知名人士告诉记者,Oracle要收权,推行变阵,张书恒等人才是真正的障碍,所以用了大半年的时间煞费苦心导演了这一场戏,当陆纯初的历史使命已经完成的时候,离开就是一个必然选择。

但跳出Oracle公司层面,在不少业内人士看来,这表示跨国公司全球化运动时代的到来,这一点这位经理也表示认同。“以前中国市场有不少不规范的操作方式,对于讲究商业规则的跨国公司来说,这只能是暂时的。”Oracle经理告诉记者,“Oracle中国今后更多的是按照Oracle全球的做法来运营。”

渠道:静悄悄的黎明

尽管纷纭繁杂,但Oracle的变化已由内向外悄然开始。

黄庆是上海一家IT咨询公司老板,做Oracle代理已有近两年时间,主要做Oracle企业应用软件的实施。2005年3月,Oracle亚太区来人突然造访,这让黄庆有些吃惊,“这在过去两年是没有的事。”在与黄庆对话的时候,造访者很认真地记录了黄庆针对Oracle渠道政策的意见,并表示Oracle将在中国改变一些渠道政策,重新扶持一批重要的合作伙伴。

在过去的几年中,Oracle在中国市场上的渠道商被人们嗤笑为Oracle的“提款机”—不管产品是否落实在最终客户身上,代理商们要先将所有款项打到Oracle账上,而且用户名不可更改,这样一来,如果初始谈判的客户变卦,代理商只能为Oracle买单。正因为如此,造成曾经不少Oracle金牌合作伙伴由于现金流压力要么死掉,要么倒向竞争对手。

事实上,Oracle在中国执行的是其全球通行的政策,只是前几年在中国遭遇全球规则之外的潜规则问题,由此衍生的台下交易在之前Oracle技术产品和应用产品的售前过程中屡见不鲜。

而在售后,Oracle“与民争利”的现象也很多见。“有一家叫OSC的公司挂靠在Oracle下面,我们在做实施的时候就经常碰上他们。”黄庆告诉记者。很明显,类似OSC这样的公司与Oracle有着千丝万缕的利益关系,“不明就里的客户往往更愿意相信OSC,我们有的时候很难做。”

这些问题Oracle迟早要面对,在其计划中,2005年5月底完成对PeopleSoft的整合后,处理好与合作伙伴共生共存的关系将成为Oracle在中国的一大主题。

在李翰璋看来,与合作伙伴和客户加强关系是与Oracle中国区组织架构的调整同步进行的。“在2005年,我们将继续推动‘金色中国’计划,除了在应用软件和技术产品领域加大力度外,加强业务伙伴关系和市场承诺也是我们的重要工作。”

而在《互联网周刊》记者此次对Oracle合作伙伴和客户的调查中,尽管Oracle中国公司内部调整不断,但这种变化似乎还没有这么快传递到合作伙伴和客户身上。

在李际看来,“中国区的调整更多是为了配合Oracle全球的调整步伐,中国市场的合作伙伴和客户感觉不到变化很正常。”

内部正在经历阵痛的Oracle中国,在其最核心的业务—渠道、销售层面,颇给人一种“这里的黎明静悄悄”的感觉,但谁也不能轻易否认,变化正在悄悄波及。

豪门争锋

没有人敢肯定Oracle最后一定能胜出。

在2005年的媒体答谢会上,SAP大中华区总裁西曼要求在场媒体记者举杯“为SAP中国干杯”,“由于PeopleSoft被Oracle购并,SAP减少了一个重要的竞争对手,这将直接推动SAP走进快速增长的轨道。”西曼的得意与Mark Gibbs宣布挑战SAP时的兴奋相得益彰,而这只是孔翰宁和拉里·埃里森各自心情在中国前台的表现。

与此同时,分析师Dominy表示,现在Oracle拉开3条战线,可能产生的结果之一就是IBM与SAP进行更密切的合作。IBM多年以来一直是Oracle除微软之外的一大竞争对手,IBM告诉第三方应用软件厂商说,它不会像甲骨文希望的那样与它们在应用软件领域进行竞争。

“今后只有像Oracle这样大而全的软件公司才有可能活得更好!”这样的话李翰璋和Tony Banham以及Mark Gibbs都向记者表述过,在Oracle看来,现在SAP也在“跟着Oracle学”,意图进入应用服务器领域,摆脱单一产品线可能遭遇的瓶颈。“但SAP的发展速度很难跟上Oracle。”—从收购PeopleSoft开始,Oracle就一直在以这样自励的语气鼓励自己。

而在中国市场上谁将领跑?在专注汽车领域的软件提供商QAD中国区总经理缪青看来,Oracle要想如愿以偿,关键在两个方面,“一是人员和组织架构的调整,这一系列调整需要基于全球战略和中国市场的结合;二是整合PeopleSoft和J.D.E的速度。”

对于Oracle中国区组织架构的调整,缪青认为,“更像是为了架构调整而调整”,缺乏有规律的变化节奏,这样的调整只能让自己的市场大伤元气,并给竞争对手创造虎口夺食的机会。

而关于对PeopleSoft和J.D.E的整合,Oracle经理告诉记者,“中国区这边现在进行得很顺利,不久两边就可以一起办公了。”对于双方产品方面的整合,Mark Gibbs介绍说,这已列入Oracle赶超SAP制定的4大战略之一,“我们将遵守承诺推进‘合成工程’。”其中合成工程是指Oracle下一代应用软件、集成和架构组成的解决方案,准备在2008年推出。“下一版本的Oracle电子商务套件、PeopleSoft Enterprise 9和J.D.Edward 8.12中将包括合成工程的许多模块。”

而在整合Peoplesoft之后,甲骨文大中华区企业应用软件总经理王春文告诉记者,Oracle正在展开一系列全球并购行动,目标集中在如同Retek(零售、分销ERP软件提供商)一样按行业区分的解决方案提供商,从而在3到5年的时间里,丰富甲骨文在应用套件方面的技术能力与客户群。

ORACLE问题 篇4

1 Oracle数据库的的特点

(1) 支持多用户、大事务量的事务处理:以Oracle公司公布的数据为例,Oracle8可以支持2万人的并发用户数,支持的数据量为512PB (1024×1024GB),并充分利用硬件设备、支持多用户并发操作、保证数据一致性。

(2) 数据安全性和完整性控制:Oracle通过权限控制用户对于数据库的存取、实施数据库审计、追踪,以监控数据库的使用状况。

(3) 提供对于数据库操作的接口:Oracle提供了应用程序、软件、高级语言、异种数据库等对数据库来进行存取。

(4) 支持分布式数据处理:从Oracle7开始,Oracle数据库就支持分布式数据处理。使用分布式计算环境,可以充分利用计算机网络系统,使不同地域的硬件、数据资源实现共享。

(5) 可移植性、可兼容性、可连接性:Oracle数据库可以在不同的操作系统上运行,当从一种操作系统移植到另外的操作系统时,只修改少量的代码,其代码的修改率仅为4%。

2 Oracle数据库存在的一些安全问题

2.1 数据库环境安全配置不合理

许多数据库人员在安装配置Oracle系统时没有十分重视,在配置过程中存在用户口令过于简单,DBA口令有多人知道,监听没有设置口令,存在安全问题的内置包没有撤销相应的权限,Oracle各类文件没有设置合理的安全许等问题。

2.2 不重视数据库安全规划与设计

由于许多Oracle管理员没有掌握较复杂的Oracle安全使用内容,因此在使用过程中赋予某些账户过高的权限,导致许多Oracle数据库在安全问题上存在潜在的漏洞,归纳主要有以下几个方面:没有根据用户的组织与用户情况进行严密的规划与设计;创建用户与对用户授权由DBA随意操作;对当前Oracle系统内各用户及其权限没有办法全面审核;为了开发方便,授予过高的Oracle系统权限等等。

2.3 不重视数据库的审计

审计是数据库提供的一种用于记录数据库活动的操作记录,它可以对出现问题后进行追踪和分析,但是很多管理员在数据库审计方面认为Oracle数据库已经很安全,不需要设置审计,其次就是即使启用了审计,也没有配备相关的审计人员;在还有就是审计一般只对普通用户进行,没有针对特权用户,审计产生的数据没有存储在安全的地方等等。

2.4 特权用户权限不受制止

虽然Oracle数据库提供相互制约的安全管理功能,但是很多用户并不关心这个,往往是采用默认权限的方式来管理自己的数据库,这就导致了Oracle系统DBA权限的用户过多,有的甚至没有对特权用户的权限进行限制;在还有就是高权限的用户甚至可修改审计数据,有的用户还有可能绕过应用程序获取对重要数据的直接访问等问题。

2.5 关键数据不加密问题

虽然Oracle数据库的许多版本都提供数据加密功能,但是很多使用者认为数据加密会影响性能,数据加密在访问时有点麻烦,数据加密处理要慢些,所以喜欢采用备份结果不采用加密,这就导致了许多重要数据都暴露在DBA眼下,当然,也可能暴露居心不良的人员眼下。

3 Oracle数据库安全问题的解决策略

3.1 用户及权限的管理策略

对于用户权限的管理我们可以建立不同的用户组和用户口令来进行验证,这样就可以有效地防止非法的Oracle用户进入数据库系统,对于用户管理,建议采取如下策略:

(1) 数据库的管理者是拥有特殊权利的用户,他可以对数据库中的数据进行create、alter或drop,在此进一步强调对SYS和SYSTEM两个特殊账户的保密管理。

(2) 对于一般用户权限,数据库管理员通常会为这些用户创建用户角色组,把所需的权限和应用程序角色分配给每一个用户。

(3) 对于数据库应用程序开发者来说,他们是一类需要特殊权限来完成自己工作的数据库用户(如创建table、tablespace、procedure等)。对他们的限制主要从开发者不与终端用户竞争数据库资源;开发者不能损害数据库其它应用产品这两个原则出发就可以了。

3.2 数据库的加密策略

在操作系统下Oracle数据库系统是以文件的形式来进行储存和管理的,如果数据库系统遭到黑客的入侵,那么入侵者就可直接窃取数据库里面的文件,并有可能非法伪造和篡改数据库中文件的内容。解决这一问题的有效方法就是对数据文件进行加密处理,即使数据不慎丢失或者被盗取,也难以被破译阅读和传播。通常主要是对操作系统(OS)层;数据库管理系统(DBMS)内核层;数据库管理系统(D B M S)外层这三个层来进行加密。

3.3 安全审计策略

Oracle数据库的审计机制是用来监视和记录用户对数据库的操作情况的,审计的数据一般都写入SYS.AUD$或操作系统的审计踪迹里。如果有些事情经常发生的话,通过调查可疑活动和监视和收集特定数据库活动的数据,便可追查到某些用户的活动,从而查到有问题的用户。同时为了提高审计效率,减少审计的劳动量,在开始审计之前,必须明确需要什么内容和审计的用户账号。一般情况下,系统的审计功能是关闭的,需要通过数据库管理员手动开启,目前Oracle数据库系统支持三种类型的审计:语句审计、权限审计和模式对象审计。

3.4 数据库的备份与存储策略

为了防止Oracle数据库遭到破坏而导致数据丢失, 数据库管理必须结合自身数据库的特点制定一个切实可行的备份策略。首先用于备份的磁盘一定要和数据库的数据、控制、联机日志文件所在磁盘相分离,这样做的目的在于当数据库文件所在的磁盘损坏时,我们可以有效的保证备份的数据文件和日志文件不受其影响。其次就是数据库备份模式的选择一定要是存档模式,只有在存档模式下日志文件才能进行完整的保存,如果数据库文件出现什么问题,我们就可以及时从备份数据中来进行还原。最后就是根据数据库变化的频率,有计划的进行数据备份,如果数据库经常进行改动,那么管理员就应当频繁地进行备份,反之则可降低备份频率。

4 结语

由于网络技术和计算机技术的不断发展,黑客的攻击技术和手段也在不断的变化,虽然本文对Oracle数据库存在的一些安全问题提出了相应的解决策略,但还是不能百分百的保证Oracle数据库的安全,这就需要广大的数据库管理者必须根据具体的网络环境和系统环境来加强数据库系统的管理, 根据不同情况制定出行之有效的数据库安全策略, 进行实时监控, 才能充分保护数据库的安全。

摘要:Oracle数据库是当前应用范围最广的数据库系统之一, 其系统安全性也倍受关注。本文将从Oracle数据库的特点出发来分析Oracle数据库存在的一些安全问题, 然后提出一些相应的解决策略。

关键词:Oracle,数据库安全,安全策略

参考文献

[1]张增军, 肖军模.一种数据库安全网关系统的研究与设计.计算机科学, 2004, 31 (10) :107—109.

[2]马耀华, 柏文阳, 徐沽磐.数据库网络访问接口安全ODBC的设计与实现.计算机工程, 2003, 29 (2) :171—173.

[3]张春, 刘峰, 王永亮.Oracle数据库安全增强系统的设计与实现.北京邮电大学学报, 2006, 29 (5) :84—87.

[4]宁洪等.数据库系统[M].北京:电子工业出版社, 2004.

ORACLE问题 篇5

对于一般中小型数据库来说, 全数据库的exp所产生的dmp文件可能小于2GB, 但对稍大型的数据库, exp产生的数据动辄数十至上百个GB. 而现时多数操作系统为32位, 其文件系统允许的最大文件为2GB. 这样显然不能由文件系统存放exp产生的数据。 这是问题之一。 另一个问题是随着数据库的不断增大, exp所需时间越来越长以致实际上很难实施。 本文针对以上两个问题讨论相应对策。

我们以UNIX为例首先看看如何超越2GB限制。 这需利用UNIX的通用技术, 如管道(named pipe), 数据拷贝工具dd以及数据压缩(compress)。 下面分别讨论这几种技术。

。管道 是一种伪文件。 它存在于内存中, 用于快速I/O操作。 管道的缓冲区采用先进先出机制, 即写管道进程写到缓冲区头部而读管道进程读取管道尾部。 建立管道的命令为“mknod filename p".

。dd 允许我们从一个设备拷贝数据到另一个设备。

。compress 为UNIX数据压缩工具。

实施exp之前, 我们可先检查所产生dmp文件的大小。 以下步骤既可实现,

1. 生成管道:

$ mknod /tmp/mypipe p

2. exp结果输出到该管道

$ exp file=/tmp/mypipe <……其它exp选项> &

3. 读取管道并把结果输出到管道, 只为查看数据量:

$ dd if=/tmp/mypipe f=/dev/null

结果返回exp (。dmp)文件大小, 单位为块(512 bytes)。

现在我们可以着手讨论具体方法,

1. 文件压缩

2. 直接exp到磁带

3. 综合方法

首先看文件压缩方法,

利用文件压缩我们可尽量避免dmp文件大小超过2GB限制。 我们利用UNIX的管道技术, 具体步骤如下,

1. 启动compress进程, 使之从管道读取数据并输出到磁盘文件。

$ mknod /tmp/exp_pipe p

$ compress < /tmp/exp_pipe > export.dmp.Z &

2. exp到管道。

$ exp file=/tmp/exp_pipe …… &

imp时情况类似。

再看看直接exp到磁带上的方法。

$ exp file=/dev/rmt/0m volsize=4G

$ imp file=/dev/rmt/0m volsize=4G

最后看看exp到裸设备上的方法,

$ exp file=/dev/rdsk/c0t3d0s0 volsize=4G

imp类似。以上方法都可使我们避免2GB限制。

下面讨论如何缩短exp索需时间的问题。 目前多数用户会采用exp到磁带的方法只因没有足够的剩余硬盘空间。 而整个exp过程所花时间的大部分都在写磁带上。 通过我们上面对UNIX工具的讨论, 我们可以做到先exp到管道, 再将管道数据压缩后输出到磁带上。 这样写磁带的数据量可大大减少, 从而在相当程度上缩短写磁带时间。 另外从Oracle内部角度讲, 从7.3版开始, Oracle允许用户做direct path export, 即跳过Oracle

$ make -f $ORACLE_HOME/rdbms/lib/oracle.mk expst

$ make -f $ORACLE_HOME/rdbms/lib/oracle.mk impst

ORACLE问题 篇6

近日,针对政府、教育、医疗机构,甲骨文推出了全面的解决方案,不仅提供了各个机构在信息化建设和转型中所需的所有关键组件——数据库、中间件和管理软件,并且它们全部基于开放标准; 更提供了全面集成的解决方案——从人力资源和财务管理到采购和公众关系管理; 并遵守了主要的行业标准。

甲骨文公司大中华区应用软件业务总经理卢汝文表示: “越来越多的政府、教育、医疗机构选择了Oracle行业解决方案。甲骨文公司将积极推进融合战略,为中国的政府、教育、医疗机构客户提供更符合他们需要的行业解决方案。”

针对政府部门未来的发展,甲骨文推出了Oracle iGovernment架构,提出了创新、集成和智能是政府及公共事业信息化建设目标的理念。Oracle iGovernment基于开放标准和服务导向架构,结合行业的需求,融合了甲骨文领先的数据库、中间件和应用产品,可帮助政府机关和公共行业的机构实现创新性、集成式和智能化的管理。

而PeopleSoft校园解决方案则支持数字化校园建设。这一方案可以帮助学校在一个安全稳定的环境中管理整个学生生命周期——从招生和入学到学生服务和校友关系。据介绍,PeopleSoft校园解决方案为学院和大学提供了它们所需的灵活性,能有效管理潜在学生和处于摇摆状态的学生。借助PeopleSoft校园解决方案,学校能够集中财务、学生和人力资源数据,从而提高管理效率和信息准确性。

Oracle医疗卫生信息管理资源平台是一个以开放标准和服务导向架构为基础开发的行业化综合管理信息平台,以单一信息架构实现强大的多层次服务能力,融合了从“信息获取、信息整合,到信息资源利用”的一揽子解决方案,适合面对分布式数据孤岛和应用烟囱环境下实现信息整合,支撑业务流程协同整合。

ORACLE问题 篇7

Oracle在数据库市场的领导地位毋庸置疑, 尤其是中小企业中得到广泛应用。而数据库的设计与管理是件十分繁杂的学问。对于中小企业而言, 并不具备专业的数据库设计人员, 数据库的设计、编程都一般都外包给软件公司进行, 但日常的运维从节约成本的角度考虑, 交与内部管理人员操作, 笔者仅就在实际工作中的经验, 谈谈中小企业在Oracle日常运维的一些要点 (环境为Oracle10gfor Linux) :

一、图形化桌面远程数据库管理

Oracle的实际生产环境中, 绝少将其安置于Window s下, 而大多安装在Linux系统下, 这样就衍生出两个问题:一是Oracle在Linux下如何安装的问题, 二是日常数据管理中如何采用图形化管理以求方便的问题。对于前者不在此赘述, 笔者重点谈谈后者, 一般我们都采用PL/Sql Developer这个第三方管理软件, 它能大大方便我们对远端Oracle数据库服务器的管理, 以下是安装要点说明:

1) 下载Oracle公司提供的二进制本地客户管理库-Oracle Client Package。登录Oracle官网下载一体包instantclient-basic-nt-11.2.0.3.0.zip。2) 本地保存Oracle Client Package。创建文件夹, 比如C:oracle_client, 将下载的文件加压缩到此目录:C:oracle_clientinstantclient_11_2。3) 在C:oracle_clientinstantclient_11_2目录下手动配置sqlnet.ora和tnsnames.ora。这两个文件可从Oracle服务器上参考取得, 在此不再列出。4) 配置Windows系统环境变量:变量名:TNS_ADMIN;变量值:C:oracle_clientinstantclient_11_2;变量名:NLS_LANG;变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK;以上应与ORACLE设置保持一致, 否则中文显示不正常。5) 安装pl/sql软件, 过程略。6) 启动pl/sql, 略过登录, 进入界面配置pl/sql的Oracle连接参数:选择pl/sql的工具/首选项 (tools/preference) 里的连接, 在右面设置Oracle主目录名 (即安装目录) 和OCI库:Oracle主目录名:C:oracle_clientinstantclient_11_2;CI库:C:oracle_clientinstantclient_11_2oci.dll。7) 登陆pl/sql测试成功。进入pl/sql界面后, 可以非常方便地对Oracle数据库进行维护, 尤其是其提供的sql命令执行窗口, 可以使我们象使用Oracle提供的原生sqlplus一样, 对数据库进行各种高级管理。

二、Oraclefor Linux自启动及自关闭问题

在大型企业中的Oracle运行环境下, 因其机房设施非常完善, 同时对数据库有极高可用性要求, 因此数据库一旦运行起来就长年不停。但中小企业条件较差, 不时要对Oracle Linux服务器进行重启, 而O-racle没有在Linux下的启动服务、关闭服务的命令, 我们可以根据Linux/etc/rc.d/init.d/下的服务脚本作为范本 (笔者所用Linux环境是Cent OS6.232位) , 来自行编写Oracle服务脚本, 方便工作:首先编写两个Oracle启动、关闭的脚本:启动脚本:vim/opt/dbstart.sh

加权限:chmoda+x/opt/dbstart.sh/opt/dbstop.sh因为Oracle设计的安全性考虑, 这两个脚本只能由Oracle用户执行, 而Linux服务脚本是服务器启动关闭时自动由root执行的, 因而设计如下服务脚本:

这段服务脚本有三个要注意的地方:一是#chkconfig…, #Default-Start…等行, 这是使用chkconfig oracle on将服务置于相关级别自启动的关键;二是suoracle–l-c…命令行, 这是因为必须以Oracle用户身份启动关闭数据库;三是lockfile的使用, 巧妙地使用Linux系统设置来达到关机时自动关闭Oracle数据库的目的。

Oracle的运维是十分复杂的, 但就中小企业而言, 满足一般的日常管理维护是当务之急, 笔者选择了两个日常维护中极常见的问题对Oracle运维给出解决方案, 希望能给相关数据库管理人员提供参考, 同时也希望抛砖引玉, 希望各位同行有更好的经验来予以指正。

摘要:中小企业的数据库运行环境有其特殊性, 本文围绕Oracle在中小企业中运维的常见问题进行了一点摸索, 特别是对图形化桌面远程数据库管理、Linux环境下自启动、自关闭数据库的技术作了详尽探讨, 具备很强的实用性、技术性。

ORACLE问题 篇8

1 数据库锁机制以及锁的各种类型

1.1 数据库锁机制

Oracle数据库可以实现多个用户同时操作, 当多用个用户共同存取数据时, 就会发生多个用户操作同一个数据的现象, 我们可以称做为并发操作, 对于这种现象的出现应加以控制, 否则会影响用户存储和读取数据, 从而造成对数据库的一致性破坏, 因此为了避免这种情况的发生, 我们可以采用加锁机制, 保证每个用户对Oracle数据库的操作是独立的。另外, 为了保证了数据的一致性, 加锁机制在操作Oracle数据库之前应向系统发送请求, 并将相应的事务进行加锁, 其他事务想要对其进行处理就一定要进行解锁操作。

1.2 锁的类型

Oracle数据库锁根据保护对象的不同可以分为两种类型, 一类为DML锁, 也可以称为数据锁, 此类锁在Oracle数据库中主要作用是保护数据的完整性, 另外DML锁还可以分为TM (表级锁) 和TX锁 (事务锁或行级锁) , 当执行DML语句时, 系统会自动申请TM锁, TM锁申请完成之后, 系统会自动申请TX锁, 同时会对锁定数据的位置进行标识, 因此在事务加锁之前只需对TM锁模式的相容性进行检查就可以了, 这样能够提高系统的效率, 另一类为DDL锁, 这类锁在Oracle数据库中主要是保护数据库对象的结构, 例如数据库的内部结构、内部锁以及表、索引等结构定义。

2 Oracle数据库死锁问题出现的原因

简单来说, 死锁现象就是指当多个用户已经分别锁定了某资源, 但是还希望能够持有对方的资源, 这样就会产生死锁现象, 这也是Oracle数据产生死锁现象的根本原因, 具体表现在以下几个方面:

2.1 在Oracle数据库中, 用户1访问表1时并对表1进行加锁, 之后对表2进行访问, 用户2访问表2时对表2进行加锁, 接着对表1进行访问, 但是由于用户2对表2进行了加锁, 因此用户1必须等到表2释放后才能对表2进行访问, 而用户1对表1进行了加锁, 因此用户2一定要等到表1释放后才能对表1进行访问, 因此就产生了死锁现象。

2.2 用户1对某表中的记录进行查询, 并对这条记录做出修改, 同时用户2也对这条记录进行修改, 由于用户1想将共享锁升为独占锁, 但是由于用户2的独占锁的存在导致用户1不能上升为独占锁, 同时也不能将共享锁释放, 而用户2必须要等到用户1共享锁释放才可以进行, 因此产生了死锁现象。

2.3 当多个update语句不满足条件时, 通过对全表的扫描将行级锁升级为表级锁, 这样很可能造成死锁现象。

2.4 当Oracle数据库中的数据量非常大时, 同时建立的数据库引擎过少, 这时如果对全表经常进行扫描, 就会造成死锁现象的发生。

3 Oracle数据库死锁问题的解决办法

3.1 Oracle数据库死锁检测方法

3.1.1 Oracle自动死锁检测

Oracle数据库死锁检测应执行语句, 并将语句中的数据进行释放, 之后遇到错误代码以及等待资源时检测到死锁的字样, Oracle数据库在检测到死锁之后会出现相应的信息, 这时相关的工作人员应把消息录入警告日志文件中, 并在相应的目录下创建跟踪文件, 文件内容主要是死锁的相关信息。工作人员在定位Oracle数据库死锁问题时, 要经常查看警告日志文件, 如果找出“0RA-00060”相关信息, 就说明有死锁现象产生, 但是还需要工作人员与跟踪文件进行对应, 程序比较繁琐, 因此我们应采用SQL语句检测死锁。

3.1.2 SQL语句检测死锁

SQL语句检测死锁需要五个视图, 即V$SESSION视图、V$LOCKED_OBJECT视图、V$PROCESS视图、DBA_OBJECTS视图以及V$LOCK视图, 这些视图可以检测Oracle数据库死锁, 另外还可以通过语句来检测Oracle数据库死锁。

3.2 解决Oracle数据库死锁问题的主要办法

3.2.1 调整程序设计, 程序设计的不准确是导致死锁现象出现的常见原因, 因此当确定Oracle数据库死锁现象出现的原因是程序设计不稳定导致的, 这时我们只需要对程序设计重新进行调整, 就可以有效解决死锁问题, 除此之外, 检测到死锁问题时, 首先应确定Oracle数据库死锁现象出现的原因, 其次应将死锁定位在程序中位置, 最后将程序进行关闭, 并对程序进行相应的修改, 这是解决Oracle数据库死锁现象的长远方法。

3.2.2 解除死锁可以采取以下方法:回滚某个事务、利用DBA对事务进行撤销来完成解锁、利用DBA进行加锁或者解锁事务、系统管理人员通过KILL一9 PROCESS关闭死锁进程。虽然这些方法可以解除死锁, 但是会为大型应用系统带来一定的风险, 因此对于Oracle数据库死锁问题应尽量选择从程序设计方面来解决, 尽量减少死锁现象的出现。

4 结论

Oracle数据库在使用过程中经常出现死锁现象, 对系统造成很多不良的影响, 因此关于Oracle数据库死锁问题的研究和讨论是必要的, 本文主要从数据锁的机制以及锁的类型、Oracle数据库死锁问题出现的原因以及数据Oracle数据库死锁问题解决办法三方面入手, 对Oracle数据库死锁问题进行详细的分析, 通过分析我们可以看出想要有效的解决死锁现象, 最好从程序设计方面入手, 而且这种方法简单可靠。

参考文献

[1]姜文, 刘立康.Oracle数据库死锁问题研究[J].计算机技术与发展, 2014, 03:97-101.

[2]周亚平.Oracle数据库死锁问题研究[J].计算机光盘软件与应用, 2014, 16:310+312.

[3]康陆.关于Oracle数据库动态SQL数据获取应用方法的研究与实践[J].电脑知识与技术, 2010, 22:6137-6139.

[4]张咏梅.基于Oracle数据库安全问题的研究[J].数字技术与应用, 2013, 01:173, 175.

ORACLE问题 篇9

关键词:Oracle数据库,课程体系,常见问题,优化

针对Oracle数据库技术在各行业的大量应用, 结合甘肃建筑职业技术学院高职教学特点和工程应用型人才培养的要求, 学校开设了针对性较强的《Oracle数据库开发实用教程》的课程。传统的课程教学过程中强调理论知识的完备性, 缺乏学习的应用性和针对性, 理论性强、概念抽象, 理论和实践教学存在不同程度的脱节。笔者通过不断的教学改革、教学探讨和实践积累, 使课程更具竞争力, 对学生能力培养更有效, 课程教学质量也得到了很大提高。结合自己的教学体会, 分析了Oracle课程的教学现状, 以及在教学过程中出现的常见问题, 并提出了相应的解决方案。

1 整合课程体系, 完善课程知识点

坚持本课程中原理部分内容为理论核心, 重点进行实用性操作的实训原则, 培养应用型人才为目的。本课程着重讲述Oracle数据库应用方面的内容, 主要包括Oracle数据库实用工具, SQL语言与查询, 数据的定义、操纵与控制, PL/SQL程序块, 存储过程与函数及触发器, 权限、角色与用户和数据库设计等内容;学习目的是培养学生如何做好一个优秀的数据库管理员, 以及培养学生如何编写程序完成要求的项目及实训案例。

坚持教学改革, 其宗旨在于在传统单一传授专业知识的基础上, 注重培养学生正确的学习方法和较强的动手能力, 使学生具备适应快速高效的工作环境的综合素质和能力。考虑工程应用型人才的培养模式, 引入了大量丰富的学习案例, 让学生理解系统的原理。重点研究了课程实践教学环节, 形成了教材实验、应用实验和综合实验3个层次。以往的教学方式是学生先在多媒体教室听课, 再到实验室上机训练。而随着该院教学改革的深化和课程更新, 一种先听后练的教学方式已经不能完全适应要求, 利用实验室进行多媒体授课, 能够边听边练, 满足学生能够一人一机同步训练。实验室开放在操作上, 也可以采用以学生为主体、教师加以启发指导的实验教学模式。在实施过程中, 充分发挥师生互动的作用, 充分利用“实验室课堂”, 完成相应实践过程, 达到能力训练和启发创新的目的。

2 课程教学过程中, 学习Oracle数据库常见问题及解决方案

透过实验指导书, 看学生实践操作, 发现学生对Oracle数据库课程从软件安装、权限、建库、执行sqlplus等一些基本操作, 经常遇到困难, 现提出部分常见问题与解决方案:

1) 安装Oracle注意事项:安装目录不能是中文目录, 不能含有空格, 登录用户不能是中文, 机器名称也不能是中文, 否则监听器无法启动, 解压目录到d:Oracleinstallsetup.exe。如果安装不成功, 需先停止服务, 再进行Oracle卸载Universal Installer, 最后, 要删除注册表中所有与Oracle有关的内容regedit, 重启删除Oracle安装目录, 重新安装 (通常安装不成功, 要重装系统以后才行) 。安装到什么目录 (主目录位置) , 建立在根目录Oracle否则可能因为目录太深, 安装不成功。

2) 在Oracle权限登录注意事项:如果在dos环境登录, 使用命令sqlplus /nolog或者sqlplus system/manager。如果出现Oracle默认scott用户登陆不上去怎么办? (在安装过程中, 会提示是否给scott用户解锁) 默认的scott用户是被锁定的, 必须先解锁才能登陆。可以使用下面的语句解锁scott:alter user scott account unlock;解锁之后可以使用语句为用户更改密码, 使用命令alter user scott identified by tiger;后再登陆, 用命令sqlplus scott/tiger, 能成功登陆了。

3) 查询每个用户的权限语句:select * from dba_sys_privs。

4) 经常遇到ORA-00988 missing or invalid password (口令缺失或无效) 错误, 怎么办?在设置数据库实例的密码时, 注意不要以数字开头, 否则将会遇到 ORA-00988 missing or invalid password (口令缺失或无效) 错误。Oracle 10g安装完成后, 您可使用dbca 命令创建新的数据库实例, 或维护已有的数据库实例。如果安装的是 Oracle XE 数据库, 则必须反安装Oracle XE 后重新安装 Oracle XE, 并在安装过程中指定非数字开头的密码 (例如password或sw123) 。

3 搭建课堂互动教学平台, 培养小组合作精神

在教学过程中, 对学生进行合理分组, 使之相互合作和激励, 主动积极地参与学习, 培养学生探索创新能力和团结协作的精神。针对教学内容的要求, 设计实验题目, 实验目的与要求, 强调注意事项等内容。该方法主要用在实验教学当中。实践教学是Oracle数据库教学的一个重要环节, 课程中的上机实验、数据库课程设计安排要合理。学生上机实验时应对学生进行现场实时指导, 并对上机过程中普遍存在的问题进行统一讲解。上机实验针对的往往是一定范围的知识点, 各个知识点相互联系不够紧密, 具有一定的局限性, 因此在课程的后期需要安排两周的课程设计, 所选题目应具有一定的应用背景, 让学生能够对学知识融会贯通。为了实现预期的教学目标, 为学生营造宽松愉快的学习环境, 将理论教学与实践教学紧密融合, 鼓励引导学生将理论知识灵活掌握, 并具体应用到实际工程中。

参考文献

[1]刘竹林.Oracle数据库开发实用教程[M].北京:中国水利水电出版社, 2006.

[2]葛瀛龙, 龚晓君, 涂利明, 等.场景式案例教学在Ora-cle数据库教学中的实施[J].中国教育信息化, 2010 (2) .

ORACLE问题 篇10

《国家中长期教育改革和发展规划纲要》指出, 要加快解决经济社会发展对高质量多样化人才需要与教育培养能力不足的矛盾。当前我国, 除少部分研究型大学 (如“985”大学) 主要定位于学术型人才 (其中仍然有应用型人才) 培养之外, 绝大多数高等院校一直以来都在强调培养理论与实践相结合的应用型人才。目前, 针对北京大学的教育改革, 也强调了部分专业理论与实践结合的人才培养方案。在计算机科学的培养方案中开设的关于数据库类的课程包括《数据库原理》、《数据库应用技术》、《web编程技术》等。目前常用的DBMS有:SQL SERVER、ORACLE、MY SQL等。实际应用中, 以Oracle所占的市场份额比重最高。

Oracle具有以下特点: (1) Oracle支持大型关系数据库;支持多种操作系统, 具有良好的跨平台性。 (2) 支持分布式数据库和分布处理, 将存放在多台计算机上的数据组合成一个逻辑数据库, 分布式系统的物理分布、逻辑整体、站点自治能力、透明性。 (3) 遵守数据存取语言、操作系统、用户接口和网络通信协议的工业标准。 (4) 完善的安全性控制和完整性控制, 具有可移植性、可兼容性和可连接性。

具体的实施过程, 需注意课程间接口, 如数据库原理SQL在Oracle中的实现, JDBC与后台数据库连接问题, 本文主要探讨java连接Oracle后台数据库的几个关键技术。

二、Java连接大型数据库Oracle的几个关键技术

Java数据库连接 (JDBC) API是一个能够让Java编程人员访问数据库的接口。教学中常用到oracle 10g及以上版本, 对于Oracle 10g, 要加载的驱动程序为classes12.jar (在Oracle安装目录中) , 该文件在Oracle目录中搜索即可得到。

(一) 后台数据库oracle监听的配置

java连接Oracle后台数据库, 需要关注两个配置文件 (linstener.ora和tnsnames.ora) 。监听器 (LISTENER) :主要用于监听客户端向数据库服务器端提出的连接请求, 其设置在服务器端完成。本地服务名 (Tnsname) :客户端与服务器端的连接是通过客户端发出连接请求, 由服务器端监听器进行检查, 如果连接请求有效, 则进行连接, 否则拒绝该连接。

本文中介绍的也是基于本地服务名的配置。检查监听文件linstener.ora和tnsnames.ora中的host的值是否为Oracle服务器所在计算机的名字, 如用的是本机, 则为当前计算机名称, 否则是服务器的IP地址, 另外注意监听器的端口port的值, 本例为1521。

(二) 后台监听服务的检查

除此之外, 需要查看后台的监听服务是否启动, 如果没有启动, 则通过控制面板—管理工具—服务, 查看监听是否启动, 或者通过net start命令启动, 如图1所示。

(三) 通过PL/SQL developer工具进入oracle的会话

实际上, 学生在实验中常常用到Oracle scott用户下的雇员表 (emp) 和部门表 (dept) , 默认情况下需登陆system用户给scott用户解锁, 如图2所示。解锁后, 当前会话是system, 需通过PL/SQL developer检验scott用户是否可用, 登陆时选择数据库名, 本文为ORCL1, 登陆后标题栏显示scott@orcl1, 而非scott, 至此后台数据库调通。

(四) java连接后台数据库oracle步骤

JDBC访问数据库, 需要加载数据库的驱动程序, 然后利用连接符号串实现连接, 创建连接对象, 再创建执行SQL的执行语句, 并实现数据库操作。其访问数据库的流程如下:

●注册驱动class.for Name ("Oracle.jdbc.driver.Oracle Driver") ;

●建立连接 (Connection) :Driver Manager.getConnection ("jdbc:oracle:thin:

●@192.168.8.1:1521:数据库名", "scott", "test") ;

●创建数据库操作对象用于执行SQL语句:Statement stm=conn.Creat Statement () ;

●执行语句:Result Setrs=stm.execute Query (select*from dept) ;

●处理执行结果 (Result Set) 后释放资源。

(五) 具体操作如下

1.先启动桌面上的tomcat工具 (myeclipse工具栏启动) 。

2.修改listener.ora和tnsnames.ora。

3.导入驱动程序文件classes12.jar (该文件在oracle目录下) , 请复制到c:下, 供导入时使用。Build path中选择Configure-Build-path。

4.选择add External Jars选项卡中的add external Jars———class12.jar即可 (从oracle目录中找) 。

5.整体程序和程序执行结果如图3所示, 该例为经scott/test连接Oracle后台数据库, 并取出该用户下部门表 (dept) 的部分数据 (部门号和部门地址) , 其执行结果如图3所示。

三、结语

计算机、网络、物联网等专业开设了《数据库原理》、《数据库应用技术 (Oralce版) 》、《web编程技术》等课程, 在具体的实施过程中, 要特别关注课程间的接口, 如JDBC连接后台Oracle。实践中, 大部分学生的问题出在对Oracle的掌控上, 本着各回各家的原则, 用到的对象属于哪个用户就连接那个用户。监听文件测试通, 前台代码主要关注class.forname和get connection, 另外, 本部分内容事件性比较强, 用到的学科比较多, 需要学生融会贯通才能达到学以致用的效果。

参考文献

[1]国家中长期教育改革和发展规划纲要 (2010-2020) http://www.china.com.cn/policy/txt/2010-07/30/content_20605477.htm

[2]干洪, 徐达奇.高素质工程应用型人才培养途径研究[J].高等工程教育研究, 2010, (11) :44-47.

[3]徐洪丽, 葛平俱.大学教育——博学与精深平衡之道[J].大学教育, 2013:45-46.

[4]王明芳.基于元认知策略的《Java程序设计》课堂教学研究[J].教育理论与实践, 2015, 35 (6) :52-53.

ORACLE问题 篇11

关键词:Oracle;数据库;性能优化

中图分类号:TP311.138 文献标识码:A 文章编号:1006-8937(2015)15-0073-02

Oracle是一种大型的关系数据库,在多个行业中都得到较好的应用,并是一个重要的数据库平台。随着Oracle的不断应用,其规模也有所扩大,使用的人数不断增加,在这个过程中,Oracle数据库存在的问题也越来越明显。工作人员对这种数据库进行优化,让其能够在合理的条件下,更好的发挥作用,优化系统的使用性能,降低系统的支出,为数据库的推广奠定了良好的基础。

1 性能优化目标

1.1 缩短系统响应时间

该数据库的系统响应时间是指在SQL语句到数据库结果集时所用的时间。相关人员可以适当缩短这个时间,从而降低系统的服务时间,让人们的等待时间减短。该时间单位一般用ms表示,这种做法能够减小处理用户请求的时间,由此提高系统的利用效率。

1.2 提升吞吐量

数据库的吞吐量会受到SQL语句的影响,数据库能够完成的SQL语句数量越多,那么在单位时间内,该吞吐量越大。吞吐量=SQL语句数量/时间,其单位用TPS表示。相关人员要想提高数据库的吞吐量,可以增加单位时间处理SQL语句的数量。

1.3 提升数据库指标命中率

相关人员要制定数据库指标,例如缓冲区的命中率、软解析率等。在数据库工作中,最常用的指标是高速缓冲区命中率,这种指标主要是衡量Oracle数据库的性能,相关人员结合这种情况进行分析。

1.4 优化磁盘

Oracle数据库将数据存储在磁盘和内存中,这种过程与I/O操作有关,所以要合理规划磁盘,通过高速缓存技术,增加系统的吞吐量,从而在一定程度上缩短用户的响应时间,多使用系统内存,避免使用磁盘I/O进行操作。

1.5 合理的应用内存

在大量并发用户的影响下,如果Oracle数据库的存储量不够,会影响程序的处理效率。相关人员要尽量缩短数据库的响应时间,然后确保内存得到合理应用,判断最大回报和最小损失的标准,通过内存的有效使用,提高系统的性能。

1.6 减少磁盘的排序

如果用户提交的SQL语句中有排序或聚合函数,那么要保证这些排序可以在内存上进行,也可以在物理磁盘上。系统的物理磁盘有独特的结构,所以其读写速度比内存读写速度慢,所以相关人员要尽量减小物理操作。

2 影响因素分析

很多因素都会影响Oracle的性能,例如操作系统或CPU性能等,所以相关人员合理设置这些具体方面,降低其对数据库性能的影响。

①在操作系统上,Oracle数据库与系统的服务器运行有非常密切的联系,如果操作系统没有合理设置就会导致Oracle性能的降低。

②CPU占用过高:在系统运行中,CPU是非常关键的资源。如果该资源被占用,那么很可能导致整体数据库的停止运行。

③内存没有合理分配:Oracle性能会受到内存配置的影响,内存分配不合理会导致计算机减少系统的缓冲控制,操作系统频繁转换。

④I/O冲突:因为在系统运行中,磁盘在同一时间段只能满足一个进程的需求,所以当拥有多个进程,就会造成读写冲突,从而降低整个系统的运行速度。

⑤SQL常见错误:应用Oracle数据库,有大量的SQL语句,相关人员容易出现配置和数据迁移的错误。经过长时间的全表扫描,数据库没有得到合理的设置,I/O没有合理规划,SQL语句执行效率较差。

3 优化技术

3.1 数据库优化

应用Oracle数据库中,增加索引是最常见的调优方法,数据库对象是索引。相关人员应充分利用索引对系统中的扫描情况进行描述,通过查询索引能够节省大面积描述。在设置索引内容时,要重视SQL语句的使用,具体情况要结合查询条件。相关人员要比对直接全表的检索情况,然后通过相关数据对I/O进行分析。

工作人员可以完善数据库的数据,掌握这个逻辑关系,能够在数据库使用时,让代码和其他信息分离,这种做法能够有效降低网络的传输量,并提高数据情况的执行能力。相关人员在进行数据存储的过程中,用户可以发出执行命令,并提交SQL语句,从而节省对该语句的分析,充分使用SQL共享池的优势。

3.2 内存优化

Oracle数据库的信息主要存储在内存和磁盘上,从实际应用来看,内存的访问量比较大,明显高于磁盘的访问量。但是这种情况会降低数据库的响应时间,减慢其运行速度,所以相关人员要设置合适的内存尺寸,确保数据库性能得到更好的提升。

例如,相关人员要优化数据缓冲区的高速缓存性能,从而降低系统磁盘中的I/O数据,通过适当对缓冲区尺寸进行调整,能够让缓冲区找到需要的数据,从而对数据库的性能进行优化,减小用户的等待时间和缓冲时间。相关单位可以通过减小全表扫描的方式,得到优化数据库性能的目的。相关人员可以用索引的方式,降低全表扫描的次数,应用全表扫描的次数越少,系统的缓冲命中率越高。

提高共享池性能,能够较快的提高数据库性能。共享池是存放近期使用SQL语句的地方,共享池内的数据字典数据比缓冲区的内存停留时间更长,拥有更好的命中率。所以可以优先度缓冲区进行调整,相关人员可以根据实际情况对每个节点的共享池大小进行记录和分析,从而有利于下一步调整。利用代码重新书写能够快速提高共享池的命中率。针对比较大的对象,例如自定义的程度等,相关人员需要应用共享池,进行有效的解析。相关人员要将重要的对象保存在内存中,这样就能够提高共享池的性能。

3.3 磁盘优化

应用Oracle数据库使用对象产生I/O的机会较多,所以相关人员要将访问量较大的数据文件放置在磁盘中,不同的对象要尽量分开放置,从而为索引创造有利条件。相关人员要注意内存中修改过的数据并不是写入到数据文件中,所以要优先将其写入到日志文件中,并保持其容量。在这个过程中,相关人员应减少对不同对象对磁盘的竞争,合理将日志文件进行分组,一组写满后再换到下一组,这个过程要循环进行。在数据库中,要创建回滚段和其专用的表空间,其中从系统操作失败后得到的恢复数据是回滚段,所以应尽量减小I/O进程之间的竞争,并确保空间竞争能够有效完成。

3.4 SQL优化

SQL语句的执行效率会影响Oracle数据库的性能,所以优化SQL语句能够直接提高Oracle系统执行效率。执行SQL会消耗数据库系统70%-85%的资源,所以合理设计SQL语句非常重要,从而提高系统的利用效率,优秀的SQL语句,能够加快执行的速率,降低网络传输的频率,从而充分发挥数据库的性能。

4 结 语

通过上文对Oracle数据库性能优化研究,可以得出,Oracle数据库规模的增大和用户的增加,该数据库中隐藏的问题会逐渐暴露出来,所以相关人员要对数据库的性能进行优化,并不断调整数据库的各个方面。在这个过程中,要充分掌握数据库系统的性能影响因素,然后针对这些因素,进行合理优化,采用先进的技术调试数据库,从而使系统性能更加优化,为用户提供更多便利。

参考文献:

[1] 郭霞.基于Oracle数据库性能优化技术研究[J].电脑知识与技术,2011,(24).

[2] 魏亚楠,宋义秋.oracle数据库应用系统的性能优化[J].制造业自动化,2010,(8).

[3] 戴伟敏.Oracle数据库系统性能优化与调整[J].赤峰学院学报(自然科学版),2010,(12).

ORACLE问题 篇12

A1.问题的提出

实际操作Oracle数据库的过程中, 想要显示的汉字有时会莫明其妙地变为英文问号或者一些英文乱码。其实, 这是因为客户端Oracle字符集“NLS_LANG”设置不同于服务器数据库字符集“CHARACTER_SET”, 造成中文字符显示错误。因此, 解决汉字显示的问题, 最简单的方法就是将数据库的客户端字符集与数据库字符集设置一致。然而, 如果存储的汉字出现乱码, 问题就非常复杂。本文试从此方面进行Oracle汉字存储的微观分析。首先, 简介一下计算机存储字符的基础知识。

(1) 英文ASCII编码

ASCII是英文American Standard Code for Information Inter-change的缩写。它是计算机编码方案的基础, 是最通用的单字节编码系统。计算机只能以二进制“0”和“1”代码存储数据, 所以ASCII码将每个字符对应一个数值, 比如字母A的ASCII码是65, 数值0的ASCII码是48。但是, ASCII码比较原始, 使用一个7位二进制存储, 最多只能代表128个字符。其中, 第0—32号和第127号是通信和控制字符, 比如“回车”、“NULL”、“退出”等;第33—126号是94个字符, 包括:第48—57号是0—9十个数字, 第65—90号是26个大写英文字母, 第97—122号为26个小写英文字母, 其余32个字符是一些标点和运算符号。

(2) 简体中文GB2312-1980编码

GB2312是中国国家标准的简体中文字符集, 基本满足了汉字的计算机处理需要。GB2312收录简化汉字及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母, 共7445个图形字符。其中包括6763个汉字, 其中一级汉字3755个, 二级汉字3008个。GB2312用“分区”存储字符, 每区有94个汉字或符号, 称作区位码。01—09区为特殊符号;16—55区为一级汉字, 以拼音排序;56—87区为二级汉字, 以部首/笔画排序;10—15区和88—94区为空。所以, 汉字的总码位共72×94=6768个, 其中第5590 (D7FAH) —5594 (D7FEH) 位是5个空值。汉字使用两个8位二进制存储, 占用两个字节, “高位字节”存储区号, “低位字节”存储位号。“区字节”的存储范围是A1H—F7H, 即01—87区的区号加上A0H;“位字节”的存储范围是A1H—FEH, 即01—94位的位号加上A0H, 一个汉字的区号和位号都加上160, 就得到了机内码。GB2312字符集的第一个汉字是“啊”, 区位码是1601:区号=16、位号=01, 高低字节都加上A0H得到汉字处理编码B0A1H。

2.数据库数据的存储和显示

如果只存储英文, 最好采用us7ascii单字节的字符集, 高效且节省空间。

如果存储汉字, 最好选择zhs16gbk字符集, 在中文处理和统计方面比较方便。

但是, 由于诸多历史原因, 企事业单位的很多应用系统都使用基于us7ascii字符集的数据库。近年来, 由于引进了基于zhs16gbk字符集数据库的应用程序, 造成数据库客户端字符集的设置不同, 使得汉字显示和存储遇到了上述一开始提到的问题。以下通过实例分析数据库客户端字符集和数据库字符集不同时的汉字存储和显示。

(1) 同一客户端需要连接两个字符集的数据库

Oracle官方不赞同使用字符集转换功能, 虽然us7ascii是zhs16gbk的子集, 也不十分建议子集到超集的升级。所以启动不同的应用程序之前, 要按所连数据库的字符集修改本地客户端的字符集设置。有两个方法:

1) 修改应用程序的初始化设置, 程序连接数据库前, 自动执行Oracle客户端字符集设置“set nls_lang=AMERI-CAN_AMERICA.US7ASCII”或者“set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK”。

2) 编写.reg注册表文件, 程序启动前手动修改客户端字符集, 如图1所示。

不过, 也可尝试升级数据库的字符集, 从根本上避免连接两个字符集的数据库。可用“ALTER DATABASE...”语句修改数据库, 但必须是子集到超集的升级。此项操作存在风险, 慎重执行。如下步骤:

(2) 数据库客户端的字符集不同于数据库的字符集, 如何解决存储汉字的错误。

测试环境:客户端操作系统是WindowsXP简体中文版sp2, 服务器是Windows2003 Server简体中文版, 数据库及其客户端都是Oracle9.2.0.1。

1) 数据库的客户端字符集是数据库字符集的子集。

(1) 字符集:数据库客户端字符集是us7ascii, 数据库字符集是zhs16gbk。

(2) 测试结果:从客户端保存的汉字出现乱码。

(3) 微观分析:Oracle客户端将汉字传送给服务器前会自动转换编码, 将汉字编码变为ASCII码。由于标准ASCII码不能表示汉字, 所以一个汉字被替换为两个ASCII字符。

(4) 例如:汉字“中”的机内码是D6D0H, 由于ASCII码利用一个7位二进制存储, 所以转换时造成汉字高低位两个字节的首位缺失。即:高位字节和低位字节同时减去80H, 得到了它的国标码:5650H。56H和50H两个字节就是英文V和P的机内码。英文字符集客户端传送给中文字符集数据库的一个汉字就变成了两个单字节字符。汉字GB2312-80字符集的区位码范围是1601D—8794D, 区码和位码同时加上20H是汉字的国标码, 范围是1001H+2020H—575EH+2020H, 即:3021H—777EH, 对应的ASCII字符就是“0!”—“w~”。因此, 掌握了汉字区位码、国标码和机内码的含义和换算, 就有了处理错误编码的技巧和方法。万一客户端录入存储汉字出现如上错误, 可以科学计算还原汉字。如图2所示:

(5) 图例解释:

a) Oracle的convert函数将数据存储从一种编码转换为另一种编码。语法:convert (‘字符’, ‘目标字符集’, ‘源字符集’) 。

b) Oracle的dump函数返回参数的存储值。语法:dump (‘参数’, 1016) , 返回参数类型、占用字节数、数据库字符集设置、存储值的十六进制表示。1010是十进制值表示。

c) 还原乱码为汉字。汉字ASCII值=汉字编码高位字节×256+低位字节。通过逆运算, 将两个乱码字符的ASCII值加上128, 即:两个8位二进制字节置回丢失的首位1。chr (前字符十进制复原值×256+后字符十进制复原值) 得到相应的汉字。

d) 转换错误的乱码。取得汉字机内码的十进制值, 将每个字节的值减去128, 即:首位1变0。chr (单字节值-128) 得到相应的字符乱码。

e) WTZH是zhs16gbk字符集数据库的连接串。

(6) 结论:如果发生存储错误, 必须全是中文字符, 包括:汉字、中文标点、运算符等, 才能利用以上算法还原每个双字节为正确汉字。万一含有英文及其标点符号等单字节编码的字符, 就需要复杂的字符串分析, 甚至需要汉字库的乱码对照表, 通过单、双字节依次比对来筛选乱码, 还原汉字。

2) 数据库的客户端字符集是数据库字符集的超集。

(1) 字符集:数据库客户端字符集是zhs16gbk, 数据库字符集是us7ascii。

(2) 测试结果:从客户端保存的汉字全变成英文问号。

(3) 微观分析:客户端的字符集包括数据库字符集, Oracle客户端将汉字传送给服务器时找不到相应的对照关系, 就会用英文问号代替每一个字符, 所以汉字全变成“?”。

(4) 例如:存储“中华人民共和国”, 因为英文ASCII码表找不到对应值, 所以保存的全是?号。当然, dump函数传递的汉字参数同样变为?号, 如图3所示:

(5) 图例解释:

a) Oracle的userenv (‘lang’) 取得数据库客户端的字符集:zhs16gbk。

b) Oracle的userenv (‘language’) 取得数据库的字符集:us7ascii。

c) 字符集前的语言和地域设置不影响数据的存储和显示。Language代表服务器消息的语言, territory为服务器的日期和数字格式。

d) WTUS是us7ascii字符集数据库的连接串。

(6) 结论:存储英文等单字节字符没有问题。但是, 存储中文字符的错误无法挽回。

(3) 数据库客户端的字符集和数据库的字符集相同, O-ralce不进行编码转换, 存储汉字正确, 如图4所示。

(4) 数据库客户端的字符集不同于数据库的字符集, 显示汉字的错误同理于存储汉字, 如图5所示。

1) 图例解释:

(1) 数据库客户端字符集是zhs16gbk, 数据库字符集是us7ascii, 将汉字显示为错误的ASCII字符。

(2) 数据库客户端字符集是us7ascii, 数据库字符集是zhs16gbk, 将汉字显示为?号。

(3) Oralce的dump () 函数得到cnchar字段的机内码一致, 两个数据库内存储的汉字正确。

2) 结论:仅显示错误没有问题, 按开篇提出的设置客户端字符集和数据库一样就能正确显示汉字。

3.数据库数据的导出和导入

利用Exp/Imp导出和导入数据是最安全的备份和恢复数据库的方法简便、高效。但是, 假如数据库的客户端和数据库字符集不一致, 就会发生备份和恢复错误。为此, 编制程序生成并存储GB2310—80的全部6763个汉字, 分析数据库中文数据的备份和恢复。

(1) 通过C#2005生成区位码范围1601D—8794D的简体汉字, 如图6所示。

核心语句解释:

1) 设置C#语言集:Encoding GB=system.Text.Encoding.GetEncoding ("GB2312") ;

2) 取得区码后, 加上A0H变为机内码:chrBt[0]= (byte) (i/100+160) ;

3) 取得位码后, 加上A0H变为机内码:chrBt[1]= (byte) (i%100+160) ;

4) 取得简体汉字:chrCn=GB.GetString (chrBt) ;

5) 如果位码超过94, 跳到下区从01开始:if (i.ToString () .EndsWith ("94") ) {i=i+6;}。计算机的基本存储单位是一个8位二进制, 数值94十六进制为5EH, 加上A0H变为机内码是FEH。那95的变形码就是FFH, 全1不存储数据。96—99的变形码是100H—103H, 超出一个字节。所以, 位码94之后不能存储汉字编码。

(2) 数据库客户端的字符集不论与数据库的字符集是否相同, 导出DMP文件的表数据都正确, 如图7所示。

1) 图例解释:图中文件名命名规则:zh是zhs16gbk, us是us7ascii。to左侧代表数据库字符集, 右侧代表客户端字符集。

2) 结论:表数据以二进制编码存储, 只要存在表中的汉字正确, exp备份的结果是一样的。但是, 如果数据库客户端和数据库字符集不同, 表字段的汉字描述、后台函数过程里的中文都会变成乱码或?号。同理, 导入和目标数据库字符集一样的DMP文件, 客户端字符集不影响表数据的导入, 只是中文描述发生错误。

(3) 数据库客户端的字符集和数据库的字符集相同, 如何正确导入不同于目标数据库字符集的DMP文件。

数据库DMP文件的第52和53字节记录了源数据库的字符集, 也就是DMP文件的字符集设置。第2和3字节记录了导出时客户端的字符集设置。通过SQL语句:“selectnls_charset_name (to_number ('0001', 'xxxx') ) , nls_charset_name (to_number ('0354', 'xxxx') ) from dual;”得到0001H代表us7ascii字符集, 0354H代表zhs16gbk字符集。

第2和3字节的设置不会影响DMP文件的导入, 要导入不同于目标数据库字符集的DMP文件, 必须修改第52、53字节为目标数据库字符集的十六进制值, 如图8所示。

上一篇:居室中的点缀装饰下一篇:财富与幸福