oracle在sqlplus命令行下,执行完数据库操作以后,需要跟上commit才能生效。
主要监听两个端口,1521是数据库连接端口,8080是服务器端口
oracle默认安装完毕,会自带一个http服务器,以web的形式提供用户管理界面,该服务器端口8080与tomcat的默认端口一样,是导 致tomcat启动不了的常见原因,我一般是修改tomcat的配置文件server.xml,把http1.1的端口改成8081。
系统维护:
登录
sqlplus username/password@ip:1521/orcl [as sysdba,sysoper]
如果数据库就是本机,则不用启动其他服务,如果数据库服务器是远程的,远程主机必须同时启动OracleOraDb10g_home1TNSListener监听服务。并且要在启动数据库之前,如果数据库已经启动,先关闭数据库,打开监听,在启动数据库。
不写地址默认是localhost 不写身份默认是sysoper
Oracle最需要注意的是两个服务,一个是数据库自身,一个是监听器
查询监听器: lsnrctl status--在cmd下而不是sqlplus下
启动监听器: lsnrctl start--在cmd下而不是sqlplus下
停止监听器: lsnrctl stop--在cmd下而不是sqlplus下
启动数据库: startup--在sqlplus下
停止数据库: shutdown immediate--在sqlplus下
查询sid
select instance_name from v$instance
查询数据库版本
Select version FROM Product_component_version Where SUBSTR(PRODUCT,1,6)='Oracle';
查询字符集
Select parameter,value from nls_database_parameters where parameter like 'NLS_CHARACTERSET';
创建用户
create user weinianjie identified by "123" default tablespace sheep temporary tablespace temp profile default;
grant resource,connect,dba to weinianjie;
查询当前用户
show user;
导出某用户的所有数据
cmd下exp user/password owner=user file="c:\aa.dmp"
导出某张表
cmd下exp user/password owner=user tables=(t1,t2) file="c:\aa.dmp"
导入dmp文件:
cmd下imp userid=用户名/密码@orcl file=d:\nc60.dmp full=y
spool c:\s.txt
select * from mytable;
spool off
执行sql脚本
@aa.sql;
解释:
百度百科原话:
“ORACLE数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构。一个ORACLE数据库能够有一个或多个Oracle,而一 个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时 段等。
每个ORACLE数据库均有SYSTEM表空间,这是数据库创建时自动创建的。SYSTEM表空间必须总要保持联机,因为其 包含着数据库运行所要求的基本信息(关于整个数据库的数据字典、联机求助机制、所有回退段、临时段和自举段、所有的用户数据库实体、其它ORACLE软件 产品要求的表)。”
我的理解,表空间跟库的概念差不多,一个表空间对应一个或者多个物理文件,每个用户属于一个或多个表空间,其中有一个是默认的。连接数据库的时候不需要制定表空间,用户创建的对象会在用户默认的表空间里存放着。
命名空间定义了一组对象类型,在命名空间里,对象的名字必须是唯一的,当然,在不同的命名空间里,是可以使
用相同的的名字的。
下面的对象类型共享同一个命名空间:
? Tables
? Views
? Sequences
? Private synonyms
? Stand-alone procedures
? Stand-alone stored functions
? Packages
? Materialized views
? User-defined types
创建、查询和修改:
数据库文件查询select * from sys.dba_data_files;
数据表空间
create tablespace sheep datafile 'c:/sheep.dbf' size 20m autoextend on;
临时表空间
create temporary tablespace sheep tempfile 'c:/sheep.dbf' size 20m autoextend on;
查询空间:
select tablespace_name from dba_tablespaces;
select tablespace_name from user_tablespaces;
查询表空间的物理情况:
select * from dba_data_files where tablespace_name='SYSTEM';--这里一定要是全大写的,哪怕你建
空间的时候没有使用大写
select * from dba_temp_files where tablespace_name='TEMP';--这里一定要是全大写的,哪怕你建空
间的时候没有使用大写
查询表空间内的表:
删除:select table_name from dba_all_tables where tablespace_name='USERS';
查询表结构,不显示主键外键信息
desc mytable;
查询表主键和外键等
select a.constraint_name, a.column_name
from user_cons_columns a, user_constraints b
where a.constraint_name = b.constraint_name
and (b.constraint_type = 'P' or b.constraint_type = 'U')
and a.table_name = 'AA'-------大写重命名字段
alter table t rename column t1 to t2;
重命名表
alter table old_table rename to new_table;
命令行下更新date类型字段(date_field=‘2011-10-05’,这样的语法在mysql可以,在oracle就不行了),正确的如下
update mytable set date_field=to_date('20111005','yyyymmdd');
删除主键:
alter table mytab drop primary key;
删除唯一键:alter table mytab drop unique(mycolumn);
查询当前用户空间的所有表和视图:
select tname from tab
查询当前用户空间的所有表:
select table_name from user_tables;
查询当前用户空间的所有视图:
select view_name from user_views;
查询视图创建语句:
select text from all_views where view_name='xxx';