Oracle常见下令操作
1. 创建表空间、用户、给用户授权:
create tablespace temptusers datafile 'D:\oracle\product\10.2.0\
oradata\oracl\temptusers.dbf' size 1024m
create user e2qoa_v3 identified by "123456"
profile default
default tablespace users
temporary tablespace temptusers
account unlock
grant connect to e2qoa_v3
grant create session to e2qoa_v3
grant dba to e2qoa_v3
2. 命令行进入sqlplus并查看oracle版本:
sqlplus sys/sys as sysdba
SQL> select banner from sys.v_$version;
3. 查看当前登录的用户:
SQL>show user;
4. 查看所有管理员用户的状态:
SQL>select * from dba_users;
又如:SQL>select account_status from dba_users where username=’E2QOA_V3’;
5. 另外常见命令:
create user XXX identified by 密码;
alter user XXX default tablespace 表空间名 quota unlimited on 表空间名;
alter user XXX temporary tablespace temp;
grant create trigger to XXX ;
grant create session to XXX ;
grant create sequence to XXX ;
grant create synonym to XXX ;
grant create table to XXX ;
grant create view to XXX ;
grant create procedure to XXX ;
grant alter session to XXX ;
grant execute on ctxsys.ctx_ddl to XXX ;
grant dba to XXX ;
6. 查看某个表空间中包含的所有表的名称:
select table_name from dba_tables where tablespace_name='USERS'
或者:
SELECT * FROM DBA_SEGMENTS WHERE TABLESPACE_NAME='TABLESPACE_NAME' AND SEGMENT_TYPE='TABLE'
7. 关于sys用户和system用户的区别:
1)存储的数据重要性不同。所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动改动。sys用户拥有dba、sysdba、sysoper等角色和权限,是oracle权限最高的用户;而sys用户用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息,system用户拥有普通dba角色权限。
2)权限不同。system用户只能用normal身份登录em,除非你对它赋予了sysdba的系统权限或者sysoper系统权限;sys用户具有sysdba和sysoper 系统权限,登录em只能用这两个身份,而不能用normal。
8.以sys身份登录oracle查询具有sysdba权限的用户:
SQL> select * from v_$pwfile_users;
结果如下:
USERNAME SYSDBA SYSOPER
SYS TRUE TRUE
另外,system如果正常登录,它其实就是一个普通的dba用户,但是如果以as sysdba登录,其结果实际上它是作为sys用户登录的,这一点类似Linux里面的sudo的感觉,从登录信息里面我们可以看出来。因此在as sysdba连接数据库后,创建的对象实际上都是生成在sys中的。其他用户也是一样,如果 as sysdba登录,也是作为sys用户登录的,看以下实验:
SQL>
conn / as sysdba
已连接。
SQL>
grant sysoper to test;
授权成功。
SQL> conn test/test as sysoper;
已连接。
SQL> show user
USER 为"SYS"
SQL> conn test/test as sysdba
已连接。
SQL> show user
USER 为"SYS"
9. sysdba和sysoper两个系统权限区别:
我们知道normal是普通用户,而sysdba和sysoper是具有系统管理级别的权限,sysdba拥有最高的系统权限,登陆后是sys,sysoper主要用来启动、关闭数据库,sysoper 登陆后用户是public。
sysdba和sysoper具体的权限如下:
SYSOPER权限,即数据库操作员权限,权限包括:
打开数据库服务器 关闭数据库服务器
备份数据库 恢复数据库
日志归档 会话限制
SYSDBA权限,即数据库管理员权限,权限包括:
打开数据库服务器 关闭数据库服务器
备份数据库 恢复数据库
日志归档 会话限制
管理功能 创建数据库
10. dba和sysdba的区别:
dba、sysdba这两个系统角色有什么区别呢?在说明这一点之前我需要说一下oracle服务的创建过程和启动过程。
创建过程:
·创建实例→·启动实例→·创建数据库(system表空间是必须的)
启动过程:
·实例启动→·装载数据库→·打开数据库
sysdba是管理oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,他就已经存在,以sysdba身份登陆,装载数据库、打开数据库。只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础!
11. 关于oracle的导入导出
exp和imp命令导出导入过程中推荐使用system用户(具有普通dba权限),因为导出注意事项:导出的是当前用户的数据,当前用户如果有DBA的权限,则导出所有数据!
如下各例:
1).将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中:
exp system/manager@TEST file=d:\daochu.dmp full=y
2). 将数据库中system用户与sys用户的表导出:
exp system/manager@TEST file=d:\dao.dmp owner=(system,sys)
3). 将数据库中的表table1 、table2导出:
exp system/manager@TEST file=d:\da.dmp tables=(table1,table2)
4). 将数据库中的表table1中的字段filed1以"00"打头的数据导出:
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
5). 将D:\daochu.dmp 中的数据导入 TEST数据库中:
imp system/manager@TEST file=d:\daochu.dmp
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。在后面加上 ignore=y 就可以了。
6). 将d:\daochu.dmp中的表table1 导入:
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
7). 同名用户之间的数据导入:
imp hkb/hkb@xe file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y
8). 不同名用户之间的数据导入:
imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log;
12. sys和system用户的密码遗忘后的修改:
1). 在命令行下输入以下命令登陆:
sqlplus / as sysdba; 提示:斜杆后必须有空格
2)用alter语句修改sys和system用户的密码,如下:
SQL> alter user sys identified by sys;
用户已更改。
SQL> alter user system identified by system;
用户已更改。
详情如下图所示:
<!--[if gte vml 1]><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:392.25pt;
height:202.5pt'>
<v:imagedata src="file:///C:\DOCUME~1\_Bean.Woo\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.jpg"
o:title="1111" />
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->