1、6 通过授权的方式来创建用户 87 建立与已有的表结构、数据一样的新表 88 向新表中导入旧表的数据(针对上一点:表结构一样) 89 查看当前所有对象(表、视图等) 810 不借助工具且不改变列的顺序(表中有数据)情况下修改列名 811 建一个和a表结构一样的空表 912 如何查看用户表上的约束类型 913 如何查看后台进程 1014 显示当前连接用户 1115 连接字符串 1116 查询当前日期 1117 用户间复制数据 1118 redo logfile 1118.1 redo logfile的简单介绍 1118.2 redo logfile的大小和位置对数据库性能的影响 1218.3 在
2、联机状态改变redo logfile大小的方法 1318.4 跟redo logfile有关的其它数据库参数 1319 数据库察看命令 1419.1 查看表空间的名称及大小 1419.2 查看表空间物理文件的名称及大小 1519.3 查看回滚段名称及大小 1519.4 查看控制文件 1519.5 查看日志文件 1519.6 查看表空间的使用情况 1619.7 查看数据库库对象 1619.8 查看数据库的版本 1619.9 查看数据库的创建日期和归档方式 1620 备份操作 1720.1 生产主备份 1720.2 生产辅备份 1820.3 历史主备份 1820.4 历史主备份 1821 恢复数据
3、库 1821.1 生产数据恢复 1921.1.1 恢复前准备工作 1921.1.2 完全恢复 1921.1.3 不完全恢复 2021.1.4 恢复结束 2021.1.4.1 部分数据文件损坏 2021.1.5 不完全完全恢复 2121.2 历史库的恢复 2121.2.1 归档数据的恢复 2121.2.2 非归档数据的恢复 21 1 启动数据库以数据库用户登陆,运行下面的命令(进入ORACLE数据库SERVER管理工具): /usr/oraclesvrmgrl SVRMGRconnect internalstartupexit2 关闭数据库shutdown normal3 建Dblink的实例举
4、例说明: linux:158.1.19.1有一yz库,有用户qgzx;(全国中心数据库用) NT:158.1.19.233有一库yydd,用户jiek/jiek(长天全国中心数据接口) qgzx需要访问jiek的表 步骤: 1、建立TNS,用于链接yydd 在/usr/oracle/network/admin下文件tnsnames.ora中加入如下内容 #diaoxiaoru YYDD= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 158.1.19.233)(PORT = 1521) ) (CONNECT_
5、DATA = (SERVICE_NAME = YYDD) 2、赋予qgzx用户dba权限,sqlplus连到qgzx下执行如下语句,mylink为dl3: CREATE DATABASE LINK dl3 CONNECT TO jiek IDENTIFIED BY jiek;4 新增表的实例(授权方式建同义词的情况) -在158.1.19.1的yz实例cnpost用户下(开发库)新增一个表的实例。 -说明:cnpost是resource用户,具有所有的实体表、视图、同义词、存储过程等等,需要在test、zxj(这两个用户只有create session权限)两个开发用户下给他们建同义词。sql
6、plus cnpost create table tTMYJZLDZB ( CJDM char(4) Not Null, OLDYJZL char(1) Not Null, NEWYJZL char(3) Not Null ); create unique index tTMYJZLDZB_un1 on tTMYJZLDZB (CJDM,OLDYJZL); 把cnpost上实体表tTMYJZLDZB在zxj、test用户下授予grant select,update,delete,insert权限: grant select,update,delete,insert on tTMYJZLDZB
7、to zxj; grant select,update,delete,insert on tTMYJZLDZB to test; 建同义词需要有dba权限,给zxj、test授予dba权限: connect system/* grant dba to zxj; grant dba to test; 在zxj、test建同义词cnpost.tTMYJZLDZB conn zxj/post create SYNONYM tTMYJZLDZB for cnpost.tTMYJZLDZB; conn test/lqj 收回zxj、test用户的dba权限 connect system/* revoke
8、 dba from zxj; revoke dba from test;5 新建用户实例使用具有DBA权限的用户进入sqlplus - sqlplus system/*创建用户: CREATE USER username IDENTIFIED BY passwd 用户名和密码 DEFAULT TABLESPACE tablespacename 指定缺省的表空间 TEMPORARY TABLESPACE tablespacename 指定临时表空间 QUOTA 100M ON tablespacename 指定配额表空间的大小 PROFILE DEFAULT ACCOUNT UNLOCK /给用
9、户授权,create session是会话权限,每一个用户是必有的。而connect,resource,dba权限看具体的用途而定: -grant create session to username; 会话权限,用于连接用户 -grant connect to username; 授予connect权限 -grant resource to username; 授予resource权限 -grant dba to username; 授予dba权限 -GRANT UNLIMITED TABLESPACE TO username; 授予用户可扩展的表空间收回权限 -revoke connect
10、 from username; -revoke resource from username; -revoke dba from username;6 通过授权的方式来创建用户 SQL grant connect,resource to test identified by test; conn test/test 7 建立与已有的表结构、数据一样的新表SQL CREATE TABLE new_tablename AS SELECT * FROM old_tablename;表结构一样)INSERT INTO old_tablename SELECT * FROM new_tablename;
11、9 查看当前所有对象(表、视图等) select * from tab;10 不借助工具且不改变列的顺序(表中有数据)情况下修改列名假设某表diao有两个字段dd和cc,有三条数据,现要把列dd改为rr,需要如下操作:alter table diao_1 rename to diao_1; 相当于建立临时表diao_1create table diao_1 ( rr char(20) not null,cc char(1) not null); 新建表diao,并把列dd用rr替换insert into diao_1( rr, cc ) select dd, from diao_1; 把dia
12、o_1中数据插入到diao中commit; 提交插入的数据drop table diao_1; 删除临时用表diao_111 建一个和a表结构一样的空表 CREATE TABLE b AS SELECT * FROM a WHERE 1=2; create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;12 如何查看用户表上的约束类型 desc USER_CONSTRAINTS 管理约束的表desc USER_CONS_COLUMNS 约束表内容名称 空? 类型 - - - OWNER NOT NULL VARCHAR2(30) -
13、用户名CONSTRAINT_NAME NOT NULL VARCHAR2(30) -约束名 TABLE_NAME NOT NULL VARCHAR2(30) -约束类型 COLUMN_NAME VARCHAR2(4000) -列名 POSITION col 用户名 format a10 col 约束名称 format a15 col 约束类型 format a10 col 表名 format a10 col 列名 format a10 col 约束内容 format a20 select a.OWNER 用户名a.CONSTRAINT_NAME 约束名称, a.CONSTRAINT_TYPE
14、约束类型, a.TABLE_NAME 表名,b.COLUMN_NAME 列名, a.SEARCH_CONDITION 约束内容from USER_CONSTRAINTS a,USER_CONS_COLUMNS b where a.CONSTRAINT_NAME=b.CONSTRAINT_NAME;13 如何查看后台进程 desc v$bgprocess 名称 空? - - - PADDR RAW(4) -进程状态对象地址 NAME VARCHAR2(5) -后台进程名称 DESCRIPTION VARCHAR2(64) -后台进程描述ERROR NUMBER 后台进程运行中所遇到的错误数 co
15、l DESCRIPTION format a40 select * from v$bgprocess;select * from v$bgprocess where paddr00; 查看paddr中包含两个0的进程SMON 系统进程PMON 用户进程DBWR 数据库写入进程LGWR 日志写入进程CKPT 检查点进程 用来减少实例恢复所需时间, init.oralog_checkpoint_interval = 10000,此参数设置检查点出现的频度ARCH 归档进程 将联机重做日志拷贝到磁盘或磁带,即将联机重做日志归档RECO 恢复进程 用于分布式数据库中的分布式处理, init.ora中,
16、distributed_transactions = 10,此参数大于0时才被建立SNPn 快照进程 数量取决于init.ora中参数job_queue_processes = 4LCKn 锁进程 可选项,用于并行服务器Dnnn 调度进程 可选项,仅用于多线程服务器14 显示当前连接用户 show user 15 连接字符串 select 列1|列2 from 表1; select concat(列1,列2) from 表1;16 查询当前日期 select to_char(sysdate,yyyy-mm-dd,hh24:mi:ss) from dual;17 用户间复制数据 copy fro
17、m user1 to user2 create table2 using select * from table1;18 redo logfile 我们知道Oracle里联机日志文件(Online redo logfile)循环记录了数据库所有的事务(transaction)。它的大小、个数和存储位置对数据库性能和恢复也是有重要影响的。本文总结一下关于redo logfile的一些内容。18.1 redo logfile的简单介绍 它一般有大小相同的一组文件构成。我们可以查看数据库视图v$logfile知道它的个数和存储位置。 SVRMGRL select * from v$logfile;
18、查看数据库视图v$log知道它当前的状态。 select * from v$log; 一个时间只有一组logfile group是工作状态(current), redo logfile满了后会自动切换到下一个logfile group,如果数据库是归档方式同时写到归档日志文件。这些文件不能用常规的文本编辑器查看,它以特定的格式存放,只有数据库或者专门的软件可以看懂它。 redo logfile的最大数目是在创建数据库时指明的。如果你想知道当前数据库redo logfile的最大数值是多少,重新生成控制文件就可以知道。alter database backup controlfile to tr
19、ace; 这条语句会在$ORACLE_BASE/admin/dbname/udump/路径下生成当前时间的一个*.trc文件,也就是数据库的控制文件,用文本编辑器,即可看到数据库创建时用的一些参数,包括redo logfile的最大数(maxlogfiles)。18.2 redo logfile的大小和位置对数据库性能的影响 如果用ORACLE的安装向导创建的典型数据库,它的redo logfile大小为500K,这基本上是不能满足典型的OLTP应用的,在数据库日志文件(alert_orasid.log)里会记录着频繁的log switch。 ORACLE推荐log switch时间最好在15
20、-30分钟之间,所以redo logfile的大小由数据库DML操作数据的大小决定其最佳大小。 redo logfile最好有多个存储位置,多组成员,使数据库恢复时有更多的选择。 典型的OLTP应用,redo logfile大小可以为16M。当然繁忙的数据库, 例如当今的门户网站, 这个值可以达到100M以上。 如果你发现当前数据库日志文件里log switch的时间偏大或者偏小,不要紧。ORACLE提供了在数据库联机状态来改变redo logfile大小的方法。18.3 在联机状态改变redo logfile大小的方法 假如原来有3个小的redo log file,下面是UNIX环境下的一个
21、例子: 第一步: 往数据库添加三个大的redo logfileALTER DATABASE ADD LOGFILE GROUP 4 (/opt/oradata/app/redo04.log, /ora_bak/oradata2/redolog/redo04.log) size 16M reuse;ALTER DATABASE ADD LOGFILE GROUP 5/opt/oradata/app/redo05.log/ora_bak/oradata2/redolog/redo05.logALTER DATABASE ADD LOGFILE GROUP 6/opt/oradata/app/red
22、o06.log/ora_bak/oradata2/redolog/redo06.log 第二步: 手工地做log switch, 使新建的redo logfile起作用:alter system switch logfile; 此操作可以执行一到几次, 使旧的redo logfile成invalid状态. 第三步: 删除原来旧的redo logfile.alter database drop logfile group 1;alter database drop logfile group 2;alter database drop logfile group 3;18.4 跟redo log
23、file有关的其它数据库参数 1、log_buffer log_buffer是ORACLE SGA的一部分,所有DML命令修改的数据块先放在log_buffer里,如果满了或者到了check_point时候,系统通过lgwr后台进程写到redo logfile里去。它不能设得太大,这样在意外发生时会丢失很多改变过的数据。它最好不要大于512K或者128K*CPU个数。 我们可以用下面的SQL语句检测log_buffer使用情况: select rbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value|% radio from
24、 v$sysstat rbar,v$sysstat re where rbar.name=redo buffer allocation retries and re.name=redo entries 这个比率小于1%才好,否则增加log_buffer的大小。2、log_checkpoint_interval Oracle8.1 版本后log_checkpoint_interval指的是两次checkpoint之间操作系统数据块的个数。 checkpoint时Oracle把内存里修改过的数据块用DBWR写到物理文件,用LGWR写到日志和控制文件。 一般UNIX操作系统的数据块为 512 byt
25、es。 从性能优化来说 log_checkpoint_interval = redo logfile size bytes / 512 bytes3、log_checkpoint_timeout Oracle8.1 版本后log_checkpoint_timeout指的是两次checkpoint之间时间秒数。 Oracle建议不用这个参数来控制,因为事务(transaction)大小不是按时间等量分布的。 log_checkpoint_timeout = 0 log_checkpoint_timeout = 900 19 数据库察看命令19.1 查看表空间的名称及大小 select t.tab
26、lespace_name, round(sum(bytes/(1024*1024),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by t.tablespace_name;19.2 查看表空间物理文件的名称及大小 select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by ta
27、blespace_name;19.3 查看回滚段名称及大小 select segment_name, tablespace_name, r.status, (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, v.curext CurExtent From dba_rollback_segs r, v$rollstat v Where r.segment_id = v.usn(+) order by segment_name ;19.4 查看控制文件 select name from v$controlfile;19.5 查看日志文件 s
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1