首页 » Oracle » oracle常用命令

oracle常用命令

 
文章目录

oracle常用命令

启动em(Oracle Enterprise Manager Database Control)

su – oracle && emctl status dbconsole #查看状态 emctl start dbconsole #启动em

启动之后的端口是:1158 访问方式:http://ip:1158/em,如果不行的话,添加https://ip:1158/em
输入用户:sys,身份选择:sysdba

instance与database的区别

实例:就是oracle后台的一组进程和线程及共享内存,在任何时刻,一个实例只能与一个数据库关联,反过来,也是成立的,一个数据库上只有一个实例对其进行操作,不过,RAC集群除外。,事例就是装载并打开数据库,实例一生只能装载并打开一个数据库。https://site.douban.com/269412/widget/notes/191371149/note/544876449/

数据库:物理操作系统文件(包括数据文件,临时文件,重做日志文件和控制文件)或磁盘的集合,大多数情况下是数据库与事例是一对一的关系。

ORACLE_SID:操作系统环境变量

启动

lnsrctl start #启动监控 dbstart $ORACLE_HOME #命令在安装产品下的bin目录下,如果有多个数据库,会都启动了。 emctl start dbconsole #启动控制台

第二种启动数据库的方法:
sqlplus /nolog connect / as sysdba startup
区别:

1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库
启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
2、startup mount dbname
安装启动,这种方式启动下可执行:数据库日志归档、数据库恢复、重新命名一些数据库文件
如:系统表空间或日志文件。 执行“nomount”,然后打开控制文件
3、startup open dbname
先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件, 这种方式下可访问数据库中的数据。
4、startup,等于以下三个命令
startup nomount
alter database mount
alter database open
5、startup restrict
约束方式启动 这种方式能够启动数据库,但只允许具有一定特权的用户访问
非特权用户访问时,会出现以下提示:
ERROR:
ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用
6、startup force
强制启动方式
当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令
7、startup pfile=参数文件名
带初始化参数文件的启动方式
先读取参数文件,再按参数文件中的设置启动数据库 例:startup pfile=E:\Oracle\admin\oradb\pfile\init.ora 8、startup EXCLUSIVE

几种关闭数据库方式:
shutdown
参数 :
1.Normal 需要等待所有的用户断开连接
2.Immediate 等待用户完成当前的语句后马上关闭数据库
3.Transactional 等待用户完成当前的事务
4.Abort 不做任何等待,直接关闭数据库
5.normal 需要在所有连接用户断开后才执行关闭数据库任务

数据库和监听状态查询

  1. 首先可以查看进程,ps -ef |grep oracle,如果只能看到5个左右,说明数据库没有启动,如果启动了,只少能看到10个,而且还能看到orcl相关的进程名。
  2. 数据库状态查询首先进入到sql命令行,用以下命令进行测试:select open_mode from v$database;如果返回READ WRITE说明已经启动了。
  3. 如果用sqlplus /nolog;之后输入 coonect / as sysdba,如果弹出 connected to an idle instance说明数据库没有启动。
  4. 监听状态查询:lsnrctl status就可以进行查看了。lsnrctl start/stop启动和停止。

sqlplus命令登录方式

  1. sqlplus “/as sysdba” #以操作系统权限认证的Oracle sys管理员登录。
  2. sqlplus /nolog #不在cmd或者terminal当中暴露密码的登录方式。然后在输入conn /as sysdbaconn sys/password as sysdba
  3. sqlplus scott/tiger #非管理员用户登录
  4. sqlplus scott/tiger@orcl #非管理员用户使用tns别名登录
  5. sqlplus sys/password@orcl as sysdba #管理员用户使用tns别名登录
  6. sqlplus #不显示密码登录方式
    Enter user-name:sys
    Enter password:password as sysdba #以sys用户登陆的话 必须要加上 as sysdba 子句
  7. 如果你系统中有两个数据库,你想连其中一个:sqlplus /nolog 然后:connect sys@service_name as sysdba

常用的错误:

监听启动报以下错

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 09-MAR-2017 14:35:46

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Starting /data/oracle/product/11.2.0/db_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
Log messages written to /data/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
TNS-12533: TNS:illegal ADDRESS parameters
 TNS-12560: TNS:protocol adapter error
  TNS-00503: Illegal ADDRESS parameters


Listener failed to start. See the error message(s) above...

[oracle@oracle ~]$ less /data/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
日志内容是:

 TNS-12533: TNS:illegal ADDRESS parameters
 TNS-12560: TNS:protocol adapter error
  TNS-00503: Illegal ADDRESS parameters

解决方法:可以先查看状态,lsnrctl status,发现是hosts问题引起的,可以先关闭防火墙。
在/etc/hosts增加主机名的解析:echo “192.168.1.* hostname “>>/etc/hosts就要以了。

启动数据库时报无法打开initorcl.ora文件

在启动Oracle数据库时报错,如下:
[oracle@oracle ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Thu Mar 9 17:51:05 2017

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/data/oracle/product/11.2.0/db_1/dbs/initorcl.ora'
SQL>
原因分析:

这是因为在oracle10g和oracle11g中,数据库默认将使用spfile启动数据库,如果spfile不存在,则就会出现上述错误。

解决一:

用find /u01 -name pfile命令查找pfile文件的位置,/u01/app/oracle/admin/orcl/pfile/ 将$ORACLEBASE/admin/orcl/pfile目录下的init.ora.2212013132036形式的文件copy 到$ORACLEHOME/dbs目录下命名为initorcl.ora即可。 (注:initorcl.ora中的orcl为你的实例名 ORACLE_SID,这里我的SID为:center)

方法二:

将$ORACLE_HOME/dbs目录下spflieorcl.ora改名为spfilecenter.ora即可。(注:spfilecenter.ora中的center为环境变量中设置的SID,我的是center)

方法三:

拷贝pfile文件下的init.ora.61420130339到dbs下,并重命名成init+实例名.ora即可 {{{ [oracle@localhost oracle]$ find /u01 -name pfile /u01/app/admin/orcl/pfile [oracle@localhost oracle]$ cd /u01/app/admin/orcl/pfile [oracle@localhost pfile]$ ls init.ora.61420130339 [oracle@localhost pfile]$ cp init.ora.61420130339 /u01/app/oracle/dbs/initdevdb.ora }}}

查看一些信息的常用命令

  1. 查询当前数据库名:select name from v$database;或show parameter db_name;或查看参数文件,show parameter db会把db开头的相关参数都列出来。
  2. 查询数据库事例名:select instance_name from v$instance;或show parameter instance
  3. 查询数据库域名:select value from v$parameter where name='db_name';或show parameter domain
  4. 查询数据库服务名:select value from v$parameter where name='service_name';或show parameter service_names;
  5. 查询数据库版本:select * from v$version; 或 select banner from sys.v_$version;
  6. 查询用户和默认表空间的关系:select username,default_tablespace from dba_users;
  7. 查询当前用户所有表:select table_name from user_tables;
  8. 查询所有用户的表名(包括系统表):select table_name from all_tables;
  9. 查询用户:select * from all_users;或select * from dba_users;
  10. 查询当前用户连接:select * from v$session;
  11. 查询用户权限:select * from session_privs;

创建表空间并创建管理表空间及用户

Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们一般都还要创建自己的数据库,创建完数据库之后,并不能立即在数据库中建表,必须先创建该数据库的用户,并为该用户指定表空间。
一般流程是:先创建数据库,然后创建表空间,包括临时空间,再创建用户并制定表空间,在创建用户并授权,最后可以通过命令在此表空间上创建表了。

创建临时表空间

创建用户之前要创建”临时表空间”,若不创建则默认的临时表空间为temp。建议最好不要用系统自带的临时时表空间temp,容易出问题。

create temporary tablespace clctest_temp tempfile '/data/oracle/oradata/clc/clctest_temp.dbf'  size 32m  autoextend on next 32m maxsize unlimited;

创建表空间

创建用户之前先要创建数据表空间,若没有创建则默认永久性表空间是system。

create tablespace clctest logging datafile '/data/oracle/oradata/clc/clctest.dbf' size 32m autoextend on next 32m maxsize unlimited extent management local;

其中clctest_temp和clctest是自定义的数据表空间名称和临时表空间名称,可以任意取名,/data/oracle/oradata/clc是数据文件的存放位置,’size 32M’是指定该数据文件的大小,也就是表空间的大小,扩展最大为无限制,也可以指定一个值,如2048M。如果是指定多个数据文件的话,在目录之间加逗号。

创建用户

创建用户的密码不用加任何东西,如双引号,单引号,加了还执行成功

create user clc identified by 123456 account unlock default tablespace clctest temporary tablespace clctest_temp;

给创建有用户授权,可以添加角色

grant connect,resource,dba to clc;

删除表空间和用户

删除用户

drop user ×× cascade
说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。

SQL code
–删除空的表空间,但是不包含物理文件
drop tablespace tablespacename;
–删除非空表空间,但是不包含物理文件
drop tablespace tablespace
name including contents;
–删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
–删除非空表空间,包含物理文件
drop tablespace tablespacename including contents and datafiles;
–如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace
name including contents and datafiles CASCADE CONSTRAINT

oracle数据备份与恢复

http://it4j.iteye.com/blog/2004375

 

原文链接:oracle常用命令,转载请注明来源!

0