创建我的oracle用户。

    技术2022-05-19  20

    关键字: oracle 表空间 用户

    //创建临时表空间 create temporary tablespace test_temp tempfile 'E:/oracle/product/10.2.0/oradata/testserver/test_temp01.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local; //创建数据表空间 create tablespace test_data logging datafile 'E:/oracle/product/10.2.0/oradata/testserver/test_data01.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local; //创建用户并指定表空间 create user username identified by password default tablespace test_data temporary tablespace test_temp; //给用户授予权限 grant connect,resource to username; //以后以该用户登录,创建的任何数据库对象都属于test_temp 和test_data表空间,这就不用在每创建一个对象给其指定表空间了。 Oracle 用户管理命令

    删除用户

    drop user user_name cascade;

    建立表空间

    CREATE TABLESPACE data01DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500MUNIFORM. SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k

    删除表空间

    DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;

    一、建立表空间

    CREATE TABLESPACE data01DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500MUNIFORM. SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k

    二、建立UNDO表空间

    CREATE UNDO TABLESPACE UNDOTBS02DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M

    #注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到

    该表空间:

    ALTER SYSTEM SET undo_tablespace=UNDOTBS02;

    三、建立临时表空间

    CREATE TEMPORARY TABLESPACE temp_dataTEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M

    四、改变表空间状态

    1.使表空间脱机

    ALTER TABLESPACE game OFFLINE;

    如果是意外删除了数据文件,则必须带有RECOVER选项

    ALTER TABLESPACE game OFFLINE FOR RECOVER;

    2.使表空间联机

    ALTER TABLESPACE game ONLINE;

    3.使数据文件脱机

    ALTER DATABASE DATAFILE 3 OFFLINE;

    4.使数据文件联机

    ALTER DATABASE DATAFILE 3 ONLINE;

    5.使表空间只读

    ALTER TABLESPACE game READ ONLY;

    6.使表空间可读写

    ALTER TABLESPACE game READ WRITE;

    五、删除表空间

    DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;

    六、扩展表空间

    首先查看表空间的名字和所属文件

    select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_filesorder by tablespace_name;

    1.增加数据文件ALTER TABLESPACE gameADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M;

    2.手动增加数据文件尺寸ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'RESIZE 4000M;

    3.设定数据文件自动扩展ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbfAUTOEXTEND ON NEXT 100MMAXSIZE 10000M;

    设定后查看表空间信息

    SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE CWHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE

     

    //创建临时表空间

    create temporary tablespace zfmi_temptempfile 'D:/oracle/oradata/zfmi/zfmi_temp.dbf' size 32m autoextend on next 32m maxsize 2048mextent management local;

    //tempfile参数必须有

    //创建数据表空间

    create tablespace zfmiloggingdatafile 'D:/oracle/oradata/zfmi/zfmi.dbf' size 100m autoextend on next 32m maxsize 2048mextent management local;

    //datafile参数必须有

    //删除用户以及用户所有的对象

    drop user zfmi cascade;

    //cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯性的加此参数

    //删除表空间前提:删除表空间之前要确认该表空间没有被其他用户使用之后再做删除

    drop tablespace zfmi including contents and datafiles cascade onstraints;

    //including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉,所以习惯性的加此参数//including datafiles 删除表空间中的数据文件 //cascade constraints 同时删除tablespace中表的外键参照

     

    如果删除表空间之前删除了表空间文件,解决办法:

    如果在清除表空间之前,先删除了表空间对应的数据文件,会造成数据库无法正常启动和关闭。可使用如下方法恢复(此方法已经在oracle9i中验证通过):下面的过程中,filename是已经被删除的数据文件,如果有多个,则需要多次执行;tablespace_name是相应的表空间的名称。$ sqlplus /nologSQL> conn / as sysdba;如果数据库已经启动,则需要先执行下面这行:SQL> shutdown abortSQL> startup mount SQL> alter database datafile 'filename' offline drop; SQL> alter database open; SQL> drop tablespace tablespace_name including contents;

    //创建用户并指定表空间

    create user zfmi identified by zfmidefault tablespace zfmi temporary tablespace zfmi_temp;

    //identified by 参数必须有

    //授予message用户DBA角色的所有权限

    GRANT DBA TO zfmi;

    //给用户授予权限

    grant connect,resource to zfmi; (db2:指定所有权限)

     

    导入导出命令:

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件, imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。

    执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于 在oracle 8i 中 安装目录ora81BIN被设置为全局路径,该目录下有EXP.EXEIMP.EXE文件被用来执行导入导出。oraclejava编写,SQLPLUS.EXEEXP.EXEIMP.EXE这两个文件有可能是被包装后的类文件。SQLPLUS.EXE调用EXP.EXEIMP.EXE所包裹的类,完成导入导出功能。

    下面介绍的是导入导出的实例。数据导出:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp   exp system/manager@TEST file=d:daochu.dmp full=y2 将数据库中system用户与sys用户的表导出   exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)3 将数据库中的表inner_notifynotify_staff_relat导出    exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)

    4 将数据库中的表table1中的字段filed1"00"打头的数据导出   exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"

    上面是常用的导出,对于压缩,既用winzipdmp文件可以很好的压缩。也可以在上面命令后面 加上 compress=y 来实现。

    数据的导入1 D:daochu.dmp 中的数据导入 TEST数据库中。   imp system/manager@TEST file=d:daochu.dmp   imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。   在后面加上 ignore=y 就可以了。2 d:daochu.dmp中的表table1 导入imp system/manager@TEST file=d:daochu.dmp tables=(table1)

    基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

    注意:操作者要有足够的权限,权限不够它会提示。数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

    附录一:给用户增加导入数据权限的操作第一,启动sql*puls第二,以system/manager登陆第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,   DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,      DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字第五, 运行-cmd-进入dmp文件所在的目录,      imp userid=system/manager full=y file=*.dmp      或者 imp userid=system/manager full=y file=filename.dmp

    执行示例:F:WorkOracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp

    屏幕显示Import: Release 8.1.7.0.0 - Production on 星期四 2 16 16:50:05 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.

    连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - ProductionWith the Partitioning optionJServer Release 8.1.7.0.0 - Production

    经由常规路径导出由EXPORT:V08.01.07创建的文件已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换). 正在将AICHANNEL的对象导入到 AICHANNEL. . 正在导入表                  "INNER_NOTIFY"          4行被导入准备启用约束条件...成功终止导入,但出现警告。

     

     

     

     

     

    用MySQL创建数据库和数据库表

    1、使用SHOW语句找出在服务器上当前存在什么数据库:

    mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 3 rows in set (0.00 sec) 2、创建一个数据库abccs mysql> CREATE DATABASE abccs; 注意不同操作系统对大小写的敏感。 3、选择你所创建的数据库 mysql> USE abccs Database changed 此时你已经进入你刚才所建立的数据库abccs. 4、 创建一个数据库表 首先看现在你的数据库中存在什么表: mysql> SHOW TABLES; Empty set (0.00 sec) 说明刚才建立的数据库中还没有数据库表。下面来创建一个数据库表mytable:   我们要建立一个你公司员工的生日表,表的内容包含员工姓名、性别、出生日期、出生城市。 mysql> CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1), -> birth DATE, birthaddr VARCHAR(20)); Query OK, 0 rows affected (0.00 sec) 由于name、birthadd的列值是变化的,因此选择VARCHAR,其长度不一定是20。可以选择从1到255的任何长度,如果以后需要改变它的字长,可以使用ALTER TABLE语句。);性别只需一个字符就可以表示:"m"或"f",因此选用CHAR(1);birth列则使用DATE数据类型。 创建了一个表后,我们可以看看刚才做的结果,用SHOW TABLES显示数据库中有哪些表: mysql> SHOW TABLES; +---------------------+ | Tables in menagerie | +---------------------+ | mytables | +---------------------+ 5、显示表的结构: mysql> DESCRIBE mytable; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | name | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | birth | date | YES | | NULL | | | deathaddr | varchar(20) | YES | | NULL | | +-------------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) 6、 往表中加入记录 我们先用SELECT命令来查看表中的数据: mysql> select * from mytable; Empty set (0.00 sec)这说明刚才创建的表还没有记录。 加入一条新记录: mysql> insert into mytable -> values (′abccs′,′f′,′1977-07-07′,′china′); Query OK, 1 row affected (0.05 sec) 再用上面的SELECT命令看看发生了什么变化。我们可以按此方法一条一条地将所有员工的记录加入到表中。 7、用文本方式将数据装入一个数据库表 如果一条一条地输入,很麻烦。我们可以用文本文件的方式将所有记录加入你的数据库表中。创建一个文本文件“mysql.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以在CREATE TABLE语句中列出的列次序给出,例如: abccs f 1977-07-07 china   mary f 1978-12-12 usa tom m 1970-09-02 usa 使用下面命令将文本文件“mytable.txt”装载到mytable表中:mysql> LOAD DATA LOCAL INFILE "mytable.txt" INTO TABLE pet; 再使用如下命令看看是否已将数据输入到数据库表中:mysql> select * from mytable;

     

    附录二: Oracle 不允许直接改变表的拥有者 , 利用 Export/Import可以达到这一目的 .先建立 import9.par,然后,使用时命令如下: imp parfile=/filepath/import9.par import9.par 内容如下:         FROMUSER=TGPMS               TOUSER=TGPMS2     (注:把表的拥有者由 FROMUSER改为 TOUSERFROMUSERTOUSER的用户可以不同)                   ROWS=Y        INDEXES=Y        GRANTS=Y        CONSTRAINTS=Y        BUFFER=409600        file==/backup/ctgpc_20030623.dmp        log==/backup/import_20030623.log

    最新回复(0)