`
beautyOfProgram
  • 浏览: 25426 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

初识oracle11g

阅读更多

初识oracle11g

第一次使用oracle,下面是简单的使用步骤:

1 安装oracle

    只需安装oracle的服务端版本,如果同时安装oracle服务端和客户端版本,注意在环境变量的path,谁的path在前,这可能会影响某些应用程序的使用,如exp.exe

2 创建数据库

   oracle本身提供了一个实例orcl,在oracle菜单中点击 ‘ Database Control orcl ’,进入管理界面,如果出现访问错误,请‘ 我的电脑 ——右键——》管理---》服务 ----》查看oracle进程  其中 ’oracleServiceORCL' 就代表 orcl 这个实例进程,启动这项服务以及其他几项oracle服务。

   此时,进入界面,会要求输入用户名和密码,如果安装过程中没有修改,默认存在用户:

   system MANAGER

   sys  CHANGE_ON_INSTALL

   如果密码修改了,又忘了密码,会比较麻烦,具体解决看网上拉

   orcl 是oracle本身自带的一个实例,我们需要创建自己的数据库, 在oracle菜单中--》配置和移植工具--》Database Configuration Assistance ,其中有十二步操作,主要是实例名,数据库名,数据库用户,访问密码,编码,存储地方等相关设置,最后设置完成,将会创建一个实例,注意 实例是和数据库由区别的,从网上摘下的:

     ORACLE实例 = 进程 + 进程所使用的内存(SGA)
     实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态!

 
     数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件
     数据库是永久的,是一个文件的集合。
 
     ORACLE实例和数据库之间的关系
      1. 临时性和永久性
      2. 实例可以在没有数据文件的情况下单独启动 startup nomount , 通常没什么意义
      3. 一个实例在其生存期内只能装载(alter database mount)和打开(alter   database open)一个数据库
      4.一个数据库可被许多实例同时装载和打开(即RAC),RAC环境中实例的作用能够得到充分的体现!

      不过,不涉及并发环境,一般一个数据库对应一个实例哦

     问题: 怎样看本机上运行了几个实例 ?

   ‘ 我的电脑 ——右键——》管理---》服务 看 其中 ‘oracleServiceXXX’, 有几个这样的服务就表示有几个实例启动了

 

3 进入数据库

       成功创建了数据库,当然我们就得进去看看了:

       使用服务端提供的SQL_PLUS 和SQL_DEVELOPER 都非常方便,首先使用system 用户进入数据库,主要进行一下步骤:

     如果使用如plsql 连接

    这里主要注意连接字符串的写法   ip:port/实例服务名称  

        如localhost:1521/orcl

          这里最容易出现 ORA -12541:TNS:无监听程序

          告诉你所键入的地址没有监听

          可以使用 tnsping 命令来测试你的连接

          如  tnsping localhost:1521/orcl ,如果成功返回 'OK‘ ,则表示成功,否则失败,导致此问题的很多,具体解决方案看网上。

 

   3.1 创建用户:创建一个该实例上的用户

建立:create user 用户名 identified by "密码";
create user  beautyofProgram identified by admin
创建一个用户名为 beautyofProgram 密码为 admin

   3.2  授权,给用户授权,授权分系统权限和实例权限,详细请看后面给的链接

系统权限: 
grant dba to beautyOfProgram
实例权限
            grant create session to 用户名;
            grant create table to  用户名;
            grant create tablespace to  用户名;
            grant create view to  用户名;
            这里采用系统权限授权  grant dba to beautyOfProgram,方便后面的操作

  3.3 创建表空间

create tablespace 表空间名 datafile ' 路径\***.dbf ' size *M
 tempfile ' 路径\***.dbf ' 
size *M autoextend on --自动增长 --
还有一些定义大小的命令,
看需要 
default storage(
 initial 100K,
 next 100k, );
 如: 
create tablespace test  
datafile 'e:\test.dbf'size 1000M 
testtmp 'e:\test1.dbf' size 1000M 
autoextend on

   3.4 关联用户到表空间

 

alter user 用户名 quota unlimited on 表空间;
或 alter user 用户名 quota *M on 表空间;

如 alter user beautyofProgram quota unlimited on test 
alter  user beautyofProgram quota unlimited on testtmp

        这样用户就关联到了该表空间的表上。

     3.5 创建表

            CREATE TABLE TEST(
               MSG_ID INTEGER NOT NULL,
                RECEIVE_USERNAME varchar2(64) NOT NULL,
                MSG varchar2(4000) ,
                SENT_TIME DATE ,
                IDENTIFY varchar2(64) ,
                SENT_USERNAME varchar2(64) ,
                CONSTRAINT TEST_PK  PRIMARY KEY (MSG_ID)
                 )  

   创建表疑惑在于 oracle 对于 java 中的boolean 的类型选择 以及怎样实现类似其它数据库的自增

    查看一下当前用户下有哪些表吧

 

select * from user_tables;

     实现数据库ID的自增,oracle 不提供类似其它数据库的选项支持自增,他只支持在插入时触发一个触发器从一个递增序列中获取来实现数据库的插入,先看看序列

CREATE SEQUENCE emp_sequence

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

NOMAXVALUE -- 不设置最大值

NOCYCLE -- 一直累加,不循环

NOCACHE -- 不建缓冲区 
 

    实现一个触发器

 

CREATE TRIGGER "触发器名称" BEFORE

INSERT ON TEST FOR EACH ROW WHEN (new.msg_id is null)

begin

select emp_sequence.nextval into :new.msg_id from dual;

end; 

    这样在插入一行时,就能自动实现插入递增的主键了,其中可能遇见没有权限的问题,则说明权限不够,使用system进入实例,对你所建的用户授权。


  附上一些常用的sql语句

 

查看所有用户
select username from dba_users

select * from user_tablespaces;--查看表空间名

select * from user_sys_privs;--查看用户权限

select * from user_role_privs; 查看当前用户的角色..

查看当前用户的缺省表空间
select username,default_tablespace from user_users; 

查看用户建立的表   : 
select table_name from user_tables;  //当前用户的表  
   
select table_name from all_tables;  //所有用户的表  
   
select table_name from dba_tables;  //包括系统表 
-- 确定角色的权限
select * from role_tab_privs ;  数据字典视图包含了授予角色的对象权限

select * from role_role_privs ;             包含了授予另一角色的角色

select * from role_sys_privs ;              包含了授予角色的系统权限

select * from session_privs;                查看当前用户的权限

alter user sa account unlock;               解锁sa 用户

 

 

 

更多参考文章:

更改管理员密码

http://hi.baidu.com/will0690/blog/item/9af7574e007c050db3de05a8.html

默认账户密码

http://zhuozhi0768.blog.163.com/blog/static/6102658620105186318344/

oracle的授权

http://wenku.baidu.com/view/3d0283d8ce2f0066f5332205.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics