您好,欢迎访问三七文档
oracle实例,数据库中的一些进程,启动到内存当中。数据库,一些列的文件系统在oracle中,安装路径下,里边保存一系列文件,控制文件数据文件,扩展名.DBF日志文件Oracle中有两种日志文件,一种就是REDO这种类型的日志文件(列在了资源管理器中),称为联机日志文件(又称重复日志文件,三个文件,第一个写满,写到第二个,第三个写满再写到第一个,不做备份直接覆盖掉),还有一种是归档日志文件,进行备份时候,尤其热备份,一定要选择的归档方式。控制文件,管理控制数据文件和日志文件启动数据库的时候,启动对应的实例后,先启动控制文件,然后控制文件打开数据文件。连接数据库SQL/PLUS:查看控制文件:查看控制文件的,名称,状态所有的控制文件,在此路径下查看数据文件:,查看相应的信息,同上,如日志文件:descv$logfile文件中还有一种参数文件,其并不是文件系统的有效组成部分,启动数据库的时候,参数文件并不直接参与工作,控制文件是由参数文件来寻找的,以上就是参数文件,参数文件中,包含控制文件的路径等。Oracle数据库物理结构逻辑结构Oracle存储数据的最基本单位是块,block,windows默认8k查看sqlplus支持的所有命令:空白行的设定支持:setsqlblanklineson可以用list命令(或者简写l),查看曾经写的命令,如保存查询语句到文件中:执行对应文件中的内容:@c:\test2.txt获得执行文件的内容:getc:\test2.txt可以把编辑环境切换到记事本,然后,在记事本里编辑完后,可以点击记事本关闭窗口,然后,内容,就会加载到SQLPLUS编辑环境中,后,可以执行,记事本中的内容查看表结构将结果集保存:1.Spool路径\文件名;2.执行查询语句;3.spooloff则把结果集保存到对应的文件中视图:创建视图:createorreplaceviewview_nameasselect*fromdual;一般情况下,创建完视图,都是用视图来取数,如果想要往视图里面写数或者修改数据,可以在视图的最后加上withcheckoption,当向视图里面写入数据的时候,同时也向对应的表里写入了数据。但是如果视图是关联的多个表,不能进行修改,因为,不能同时更新一个以上的基表。(但是可以用触发器,暂时不提)在最后加上withreadonly,则只能读,不更新。视图得sql语句中,如果包含groupby,sum等聚合函数,distinct这种选项的,也是不允许修改的。同义词:Createsynonymsynonym_namefor一个用户下的一个表名;默认私有Createpublicsynonymsynonym_namefor一个用户下的一个表名;public,可以使别的用户也可以访问。私有,创建同义词用户专有的。公共,别的用户下,公共同义词,也可以访问。避免敲一串长的名字,用一个名字,操作不同用户下的表查询同义词的名称,对应表的名称,表的所有者。序列:创建序列:createsequencesequence_namesartwith10incrementby5ordernocycle使用序列:myseq.nextval;;查看当前序列值:myseq.currval改变序列的自增量:altersequencemyseqincrementby3;只能改变序列的自增量,不能改变序列的值创建用户:授予权限:Grantconnecttouser_name;授权可以查看scott.dept表所有的权限修改密码;锁定用户:test用户名,当该用户名被锁定的时候,则不允许此用户在连接解除锁定:可以将此权限的授权权限给这个test用户,然后,test用户可以同样的把这个权限给别的用户将能创建新用户的权限授予test用户,这个需要在sys用户下才能授权,,删除用户的权限,t把创建用户的权限给test用户,同时,可以让它也去给别的用户授予创建用户的权限解除权限:自建角色并授权:1.,2.,2.,将myrole这个角色授权给test用户概要文件,里边设置一些保留口令的时间,等的信息,如果锁定了,可以到对应的地方解锁。表空间的管理创建表空间:将用户test的默认表空间改为新创建的表空间Test用户默认的表空间有权限使用首先创建表空间,再创建用户,将表空间设为用户的默认表空间,表的管理创建表:createtablenn(n1varchar2(10)notnull,n2varchar2(10));增加表的字段:altertablennadd字段名notnull,unique;Primarykey主键;实体完整性:通过主键参照完整性:通过外键设置外键:参照表的外键字段类型和长度应和主表中对应的一样,上行中,mm为参照表,nn为主表,mm中的字段n1对应主表nn中的n1字段。在字段上增加check约束,比如,性别字段只允许写男女:Contract约束的意思;让表emp中的字段sex的值只能是男或者女,查看表里的约束:(查看约束名,约束类型)selectconstraint_name,constraint_typefromuser_constraintswheretable_name='HISE_CONTRACT'索引:创建索引:createindexmy_indexonhise_contract(cid);删除索引:dropindexmy_index;创建位图索引:createbigmapindexbit_cidonhise_contract(cid);主键创建完后,一般都是自动创建了对应的索引,也就是唯一索引;唯一索引:createuniqueindexmyindexonhise_contract(cid)SQL*LoaderSQL*Loader是oracle的一个使用程序,能将大量的数据(如文件中的数据)装入到数据库中,实现数据的移植。使用方法:这三个是必须写的,数据文件,控制文件必须先提前保存好1.数据文件:C:\loader.txt2.控制文件:C:\cont.ctl控制文件中的意思,把c:\loader.txt下的数据保存到表mm中m1,m2字段中,如果是别的用户下的表则需要加用户名,即scott.mm,然后,对应的loader.txt中的数据,1-3位置的保存到m1中,5-7位置的保存到m2中。如果是不规则的数据,可以用数据之间的标志来区分:terminatedby“标志,如逗号”上述控制文件和数据文件都设置好后,执行载入命令:Sqlldr用户名/密码control=控制文件位置data=数据文件位置;http://www.yesky.com/285/1942785_1.shtml导入excel中的数据到oracle,可以把excel保存为txt,然后,每一行的字段之间默认为tab键来间隔,也可以保存为csv格式,则字段之间用逗号来分隔。也可以在控制文件中直接导入数据http://wenku.baidu.com/view/2c7bc1aad1f34693daef3e90.html数据库备份与恢复备份分两类:逻辑备份,使用EXP进行逻辑备份,EXP可以导出一个完整的数据库,或者某一特定的表物理备份,冷/热备份恢复:逻辑恢复,使用IMP进行逻辑恢复,物理恢复,冷/热备份的恢复。数据备份:使用,点击菜单栏中的,可以进行表,极其数据的导入导出。使用命令:导入dmp数据库备份文件到数据库impusername/password@database_namefile=文件路径及文件名full=y;将数据库中的数据导出为文件吧expusername/password@database_namefile=e:\aaaa.dmp;热/冷备份:热备份较冷备份的主要区别就是不会丢失在备份后更新的数据,冷备份需脱机,热备份联机冷备份:冷备份就是一个物理的拷贝过程,需要脱机,即先把服务停掉,然后,把(数据库的实例安装路径)下的内容拷贝出来。,然后startup热备份:热备份是一种数据库的处于打开时的物理备份,因为数据库在不断发生改变,因此备份的文件必然是不一致的,这就要求数据库必须处于归档日志模式。又称为联机备份,采用热备份的时候一定要将日志置为归档方式,查看数据库是否处于归档日志模式:Archiveloglist;将数据库日志设置为归档方式,ALTERSYSTEMSETLOG_ARCHIVE_START=TRUESCOPE=SPFILE;//重启数据库http://www.cnblogs.com/Amaranthus/archive/2011/03/15/1985164.html下面为SQL脚本:CREATETABLETEST(T_IDNUMBER,T_VALUEVARCHAR2(30));/INSERTINTOTESTVALUES(100,'WANG');INSERTINTOTESTVALUES(200,'DONG');COMMIT;SELECT*FROMTEST;T_IDT_VALUE-----------------------100WANG200DONG1.SHUTDOWNIMMEDIATE;//关闭数据库2.STARTUPMOUNT//启动数据实例,加载数据库注:STARTUPNOMOUNT//启动数据实例STARTUPMOUNT//启动数据实例,加载数据库STARTUP//启动数据实例,加载数据库并打开数据库3.ALTERDATABASEARCHIVELOG;//设置数据库日志为存档模式4.ALTERSYSTEMSETLOG_ARCHIVE_START=TRUESCOPE=SPFILE;//重启数据库5.ALTERDATABASEOPEN;//打开数据库6.ALTERTABLESPACEUSERSBEGINBACKUP;//将数据库设置备份模式7.HOSTCOPYD:\oracle\oradata\orcl\*.dbfD:\BAK\//拷贝数据文件至备份文件中8.ALTERTABLESPACEUSERSENDBACKUP;//结束备份状态9.ALTERSYSTEMSWITCHLOGFILE;//切换日志,使当前日志归档--------至此,热备份已经完成,备份文件保存在D:\BAK\目录下--------此时再插入数据,INSERTINTOTESTVALUES(300,'XIN');COMMIT;以下是故障重现1.SHUTDOWNIMMEDIATE2.STARTUPMOUNT3.HOSTDELD:\oracle\oradata\orcl\USER01.dbf//故意删除一个数据文件,制造故障4.SHUTDOWNIMMEDIATE5.STARTUP//此时会警告,无法找到指定的文件DATAFILE4,即是刚才删掉的数据文件,DATAFILE4只是个代号,也有可能是DATAFILE1,DATAFILE2,等等6.ALTERDATABASEDATAFILE4OFFLINEDROP;//让这个出故障的文件暂时先脱机7.ALTERDATABASEOPEN;//打开数据库8.HOSTCOPYD:\BAK\HOSTCOPYD:\oracle\oradata\orcl\*.dbf//将前面备份的文件拷贝到系统目录中9.RECOVERDATAFILE4;//这一步,偶尔会出错,无法正确执行,而且无法正常关闭数据库,请如此这般操作,SHUTDOWNABORT;STARTUP;10.ALTERDATABASEDATAFILE4ONLINE;11.SELECT*FROMTEST;T_IDT_VALUE-----------------------100WANG200DONG300XIN发现,备份之后又更新的数据没有丢失!SQL:selectlengthb(cid)fromhise_contract,查询字节selectlength(cid)fromhise_contract,查询字符selectltrim('dd')fromdual;去掉字符中左边的空字
本文标题:oracle
链接地址:https://www.777doc.com/doc-7877 .html