oracle8i 常用操作命令

来源:互联网 发布:快速磁盘碎片整理软件 编辑:程序博客网 时间:2024/05/12 00:07

 

1.       Oracle数据库的启动和关闭
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命令中,可以通过不同的选项来控制数据库的不同启动步骤。
  1STARTUP 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 
  2STARTUP MOUNT
  该命令创建实例并且安装数据库,但没有打开数据库。Oracle系统读取控制文件中关于数据文件和重作日志文件的内容,但并不打开该文件。这种打开方式常在数据库维护操作中使用,如对数据文件的更名、改变重作日志以及打开归档方式等。在这种打开方式下,除了可以看到SGA系统列表以外,系统还会给出"数据库装载完毕"的提示。
  3STARTUP
  该命令完成创建实例、安装实例和打开数据库的所有三个步骤。此时数据库使数据文件和重作日志文件在线,通常还会请求一个或者是多个回滚段。这时系统除了可以看到前面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;
  该命令在创建实例以及安装数据库后,以只读方式打开数据库。对于那些仅仅提供查询功能的产品数据库可以采用这种方式打开。

  三、数据库的关闭(SHUTDOWN
  对于数据库的关闭,有四种不同的关闭选项,下面对其进行一一介绍。
  1SHUTDOWN NORMAL
  这是数据库关闭SHUTDOWN命令的确省选项。也就是说如果你发出SHUTDOWN这样的命令,也即是SHUTDOWN NORNAL的意思。
  发出该命令后,任何新的连接都将再不允许连接到数据库。在数据库关闭之前,Oracle将等待目前连接的所有用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时不需要进行任何的实例恢复。但需要注意一点的是,采用这种方式,也许关闭一个数据库需要几天时间,也许更长。
  2SHUTDOWN IMMEDIATE
  这是我们常用的一种关闭数据库的方式,想很快地关闭数据库,但又想让数据库干净的关闭,常采用这种方式。
  当前正在被Oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚。如果系统中存在一个很长的未提交的事务,采用这种方式关闭数据库也需要一段时间(该事务回滚时间)。系统不等待连接到数据库的所有用户退出系统,强行回滚当前所有的活动事务,然后断开所有的连接用户。
  3SHUTDOWN TRANSACTIONAL
  该选项仅在Oracle 8i后才可以使用。该命令常用来计划关闭数据库,它使当前连接到系统且正在活动的事务执行完毕,运行该命令后,任何新的连接和事务都是不允许的。在所有活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的方式关闭数据库。
  4SHUTDOWN ABORT
  这是关闭数据库的最后一招,也是在没有任何办法关闭数据库的情况下才不得不采用的方式,一般不要采用。如果下列情况出现时可以考虑采用这种方式关闭数据库。
  1数据库处于一种非正常工作状态,不能用shutdown normal或者shutdown immediate这样的命令关闭数据库;
  2需要立即关闭数据库;
  3在启动数据库实例时遇到问题;
  所有正在运行的SQL语句都将立即中止。所有未提交的事务将不回滚。Oracle也不等待目前连接到数据库的用户退出系统。下一次启动数据库时需要实例恢复,因此,下一次启动可能比平时需要更多的时间。
  表1可以清楚地看到上述四种不同关闭数据库的区别和联系。
  1 Shutdown数据库不同方式对比表
关闭方式
A
I
T
N
允许新的连接
×
×
×
×
等待直到当前会话中止
×
×
×
等待直到当前事务中止
×
×
强制CheckPoint,关闭所有文件
×
  其中:A-Abort I-Immediate T-Transaction N-Nornal
2.       Oracle数据库的卸载
卸载干净oracle的方法如下:  
 先卸载oracle,再到注册表:  
 1HKEY_LOCAL_MACHINEsoftware里的oracle键值删除  
 2HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services里所有带有oracle的全部删除  
        HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services里所有带有oracle的全部删除  
        HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet里所有带有oracle的全部删除  
 3)删除c:/program   files里的oracle文件夹。  
 4)删除oracle根目录。
5)重启机器,ok了!
如果断网状态,这时监听服务可能无法启动,联网后就可以了。
3.       修改Oracle数据库的监听口令
oracle 的监听机制是外部应用程序连接oracle的入口。用oracle提供的lsnrctl 程序进行管理。一般很多人在管理oracle的时候,往往忽略对listener 的安全管理:监听在端口1521(默认端口)上的oracle tnslsnr未设置口令保护!
  oracle 的监听机制是外部应用程序连接oracle的入口。用oracle提供的lsnrctl 程序进行管理。一般很多人在管理oracle的时候,往往忽略对listener 的安全管理:监听在端口1521(默认端口)上的oracle tnslsnr未设置口令保护!
  这会存在这个安全隐患:远程的Oracle tnslsnr服务器没有被设置密码,一个攻击者可以利用这个问题随意关闭oracle tnslsnr服务器或者设置新的口令,这将影响合法用户的正常使用。攻击者也可以获取数据库的一些细节信息以发动进一步攻击。结合其他漏洞,攻击者甚至可以在目标系统上创建或者修改文件,进而入侵系统。
  这里对关于oracle监听模块密码安全设置的几个方法进行说明:
  1. 如何进行远程操作:
  在远程机器上修改listerner.ora 文件,增加对异地oracle服务器的配置,例如:

  ls_oratest =
  (DESCRIPTION_LIST =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
  )
  )
  这里的HOST = 192.168.1.10 即是指明远程的oracle服务器。如果默认的,oracle服务器上没有设置
  listener 的管理密码,则在远程机器上只要执行:
  lsnrctl stop ls_oratest
  即可停止192.168.1.10 服务器上的监听服务。
  2.如何修改密码:
  listener的密码策略对start无效,目的是防止恶意stop(start ,如果有在运行,则不成功,所以也就不需要保护了)
  lsnrctl >
  set current_listener listener_oratest <-- 设置当前监听器的配置名称
  Old password: <原来的口令> <-- 如果原来没有设置口令就直接回车,否则输入原来的口令
  New password: <新口令>
  Reenter new password: <新口令>

  Connecting to (ADDRESS=(PROTOCOL=ipc)(KEY=XXX))
  Password changed for listener_oratest
  The command completed successfully
<--这里设置或者修改了当前运行监听进程的密码,如果监听程序重启,则密码仍然为原来的密码。
  <--所以需要执行保存密码的过程
  set password
  Password: <输入新口令>
  save_config (此步重要,保存当前设置)
  exit
  说明:
  a.执行save_config 需要再执行一次 set password 提供新密码,是因为在lsnrctl 管理工具中,是通过 set password 命令来设置当前环境的密码。设置了正确的密码后,就可以执行一些重要的操作,如save_config, stop 等。
  b 设置密码后,密码记录在listerner.ora 文件中,
  比如:PASSWORDS_listener_oratest = AF15F0B512F2229A
  形式为:PASSWORDS_监听名称 = 密码密文。如果忘记密码,可以去掉该行,则密码为空。
  c.设置了密码后,远程机器如果需要stop监听的时候,则需要提供密码,否则操作失败。
  3.如何管理设置密码后的监听进程:
  a.如果是人工交互的操作,则只需在执行操作前面键入两个命令:
  lsnrct<
  set current_listener listener_oratest <-- 设置当前监听器的配置名称
  set password
  Password: <输入口令>
  stop
  b.如果是脚本自动执行,则需要提供密码的密文(isterner.ora 文件获得)

  #!/bin/sh
  lsnrctl << eof
  set current_listener listener_oratest
  set password AF15F0B512F2229A
  stop
  eof
  补充一下:以后如果进入的lsnrctl进行操作时,需要先set password 密码,以便连接到监听。
4.       修改Oracle数据库的System口令
sql>alter user SYSTEM identified by "密码"
当然其他默认账号sys/chang_on_install,internal,scott/tiger也同样可以修改
5.       Oracle Profile 使用详解[http://www.cnblogs.com/jacktu/archive/2007/03/13/672858.html]
6.       其他常用操作[http://www.hacker.com.cn/article/list.asp?id=3830]
1su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界面。
2
sqlplus /nolog sqlplus system/manager ./sqlplus system/manager@ora9i;
3
SQL>connect / as sysdba ;as sysoper)或
connect internal/oracle AS SYSDBA ;(scott/tiger)
conn sys/change_on_install as sysdba;
4
SQL>startup; 启动数据库实例
5
查看当前的所有数据库: select * from v$database;
select name from v$database;
desc v$databases;
查看数据库结构字段
7
、怎样查看哪些用户拥有SYSDBASYSOPER权限:
SQL>select * from V_$PWFILE_USERS;
Show user;
查看当前数据库连接用户
8
、进入test数据库:database test;
9
、查看所有的数据库实例:select * from v$instance
如:ora9i
10
、查看当前库的所有数据表:
SQL> select TABLE_NAME from all_tables;
select * from all_tables;
SQL> select table_name from all_tables where table_name like ‘
u’;
TABLE_NAME———————————————default_auditing_options
11
、查看表结构:desc all_tables;
12
、显示CQI.T_BBS_XUSER的所有字段结构:
desc CQI.T_BBS_XUSER;
13
、获得CQI.T_BBS_XUSER表中的记录:
select * from CQI.T_BBS_XUSER;
14
、增加数据库用户:(test11/test)
create user test11 identified by test default tablespace users Temporary TABLESPACE Temp;
15
、用户授权:
grant connect,resource,dba to test11;
grant sysdba to test11;
commit;
16
、更改数据库用户的密码:(syssystem的密码改为test.)
alter user sys indentified by test;
alter user system indentified by test;
原作者:脚本小子