Oracle+11g+笔记(4)-Oracle的基本操作
4、Oracle的基本操作
4.1 Oracle的启动和关闭
4.1.1 启动
启动数据库的语法如下:
STARTUP [NOMOUNT|MOUNT|OPEN|FORCE|RESTRICT|EXCLUSIVE][PFILE='pfile_name'];
1、startup nomount
非安装启动,这种方式下启动可执行:重建控制文件、重建数据库,读取init.ora
文件,启动instance
,即启
动SGA
和后台进程,这种启动只需要init.ora
文件。
SQL> conn sys/sysroot as sysdba
SQL> startup nomount;
2、startup mount
安装启动,这种方式启动下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重新定位数据文
件、重做日志文件。
执行nomount
,然后打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行
校验检查。
SQL> conn sys/sysroot as sysdba
SQL> startup mount;
3、startup open
先执行nomount
,然后执行mount
,再打开包括Redo log
文件在内的所有数据库文件,这种方式下可访问数据库
中的数据。
SQL> conn sys/sysroot as sysdba
SQL> startup open;
数据库有3种启动模式,分别代表启动数据库的3个步骤,如表所示。当数据库管理员使用STARTUP
命令时,可以
指定不同的选项来决定将数据库的启动推进到哪个启动模式。在进入某个模式后,可以使用ALTER DATABASE
命令
来将数据库提升到更高的启动模式,但不能使数据库降低到前面的启动模式。
4、startup
等于以下三个命令:
startup nomount
alter database mount
alter database open
5、startup restrict
约束方式启动,这种方式能够启动数据库,但只允许具有一定特权的用户访问,非特权用户访问时,会出现以下提
示:ERROR:ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用
。
SQL> conn sys/sysroot as sysdba
SQL> startup restrict;
6、startup force
强制Oracle数据库启动方式,当不能关闭数据库时,可以用startup force
来完成数据库的关闭,先关闭数据
库,再执行正常启动数据库命令。
SQL> conn sys/sysroot as sysdba
SQL> startup force;
7、startup pfile=参数文件名
带初始化参数文件的启动方式,先读取参数文件,再按参数文件中的设置启动数据库
例:startup pfile=E:\Oracle\admin\oradb\pfile\init.ora
。
8、startup EXCLUSIVE
独占和共享启动。这种启动方式只允许一个例程使用该数据库;共享启动的参数是shared
,表示允许多个例程并
行使用该数据库,即将数据库装入多个现场。
4.1.2 关闭
SQL*Plus
关闭数据库的语法如下:
SHUTDOWN [NORMAL|TRANSACTIONAL|IMMEDIATE|ABORT];
1、shutdown normal
正常方式关闭数据库。
2、shutdown immediate
立即方式关闭数据库,在SVRMGRL
中执行shutdown immediate
,数据库并不立即关闭,而是在Oracle
执行某些
清除工作后才关闭(终止会话、释放会话资源),当使用shutdown
不能关闭数据库时,shutdown immediate
可以
完成数据库关闭的操作。
3、shutdown abort
直接关闭数据库,正在访问数据库的会话会被突然终止,如果数据库中有大量操作正在执行,这时执行
shutdown abort
后,重新启动数据库需要很长时间。
4、shutdown transactional
TRANSACTIONAL
选项比NORMAL
选项稍微主动些,它能在尽可能短的时间内关闭数据库。按TRANSACTIONAL
选项
关闭数据库时,Oracle 将等待所有当前未提交的事务完成后再关闭数据库。
4.2 表的创建与改进
4.2.1 表与列的命名
-
长度必须在
1~30
个字节之间。 -
必须以一个字母开头。
-
能够包含字母、数值、下划线符号
_
、英镑符号#
和美元符号$
。 -
不能使用保留字,如CHAR 或是 NUMBER。
-
若名称被围在双引号
""
中,唯一的要求是名称的长度在1~30
个字符之间,并且不含有嵌入的双引号。 -
每个列名称在单个表内必须是唯一的。
4.2.2 列的类型
Oracle
数据表中列的数据类型和PL/SQL
中的数据类型基本相同,在一些细节上稍有差异。Oracle 数据表中列的
数据类型列举如下:
(1)、字符数据类型
CHAR[(<size>)[BYTE|CHAR])]
NCHAR[(<size>)]
VARCHAR2(<size>[BYTE|CHAR])
NVARCHAR2(<size>)
(2)、大对象数据类型
CLOB
NCLOB
BLOB
BFILE
(3)、数字数据类型
NUMBER[(<precision>[.<scale>])]
(4)、日期和时间数据类型
DATE
TIMESTAMP[(<precision>)]
TIMESTAMP[(<precision>)] WITH TIME ZONE
TIMESTAMP[(<precision>)] WITH LOCAL TIME ZONE
INTERVAL DAY[(<precision>)] TO SECOND
(5)、二进制数据类型
ROW(<size>)
LONG ROW
(6)、行数据类型
ROWID
UROWID
4.2.3 列的约束
在Oracle
中可以建立的约束条件包括NOT NULL
、UNIQUE
、CHECK
,PRIMARY KEY
、FOREIGN KEY
。
4.2.4 表的创建
用CREATE TABLE
命令创建表。
在Oracle
数据库中,CREATE TABLE
语句基本语法格式是:
CREATE [[GLOBAL] TEMPORORY|TABLE|schema.]table_name
(columnl datatype1[DEFAULT exp1][columnl constraint],
column2 datatype2[DEFAULT exp2][column2 constraint]
[table constraint])
[ON COMMIT(DELETE| PRESERVE}ROWS]
[ORGANIZITION{HEAP|INDEX|EXTERNAL...}]
[PARTITION BY...(...)]
[TABLESPACE tablespace_name]
[LOGGING|NOLOGGING]
[COMPRESSINOCOMPRESS];
其中:
-
columnl datatype1
为列指定数据类型。 -
DEFAULT exp1
为列指定默认值。 -
column1 constraint
为列定义完整性约束(constraint)。 -
[table constraint]
为表定义完整性约束(constraint)。 -
[ORGANIZITION{HEAP|INDEX|EXTERNAL...}]
为表的类型,如关系型(标准,按堆组织)、临时型、索引型、外部型或者对象型。
-
[PARTITION BY...(...)]
为分区及子分区信息。 -
[TABLESPACE tablespace name]
指示用于存储表或索引的表空间。 -
[LOGGING|NOLOGGING]
指示是否保留重做日志。 -
[COMPRESS|NOCOMPRESS]
指示是否压缩。
如果要在自己的方案中创建表,要求用户必须具有CREATE TABLE
系统权限。如果要在其他方案中创建表,则要求
用户必须具有CREATE ANY TABLE
系统权限。表的创建者必须在指定的表空间上具有空间配额或具有UNLIMITED
TABLESPACE
系统权限。
4.2.5 修改表结构
表在创建之后还允许对其进行更改,如添加或删除表中的列、修改表中的列,以及对表进行重新命名和重新组织
等。
普通用户只能对自己方案中的表进行更改,而具有ALTERANYTABLE
系统权限的用可以修改任何方案中的表。需要
对已经建立的表进行修