子分类
  • 无子分类
Oracle自带的常用工具及维护命令
  • 2018-10-25发布
  • 2018-10-25修改

常规:

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 tablespacetemp 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';