primary key关键字建立同名的primary key constraint和unique index,表的每个域都有自身的constraint。
相关系统表:
user_tables(tabs),dba_tables #表属性
user_tab_columns(cols),dba_tab_columns #表各列属性
索引(index)
create index emp_x01 on emp(name) storage(initial 10M next 10M pctincrease 0 maxextents 5000) pctfree 10 tablespace tbs_index;
可参照表对storage的处理方式。
create index emp_x01 on emp(name) pctfree 10 tablespace tbs_index;
相关系统表:
user_indexes(ind),dba_indexes #索引属性
user_ind_columns,dba_ind_columns #索引各列属性,以index_position为顺序
序列(sequence)
create sequence emp_seq increment by 1 start with 1 nomaxvalue nocycle;
相关系统表:
user(dba)_sequences(seq) 序列属性
视图(view)
create emp_depart_view as select emp.name,emp_duty.name from emp,emp_duty where emp.duty=emp_duty.duty;
相关系统表:
user(dba)_views 视图属性
Oracle将view,sequence,用户参数等定义均存放于系统表空间,而用户创建的表空间仅存放table,index实体,因此可以大胆删除用户表空间,再用备份重新恢复,不必担心view,sequence等会被一并删去。
2.1.10 创建只读用户
假定数据库用户dbbrsr需要对dbuser的表emp拥有select权力
connect dbuser
grant select on emp to dbbrsr
connect dbbrsr
create synonym emp for dbuser.emp;
这样,dbbrsr就能象使用自己的表一样对dbuser的表执行select操作
2.1.11 启动及关闭数据库实例
oracle用户,dbstart和dbshut启动及关闭/var/opt/oracle/oratab或/etc/oratab中设定的数据库实例,dbstart采用normal方式,dbshut采用immediate方式。
或者使用手工方式
sqlplus "/ as sysdba"
启动
normal
SQL>;startup
mount
SQL>;startup mount; #启动实例进程,载入数据库文件,允许DBA权限的某些操作,但禁止对数据库文件的一般性操作
SQL>;完成某些操作
SQL>;alter database open;
nomount
SQL>;startup nomount; #启动实例进程,但不允许访问数据库,常用于创建数据库、介质恢复或创建controlfile
SQL>;完成某些操作
SQL>;alter database open;
关闭
normal
SQL>;shutdown或SQL>;shutdown transactional; #等待每个连接交易完成后,切断连接,再关闭数据库
immediate
SQL>;shutdown immediate; #立刻中止每个连接,交易回滚
abort
SQL>;shutdown abort; #立刻关闭数据库,不保证交易完整性,在下一次启动打开数据库文件时会进行介质恢复
2.1.12 网络配置
假定某一台机器为client,ORACLE_SID为oraclient,数据库用户为dbclient;另一台机器为server, ORACLE_SID为oraserver,数据库用户为dbserver在server上$ ORACLE_HOME/dbs/initoraserver.ora中有以下设定:
db_name = oraserver
instance_name = oraserver
Oracle 8i
service_names=oraserver
2.1.12.1 TNS
Client端配置
修改$ORACLE_HOME/network/admin/tnsnames.ora,增加一条PROTOCOL=TCP的记录。
Oracle8
db_server
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= server)(Port= 1521))
(CONNECT_DATA = (SID = oraserver))
)
Oracle8i
db_server
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(HOST= server)(PORT= 1521))
(CONNECT_DATA = (SERVICE_NAME=oraserver
)
HOST可在/etc/hosts或DNS中配置,或直接写上IP地址
sqlplus dbserver/passwd@db_server
Server端配置
修改$ORACLE_HOME/network/admin/listener.ora
在LISTENER中增加ADDRESS的记录
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
(ADDRESS = (PROTOCOL = TCP)(HOST = server)(PORT = 1521))
)
)
)
在SID_LIST_LISTENER中增加SID_DESC记录
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/app/oracle/product/8.1.5)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = oraserver)
(ORACLE_HOME = /opt/oracle/app/oracle/product/8.1.7)
(SID_NAME = oraserver)
)
)
HOST可在/etc/hosts或DNS中配置,或直接写上IP地址
注意:LISTENER和SID_LIST_LISTENER是成对出现的,可配置多个监听服务进程和相应的SID_LIST,如LISTENER_1和SID_LIST_LISTENER_1
2.1.12.2 DB Link
如果client的instance需要在访问本地数据对象同时访问server中的数据对象,可在instance中创建对server的数据库连接,实现间接访问
在tnsnames.ora中建立"db_server"配置
sqlplus dbclient/passwd1
SQL>;create database link server_link connect to dbserver identified by passwd using 'db_server';
使用emp@server_link访问server上的emp,如同访问本地instance中的数据对象一样。为了更方便的使用,可建立synonym
2.2 Oracle 9i
Oracle 9i 相较于Oracle 8&8i,在兼容Oracle 8&8i的基础上,回滚和临时表空间配置发生比较大的变化,导致建库操作出现一些不同。在数据库配置文件initoradb.ora中有关于回滚表空间的选项,详细情况在"数据库配置"中解释。而且Oracle 9i简化了表空间的创建。所以此小节主要描述Oracle 9i相对于Oracle 8i的差异,其它相同的操作可参考Oracle 8i。
2.2.1 手工创建
由于在Oracle 9i中工具dbassist的使用方法与在Oracle 8i中类似,因此工具建库过程省略,只记录手工建库过程
Oracle 9i中的建库过程已经变得极为简洁,大致如下:
create database ${ORACLE_SID}
user sys identified by sys
user system identified by system
logfile group 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') size 10M,
group 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') size 10M,
group 3 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log') size 10M
maxlogfiles 5
maxlogmembers 5[@more@]
相关系统表:
user_tables(tabs),dba_tables #表属性
user_tab_columns(cols),dba_tab_columns #表各列属性
索引(index)
create index emp_x01 on emp(name) storage(initial 10M next 10M pctincrease 0 maxextents 5000) pctfree 10 tablespace tbs_index;
可参照表对storage的处理方式。
create index emp_x01 on emp(name) pctfree 10 tablespace tbs_index;
相关系统表:
user_indexes(ind),dba_indexes #索引属性
user_ind_columns,dba_ind_columns #索引各列属性,以index_position为顺序
序列(sequence)
create sequence emp_seq increment by 1 start with 1 nomaxvalue nocycle;
相关系统表:
user(dba)_sequences(seq) 序列属性
视图(view)
create emp_depart_view as select emp.name,emp_duty.name from emp,emp_duty where emp.duty=emp_duty.duty;
相关系统表:
user(dba)_views 视图属性
Oracle将view,sequence,用户参数等定义均存放于系统表空间,而用户创建的表空间仅存放table,index实体,因此可以大胆删除用户表空间,再用备份重新恢复,不必担心view,sequence等会被一并删去。
2.1.10 创建只读用户
假定数据库用户dbbrsr需要对dbuser的表emp拥有select权力
connect dbuser
grant select on emp to dbbrsr
connect dbbrsr
create synonym emp for dbuser.emp;
这样,dbbrsr就能象使用自己的表一样对dbuser的表执行select操作
2.1.11 启动及关闭数据库实例
oracle用户,dbstart和dbshut启动及关闭/var/opt/oracle/oratab或/etc/oratab中设定的数据库实例,dbstart采用normal方式,dbshut采用immediate方式。
或者使用手工方式
sqlplus "/ as sysdba"
启动
normal
SQL>;startup
mount
SQL>;startup mount; #启动实例进程,载入数据库文件,允许DBA权限的某些操作,但禁止对数据库文件的一般性操作
SQL>;完成某些操作
SQL>;alter database open;
nomount
SQL>;startup nomount; #启动实例进程,但不允许访问数据库,常用于创建数据库、介质恢复或创建controlfile
SQL>;完成某些操作
SQL>;alter database open;
关闭
normal
SQL>;shutdown或SQL>;shutdown transactional; #等待每个连接交易完成后,切断连接,再关闭数据库
immediate
SQL>;shutdown immediate; #立刻中止每个连接,交易回滚
abort
SQL>;shutdown abort; #立刻关闭数据库,不保证交易完整性,在下一次启动打开数据库文件时会进行介质恢复
2.1.12 网络配置
假定某一台机器为client,ORACLE_SID为oraclient,数据库用户为dbclient;另一台机器为server, ORACLE_SID为oraserver,数据库用户为dbserver在server上$ ORACLE_HOME/dbs/initoraserver.ora中有以下设定:
db_name = oraserver
instance_name = oraserver
Oracle 8i
service_names=oraserver
2.1.12.1 TNS
Client端配置
修改$ORACLE_HOME/network/admin/tnsnames.ora,增加一条PROTOCOL=TCP的记录。
Oracle8
db_server
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= server)(Port= 1521))
(CONNECT_DATA = (SID = oraserver))
)
Oracle8i
db_server
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(HOST= server)(PORT= 1521))
(CONNECT_DATA = (SERVICE_NAME=oraserver
)
HOST可在/etc/hosts或DNS中配置,或直接写上IP地址
sqlplus dbserver/passwd@db_server
Server端配置
修改$ORACLE_HOME/network/admin/listener.ora
在LISTENER中增加ADDRESS的记录
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
(ADDRESS = (PROTOCOL = TCP)(HOST = server)(PORT = 1521))
)
)
)
在SID_LIST_LISTENER中增加SID_DESC记录
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/app/oracle/product/8.1.5)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = oraserver)
(ORACLE_HOME = /opt/oracle/app/oracle/product/8.1.7)
(SID_NAME = oraserver)
)
)
HOST可在/etc/hosts或DNS中配置,或直接写上IP地址
注意:LISTENER和SID_LIST_LISTENER是成对出现的,可配置多个监听服务进程和相应的SID_LIST,如LISTENER_1和SID_LIST_LISTENER_1
2.1.12.2 DB Link
如果client的instance需要在访问本地数据对象同时访问server中的数据对象,可在instance中创建对server的数据库连接,实现间接访问
在tnsnames.ora中建立"db_server"配置
sqlplus dbclient/passwd1
SQL>;create database link server_link connect to dbserver identified by passwd using 'db_server';
使用emp@server_link访问server上的emp,如同访问本地instance中的数据对象一样。为了更方便的使用,可建立synonym
2.2 Oracle 9i
Oracle 9i 相较于Oracle 8&8i,在兼容Oracle 8&8i的基础上,回滚和临时表空间配置发生比较大的变化,导致建库操作出现一些不同。在数据库配置文件initoradb.ora中有关于回滚表空间的选项,详细情况在"数据库配置"中解释。而且Oracle 9i简化了表空间的创建。所以此小节主要描述Oracle 9i相对于Oracle 8i的差异,其它相同的操作可参考Oracle 8i。
2.2.1 手工创建
由于在Oracle 9i中工具dbassist的使用方法与在Oracle 8i中类似,因此工具建库过程省略,只记录手工建库过程
Oracle 9i中的建库过程已经变得极为简洁,大致如下:
create database ${ORACLE_SID}
user sys identified by sys
user system identified by system
logfile group 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') size 10M,
group 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') size 10M,
group 3 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log') size 10M
maxlogfiles 5
maxlogmembers 5[@more@]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8227599/viewspace-933017/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8227599/viewspace-933017/