法治 亚里士多德:Oracle实践总结

来源:百度文库 编辑:中财网 时间:2024/05/04 04:46:39
1.如何知道哪些表没有建立主键?Select table_name from user_tables tWhere not exists (select table_name from user_constraints c where constraint_type=’P’ and t.table_name=c.table_name)2.相关数据字典的意义User_tables 表User_tab_columns 表的列User_constraints 约束User_cons_columns 约束与列的关系User_indexes 索引User_ind_columns 索引与列的关系3.关于角色和权限对于数据库管理员,应该授予DBA角色;对于数据库开发用户,只需要授予CONNECT和RESOURCE角色Oracle数据库的权限分为系统权限和对象权限。前者在系统级控制对数据库的存取和操作,如用户是否能通过建立会话而连接到数据库,是否能启动、停止数据库,是否能修改数据库参数等;对象权限在方案级控制对数据库的存取和操作,如用户可以存取哪个方案中的对象,是否能对该对象进行查询、插入、更新等。4.关于Oracle的回收站以及闪回技术用drop命令删除的表其实并没有物理删除,而是放在了回收站里,还占用着数据库空间。用select * from  User_recyclebin就可以看到回收站中的表。Purge table temp1—将回收站中的某个表彻底删除Purge recyclebin:清空oracle的回收站;Flashback table tablename to before drop(rename to temp2) —还原某张表(可以进行更名);Flashback table temp to timestamp(systimestamp-interval ‘1’ minute) ---恢复到1分钟前的数据(也可以是second等),但是要注意,首先要启动表的行移动功能:alter table temp enable row movement;5.选择数据库实例Windows下:set oracle_sid=…Unix下:export oracle_sid=…6.表和表之间的关联更新Update file_dept a set a.id=(select b.id from temp1 b where a.dept_id=b.dept_id)7.创建用户:第一步:建立用户Create user web identified by webDefault tablespace webTemporary tablespace tempProfile “DEFAULT”—大写Account unlock; —未锁定第二步:授予权限与scott相同:grant connect to web;Grant resource to web;Grant create view to web;8.删除某个用户的连接Select sid,serial#,status from v$session where username=’…’Alter system kill session ‘sid,serial#’;9.启动关闭监听>lsnrctl start>lsnrctl stop>lsnrctl status10.启动和关闭数据库Ø  启动数据库>startup nomount ---启动例程,但不装载数据库,并未打开控制文件和数据文件>startup mount ---启动例程并装载数据库,但不打开数据库,打开控制文件,但并未打开数据文件>startup open ---启动例程,装载数据库,打开数据库,既打开了控制文件也打开了数据文件>startup force ---强制启动>startup restrict>startup pfile=… ---注意是pfile,不是spfile。可以先用create pfile=… from spfile=…语句将服务器初始化文件导出成文本初始化参数文件后,再使用导出后的文本初始化参数文件Ø  关闭数据库过程:关闭数据库-->卸载数据库-->终止例程语法:shut down[ normal | transactional | immediate | abort ]尽量避免用abort选项来关闭数据库,如果想尽快关闭,可以使用IMMEDIATE选项,这样所有未提交的事物均被回退,使数据信息以及完整性得以保证。Ø  说明在NOMOUNT启动模式下,只能访问那些与SGA区相关的数据字典视图,如V$PARAMETER,V$SGA,V$OPTION,V$PROCESS,V$SESSION,V$VERSION,V$INSTANCE等。这些视图中的信息都是从SGA区中获取的,与数据库无关;在MOUNT启动模式下,除了可以访问那些与SGA区相关的数据字典视图之外,还可以访问到那些与控制文件相关的数据字典视图,如V$THREAD,V$CONTROLFILE,V$DATABASE,V$DATAFILE,V$LOGFILE等,这些视图中的信息都是从控制文件中获取的。11.更改用户密码当忘记了system与sys的密码时,可用如下方法更改:C:>sqlplus/nologSQL>connect 空格/空格 @myoracle as sysdbaSQL>alter user system identified by manager要注意的是,以上方法只能在服务器端执行,客户端不能执行。12.设置主机首选身份证明1).选择“开始”-->“程序”-->“管理工具”-->“本地安全策略”,打开“本地安全策略”窗口2).选择“本地策略”中的“用户权限分配”项3).在右边的“策略”列中双击“作为批处理作业登录”项,打开其属性对话框4).将Administrator加入用户中,这样,该用户就有了“作为批处理作业登录”的权限13.如何将数据库从noarchivelog改成archivelog方式?首先打开INIT.ora文件,确保存档日志目标指向一有效目录,然后启动sqlplusSQL>shutdown immediateSQL>startup mountSQL>alter database archivelogSQL>alter database openSQL>archive log list ---列出现在数据库是否归档在INIT.ora中设置参数archive_log_start=true,它设置存档日志为自动启动。14.创建表空间的SQLCreate smallfile tablespace “FILEEXCHANGE”Datafile’D:\oracle\myoracle\fileexchange.dbf’ size 10MReuse autoextend on next 5120k MAXSIZE 32767M—最大Nologging extend management local—区管理方式:本地管理Segment space management Auto—使用Auto段管理方式15.Sqlplus技巧清屏:SQL>ho clsSqlplus中的所有命令可用>help index看到,关于每个指令具体的用法可用>?…或help …来查看。16.修改系统日期格式Alter session set NLS_DATE_FORMAT=’dd-mon-yyyy hh:mi:ss’;Select current_date from dual;Select sysdate from dual;17.如何将角色赋予用户1).创建一个角色:create role myrole;2).将对scott.dept表的select权限赋予这个角色:grant select on scott.dept to myrole;3).将这个角色赋予用户test:grant myrole to test.18.SQLLoad的使用1).数据文件Loader.txt,文件内容如下abcd,qqabc,ee…2).控制文件cont.ctl(以ctl为后缀),内容如下:Load dataInfile ‘c:\loader.txt’ ---数据文件AppendInto table mm(M1 char terminated by “,”,M2 char terminated by “,”)---用逗号分隔字段3).执行命令:>sqlldr scott/tiger control=c:\cont.ctl data=c:\loader.txt如果成功就会提示:commit point reached—logical record count 3—表示插入了3条记录如果每列长度固定,那么可写成mm(m1 position(1:3) char,m2 position(5:7) char)—表示提取1-3位和5-7位4).SQLLoader的4种装入表的方式:APPEND:原先的表有数据,就加在后面;INSERT:装载空表,如果原先的表有数据,SQLLoader就会停止REPLACE:原先的表有数据,原先的数据会全部删除TRUNCATE:指定的内容和REPLACE相同,会用truncate语句删除现存数据19.如何查看对象所占用的空间Ø 查看表和索引的大小:select * from user_segments where segmentname=’’Ø 查看此用户所有对象所占空间大小:select sum(bytes) from user_segments;Ø 查看每个用户表空间的大小(已使用的表空间,而不是初始化分配的空间):select tablespace_name sum(bytes)/1024/1024 from dba_segments group by tablespace_nameØ 查看当前用户每个表占用空间的大小:select segment_name,sum(bytes)/1024/1024 from user_extents group by segment_name20.查看一个表所用的分区Select table_name,partition_namefrom user_tab_partitionswhere table_name=’daryxxb’21.将一个schema中的对象导入到属于另一个表空间的schema中>imp system/manager@myoracle from user=web to user=net tablespaces=net file=f:\web.dmp22.数据库链(Database link)1).创建(首先要有create public database link权限)Create public database link remotedb using ‘remote’;表示用目前用户去链接远程服务器,如果要指定用户名,则在using前加上connect 用户名 identified by 口令,最后的’remote’是连接字符串2).应用数据库链Select * from tablename @remotedb;复制表结构:create table test as select * from test @remotedb where 1=2;也可以远端进行Update、insert操作3).删除(要有drop public database link权限)Drop public database link remotedb;4).查询数据库链信息Dba_db_links,all_db_links,user_db_links23.物化视图1).主键物化视图           create materialized view mv_emp_pkRefresh fast start with sysdate next sysdate+1/48 with primary keyAs select * from emp@remotedb;注意:当用fast选项创建物化视图,必须创建基于主表的视图日志,如下:Create materialized view log on emp;2).Rowid 物化视图Create materialized view mv_emp_rowidRefresh with rowidAs select * from emp@remote_db3).Refresh选项说明Ø Oracle是用刷新方法在物化视图中刷新数据Ø 是基于主键还是基于rowid的物化视图Ø 物化视图的刷新时间和间隔刷新时间4).Refresh的方法Ø Fast—增量刷新,用物化视图日志来发送主表已经修改的数据行到物化视图中Ø Complete—完全刷新,重新生成整个视图Ø Force—如果增量刷新可用将完成增量刷新,否则完成完全刷新24.关于归档日志的空间问题Ø 查看归档日志的容量使用:select * from v$recovery_file_dest;Ø 更改归档日志容量空间:alter system set db_recovery_file_dest_size=8G scope=BOTH;Alter database open;Ø 手动删除归档日志文件,需要以下几步:手动删除archivelog文件夹中的早期的归档日志文件登录rman :>rman target /对归档日志进行验证:rman>crosscheck archivelog all;删除失效的归档日志:rman>delete expired archivelog all;25.备份与还原数据文件的联机备份(热备份)第一步:将数据库置为归档日志状态:1).首先查看是否是归档日志模式 >archive log list;2).如果不是,那么将其设为归档模式 >alter system set log_archive_start=true scope=spfile3).关闭数据库 >shutdown immediate4).启动数据库为Mount方式 >startup mount5).将数据库切换到归档日志模式:>alter database archivelog6).打开数据库 >alter database open;7).这时再查看 >archive log list;便显示是归档日志模式了第二步:备份与恢复1).alter tablespace web begin backup2).将表空间web的数据文件进行备份3).Alter tablespace web end backup;4).将当前的联机日志进行归档:>alter system archive log current5).将日志文件切换:>alter system switch logfile; 有几个日志文件就进行几次切换6).关闭数据库 >shutdown immediate下面是模拟错误:7).将web的数据文件删除8).打开数据库:>startup open;报错—web.dbf文件不能找到9).让此数据文件脱机,并drop掉>alter database datafile 6 offline drop;6代表6号文件,也就是web.dbf文件10).将数据库打开>alter database open;11).将备份的web.dbf文件拷贝到原来的位置12).恢复数据文件:>recover datafile 6; auto;13).让数据文件联机:>alter database datafile 6 online;14).这样,便可以查询web表空间中的数据了控制文件的备份1).>alter database backup controlfile to trace; 备份控制文件,会存放在…\admin\myoracle\udump\目录下最近的一个文件,这个文件中的语句就是执行控制文件时的脚本2).将文件中的语句拷贝出来,另存为一个文件,比如create_ctl.txt3).关闭数据库4).执行加载控制文件:sql>@c:\create_ctl.txt;这样就重新创建了控制文件,并且将数据库打开了日志文件的备份当日志文件丢失后,可采用如下方法:1).基于取消的恢复数据库: >recover database until cancel;2).重新生成日志文件:>alter database open resetlogs;脱机备份1).整理需要备份的文件,包括参数文件、控制文件、数据文件和重做日志文件Ø  参数文件:…\db_1\database\init.ora 以及关于此sid的所有文件Ø  控制文件:select status,name from v$controlfile;Ø  数据文件:selelct status,name from dba_data_files;Ø  重做日志文件:select group#,status,member from v$logfile2).用sysdba身份用户登录后,>shutdown immediate;关闭数据库3).将上述整理的文件一一进行备份4).打开数据库 >startup open;恢复:当文件丢失,就需要恢复数据库1).关闭数据库:>shutdown immediate2).将所有的备份文件复制到原来所在的位置,不得漏掉一个,以便恢复备份时刻数据库的镜像3).恢复完成后,以open方式启动数据库 >startup open;  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lihui_79/archive/2009/04/10/4060010.aspx