关于oracle10g数据库的学习-基本操作
最近花了些时间又把oralce 10g学了一下,参照中科院的一个培训,这是一个很经典的视频教程,讲课老师字字珠玑,里面也有很多应用场景的描述。
早在学校的时候就看过一些这方面的东西,现在再把学习过程中积累的一些东东拿出来跟大家分享。
先看
逻辑存储结构
它由至少一个表空间和数据库模式对象组成。这里,模式是对象的集合,而模式对象是直接引用数据库数据的逻辑结构。模式对象包括这样一些结构:表、视图、序列、存储过程、同义词、索引、簇和数据库链等。逻辑存储结构包括表空间、段和范围,用于描述怎样使用数据库的物理空间。而其中的模式对象和关系形成了数据库的关系设计。
数据块(Block)
是数据库进行UO操作的最小单位,它与操作系统的块不是一个概念。oracle数据库不是以操作系统的块为单位来请求数据,而是以多个Oracle数据库块为单位。段(Segment)
是表空间中一个指定类型的逻辑存储结构,它由一个或多个范围组成,段将占用并增长存储空间。 其中包括: 数据段:用来存放表数据;. 索引段:用来存放表索引; 临时段:用来存放中间结果; 滚段:用于出现异常时,恢复事务。范围(Extent):是数据库存储空间分配的逻辑单位,一个范围由许多连续的数据块组成,范围是由段依此分配的,分配的第一个范围称为初始范围,以后分配的范围称为增量范围。
sqlplus sys/sym as sysdba
startup mount
修改数据库的归档方式
不能在数据库已经启动的情况下
只有先关闭数据库
然后打开控制文件不打开数据文件
修改归档方式
启动数据库实例
startup mount
alter database archivelog
alter database open
启动实例不打开数据文件 startup nomount
shutdown immediate 迫使用户执行完当前的sql语句后断开与数据库的连接 常用
shutdown 正常关闭 等所有用户断开连接以后才关闭数据库实例
如果有用户长时间没有断开会造成无法关闭 很少用
shutdown transcational 迫使用户执行完当前的事务之后关闭数据库实例
shutdown abort 强行关闭 可能造成文件的破坏
isqlplus
http://siyaomin-pc:1158/em/console/logon/logon
http://siyaomin-pc:5560/isqlplus
标识符 (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=siyaomin-PC)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))
可以用sqlplus sys/sym as sysdba
查找帮助 help index
set sqlblanklines on 可以允许里面有空行
sqlplus 打开以后可以通过 con sys/sym as sysdba
可以用名字代替
select * from scott.dept d where d.deptno = 10;
可以通过替代变量的方式来提高查询效率
select * from scott.dept d where d.deptno=&dno;
然后给dno赋值
可以通过list来查看在查询缓冲区里面的查询语句 可以用一个l来代替list
如果是多行的 它把你输入的按行分配下来
如
select
*
from
scott.dept
输入list
显示如下:
1select
2*
3from
4scott.dept
可以通过l2 5 可以输出2到5行
用/来执行缓冲区里面的东西
如果输入有误的话也会在缓冲区里面有它的信息
可以修改
如 select * fronn scott.dept;
其中from 误写成了fronn 可以通过 c/fronn/from
删除缓冲区里面的信息 del3 多行 del 3 9
追加信息a
如缓冲区里面已经有了select * from scott.dept d
我可以用a where d.deptno=10; 这样它就成了 select * from scott.dept
可以保存到文件 save c:\oracle\test.sql 最好是保存到oracle目录下面否则可能失败
它只是保留了一个查询语句 没有查询结果的信息
要执行一个文件 用@c:\oracle\test.sql
用get来得到脚本内容 get c:\oracle\test.sql
用edit 打开记事本 这里面有缓冲区里面的内容
可以用column 命令来设置表头heading
如col scotts.dept.DEPTNO heading "编号"
desc 描述 describe
格式化输出 col scott.dept.dname format a10 heading "部门名称"
具体用法? col
如果退出来这些标签就没有用了 只在当前的会话才起作用
对于数值类型的
col deptno format 999,999,999
这些操作不能跨越用户来执行比如a用户不能对b用户里面的表字段标签进行修改
报表 的输出
set linesize 50
ttitle center "我的报表" skip1- //另起一行
left "测试报表" right "页" -
format 999 sql.pno skip 2
可以用ttitle off 就清除了以上的格式
重要工具 cumpute break
break on pub
cump count label "计数" of deptno
保存结果集:
先执行这个语句 spool f:/oracle/dept.txt;
再执行查询操作select * from scott.dept d;
最后执行spool off
上面在执行spool off 之前 所有的操作在cmd里面显示的东西都会保存到f:/oracle/dept.txt;文件中
如果没有调用 spool off 就exit 那么oracle会自动的保存