Oracle 登录-用户操作

1、运行SQLPLUS工具

  C:\Users\wd-pc>sqlplus

2、直接进入SQLPLUS命令提示符

  C:\Users\wd-pc>sqlplus /nolog

3、以OS身份连接 

  C:\Users\wd-pc>sqlplus / as sysdba   或

  SQL>connect / as sysdba

4、普通用户登录

  C:\Users\wd-pc>sqlplus scott/123456  或

  SQL>connect scott/123456  或

  SQL>connect scott/123456@servername

5、以管理员登录

  C:\Users\wd-pc>sqlplus sys/123456 as sysdba 或

  SQL>connect sys/123456 as sysdba

6、切换用户

  SQL>conn hr/123456 

  注:conn同connect

 7、退出

  exit

一、Oracle数据库几种启动方式

1、startup nomount

  非安装启动,这种方式下启动可执行:重建控制文件、重建数据库,读取init.ora文件,启动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

  独占和共享启动

 

二、Oracle三种关闭方式

1、shutdown normal
  正常方式关闭数据库

2、shutdown immediate

  立即方式关闭数据库,在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),当使用

  shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。

3、shutdown abort

  直接关闭数据库,正在访问数据库的会话会被突然终止,如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。

 


 

三、详解

  Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将具体介绍这些启动和关闭方式之间的区别以及它们各自不同的功能。

  一、启动和关闭Oracle数据库

    对于大多数Oracle DBA来说,启动和关闭Oracle数据库最常用的方式就是在命令行方式下的Server Manager。从Oracle 8i以后,系统将Server Manager的所有功能都

  集中到了SQL*Plus中,也就是说从8i以后对于数据库的启动和关闭可以直接通过SQL*Plus来完成,而不再另外需要Server Manager,但系统为了保持向下兼容,依旧保留了

  Server Manager工具。另外也可通过图形用户工具(GUI)的Oracle Enterprise Manager来完成系统的启动和关闭,图形用户界面Instance Manager非常简单,这里不再

  详述。要启动和关闭数据库,必须要以具有Oracle 治理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆。一般我们常用INTERNAL用户来启动和关闭数据库

  (INTERNAL用户实际上是SYS用户以SYSDBA连接的同义词)。Oracle数据库的新版本将逐步淘汰INTERNAL这个内部用户,所以我们最好还是设置DBA用户具有SYSDBA

  权限。

  二、数据库的启动(STARTUP)

  启动一个数据库需要三个步骤:

  1、 创建一个Oracle实例(非安装阶段)

  2、 由实例安装数据库(安装阶段)

  3、 打开数据库(打开阶段) 

  在Startup命令中,可以通过不同的选项来控制数据库的不同启动步骤。

  1、STARTUP NOMOUNT

  NONOUNT选项仅仅创建一个Oracle实例。读取init.ora初始化参数文件、启动后台进程、初始化系统全局区(SGA)。Init.ora 文件定义了实例的配置,包括内存结构的大小

  和启动后台进程的数量和类型等。实例名根据Oracle_SID设置,不一定要与打开的数据库名称相同。当实例打开后,系统将显示一个SGA内存结构和大小的列表,如下所示:

  SQL> startup nomount
    ORACLE 例程已经启动。
    Total System Global Area 35431692 bytes
    Fixed Size 70924 bytes
    Variable Size 18505728 bytes
    Database Buffers 16777216 bytes
    Redo Buffers 77824 bytes

  2、STARTUP MOUNT

  该命令创建实例并且安装数据库,但没有打开数据库。Oracle系统读取控制文件中关于数据文件和重作日志文件的内容,但并不打开该文件。这种打开方式常在数据库维护操

  作中使用,如对数据文件的更名、改变重作日志以及打开归档方式等。在这种打开方式下,除了可以看到SGA系统列表以外,系统还会给出\"数据库装载完毕\"的提示。

  3、STARTUP

  该命令完成创建实例、安装实例和打开数据库的所有三个步骤。此时数据库使数据文件和重作日志文件在线,通常还会请求一个或者是多个回滚段。这时系统除了可以看到前

  面Startup Mount方式下的所有提示外,还会给出一个\"数据库已经打开\"的提示。此时,数据库系统处于正常工作状态,可以接受用户请求。假如采用STARTUP NOMOUNT

  或者是STARTUP MOUNT的数据库打开命令方式,必须采用ALTER DATABASE命令来执行打开数据库的操作。例如,假如你以STARTUP NOMOUNT方式打开数据库,也就

  是说实例已经创建,但是数据库没有安装和打开。这是必须运行下面的两条命令,数据库才能正确启动。

    ALTER DATABASE MOUNT;
    ALTER DATABASE OPEN;

  而假如以STARTUP MOUNT方式启动数据库,只需要运行下面一条命令即可以打开数据库:

  ALTER DATABASE OPEN.

  4、其他打开方式

  除了前面介绍的三种数据库打开方式选项外,还有另外其他的一些选项。

  (1) STARTUP RESTRICT

  这种方式下,数据库将被成功打开,但仅仅答应一些特权用户(具有DBA角色的用户)才可以使用数据库。这种方式常用来对数据库进行维护,如数据的导入/导出操作时不希

  望有其他用户连接到数据库操作数据。

  (2) STARTUP FORCE

  该命令其实是强行关闭数据库(shutdown abort)和启动数据库(startup)两条命令的一个综合。该命令仅在关闭数据库碰到问题不能关闭数据库时采用。

  (3) ALTER DATABASE OPEN READ ONLY;

  该命令在创建实例以及安装数据库后,以只读方式打开数据库。对于那些仅仅提供查询功能的产品数据库可以采用这种方式打开。

1、显示当前用户名 
  select user from dual;
  show user

2、显示当然用户有哪些表 
  select * from tab;

3、显示当所有用户的表 
  select * from user_tables;

4、显示当有用户可以访问表 
  select * from all_tables;

5、显示用户为SCOTT的表 
  select * from dba_tables where owner='SCOTT';

6、显示所有用户名和帐户的状态 
  select username,account_status from dba_users;

7、显示所有用户信息 
  select * from dba_users;

8、将SCOTT帐号解锁(加锁) 
  alter user scott account unlock(lock);

9、当前用户的缺省表空间 
  SELECT DEFAULT_TABLESPACE FROM DBA_USERS WHERE USERNAME=(select user from dual);

10、显示当前数据库的用户 
  SELECT USERNAME,ACCOUNT_STATUS,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM DBA_USERS;

11、建立一个新用户 
  create user edpthw identified by "123456" 
  default tablespace users 
  temporary tablespace temp 
  quota unlimited on users 
  quota 10m on mytbs2;

12、给用户授权 
  grant connect,resource to edpthw;

13、分别授权 
  GRANT CREATE ANY TABLE TO "hmtong" 
  GRANT CREATE TABLE TO "hmtong" 
  GRANT DROP ANY TABLE TO "hmtong" 
  GRANT SELECT ANY TABLE TO "hmtong"

14、对象授权 
  GRANT SELECT ON "hmtong"."A" TO "edpthw"

15、折消授权 
  REVOKE UNLIMITED TABLESPACE FROM "hmtong"

16、折消对象授权 
  REVOKE SELECT ON "hmtong"."A" FROM "edpthw"

17、用户改密码 

  alter user edpthw identified by edpthw;

18、授权sysdba给指定用户 
  grant sysdba to hmtong;

19、取消指定用户的sysdba权限 
  revoke sysdba from hmtong;

20、修改系统的授权的属性 
  alter system set remote_login_passwordfile=exclusive;

  能sysdba登录,能授权 
  alter system set remote_login_passwordfile=shared scope=spfile; 只能sysdba登录,不能授权 
  alter system set remote_login_passwordfile=NONE; 取消

21、授权连接给指定用户 
  GRANT "CONNECT" TO "hmtong"; GRANT UNLIMITED TABLESPACE,CONNECT,RESOURCE TO HMTONG;

22、查询Pwfile中存放的用户信息 
  select * from v$pwfile_users;

v$lock:视图列出当前系统持有的或正在申请的所有锁的情况

v$locked_object:视图列出当前系统中哪些对象正被锁定

1)、查询当前数据库锁的情况,以及导致锁的sql语句:

1
2
3
Select  object_name  as  对象名称,s.sid,s.serial#,p.spid  as  系统进程号,sq.SQL_TEXT
From  v$locked_object l , dba_objects o , v$session s , v$process p,v$sqlarea sq
Where  l.object_id=o.object_id  and  l.session_id=s.sid  and  s.paddr=p.addr  and  s.SQL_ADDRESS = sq.ADDRESS;

2)、杀掉非正常的一些锁

1
alter  system kill session  'sid,serial#' ;

3)、批量杀掉未释放的锁

1
2
3
4
5
6
7
8
9
10
11
12
13
declare  cursor  mycur  is 
select  b.sid,b.serial# 
   from  v$locked_object a,v$session b 
   where  a.session_id = b.sid  group  by  b.sid,b.serial#; 
   
   
begin 
   for  cur  in  mycur 
     loop   
      execute  immediate (  'alter system  kill session  ' '' ||cur.sid ||  ',' || cur.SERIAL# || '' ' ' ); 
      end  loop; 
   
end

  


Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326122252&siteId=291194637