ORACLE手工建库


手动建库:
找到官方文档,打开主索引
找到管理–create database
停止现有的数据库,释放内存1.设置环境变量–ORACLE_SID
2.建立密码文件
3.建立文本的参数文件
4.建立二进制参数文件
5.建立参数文件中描述的路径
6.启动数据库到nomount
7.create database…
8.运行脚本: @$ORACLE_HOME/rdbms/admin/catalog 建立数据字典
@$ORACLE_HOME/rdbms/admin/catproc 建立应用的包
9.建立示例方案
conn system/a@$ORACLE_HOME/sqlplus/admin/pupbld
br/>@$ORACLE_HOME/sqlplus/admin/pupbld
@$ORACLE_HOME/rdbms/admin/utlsampl.sql打开官方文档
Supporting Documentation
Administratior’s Guide
2 creating and configuring an Oracle Database
第三项:Creating a Database with the CREATE DATABASE Statement
Step 9: Issue the CREATE DATABASE Statement1.关闭其他所有的数据库。
2.建立新数据库(yy)的密码文件
ORACLE用户执行
cd $ORACLE_HOME/dbs
rapwd file=orapwyy password=a3.建立文本的参数文件
strings spfileqq.ora (找一个已经存在的参数文件,将内容粘贴修改即可)
修改对应的数据库名和文件路径。
具体见本文档下第3步详情。4.设置环境变量:ORACLE_SID=yy
export ORACLE_SID=yy5.建立二进制参数文件
conn / as sysdba
create spfile from pfile;6.建立参数文件中描述的路径
cd /u01/app/oracle/admin
cp -r qq yy 进入到该目录下将qq目录复制重命名为yy
建立数据文件存放目录
cd /u01/app/oracle/oradata
mkdir yy
7.修改官方文档的手动建库脚本,改数据库名,路径,密码等。
具体见本文下免费云主机域名面第7步详情8.启动数据库到nomount,启动数据库到nomount阶段会写日志到$ORACLE_BASE/admin/实例名/adump目录
startup
报205错误
运行第7步修改后的 create database脚本创建数据库。
脚本执行完毕后数据库创建完成,建成一个裸库,没有数据字典9.运行脚本: @$ORACLE_HOME/rdbms/admin/catalog 建立数据字典
@$ORACLE_HOME/rdbms/admin/catproc 建立应用的包 10.创建示例方案
SYS用户执行
alter user system identified by a;
conn system/a@$ORACLE_HOME/sqlplus/admin/pupbld
br/>@$ORACLE_HOME/sqlplus/admin/pupbld
@$ORACLE_HOME/rdbms/admin/utlsampl.sql第3步详情:
.audit_file_dest=’/u01/app/oracle/admin/yy/adump’
.audit_trail=’db’
.compatible=’11.2.0.0.0′
.control_files=’/u01/app/oracle/oradata/yy/control01.ctl’,’/u01/app/oracle/oradata/yy/control02.ctl’
.db_block_size=8192
.db_domain=”
.db_name=’yy’
.diagnostic_dest=’/u01/app/oracle’
.open_cursors=300
.pga_aggregate_target=308281344
.processes=150
.remote_login_passwordfile=’EXCLUSIVE’
.sga_target=924844032
.undo_tablespace=’UNDOTBS1’第7步详情:
CREATE DATABASE yy
USER SYS IDENTIFIED BY a
USER SYSTEM IDENTIFIED BY a
LOGFILE GROUP 1 (‘/u01/app/oracle/oradata/yy/redo01.log’) SIZE 20M,
GROUP 2 (‘/u01/app/oracle/oradata/yy/redo02.log’) SIZE 20M,
GROUP 3 (‘/u01/app/oracle/oradata/yy/redo03.log’) SIZE 20M
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE ‘/u01/app/oracle/oradata/yy/system01.dbf’ SIZE 325M REUSE
SYSAUX DATAFILE ‘/u01/app/oracle/oradata/yy/sysaux01.dbf’ SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE ‘/u01/app/oracle/oradata/yy/users01.dbf’
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE ‘/u01/app/oracle/oradata/yy/temp01.dbf’
SIZE 20M REUSE
UNDO TABLESPACE undotbs1
DATAFILE ‘/u01/app/oracle/oradata/yy/undotbs01.dbf’
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;实验2:掌握数据库启动3阶段
删除yy数据库的参数文件,将yy数据库的控制文件、数据文件、日志文件移动到其他位置。
原来的目录 $ORACLE_BASE/oradata/yy 新的目录:$ORACLE_BASE/oradata/tt
1.查看数据库位置
select name from v$datafile
union all
select name from v$controlfile
union all
select name from v$tempfile
union all
select member from v$logfile;路径:/u01/app/oracle/oradata/tt/2.关闭数据库
shutdown immediate;3.删除数据库的参数文件,将数据库的数据文件、日志文件、控制文件移动到其他目录。
cd $ORACLE_HOME/dbs
rm -rf inityy.ora
rm -rf spfileyy.ora
cd $ORACLE_BASE/oradata
mv yy tt4.指定实例名,启动数据库
startup
报错:ORA-01078找不到参数文件
根据 /u01/app/oracle/diag/rdbms/yy/yy/trace下的log文件创建新的参数文件。
cd $ORACLE_HOME/dbs
vi inityy.ora 将刚才所看log文件的以下部分粘贴到该文本中,保存退出。processes = 150
sga_target = 884M
control_files = “/u01/app/oracle/oradata/yy/control01.ctl”
control_files = “/u01/app/oracle/oradata/yy/control02.ctl”
db_block_size = 8192
compatible = “11.2.0.0.0”
undo_tablespace = “UNDOTBS1”
remote_login_passwordfile= “EXCLUSIVE”
db_domain = “”
audit_file_dest = “/u01/app/oracle/admin/yy/adump”
audit_trail = “DB”
db_name = “yy”
open_cursors = 300
pga_aggregate_target = 294M
diagnostic_dest = “/u01/app/oracle”
注:该步骤说明在数据库启动到numount阶段就需要参数文件。5.在第四步创建好文本参数文件后,以SYS身份连接到数据库,创建二进制参数文件,启动数据库。
export ORACLE_SID=yy
sqlplus / as sysdba
create spfile from pfile;
startup
报错:ORA-00205 控制文件错误
查看数据库的状态:数据库处于STARTED状态。
该步骤说明:在启动到nomount阶段时,只要参数文件无误即可。
在mount数据库时,需要用到控制文件。6.修改参数文件中控制文件的位置:
alter system set control_files=’/u01/app/oracle/oradata/tt/control01.ctl’,
‘/u01/app/oracle/oradata/tt/control02.ctl’ scope=spfile;7.上一步修改完成后关闭数据库,再次启动。
shutdown abort;
startup nomount; 成功
alter database mount; 成功
alter database opne; 报错
报错:ORA-01157不能找到数据文件,原因是数据文件已经被移动到其他路径。8.修改数据库,重新指定数据库的数据文件的位置:(所有的数据文件和日志文件均要执行,可以写脚本来完成)
alter database rename file ‘/u01/app/oracle/oradata/tt/undotbs01.dbf’
to’/u01/app/oracle/oradata/yy/undotbs01.dbf’;9.重新指定路径成功后打开数据库
alter database open;dump目录/u01/app/oracle/diag/rdbms/yy/yy/trace修改参数control_files=新路径启动数据库 mount成功 open报错修改数据文件,临时文件,数据文件/u01/app/oracle/oradata/rr/control01.ctl
/u01/app/oracle/oradata/rr/control01.ctlselect ‘alter database rename file ”’||name||””||chr(10)||’ to”’ ||
replace(name,’tt’,’yy’)||”’;’ from v$datafile
union all
select ‘alter database rename file ”’||name||””||chr(10)||’ to”’ ||
replace(name,’tt’,’yy’)||”’;’ from v$tempfile
union all
select ‘alter database rename file ”’||member||””||chr(10)||’ to”’ ||
replace(member,’tt’,’yy’)||”’;’ from v$logfile ;select ‘alter database rename file ”’||name||””||chr(10)||’ to ”’||
‘/newdb’||substr(name,instr(name,’/’,-1))||’;’ from v$datafile;段 segment范围 extend
一次分配的,连续的,ORACLE块
一个段最少有一个范围,可以有很多个范围
范围有3种模式
1.建立对象时,分配的叫做初始范围
2.数据增长时,分配额外的范围
3.手工分配范围conn / as sysdba
grant select any dictionary to scott
conn scott/tiger
select from dba_free_space where tablespace_name=’USERS’;
2.create table t1 as select
from emp;
create table t2 as select from emp;
3.select extent_id,file_id,block_id,blocks from dba_extents
where segment_name=’T1′;
4.insert into t1 select
from t1;
insert into t2 select * from t2;
select extent_id,file_id,block_id,blocks from dba_extents
where segment_name=’T1′;select extent_id,file_id,block_id,blocks from dba_extents
where segment_name=’T2′;手动分配空间:
alter table t1 allocate extent; 不指定大小,系统根据表已有大小分配。
alter table t1 allocate extent(size 2G); 指定大小
块 blockSET LONG 1000
SQL> SELECT DBMS_METADATA.GET_DDL(‘TABLE’,’T2′) FROM DUAL;CREATE TABLE T1 SEGMENT CREATION IMMEDIATE AS SELECT * FROM EMP where 0=9;SHOW PARAMETER SEGMENTALTER SYSTEM SET deferred_segment_creation=FALSE;范围回收3模式
1.手工回收未使用的范围(崭新的)
alter table t1 allocate extent(size 10m);
alter table t1 deallocate unused;tabs=user_tablesselect table_name,initial_extent from tabs where table_name=’T2′;
create table t2 storage(initial 1m) as select * from emp;2.truncate table t1;(保留初始范围)
3.drop table t1 purge;(彻底删除空间)alter table t2 allocate extent(size 10m);select extent_id,file_id,block_id,blocks from dba_extents
where segment_name=’T2′;DELETE
1.DML
2.产生大量的回退
3.产生大量日志
4.可以rollback
5.手工commit;
6.不回收空间
7.不回收高水位
8.可以有条件删除TRUNCATE
1.DDL
2.产生少的回退
3.产生少量日志
4.不可以rollback
5.自动commit;
6.回收空间
7.回收高水位
8.不可以有条件删除show parameter rec
alter system set recyclebin=off scope=spfile;块:
数据库存储的基本空间,默认是8K,建库时指定rowid行标识
是根据数据存在的位置计算出来的
18位64进制字符串AAASdN AAE AAAACr AAA
对象 文件 块 行select rowid,ename,dbms_rowid.rowid_block_number(rowid) block# from emp;ROWID_BLOCK_NUMBER
ROWID_OBJECT
ROWID_RELATIVE_FNO
ROWID_ROW_NUMBERselect rowid,ename,dbms_rowid.rowid_block_number(rowid) a,
dbms_rowid.ROWID_OBJECT(rowid) o,
dbms_rowid.ROWID_RELATIVE_FNO(rowid) f,
dbms_rowid.ROWID_ROW_NUMBER(rowid) r from emp;select dbms_rowid.rowid_create(0,75335,4,151,0),
dbms_rowid.rowid_create(1,75335,4,151,0) from dual;conn scott/123456;
drop table t1 purge;
create table t1 as select from emp;
insert into t1 select
from emp where deptno=10;
commit;
select ename,sal from t1 order by 1;
delete from t1 wai where rowid
ERROR:
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925
ORA-01075: you are currently logged on

相关推荐: redis是如何开发的

redis是如何开发的?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!redis是什么语言开发的?Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/21 15:42
下一篇 01/21 15:43